From 17ffadd7e931c12b74e6baa447b1239397ac7318 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 13 Oct 2024 12:47:29 -0400 Subject: [PATCH 01/99] Initial commit --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From 1639e8e4b55fb9b2394ee1b723fc65e7b8d3063f Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:05:14 -0400 Subject: [PATCH 02/99] setting up gitignore to not replicate vscode specific folders and files. --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8dc44d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.ai/ +.vscode/ From ca3e6fd15800935e5ae359e7bcc406f1c2cbc7c9 Mon Sep 17 00:00:00 2001 From: Michael Shires Date: Fri, 13 Dec 2024 10:48:12 -0500 Subject: [PATCH 03/99] First commit --- COPYING | 674 ++ GNUmakefile | 162 + GNUmakefile.in | 162 + README | 61 + autom4te.cache/output.0 | 3893 +++++++++++ autom4te.cache/output.1 | 3893 +++++++++++ autom4te.cache/output.2 | 3894 +++++++++++ autom4te.cache/requests | 186 + autom4te.cache/traces.0 | 95 + autom4te.cache/traces.1 | 300 + autom4te.cache/traces.2 | 300 + bootstrap | 81 + build-aux/config.guess | 1480 ++++ build-aux/config.sub | 1801 +++++ build-aux/install-sh | 541 ++ config.log | 263 + config.status | 929 +++ configure | 3894 +++++++++++ configure.ac | 135 + configure~ | 3894 +++++++++++ docs/fdl.texi | 505 ++ docs/ironclad.texi | 4314 ++++++++++++ ironclad | Bin 0 -> 855064 bytes ironclad.gpr | 99 + ironclad.gpr.in | 99 + ironclad.info | 4892 +++++++++++++ ironclad.info.gz | Bin 0 -> 48710 bytes libgnat-hack/libgnat-1.a | 0 libgnat-hack/libgnat-10.a | 0 libgnat-hack/libgnat-11.a | 0 libgnat-hack/libgnat-12.a | 0 libgnat-hack/libgnat-13.a | 0 libgnat-hack/libgnat-14.a | 0 libgnat-hack/libgnat-15.a | 0 libgnat-hack/libgnat-16.a | 0 libgnat-hack/libgnat-17.a | 0 libgnat-hack/libgnat-18.a | 0 libgnat-hack/libgnat-19.a | 0 libgnat-hack/libgnat-2.a | 0 libgnat-hack/libgnat-20.a | 0 libgnat-hack/libgnat-21.a | 0 libgnat-hack/libgnat-22.a | 0 libgnat-hack/libgnat-23.a | 0 libgnat-hack/libgnat-24.a | 0 libgnat-hack/libgnat-25.a | 0 libgnat-hack/libgnat-26.a | 0 libgnat-hack/libgnat-27.a | 0 libgnat-hack/libgnat-28.a | 0 libgnat-hack/libgnat-29.a | 0 libgnat-hack/libgnat-3.a | 0 libgnat-hack/libgnat-30.a | 0 libgnat-hack/libgnat-31.a | 0 libgnat-hack/libgnat-32.a | 0 libgnat-hack/libgnat-33.a | 0 libgnat-hack/libgnat-34.a | 0 libgnat-hack/libgnat-35.a | 0 libgnat-hack/libgnat-36.a | 0 libgnat-hack/libgnat-37.a | 0 libgnat-hack/libgnat-38.a | 0 libgnat-hack/libgnat-39.a | 0 libgnat-hack/libgnat-4.a | 0 libgnat-hack/libgnat-40.a | 0 libgnat-hack/libgnat-41.a | 0 libgnat-hack/libgnat-42.a | 0 libgnat-hack/libgnat-43.a | 0 libgnat-hack/libgnat-44.a | 0 libgnat-hack/libgnat-45.a | 0 libgnat-hack/libgnat-46.a | 0 libgnat-hack/libgnat-47.a | 0 libgnat-hack/libgnat-48.a | 0 libgnat-hack/libgnat-49.a | 0 libgnat-hack/libgnat-5.a | 0 libgnat-hack/libgnat-50.a | 0 libgnat-hack/libgnat-51.a | 0 libgnat-hack/libgnat-52.a | 0 libgnat-hack/libgnat-53.a | 0 libgnat-hack/libgnat-54.a | 0 libgnat-hack/libgnat-55.a | 0 libgnat-hack/libgnat-56.a | 0 libgnat-hack/libgnat-57.a | 0 libgnat-hack/libgnat-58.a | 0 libgnat-hack/libgnat-59.a | 0 libgnat-hack/libgnat-6.a | 0 libgnat-hack/libgnat-60.a | 0 libgnat-hack/libgnat-61.a | 0 libgnat-hack/libgnat-62.a | 0 libgnat-hack/libgnat-63.a | 0 libgnat-hack/libgnat-64.a | 0 libgnat-hack/libgnat-65.a | 0 libgnat-hack/libgnat-66.a | 0 libgnat-hack/libgnat-67.a | 0 libgnat-hack/libgnat-68.a | 0 libgnat-hack/libgnat-69.a | 0 libgnat-hack/libgnat-7.a | 0 libgnat-hack/libgnat-70.a | 0 libgnat-hack/libgnat-71.a | 0 libgnat-hack/libgnat-72.a | 0 libgnat-hack/libgnat-73.a | 0 libgnat-hack/libgnat-74.a | 0 libgnat-hack/libgnat-75.a | 0 libgnat-hack/libgnat-76.a | 0 libgnat-hack/libgnat-77.a | 0 libgnat-hack/libgnat-78.a | 0 libgnat-hack/libgnat-79.a | 0 libgnat-hack/libgnat-8.a | 0 libgnat-hack/libgnat-80.a | 0 libgnat-hack/libgnat-81.a | 0 libgnat-hack/libgnat-82.a | 0 libgnat-hack/libgnat-83.a | 0 libgnat-hack/libgnat-84.a | 0 libgnat-hack/libgnat-85.a | 0 libgnat-hack/libgnat-86.a | 0 libgnat-hack/libgnat-87.a | 0 libgnat-hack/libgnat-88.a | 0 libgnat-hack/libgnat-89.a | 0 libgnat-hack/libgnat-9.a | 0 libgnat-hack/libgnat-90.a | 0 libgnat-hack/libgnat-91.a | 0 libgnat-hack/libgnat-92.a | 0 libgnat-hack/libgnat-93.a | 0 libgnat-hack/libgnat-94.a | 0 libgnat-hack/libgnat-95.a | 0 libgnat-hack/libgnat-96.a | 0 libgnat-hack/libgnat-97.a | 0 libgnat-hack/libgnat-98.a | 0 libgnat-hack/libgnat-99.a | 0 libgnat-hack/libgnat.a | 0 obj/arch-clocks.adb.stderr | 6 + obj/arch-clocks.adb.stdout | 0 obj/arch-clocks.ali | 98 + obj/arch-clocks.o | Bin 0 -> 11864 bytes obj/arch-context.adb.stderr | 0 obj/arch-context.adb.stdout | 0 obj/arch-context.ali | 104 + obj/arch-context.o | Bin 0 -> 15056 bytes obj/arch-cpu.adb.stderr | 0 obj/arch-cpu.adb.stdout | 0 obj/arch-cpu.ali | 188 + obj/arch-cpu.o | Bin 0 -> 28672 bytes obj/arch-debug.adb.stderr | 0 obj/arch-debug.adb.stdout | 0 obj/arch-debug.ali | 98 + obj/arch-debug.o | Bin 0 -> 12600 bytes obj/arch-dtb.adb.stderr | 0 obj/arch-dtb.adb.stdout | 0 obj/arch-dtb.ali | 104 + obj/arch-dtb.o | Bin 0 -> 9968 bytes obj/arch-entrypoint.adb.stderr | 0 obj/arch-entrypoint.adb.stdout | 0 obj/arch-entrypoint.ali | 185 + obj/arch-entrypoint.o | Bin 0 -> 22216 bytes obj/arch-hooks.adb.stderr | 0 obj/arch-hooks.adb.stdout | 0 obj/arch-hooks.ali | 75 + obj/arch-hooks.o | Bin 0 -> 9576 bytes obj/arch-interrupts.ads.stderr | 0 obj/arch-interrupts.ads.stdout | 0 obj/arch-interrupts.ali | 79 + obj/arch-interrupts.o | Bin 0 -> 3960 bytes obj/arch-limine.adb.stderr | 0 obj/arch-limine.adb.stdout | 0 obj/arch-limine.ali | 344 + obj/arch-limine.o | Bin 0 -> 58136 bytes obj/arch-local.adb.stderr | 0 obj/arch-local.adb.stdout | 0 obj/arch-local.ali | 127 + obj/arch-local.o | Bin 0 -> 13584 bytes obj/arch-mmu.adb.stderr | 4 + obj/arch-mmu.adb.stdout | 0 obj/arch-mmu.ali | 187 + obj/arch-mmu.o | Bin 0 -> 25720 bytes obj/arch-power.adb.stderr | 0 obj/arch-power.adb.stdout | 0 obj/arch-power.ali | 68 + obj/arch-power.o | Bin 0 -> 7152 bytes obj/arch-snippets.adb.stderr | 1 + obj/arch-snippets.adb.stdout | 0 obj/arch-snippets.ali | 100 + obj/arch-snippets.o | Bin 0 -> 14264 bytes obj/arch.ads.stderr | 0 obj/arch.ads.stdout | 0 obj/arch.ali | 89 + obj/arch.o | Bin 0 -> 7648 bytes obj/b__main.adb | 102 + obj/b__main.ads | 155 + obj/b__main.ali | 56 + obj/b__main.o | Bin 0 -> 8344 bytes obj/config.ads.stderr | 0 obj/config.ads.stdout | 0 obj/config.ali | 55 + obj/config.o | Bin 0 -> 5360 bytes obj/cryptography-chacha20.adb.stderr | 0 obj/cryptography-chacha20.adb.stdout | 0 obj/cryptography-chacha20.ali | 106 + obj/cryptography-chacha20.o | Bin 0 -> 23096 bytes obj/cryptography-md5.adb.stderr | 0 obj/cryptography-md5.adb.stdout | 0 obj/cryptography-md5.ali | 105 + obj/cryptography-md5.o | Bin 0 -> 24976 bytes obj/cryptography-random.adb.stderr | 0 obj/cryptography-random.adb.stdout | 0 obj/cryptography-random.ali | 206 + obj/cryptography-random.o | Bin 0 -> 33256 bytes obj/cryptography.ads.stderr | 0 obj/cryptography.ads.stdout | 0 obj/cryptography.ali | 50 + obj/cryptography.o | Bin 0 -> 2008 bytes obj/devices-console.adb.stderr | 0 obj/devices-console.adb.stdout | 0 obj/devices-console.ali | 125 + obj/devices-console.o | Bin 0 -> 16464 bytes obj/devices-loopback.adb.stderr | 0 obj/devices-loopback.adb.stdout | 0 obj/devices-loopback.ali | 176 + obj/devices-loopback.o | Bin 0 -> 36232 bytes obj/devices-netinter.ads.stderr | 0 obj/devices-netinter.ads.stdout | 0 obj/devices-netinter.ali | 62 + obj/devices-netinter.o | Bin 0 -> 3504 bytes obj/devices-streams.adb.stderr | 0 obj/devices-streams.adb.stdout | 0 obj/devices-streams.ali | 169 + obj/devices-streams.o | Bin 0 -> 29048 bytes obj/devices-termios.ads.stderr | 0 obj/devices-termios.ads.stdout | 0 obj/devices-termios.ali | 108 + obj/devices-termios.o | Bin 0 -> 7016 bytes obj/devices-uart.adb.stderr | 0 obj/devices-uart.adb.stdout | 0 obj/devices-uart.ali | 94 + obj/devices-uart.o | Bin 0 -> 10624 bytes obj/devices.adb.stderr | 0 obj/devices.adb.stdout | 0 obj/devices.ali | 346 + obj/devices.o | Bin 0 -> 100888 bytes obj/ipc-fifo.adb.stderr | 0 obj/ipc-fifo.adb.stdout | 0 obj/ipc-fifo.ali | 259 + obj/ipc-fifo.o | Bin 0 -> 66992 bytes obj/ipc-filelock.adb.stderr | 0 obj/ipc-filelock.adb.stdout | 0 obj/ipc-filelock.ali | 215 + obj/ipc-filelock.o | Bin 0 -> 39936 bytes obj/ipc-futex.adb.stderr | 0 obj/ipc-futex.adb.stdout | 0 obj/ipc-futex.ali | 156 + obj/ipc-futex.o | Bin 0 -> 30472 bytes obj/ipc-pty.adb.stderr | 0 obj/ipc-pty.adb.stdout | 0 obj/ipc-pty.ali | 395 ++ obj/ipc-pty.o | Bin 0 -> 103144 bytes obj/ipc-shm.adb.stderr | 0 obj/ipc-shm.adb.stdout | 0 obj/ipc-shm.ali | 253 + obj/ipc-shm.o | Bin 0 -> 64272 bytes obj/ipc-socket.adb.stderr | 2 + obj/ipc-socket.adb.stdout | 0 obj/ipc-socket.ali | 657 ++ obj/ipc-socket.o | Bin 0 -> 265512 bytes obj/ipc.ads.stderr | 0 obj/ipc.ads.stdout | 0 obj/ipc.ali | 50 + obj/ipc.o | Bin 0 -> 1984 bytes obj/kernel_main.adb.stderr | 0 obj/kernel_main.adb.stdout | 0 obj/kernel_main.ali | 268 + obj/kernel_main.o | Bin 0 -> 59072 bytes obj/lib-alignment.adb.stderr | 0 obj/lib-alignment.adb.stdout | 0 obj/lib-alignment.ali | 84 + obj/lib-alignment.o | Bin 0 -> 2008 bytes obj/lib-atomic.ads.stderr | 0 obj/lib-atomic.ads.stdout | 0 obj/lib-atomic.ali | 103 + obj/lib-atomic.o | Bin 0 -> 4376 bytes obj/lib-cmdline.adb.stderr | 0 obj/lib-cmdline.adb.stdout | 0 obj/lib-cmdline.ali | 95 + obj/lib-cmdline.o | Bin 0 -> 24456 bytes obj/lib-messages.adb.stderr | 0 obj/lib-messages.adb.stdout | 0 obj/lib-messages.ali | 180 + obj/lib-messages.o | Bin 0 -> 50464 bytes obj/lib-panic.adb.stderr | 0 obj/lib-panic.adb.stdout | 0 obj/lib-panic.ali | 126 + obj/lib-panic.o | Bin 0 -> 16128 bytes obj/lib-runtime.adb.stderr | 0 obj/lib-runtime.adb.stdout | 0 obj/lib-runtime.ali | 151 + obj/lib-runtime.o | Bin 0 -> 24840 bytes obj/lib-synchronization.adb.stderr | 0 obj/lib-synchronization.adb.stdout | 0 obj/lib-synchronization.ali | 128 + obj/lib-synchronization.o | Bin 0 -> 17720 bytes obj/lib-time.adb.stderr | 0 obj/lib-time.adb.stdout | 0 obj/lib-time.ali | 97 + obj/lib-time.o | Bin 0 -> 14536 bytes obj/lib.adb.stderr | 0 obj/lib.adb.stdout | 0 obj/lib.ali | 100 + obj/lib.o | Bin 0 -> 15128 bytes obj/main.adb.stderr | 0 obj/main.adb.stdout | 0 obj/main.ali | 67 + obj/main.bexch | 82 + obj/main.o | Bin 0 -> 5552 bytes obj/memory-physical.adb.stderr | 0 obj/memory-physical.adb.stdout | 0 obj/memory-physical.ali | 253 + obj/memory-physical.o | Bin 0 -> 63832 bytes obj/memory.ads.stderr | 0 obj/memory.ads.stdout | 0 obj/memory.ali | 66 + obj/memory.o | Bin 0 -> 3960 bytes obj/networking-arp.adb.stderr | 0 obj/networking-arp.adb.stdout | 0 obj/networking-arp.ali | 131 + obj/networking-arp.o | Bin 0 -> 31480 bytes obj/networking-interfaces.adb.stderr | 0 obj/networking-interfaces.adb.stdout | 0 obj/networking-interfaces.ali | 232 + obj/networking-interfaces.o | Bin 0 -> 56336 bytes obj/networking-ipv4.adb.stderr | 0 obj/networking-ipv4.adb.stdout | 0 obj/networking-ipv4.ali | 97 + obj/networking-ipv4.o | Bin 0 -> 8680 bytes obj/networking-ipv6.adb.stderr | 0 obj/networking-ipv6.adb.stdout | 0 obj/networking-ipv6.ali | 87 + obj/networking-ipv6.o | Bin 0 -> 9208 bytes obj/networking.adb.stderr | 0 obj/networking.adb.stdout | 0 obj/networking.ali | 112 + obj/networking.o | Bin 0 -> 18824 bytes obj/scheduler.adb.stderr | 0 obj/scheduler.adb.stdout | 0 obj/scheduler.ali | 674 ++ obj/scheduler.o | Bin 0 -> 246248 bytes obj/userland-elf.adb.stderr | 0 obj/userland-elf.adb.stdout | 0 obj/userland-elf.ali | 287 + obj/userland-elf.o | Bin 0 -> 50424 bytes obj/userland-loader.adb.stderr | 0 obj/userland-loader.adb.stdout | 0 obj/userland-loader.ali | 403 ++ obj/userland-loader.o | Bin 0 -> 89032 bytes obj/userland-mac.adb.stderr | 0 obj/userland-mac.adb.stdout | 0 obj/userland-mac.ali | 190 + obj/userland-mac.o | Bin 0 -> 39008 bytes obj/userland-memory_failure.adb.stderr | 0 obj/userland-memory_failure.adb.stdout | 0 obj/userland-memory_failure.ali | 103 + obj/userland-memory_failure.o | Bin 0 -> 13904 bytes obj/userland-memory_locations.ads.stderr | 0 obj/userland-memory_locations.ads.stdout | 0 obj/userland-memory_locations.ali | 61 + obj/userland-memory_locations.o | Bin 0 -> 4312 bytes obj/userland-oom_failure.adb.stderr | 0 obj/userland-oom_failure.adb.stdout | 0 obj/userland-oom_failure.ali | 161 + obj/userland-oom_failure.o | Bin 0 -> 25880 bytes obj/userland-process.adb.stderr | 0 obj/userland-process.adb.stdout | 0 obj/userland-process.ali | 1011 +++ obj/userland-process.o | Bin 0 -> 393256 bytes obj/userland-syscall.adb.stderr | 0 obj/userland-syscall.adb.stdout | 0 obj/userland-syscall.ali | 4876 +++++++++++++ obj/userland-syscall.o | Bin 0 -> 1329544 bytes obj/userland.ads.stderr | 0 obj/userland.ads.stdout | 0 obj/userland.ali | 58 + obj/userland.o | Bin 0 -> 5008 bytes obj/vfs-dev.adb.stderr | 0 obj/vfs-dev.adb.stdout | 0 obj/vfs-dev.ali | 317 + obj/vfs-dev.o | Bin 0 -> 72224 bytes obj/vfs-ext.adb.stderr | 0 obj/vfs-ext.adb.stdout | 0 obj/vfs-ext.ali | 1377 ++++ obj/vfs-ext.o | Bin 0 -> 499920 bytes obj/vfs-fat.adb.stderr | 0 obj/vfs-fat.adb.stdout | 0 obj/vfs-fat.ali | 438 ++ obj/vfs-fat.o | Bin 0 -> 125360 bytes obj/vfs.adb.stderr | 0 obj/vfs.adb.stdout | 0 obj/vfs.ali | 809 +++ obj/vfs.o | Bin 0 -> 219312 bytes rts.gpr | 62 + rts.gpr.in | 62 + rtsdir/adainclude/a-charac.ads | 12 + rtsdir/adainclude/a-chlat1.ads | 247 + rtsdir/adainclude/a-unccon.ads | 17 + rtsdir/adainclude/a-uncdea.ads | 18 + rtsdir/adainclude/ada.ads | 12 + rtsdir/adainclude/i-c.ads | 41 + rtsdir/adainclude/interfac.ads | 120 + rtsdir/adainclude/s-atacco.ads | 27 + rtsdir/adainclude/s-maccod.ads | 93 + rtsdir/adainclude/s-stoele.adb | 53 + rtsdir/adainclude/s-stoele.ads | 60 + rtsdir/adainclude/s-unstyp.ads | 246 + rtsdir/adainclude/system.ads | 73 + rtsdir/adalib/a-charac.ali | 49 + rtsdir/adalib/a-chlat1.ali | 280 + rtsdir/adalib/a-unccon.ali | 52 + rtsdir/adalib/a-uncdea.ali | 53 + rtsdir/adalib/ada.ali | 45 + rtsdir/adalib/i-c.ali | 77 + rtsdir/adalib/interfac.ali | 134 + rtsdir/adalib/libgnat.a | Bin 0 -> 110856 bytes rtsdir/adalib/s-atacco.ali | 57 + rtsdir/adalib/s-maccod.ali | 114 + rtsdir/adalib/s-stoele.ali | 105 + rtsdir/adalib/s-unstyp.ali | 196 + rtsdir/adalib/system.ali | 105 + rtsdir/obj/a-charac.ads.stderr | 0 rtsdir/obj/a-charac.ads.stdout | 0 rtsdir/obj/a-charac.ali | 49 + rtsdir/obj/a-charac.o | Bin 0 -> 1816 bytes rtsdir/obj/a-chlat1.ads.stderr | 0 rtsdir/obj/a-chlat1.ads.stdout | 0 rtsdir/obj/a-chlat1.ali | 280 + rtsdir/obj/a-chlat1.o | Bin 0 -> 48560 bytes rtsdir/obj/a-unccon.ads.stderr | 0 rtsdir/obj/a-unccon.ads.stdout | 0 rtsdir/obj/a-unccon.ali | 52 + rtsdir/obj/a-unccon.o | Bin 0 -> 1816 bytes rtsdir/obj/a-uncdea.ads.stderr | 0 rtsdir/obj/a-uncdea.ads.stdout | 0 rtsdir/obj/a-uncdea.ali | 53 + rtsdir/obj/a-uncdea.o | Bin 0 -> 1816 bytes rtsdir/obj/ada.ads.stderr | 0 rtsdir/obj/ada.ads.stdout | 0 rtsdir/obj/ada.ali | 45 + rtsdir/obj/ada.o | Bin 0 -> 1800 bytes rtsdir/obj/gnat.lexch | 27 + rtsdir/obj/i-c.ads.stderr | 0 rtsdir/obj/i-c.ads.stdout | 0 rtsdir/obj/i-c.ali | 77 + rtsdir/obj/i-c.o | Bin 0 -> 6008 bytes rtsdir/obj/interfac.ads.stderr | 0 rtsdir/obj/interfac.ads.stdout | 0 rtsdir/obj/interfac.ali | 134 + rtsdir/obj/interfac.o | Bin 0 -> 6184 bytes rtsdir/obj/s-atacco.ads.stderr | 0 rtsdir/obj/s-atacco.ads.stdout | 0 rtsdir/obj/s-atacco.ali | 57 + rtsdir/obj/s-atacco.o | Bin 0 -> 1816 bytes rtsdir/obj/s-maccod.ads.stderr | 0 rtsdir/obj/s-maccod.ads.stdout | 0 rtsdir/obj/s-maccod.ali | 114 + rtsdir/obj/s-maccod.o | Bin 0 -> 8048 bytes rtsdir/obj/s-stoele.adb.stderr | 0 rtsdir/obj/s-stoele.adb.stdout | 0 rtsdir/obj/s-stoele.ali | 105 + rtsdir/obj/s-stoele.o | Bin 0 -> 3416 bytes rtsdir/obj/s-unstyp.ads.stderr | 0 rtsdir/obj/s-unstyp.ads.stdout | 0 rtsdir/obj/s-unstyp.ali | 196 + rtsdir/obj/s-unstyp.o | Bin 0 -> 8136 bytes rtsdir/obj/system.ads.stderr | 0 rtsdir/obj/system.ads.stdout | 0 rtsdir/obj/system.ali | 105 + rtsdir/obj/system.o | Bin 0 -> 10328 bytes scripts/checkstack.pl | 154 + source/arch/arch-clocks.ads | 45 + source/arch/arch-context.ads | 70 + source/arch/arch-debug.ads | 49 + source/arch/arch-hooks.ads | 33 + source/arch/arch-local.ads | 40 + source/arch/arch-mmu.ads | 250 + source/arch/arch-power.ads | 29 + source/arch/arch-snippets.ads | 81 + source/arch/arch.ads | 52 + source/arch/riscv64-limine/arch-clocks.adb | 77 + source/arch/riscv64-limine/arch-context.adb | 68 + source/arch/riscv64-limine/arch-cpu.adb | 87 + source/arch/riscv64-limine/arch-cpu.ads | 58 + source/arch/riscv64-limine/arch-debug.adb | 40 + source/arch/riscv64-limine/arch-dtb.adb | 34 + source/arch/riscv64-limine/arch-dtb.ads | 46 + .../arch/riscv64-limine/arch-entrypoint.adb | 67 + .../arch/riscv64-limine/arch-entrypoint.ads | 20 + source/arch/riscv64-limine/arch-hooks.adb | 44 + .../arch/riscv64-limine/arch-interrupts.ads | 39 + source/arch/riscv64-limine/arch-limine.adb | 1 + source/arch/riscv64-limine/arch-limine.ads | 1 + source/arch/riscv64-limine/arch-local.adb | 66 + source/arch/riscv64-limine/arch-mmu.adb | 136 + source/arch/riscv64-limine/arch-power.adb | 32 + source/arch/riscv64-limine/arch-snippets.adb | 65 + source/arch/riscv64-limine/devices-uart.adb | 35 + source/arch/riscv64-limine/devices-uart.ads | 37 + source/arch/riscv64-limine/linker.ld | 69 + source/arch/x86_64-limine/arch-acpi.adb | 147 + source/arch/x86_64-limine/arch-acpi.ads | 275 + source/arch/x86_64-limine/arch-apic.adb | 405 ++ source/arch/x86_64-limine/arch-apic.ads | 96 + source/arch/x86_64-limine/arch-clocks.adb | 94 + source/arch/x86_64-limine/arch-context.adb | 166 + source/arch/x86_64-limine/arch-cpu.adb | 311 + source/arch/x86_64-limine/arch-cpu.ads | 89 + source/arch/x86_64-limine/arch-debug.adb | 40 + source/arch/x86_64-limine/arch-entrypoint.adb | 92 + source/arch/x86_64-limine/arch-entrypoint.ads | 20 + source/arch/x86_64-limine/arch-gdt.adb | 167 + source/arch/x86_64-limine/arch-gdt.ads | 70 + source/arch/x86_64-limine/arch-hooks.adb | 95 + source/arch/x86_64-limine/arch-hpet.adb | 101 + source/arch/x86_64-limine/arch-hpet.ads | 29 + source/arch/x86_64-limine/arch-idt.adb | 183 + source/arch/x86_64-limine/arch-idt.ads | 48 + source/arch/x86_64-limine/arch-interrupts.adb | 430 ++ source/arch/x86_64-limine/arch-interrupts.ads | 106 + .../arch/x86_64-limine/arch-interruptthunks.S | 108 + source/arch/x86_64-limine/arch-limine.adb | 123 + source/arch/x86_64-limine/arch-limine.ads | 293 + source/arch/x86_64-limine/arch-local.adb | 96 + source/arch/x86_64-limine/arch-mmu.adb | 743 ++ source/arch/x86_64-limine/arch-pci.adb | 368 + source/arch/x86_64-limine/arch-pci.ads | 119 + source/arch/x86_64-limine/arch-pic.adb | 41 + source/arch/x86_64-limine/arch-pic.ads | 27 + source/arch/x86_64-limine/arch-pit.adb | 66 + source/arch/x86_64-limine/arch-pit.ads | 30 + source/arch/x86_64-limine/arch-power.adb | 44 + source/arch/x86_64-limine/arch-rtc.adb | 125 + source/arch/x86_64-limine/arch-rtc.ads | 31 + source/arch/x86_64-limine/arch-snippets.adb | 302 + .../arch/x86_64-limine/arch-syscall_handler.S | 76 + source/arch/x86_64-limine/devices-ata.adb | 477 ++ source/arch/x86_64-limine/devices-ata.ads | 111 + source/arch/x86_64-limine/devices-fb.adb | 223 + source/arch/x86_64-limine/devices-fb.ads | 37 + source/arch/x86_64-limine/devices-hwrng.adb | 76 + source/arch/x86_64-limine/devices-hwrng.ads | 30 + .../arch/x86_64-limine/devices-i6300esb.adb | 138 + .../arch/x86_64-limine/devices-i6300esb.ads | 66 + source/arch/x86_64-limine/devices-lpt.adb | 74 + source/arch/x86_64-limine/devices-lpt.ads | 38 + .../arch/x86_64-limine/devices-pc_speaker.adb | 80 + .../arch/x86_64-limine/devices-pc_speaker.ads | 32 + .../x86_64-limine/devices-ps2keyboard.adb | 182 + .../x86_64-limine/devices-ps2keyboard.ads | 43 + .../arch/x86_64-limine/devices-ps2mouse.adb | 331 + .../arch/x86_64-limine/devices-ps2mouse.ads | 50 + source/arch/x86_64-limine/devices-sata.adb | 586 ++ source/arch/x86_64-limine/devices-sata.ads | 444 ++ source/arch/x86_64-limine/devices-serial.adb | 222 + source/arch/x86_64-limine/devices-serial.ads | 93 + source/arch/x86_64-limine/linker.ld | 67 + source/config.ads | 29 + source/cryptography/cryptography-chacha20.adb | 65 + source/cryptography/cryptography-chacha20.ads | 40 + source/cryptography/cryptography-md5.adb | 119 + source/cryptography/cryptography-md5.ads | 36 + source/cryptography/cryptography-random.adb | 143 + source/cryptography/cryptography-random.ads | 40 + source/cryptography/cryptography.ads | 18 + source/devices/devices-console.adb | 77 + source/devices/devices-console.ads | 39 + source/devices/devices-loopback.adb | 133 + source/devices/devices-loopback.ads | 52 + source/devices/devices-netinter.ads | 20 + source/devices/devices-partitions.adb | 400 ++ source/devices/devices-partitions.ads | 79 + source/devices/devices-ramdev.adb | 120 + source/devices/devices-ramdev.ads | 42 + source/devices/devices-streams.adb | 186 + source/devices/devices-streams.ads | 71 + source/devices/devices-termios.ads | 81 + source/devices/devices.adb | 383 ++ source/devices/devices.ads | 279 + source/ipc/ipc-fifo.adb | 281 + source/ipc/ipc-fifo.ads | 156 + source/ipc/ipc-filelock.adb | 185 + source/ipc/ipc-filelock.ads | 111 + source/ipc/ipc-futex.adb | 109 + source/ipc/ipc-futex.ads | 47 + source/ipc/ipc-pty.adb | 426 ++ source/ipc/ipc-pty.ads | 203 + source/ipc/ipc-shm.adb | 264 + source/ipc/ipc-shm.ads | 98 + source/ipc/ipc-socket.adb | 1029 +++ source/ipc/ipc-socket.ads | 573 ++ source/ipc/ipc.ads | 18 + source/kernel_main.adb | 224 + source/kernel_main.ads | 26 + source/lib/lib-alignment.adb | 41 + source/lib/lib-alignment.ads | 43 + source/lib/lib-atomic.ads | 68 + source/lib/lib-cmdline.adb | 115 + source/lib/lib-cmdline.ads | 54 + source/lib/lib-messages.adb | 131 + source/lib/lib-messages.ads | 103 + source/lib/lib-panic.adb | 48 + source/lib/lib-panic.ads | 39 + source/lib/lib-runtime.adb | 101 + source/lib/lib-runtime.ads | 45 + source/lib/lib-synchronization.adb | 71 + source/lib/lib-synchronization.ads | 66 + source/lib/lib-time.adb | 63 + source/lib/lib-time.ads | 77 + source/lib/lib.adb | 65 + source/lib/lib.ads | 35 + source/main.adb | 29 + source/memory/memory-physical.adb | 266 + source/memory/memory-physical.ads | 60 + source/memory/memory.ads | 36 + source/networking/networking-arp.adb | 127 + source/networking/networking-arp.ads | 86 + source/networking/networking-interfaces.adb | 239 + source/networking/networking-interfaces.ads | 107 + source/networking/networking-ipv4.adb | 41 + source/networking/networking-ipv4.ads | 67 + source/networking/networking-ipv6.adb | 35 + source/networking/networking-ipv6.ads | 54 + source/networking/networking.adb | 51 + source/networking/networking.ads | 55 + source/pragmas.adc | 45 + source/rts/a-charac.ads | 12 + source/rts/a-chlat1.ads | 247 + source/rts/a-unccon.ads | 17 + source/rts/a-uncdea.ads | 18 + source/rts/ada.ads | 12 + source/rts/i-c.ads | 41 + source/rts/interfac.ads | 120 + source/rts/riscv64-limine/system.ads | 73 + source/rts/s-atacco.ads | 27 + source/rts/s-maccod.ads | 93 + source/rts/s-stoele.adb | 53 + source/rts/s-stoele.ads | 60 + source/rts/s-unstyp.ads | 246 + source/rts/x86_64-limine/system.ads | 73 + source/scheduler.adb | 828 +++ source/scheduler.ads | 183 + source/userland/userland-corefile.adb | 76 + source/userland/userland-corefile.ads | 24 + source/userland/userland-elf.adb | 209 + source/userland/userland-elf.ads | 142 + source/userland/userland-loader.adb | 346 + source/userland/userland-loader.ads | 65 + source/userland/userland-mac.adb | 128 + source/userland/userland-mac.ads | 180 + source/userland/userland-memory_failure.adb | 38 + source/userland/userland-memory_failure.ads | 39 + source/userland/userland-memory_locations.ads | 30 + source/userland/userland-oom_failure.adb | 85 + source/userland/userland-oom_failure.ads | 35 + source/userland/userland-process.adb | 1002 +++ source/userland/userland-process.ads | 677 ++ source/userland/userland-syscall.adb | 6045 +++++++++++++++++ source/userland/userland-syscall.ads | 1356 ++++ source/userland/userland.ads | 23 + source/vfs/vfs-dev.adb | 342 + source/vfs/vfs-dev.ads | 116 + source/vfs/vfs-ext.adb | 2644 +++++++ source/vfs/vfs-ext.ads | 542 ++ source/vfs/vfs-fat.adb | 505 ++ source/vfs/vfs-fat.ads | 241 + source/vfs/vfs.adb | 1123 +++ source/vfs/vfs.ads | 674 ++ version.sh | 41 + 668 files changed, 97511 insertions(+) create mode 100644 COPYING create mode 100644 GNUmakefile create mode 100644 GNUmakefile.in create mode 100644 README create mode 100644 autom4te.cache/output.0 create mode 100644 autom4te.cache/output.1 create mode 100644 autom4te.cache/output.2 create mode 100644 autom4te.cache/requests create mode 100644 autom4te.cache/traces.0 create mode 100644 autom4te.cache/traces.1 create mode 100644 autom4te.cache/traces.2 create mode 100755 bootstrap create mode 100755 build-aux/config.guess create mode 100755 build-aux/config.sub create mode 100755 build-aux/install-sh create mode 100644 config.log create mode 100755 config.status create mode 100755 configure create mode 100644 configure.ac create mode 100755 configure~ create mode 100644 docs/fdl.texi create mode 100644 docs/ironclad.texi create mode 100755 ironclad create mode 100644 ironclad.gpr create mode 100644 ironclad.gpr.in create mode 100644 ironclad.info create mode 100644 ironclad.info.gz create mode 100644 libgnat-hack/libgnat-1.a create mode 100644 libgnat-hack/libgnat-10.a create mode 100644 libgnat-hack/libgnat-11.a create mode 100644 libgnat-hack/libgnat-12.a create mode 100644 libgnat-hack/libgnat-13.a create mode 100644 libgnat-hack/libgnat-14.a create mode 100644 libgnat-hack/libgnat-15.a create mode 100644 libgnat-hack/libgnat-16.a create mode 100644 libgnat-hack/libgnat-17.a create mode 100644 libgnat-hack/libgnat-18.a create mode 100644 libgnat-hack/libgnat-19.a create mode 100644 libgnat-hack/libgnat-2.a create mode 100644 libgnat-hack/libgnat-20.a create mode 100644 libgnat-hack/libgnat-21.a create mode 100644 libgnat-hack/libgnat-22.a create mode 100644 libgnat-hack/libgnat-23.a create mode 100644 libgnat-hack/libgnat-24.a create mode 100644 libgnat-hack/libgnat-25.a create mode 100644 libgnat-hack/libgnat-26.a create mode 100644 libgnat-hack/libgnat-27.a create mode 100644 libgnat-hack/libgnat-28.a create mode 100644 libgnat-hack/libgnat-29.a create mode 100644 libgnat-hack/libgnat-3.a create mode 100644 libgnat-hack/libgnat-30.a create mode 100644 libgnat-hack/libgnat-31.a create mode 100644 libgnat-hack/libgnat-32.a create mode 100644 libgnat-hack/libgnat-33.a create mode 100644 libgnat-hack/libgnat-34.a create mode 100644 libgnat-hack/libgnat-35.a create mode 100644 libgnat-hack/libgnat-36.a create mode 100644 libgnat-hack/libgnat-37.a create mode 100644 libgnat-hack/libgnat-38.a create mode 100644 libgnat-hack/libgnat-39.a create mode 100644 libgnat-hack/libgnat-4.a create mode 100644 libgnat-hack/libgnat-40.a create mode 100644 libgnat-hack/libgnat-41.a create mode 100644 libgnat-hack/libgnat-42.a create mode 100644 libgnat-hack/libgnat-43.a create mode 100644 libgnat-hack/libgnat-44.a create mode 100644 libgnat-hack/libgnat-45.a create mode 100644 libgnat-hack/libgnat-46.a create mode 100644 libgnat-hack/libgnat-47.a create mode 100644 libgnat-hack/libgnat-48.a create mode 100644 libgnat-hack/libgnat-49.a create mode 100644 libgnat-hack/libgnat-5.a create mode 100644 libgnat-hack/libgnat-50.a create mode 100644 libgnat-hack/libgnat-51.a create mode 100644 libgnat-hack/libgnat-52.a create mode 100644 libgnat-hack/libgnat-53.a create mode 100644 libgnat-hack/libgnat-54.a create mode 100644 libgnat-hack/libgnat-55.a create mode 100644 libgnat-hack/libgnat-56.a create mode 100644 libgnat-hack/libgnat-57.a create mode 100644 libgnat-hack/libgnat-58.a create mode 100644 libgnat-hack/libgnat-59.a create mode 100644 libgnat-hack/libgnat-6.a create mode 100644 libgnat-hack/libgnat-60.a create mode 100644 libgnat-hack/libgnat-61.a create mode 100644 libgnat-hack/libgnat-62.a create mode 100644 libgnat-hack/libgnat-63.a create mode 100644 libgnat-hack/libgnat-64.a create mode 100644 libgnat-hack/libgnat-65.a create mode 100644 libgnat-hack/libgnat-66.a create mode 100644 libgnat-hack/libgnat-67.a create mode 100644 libgnat-hack/libgnat-68.a create mode 100644 libgnat-hack/libgnat-69.a create mode 100644 libgnat-hack/libgnat-7.a create mode 100644 libgnat-hack/libgnat-70.a create mode 100644 libgnat-hack/libgnat-71.a create mode 100644 libgnat-hack/libgnat-72.a create mode 100644 libgnat-hack/libgnat-73.a create mode 100644 libgnat-hack/libgnat-74.a create mode 100644 libgnat-hack/libgnat-75.a create mode 100644 libgnat-hack/libgnat-76.a create mode 100644 libgnat-hack/libgnat-77.a create mode 100644 libgnat-hack/libgnat-78.a create mode 100644 libgnat-hack/libgnat-79.a create mode 100644 libgnat-hack/libgnat-8.a create mode 100644 libgnat-hack/libgnat-80.a create mode 100644 libgnat-hack/libgnat-81.a create mode 100644 libgnat-hack/libgnat-82.a create mode 100644 libgnat-hack/libgnat-83.a create mode 100644 libgnat-hack/libgnat-84.a create mode 100644 libgnat-hack/libgnat-85.a create mode 100644 libgnat-hack/libgnat-86.a create mode 100644 libgnat-hack/libgnat-87.a create mode 100644 libgnat-hack/libgnat-88.a create mode 100644 libgnat-hack/libgnat-89.a create mode 100644 libgnat-hack/libgnat-9.a create mode 100644 libgnat-hack/libgnat-90.a create mode 100644 libgnat-hack/libgnat-91.a create mode 100644 libgnat-hack/libgnat-92.a create mode 100644 libgnat-hack/libgnat-93.a create mode 100644 libgnat-hack/libgnat-94.a create mode 100644 libgnat-hack/libgnat-95.a create mode 100644 libgnat-hack/libgnat-96.a create mode 100644 libgnat-hack/libgnat-97.a create mode 100644 libgnat-hack/libgnat-98.a create mode 100644 libgnat-hack/libgnat-99.a create mode 100644 libgnat-hack/libgnat.a create mode 100644 obj/arch-clocks.adb.stderr create mode 100644 obj/arch-clocks.adb.stdout create mode 100644 obj/arch-clocks.ali create mode 100644 obj/arch-clocks.o create mode 100644 obj/arch-context.adb.stderr create mode 100644 obj/arch-context.adb.stdout create mode 100644 obj/arch-context.ali create mode 100644 obj/arch-context.o create mode 100644 obj/arch-cpu.adb.stderr create mode 100644 obj/arch-cpu.adb.stdout create mode 100644 obj/arch-cpu.ali create mode 100644 obj/arch-cpu.o create mode 100644 obj/arch-debug.adb.stderr create mode 100644 obj/arch-debug.adb.stdout create mode 100644 obj/arch-debug.ali create mode 100644 obj/arch-debug.o create mode 100644 obj/arch-dtb.adb.stderr create mode 100644 obj/arch-dtb.adb.stdout create mode 100644 obj/arch-dtb.ali create mode 100644 obj/arch-dtb.o create mode 100644 obj/arch-entrypoint.adb.stderr create mode 100644 obj/arch-entrypoint.adb.stdout create mode 100644 obj/arch-entrypoint.ali create mode 100644 obj/arch-entrypoint.o create mode 100644 obj/arch-hooks.adb.stderr create mode 100644 obj/arch-hooks.adb.stdout create mode 100644 obj/arch-hooks.ali create mode 100644 obj/arch-hooks.o create mode 100644 obj/arch-interrupts.ads.stderr create mode 100644 obj/arch-interrupts.ads.stdout create mode 100644 obj/arch-interrupts.ali create mode 100644 obj/arch-interrupts.o create mode 100644 obj/arch-limine.adb.stderr create mode 100644 obj/arch-limine.adb.stdout create mode 100644 obj/arch-limine.ali create mode 100644 obj/arch-limine.o create mode 100644 obj/arch-local.adb.stderr create mode 100644 obj/arch-local.adb.stdout create mode 100644 obj/arch-local.ali create mode 100644 obj/arch-local.o create mode 100644 obj/arch-mmu.adb.stderr create mode 100644 obj/arch-mmu.adb.stdout create mode 100644 obj/arch-mmu.ali create mode 100644 obj/arch-mmu.o create mode 100644 obj/arch-power.adb.stderr create mode 100644 obj/arch-power.adb.stdout create mode 100644 obj/arch-power.ali create mode 100644 obj/arch-power.o create mode 100644 obj/arch-snippets.adb.stderr create mode 100644 obj/arch-snippets.adb.stdout create mode 100644 obj/arch-snippets.ali create mode 100644 obj/arch-snippets.o create mode 100644 obj/arch.ads.stderr create mode 100644 obj/arch.ads.stdout create mode 100644 obj/arch.ali create mode 100644 obj/arch.o create mode 100644 obj/b__main.adb create mode 100644 obj/b__main.ads create mode 100644 obj/b__main.ali create mode 100644 obj/b__main.o create mode 100644 obj/config.ads.stderr create mode 100644 obj/config.ads.stdout create mode 100644 obj/config.ali create mode 100644 obj/config.o create mode 100644 obj/cryptography-chacha20.adb.stderr create mode 100644 obj/cryptography-chacha20.adb.stdout create mode 100644 obj/cryptography-chacha20.ali create mode 100644 obj/cryptography-chacha20.o create mode 100644 obj/cryptography-md5.adb.stderr create mode 100644 obj/cryptography-md5.adb.stdout create mode 100644 obj/cryptography-md5.ali create mode 100644 obj/cryptography-md5.o create mode 100644 obj/cryptography-random.adb.stderr create mode 100644 obj/cryptography-random.adb.stdout create mode 100644 obj/cryptography-random.ali create mode 100644 obj/cryptography-random.o create mode 100644 obj/cryptography.ads.stderr create mode 100644 obj/cryptography.ads.stdout create mode 100644 obj/cryptography.ali create mode 100644 obj/cryptography.o create mode 100644 obj/devices-console.adb.stderr create mode 100644 obj/devices-console.adb.stdout create mode 100644 obj/devices-console.ali create mode 100644 obj/devices-console.o create mode 100644 obj/devices-loopback.adb.stderr create mode 100644 obj/devices-loopback.adb.stdout create mode 100644 obj/devices-loopback.ali create mode 100644 obj/devices-loopback.o create mode 100644 obj/devices-netinter.ads.stderr create mode 100644 obj/devices-netinter.ads.stdout create mode 100644 obj/devices-netinter.ali create mode 100644 obj/devices-netinter.o create mode 100644 obj/devices-streams.adb.stderr create mode 100644 obj/devices-streams.adb.stdout create mode 100644 obj/devices-streams.ali create mode 100644 obj/devices-streams.o create mode 100644 obj/devices-termios.ads.stderr create mode 100644 obj/devices-termios.ads.stdout create mode 100644 obj/devices-termios.ali create mode 100644 obj/devices-termios.o create mode 100644 obj/devices-uart.adb.stderr create mode 100644 obj/devices-uart.adb.stdout create mode 100644 obj/devices-uart.ali create mode 100644 obj/devices-uart.o create mode 100644 obj/devices.adb.stderr create mode 100644 obj/devices.adb.stdout create mode 100644 obj/devices.ali create mode 100644 obj/devices.o create mode 100644 obj/ipc-fifo.adb.stderr create mode 100644 obj/ipc-fifo.adb.stdout create mode 100644 obj/ipc-fifo.ali create mode 100644 obj/ipc-fifo.o create mode 100644 obj/ipc-filelock.adb.stderr create mode 100644 obj/ipc-filelock.adb.stdout create mode 100644 obj/ipc-filelock.ali create mode 100644 obj/ipc-filelock.o create mode 100644 obj/ipc-futex.adb.stderr create mode 100644 obj/ipc-futex.adb.stdout create mode 100644 obj/ipc-futex.ali create mode 100644 obj/ipc-futex.o create mode 100644 obj/ipc-pty.adb.stderr create mode 100644 obj/ipc-pty.adb.stdout create mode 100644 obj/ipc-pty.ali create mode 100644 obj/ipc-pty.o create mode 100644 obj/ipc-shm.adb.stderr create mode 100644 obj/ipc-shm.adb.stdout create mode 100644 obj/ipc-shm.ali create mode 100644 obj/ipc-shm.o create mode 100644 obj/ipc-socket.adb.stderr create mode 100644 obj/ipc-socket.adb.stdout create mode 100644 obj/ipc-socket.ali create mode 100644 obj/ipc-socket.o create mode 100644 obj/ipc.ads.stderr create mode 100644 obj/ipc.ads.stdout create mode 100644 obj/ipc.ali create mode 100644 obj/ipc.o create mode 100644 obj/kernel_main.adb.stderr create mode 100644 obj/kernel_main.adb.stdout create mode 100644 obj/kernel_main.ali create mode 100644 obj/kernel_main.o create mode 100644 obj/lib-alignment.adb.stderr create mode 100644 obj/lib-alignment.adb.stdout create mode 100644 obj/lib-alignment.ali create mode 100644 obj/lib-alignment.o create mode 100644 obj/lib-atomic.ads.stderr create mode 100644 obj/lib-atomic.ads.stdout create mode 100644 obj/lib-atomic.ali create mode 100644 obj/lib-atomic.o create mode 100644 obj/lib-cmdline.adb.stderr create mode 100644 obj/lib-cmdline.adb.stdout create mode 100644 obj/lib-cmdline.ali create mode 100644 obj/lib-cmdline.o create mode 100644 obj/lib-messages.adb.stderr create mode 100644 obj/lib-messages.adb.stdout create mode 100644 obj/lib-messages.ali create mode 100644 obj/lib-messages.o create mode 100644 obj/lib-panic.adb.stderr create mode 100644 obj/lib-panic.adb.stdout create mode 100644 obj/lib-panic.ali create mode 100644 obj/lib-panic.o create mode 100644 obj/lib-runtime.adb.stderr create mode 100644 obj/lib-runtime.adb.stdout create mode 100644 obj/lib-runtime.ali create mode 100644 obj/lib-runtime.o create mode 100644 obj/lib-synchronization.adb.stderr create mode 100644 obj/lib-synchronization.adb.stdout create mode 100644 obj/lib-synchronization.ali create mode 100644 obj/lib-synchronization.o create mode 100644 obj/lib-time.adb.stderr create mode 100644 obj/lib-time.adb.stdout create mode 100644 obj/lib-time.ali create mode 100644 obj/lib-time.o create mode 100644 obj/lib.adb.stderr create mode 100644 obj/lib.adb.stdout create mode 100644 obj/lib.ali create mode 100644 obj/lib.o create mode 100644 obj/main.adb.stderr create mode 100644 obj/main.adb.stdout create mode 100644 obj/main.ali create mode 100644 obj/main.bexch create mode 100644 obj/main.o create mode 100644 obj/memory-physical.adb.stderr create mode 100644 obj/memory-physical.adb.stdout create mode 100644 obj/memory-physical.ali create mode 100644 obj/memory-physical.o create mode 100644 obj/memory.ads.stderr create mode 100644 obj/memory.ads.stdout create mode 100644 obj/memory.ali create mode 100644 obj/memory.o create mode 100644 obj/networking-arp.adb.stderr create mode 100644 obj/networking-arp.adb.stdout create mode 100644 obj/networking-arp.ali create mode 100644 obj/networking-arp.o create mode 100644 obj/networking-interfaces.adb.stderr create mode 100644 obj/networking-interfaces.adb.stdout create mode 100644 obj/networking-interfaces.ali create mode 100644 obj/networking-interfaces.o create mode 100644 obj/networking-ipv4.adb.stderr create mode 100644 obj/networking-ipv4.adb.stdout create mode 100644 obj/networking-ipv4.ali create mode 100644 obj/networking-ipv4.o create mode 100644 obj/networking-ipv6.adb.stderr create mode 100644 obj/networking-ipv6.adb.stdout create mode 100644 obj/networking-ipv6.ali create mode 100644 obj/networking-ipv6.o create mode 100644 obj/networking.adb.stderr create mode 100644 obj/networking.adb.stdout create mode 100644 obj/networking.ali create mode 100644 obj/networking.o create mode 100644 obj/scheduler.adb.stderr create mode 100644 obj/scheduler.adb.stdout create mode 100644 obj/scheduler.ali create mode 100644 obj/scheduler.o create mode 100644 obj/userland-elf.adb.stderr create mode 100644 obj/userland-elf.adb.stdout create mode 100644 obj/userland-elf.ali create mode 100644 obj/userland-elf.o create mode 100644 obj/userland-loader.adb.stderr create mode 100644 obj/userland-loader.adb.stdout create mode 100644 obj/userland-loader.ali create mode 100644 obj/userland-loader.o create mode 100644 obj/userland-mac.adb.stderr create mode 100644 obj/userland-mac.adb.stdout create mode 100644 obj/userland-mac.ali create mode 100644 obj/userland-mac.o create mode 100644 obj/userland-memory_failure.adb.stderr create mode 100644 obj/userland-memory_failure.adb.stdout create mode 100644 obj/userland-memory_failure.ali create mode 100644 obj/userland-memory_failure.o create mode 100644 obj/userland-memory_locations.ads.stderr create mode 100644 obj/userland-memory_locations.ads.stdout create mode 100644 obj/userland-memory_locations.ali create mode 100644 obj/userland-memory_locations.o create mode 100644 obj/userland-oom_failure.adb.stderr create mode 100644 obj/userland-oom_failure.adb.stdout create mode 100644 obj/userland-oom_failure.ali create mode 100644 obj/userland-oom_failure.o create mode 100644 obj/userland-process.adb.stderr create mode 100644 obj/userland-process.adb.stdout create mode 100644 obj/userland-process.ali create mode 100644 obj/userland-process.o create mode 100644 obj/userland-syscall.adb.stderr create mode 100644 obj/userland-syscall.adb.stdout create mode 100644 obj/userland-syscall.ali create mode 100644 obj/userland-syscall.o create mode 100644 obj/userland.ads.stderr create mode 100644 obj/userland.ads.stdout create mode 100644 obj/userland.ali create mode 100644 obj/userland.o create mode 100644 obj/vfs-dev.adb.stderr create mode 100644 obj/vfs-dev.adb.stdout create mode 100644 obj/vfs-dev.ali create mode 100644 obj/vfs-dev.o create mode 100644 obj/vfs-ext.adb.stderr create mode 100644 obj/vfs-ext.adb.stdout create mode 100644 obj/vfs-ext.ali create mode 100644 obj/vfs-ext.o create mode 100644 obj/vfs-fat.adb.stderr create mode 100644 obj/vfs-fat.adb.stdout create mode 100644 obj/vfs-fat.ali create mode 100644 obj/vfs-fat.o create mode 100644 obj/vfs.adb.stderr create mode 100644 obj/vfs.adb.stdout create mode 100644 obj/vfs.ali create mode 100644 obj/vfs.o create mode 100644 rts.gpr create mode 100644 rts.gpr.in create mode 100644 rtsdir/adainclude/a-charac.ads create mode 100644 rtsdir/adainclude/a-chlat1.ads create mode 100644 rtsdir/adainclude/a-unccon.ads create mode 100644 rtsdir/adainclude/a-uncdea.ads create mode 100644 rtsdir/adainclude/ada.ads create mode 100644 rtsdir/adainclude/i-c.ads create mode 100644 rtsdir/adainclude/interfac.ads create mode 100644 rtsdir/adainclude/s-atacco.ads create mode 100644 rtsdir/adainclude/s-maccod.ads create mode 100644 rtsdir/adainclude/s-stoele.adb create mode 100644 rtsdir/adainclude/s-stoele.ads create mode 100644 rtsdir/adainclude/s-unstyp.ads create mode 100644 rtsdir/adainclude/system.ads create mode 100644 rtsdir/adalib/a-charac.ali create mode 100644 rtsdir/adalib/a-chlat1.ali create mode 100644 rtsdir/adalib/a-unccon.ali create mode 100644 rtsdir/adalib/a-uncdea.ali create mode 100644 rtsdir/adalib/ada.ali create mode 100644 rtsdir/adalib/i-c.ali create mode 100644 rtsdir/adalib/interfac.ali create mode 100644 rtsdir/adalib/libgnat.a create mode 100644 rtsdir/adalib/s-atacco.ali create mode 100644 rtsdir/adalib/s-maccod.ali create mode 100644 rtsdir/adalib/s-stoele.ali create mode 100644 rtsdir/adalib/s-unstyp.ali create mode 100644 rtsdir/adalib/system.ali create mode 100644 rtsdir/obj/a-charac.ads.stderr create mode 100644 rtsdir/obj/a-charac.ads.stdout create mode 100644 rtsdir/obj/a-charac.ali create mode 100644 rtsdir/obj/a-charac.o create mode 100644 rtsdir/obj/a-chlat1.ads.stderr create mode 100644 rtsdir/obj/a-chlat1.ads.stdout create mode 100644 rtsdir/obj/a-chlat1.ali create mode 100644 rtsdir/obj/a-chlat1.o create mode 100644 rtsdir/obj/a-unccon.ads.stderr create mode 100644 rtsdir/obj/a-unccon.ads.stdout create mode 100644 rtsdir/obj/a-unccon.ali create mode 100644 rtsdir/obj/a-unccon.o create mode 100644 rtsdir/obj/a-uncdea.ads.stderr create mode 100644 rtsdir/obj/a-uncdea.ads.stdout create mode 100644 rtsdir/obj/a-uncdea.ali create mode 100644 rtsdir/obj/a-uncdea.o create mode 100644 rtsdir/obj/ada.ads.stderr create mode 100644 rtsdir/obj/ada.ads.stdout create mode 100644 rtsdir/obj/ada.ali create mode 100644 rtsdir/obj/ada.o create mode 100644 rtsdir/obj/gnat.lexch create mode 100644 rtsdir/obj/i-c.ads.stderr create mode 100644 rtsdir/obj/i-c.ads.stdout create mode 100644 rtsdir/obj/i-c.ali create mode 100644 rtsdir/obj/i-c.o create mode 100644 rtsdir/obj/interfac.ads.stderr create mode 100644 rtsdir/obj/interfac.ads.stdout create mode 100644 rtsdir/obj/interfac.ali create mode 100644 rtsdir/obj/interfac.o create mode 100644 rtsdir/obj/s-atacco.ads.stderr create mode 100644 rtsdir/obj/s-atacco.ads.stdout create mode 100644 rtsdir/obj/s-atacco.ali create mode 100644 rtsdir/obj/s-atacco.o create mode 100644 rtsdir/obj/s-maccod.ads.stderr create mode 100644 rtsdir/obj/s-maccod.ads.stdout create mode 100644 rtsdir/obj/s-maccod.ali create mode 100644 rtsdir/obj/s-maccod.o create mode 100644 rtsdir/obj/s-stoele.adb.stderr create mode 100644 rtsdir/obj/s-stoele.adb.stdout create mode 100644 rtsdir/obj/s-stoele.ali create mode 100644 rtsdir/obj/s-stoele.o create mode 100644 rtsdir/obj/s-unstyp.ads.stderr create mode 100644 rtsdir/obj/s-unstyp.ads.stdout create mode 100644 rtsdir/obj/s-unstyp.ali create mode 100644 rtsdir/obj/s-unstyp.o create mode 100644 rtsdir/obj/system.ads.stderr create mode 100644 rtsdir/obj/system.ads.stdout create mode 100644 rtsdir/obj/system.ali create mode 100644 rtsdir/obj/system.o create mode 100755 scripts/checkstack.pl create mode 100644 source/arch/arch-clocks.ads create mode 100644 source/arch/arch-context.ads create mode 100644 source/arch/arch-debug.ads create mode 100644 source/arch/arch-hooks.ads create mode 100644 source/arch/arch-local.ads create mode 100644 source/arch/arch-mmu.ads create mode 100644 source/arch/arch-power.ads create mode 100644 source/arch/arch-snippets.ads create mode 100644 source/arch/arch.ads create mode 100644 source/arch/riscv64-limine/arch-clocks.adb create mode 100644 source/arch/riscv64-limine/arch-context.adb create mode 100644 source/arch/riscv64-limine/arch-cpu.adb create mode 100644 source/arch/riscv64-limine/arch-cpu.ads create mode 100644 source/arch/riscv64-limine/arch-debug.adb create mode 100644 source/arch/riscv64-limine/arch-dtb.adb create mode 100644 source/arch/riscv64-limine/arch-dtb.ads create mode 100644 source/arch/riscv64-limine/arch-entrypoint.adb create mode 100644 source/arch/riscv64-limine/arch-entrypoint.ads create mode 100644 source/arch/riscv64-limine/arch-hooks.adb create mode 100644 source/arch/riscv64-limine/arch-interrupts.ads create mode 120000 source/arch/riscv64-limine/arch-limine.adb create mode 120000 source/arch/riscv64-limine/arch-limine.ads create mode 100644 source/arch/riscv64-limine/arch-local.adb create mode 100644 source/arch/riscv64-limine/arch-mmu.adb create mode 100644 source/arch/riscv64-limine/arch-power.adb create mode 100644 source/arch/riscv64-limine/arch-snippets.adb create mode 100644 source/arch/riscv64-limine/devices-uart.adb create mode 100644 source/arch/riscv64-limine/devices-uart.ads create mode 100644 source/arch/riscv64-limine/linker.ld create mode 100644 source/arch/x86_64-limine/arch-acpi.adb create mode 100644 source/arch/x86_64-limine/arch-acpi.ads create mode 100644 source/arch/x86_64-limine/arch-apic.adb create mode 100644 source/arch/x86_64-limine/arch-apic.ads create mode 100644 source/arch/x86_64-limine/arch-clocks.adb create mode 100644 source/arch/x86_64-limine/arch-context.adb create mode 100644 source/arch/x86_64-limine/arch-cpu.adb create mode 100644 source/arch/x86_64-limine/arch-cpu.ads create mode 100644 source/arch/x86_64-limine/arch-debug.adb create mode 100644 source/arch/x86_64-limine/arch-entrypoint.adb create mode 100644 source/arch/x86_64-limine/arch-entrypoint.ads create mode 100644 source/arch/x86_64-limine/arch-gdt.adb create mode 100644 source/arch/x86_64-limine/arch-gdt.ads create mode 100644 source/arch/x86_64-limine/arch-hooks.adb create mode 100644 source/arch/x86_64-limine/arch-hpet.adb create mode 100644 source/arch/x86_64-limine/arch-hpet.ads create mode 100644 source/arch/x86_64-limine/arch-idt.adb create mode 100644 source/arch/x86_64-limine/arch-idt.ads create mode 100644 source/arch/x86_64-limine/arch-interrupts.adb create mode 100644 source/arch/x86_64-limine/arch-interrupts.ads create mode 100644 source/arch/x86_64-limine/arch-interruptthunks.S create mode 100644 source/arch/x86_64-limine/arch-limine.adb create mode 100644 source/arch/x86_64-limine/arch-limine.ads create mode 100644 source/arch/x86_64-limine/arch-local.adb create mode 100644 source/arch/x86_64-limine/arch-mmu.adb create mode 100644 source/arch/x86_64-limine/arch-pci.adb create mode 100644 source/arch/x86_64-limine/arch-pci.ads create mode 100644 source/arch/x86_64-limine/arch-pic.adb create mode 100644 source/arch/x86_64-limine/arch-pic.ads create mode 100644 source/arch/x86_64-limine/arch-pit.adb create mode 100644 source/arch/x86_64-limine/arch-pit.ads create mode 100644 source/arch/x86_64-limine/arch-power.adb create mode 100644 source/arch/x86_64-limine/arch-rtc.adb create mode 100644 source/arch/x86_64-limine/arch-rtc.ads create mode 100644 source/arch/x86_64-limine/arch-snippets.adb create mode 100644 source/arch/x86_64-limine/arch-syscall_handler.S create mode 100644 source/arch/x86_64-limine/devices-ata.adb create mode 100644 source/arch/x86_64-limine/devices-ata.ads create mode 100644 source/arch/x86_64-limine/devices-fb.adb create mode 100644 source/arch/x86_64-limine/devices-fb.ads create mode 100644 source/arch/x86_64-limine/devices-hwrng.adb create mode 100644 source/arch/x86_64-limine/devices-hwrng.ads create mode 100644 source/arch/x86_64-limine/devices-i6300esb.adb create mode 100644 source/arch/x86_64-limine/devices-i6300esb.ads create mode 100644 source/arch/x86_64-limine/devices-lpt.adb create mode 100644 source/arch/x86_64-limine/devices-lpt.ads create mode 100644 source/arch/x86_64-limine/devices-pc_speaker.adb create mode 100644 source/arch/x86_64-limine/devices-pc_speaker.ads create mode 100644 source/arch/x86_64-limine/devices-ps2keyboard.adb create mode 100644 source/arch/x86_64-limine/devices-ps2keyboard.ads create mode 100644 source/arch/x86_64-limine/devices-ps2mouse.adb create mode 100644 source/arch/x86_64-limine/devices-ps2mouse.ads create mode 100644 source/arch/x86_64-limine/devices-sata.adb create mode 100644 source/arch/x86_64-limine/devices-sata.ads create mode 100644 source/arch/x86_64-limine/devices-serial.adb create mode 100644 source/arch/x86_64-limine/devices-serial.ads create mode 100644 source/arch/x86_64-limine/linker.ld create mode 100644 source/config.ads create mode 100644 source/cryptography/cryptography-chacha20.adb create mode 100644 source/cryptography/cryptography-chacha20.ads create mode 100644 source/cryptography/cryptography-md5.adb create mode 100644 source/cryptography/cryptography-md5.ads create mode 100644 source/cryptography/cryptography-random.adb create mode 100644 source/cryptography/cryptography-random.ads create mode 100644 source/cryptography/cryptography.ads create mode 100644 source/devices/devices-console.adb create mode 100644 source/devices/devices-console.ads create mode 100644 source/devices/devices-loopback.adb create mode 100644 source/devices/devices-loopback.ads create mode 100644 source/devices/devices-netinter.ads create mode 100644 source/devices/devices-partitions.adb create mode 100644 source/devices/devices-partitions.ads create mode 100644 source/devices/devices-ramdev.adb create mode 100644 source/devices/devices-ramdev.ads create mode 100644 source/devices/devices-streams.adb create mode 100644 source/devices/devices-streams.ads create mode 100644 source/devices/devices-termios.ads create mode 100644 source/devices/devices.adb create mode 100644 source/devices/devices.ads create mode 100644 source/ipc/ipc-fifo.adb create mode 100644 source/ipc/ipc-fifo.ads create mode 100644 source/ipc/ipc-filelock.adb create mode 100644 source/ipc/ipc-filelock.ads create mode 100644 source/ipc/ipc-futex.adb create mode 100644 source/ipc/ipc-futex.ads create mode 100644 source/ipc/ipc-pty.adb create mode 100644 source/ipc/ipc-pty.ads create mode 100644 source/ipc/ipc-shm.adb create mode 100644 source/ipc/ipc-shm.ads create mode 100644 source/ipc/ipc-socket.adb create mode 100644 source/ipc/ipc-socket.ads create mode 100644 source/ipc/ipc.ads create mode 100644 source/kernel_main.adb create mode 100644 source/kernel_main.ads create mode 100644 source/lib/lib-alignment.adb create mode 100644 source/lib/lib-alignment.ads create mode 100644 source/lib/lib-atomic.ads create mode 100644 source/lib/lib-cmdline.adb create mode 100644 source/lib/lib-cmdline.ads create mode 100644 source/lib/lib-messages.adb create mode 100644 source/lib/lib-messages.ads create mode 100644 source/lib/lib-panic.adb create mode 100644 source/lib/lib-panic.ads create mode 100644 source/lib/lib-runtime.adb create mode 100644 source/lib/lib-runtime.ads create mode 100644 source/lib/lib-synchronization.adb create mode 100644 source/lib/lib-synchronization.ads create mode 100644 source/lib/lib-time.adb create mode 100644 source/lib/lib-time.ads create mode 100644 source/lib/lib.adb create mode 100644 source/lib/lib.ads create mode 100644 source/main.adb create mode 100644 source/memory/memory-physical.adb create mode 100644 source/memory/memory-physical.ads create mode 100644 source/memory/memory.ads create mode 100644 source/networking/networking-arp.adb create mode 100644 source/networking/networking-arp.ads create mode 100644 source/networking/networking-interfaces.adb create mode 100644 source/networking/networking-interfaces.ads create mode 100644 source/networking/networking-ipv4.adb create mode 100644 source/networking/networking-ipv4.ads create mode 100644 source/networking/networking-ipv6.adb create mode 100644 source/networking/networking-ipv6.ads create mode 100644 source/networking/networking.adb create mode 100644 source/networking/networking.ads create mode 100644 source/pragmas.adc create mode 100644 source/rts/a-charac.ads create mode 100644 source/rts/a-chlat1.ads create mode 100644 source/rts/a-unccon.ads create mode 100644 source/rts/a-uncdea.ads create mode 100644 source/rts/ada.ads create mode 100644 source/rts/i-c.ads create mode 100644 source/rts/interfac.ads create mode 100644 source/rts/riscv64-limine/system.ads create mode 100644 source/rts/s-atacco.ads create mode 100644 source/rts/s-maccod.ads create mode 100644 source/rts/s-stoele.adb create mode 100644 source/rts/s-stoele.ads create mode 100644 source/rts/s-unstyp.ads create mode 100644 source/rts/x86_64-limine/system.ads create mode 100644 source/scheduler.adb create mode 100644 source/scheduler.ads create mode 100644 source/userland/userland-corefile.adb create mode 100644 source/userland/userland-corefile.ads create mode 100644 source/userland/userland-elf.adb create mode 100644 source/userland/userland-elf.ads create mode 100644 source/userland/userland-loader.adb create mode 100644 source/userland/userland-loader.ads create mode 100644 source/userland/userland-mac.adb create mode 100644 source/userland/userland-mac.ads create mode 100644 source/userland/userland-memory_failure.adb create mode 100644 source/userland/userland-memory_failure.ads create mode 100644 source/userland/userland-memory_locations.ads create mode 100644 source/userland/userland-oom_failure.adb create mode 100644 source/userland/userland-oom_failure.ads create mode 100644 source/userland/userland-process.adb create mode 100644 source/userland/userland-process.ads create mode 100644 source/userland/userland-syscall.adb create mode 100644 source/userland/userland-syscall.ads create mode 100644 source/userland/userland.ads create mode 100644 source/vfs/vfs-dev.adb create mode 100644 source/vfs/vfs-dev.ads create mode 100644 source/vfs/vfs-ext.adb create mode 100644 source/vfs/vfs-ext.ads create mode 100644 source/vfs/vfs-fat.adb create mode 100644 source/vfs/vfs-fat.ads create mode 100644 source/vfs/vfs.adb create mode 100644 source/vfs/vfs.ads create mode 100755 version.sh diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..9506b94 --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,162 @@ +# GNUmakefile.in: Standard-complying wrapper for gprbuild and install. +# Copyright (C) 2023 streaksu +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Nuke built-in rules and variables +override MAKEFLAGS += -rR + +# Import some autoconf variables as make variables +override SRCDIR := /home/michael/capstoneProject/ironclad +override BUILDDIR := /home/michael/capstoneProject/ironclad +override PACKAGE_VERSION := g0a370c9 +override PACKAGE_TARNAME := ironclad +override OUTPUT := $(PACKAGE_TARNAME) +override DIST_OUTPUT := $(PACKAGE_TARNAME)-$(PACKAGE_VERSION) + +# Take care of reproducible dates. +override SOURCE_DATE_EPOCH := 1731253613 +export SOURCE_DATE_EPOCH + +# Autoconf dir variables. +override prefix := /usr/local +override datarootdir := ${prefix}/share +override infodir := ${datarootdir}/info +override docdir := ${datarootdir}/doc/${PACKAGE_TARNAME} + +# Generator executables. +override MKDIR_P := /usr/bin/mkdir -p +override INSTALL := /usr/bin/install -c +override INSTALL_DATA := ${INSTALL} -m 644 +override MAKEINFO := makeinfo +override TEXI2HTML := makeinfo --no-split --html +override TEXI2DVI := texi2dvi +override GPRBUILD := gprbuild +override GNATPROVE := gnatprove +override PERL := perl +override OBJDUMP := objdump +override GZIP := gzip +override STRIP := strip + +# Target information. +override target_cpu := riscv64 +override target_vendor := limine +override target_full := $(target_cpu)-$(target_vendor) + +# Macros to make our build system still work from within paths with spaces +# or other special characters. +override SPACE := $(subst ,, ) +MKESCAPE = $(subst $(SPACE),\ ,$(1)) +SHESCAPE = $(subst ','\'',$(1)) + +# Max threads. MAX POWAHH +override PARALLELISM := $(shell nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || psrinfo -tc 2>/dev/null || echo 1) +############################################################################### +# Rules for generating executables, documentation, and other artifacts. +.PHONY: all +all: $(OUTPUT) ironclad.info.gz + +$(OUTPUT): + $(GPRBUILD) -P '$(call SHESCAPE,$(BUILDDIR))'/rts.gpr -j$(PARALLELISM) + $(GPRBUILD) --RTS='$(call SHESCAPE,$(BUILDDIR))'/rtsdir \ + -P '$(call SHESCAPE,$(BUILDDIR))'/ironclad.gpr -j$(PARALLELISM) + +.PHONY: info +info: ironclad.info.gz + +ironclad.info.gz: ironclad.info + $(GZIP) -c '$(call SHESCAPE,$<)' > '$(call SHESCAPE,$@)' + +ironclad.info: $(call MKESCAPE,$(SRCDIR))/docs/ironclad.texi + $(MAKEINFO) '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' + +.PHONY: html +html: ironclad.html + +ironclad.html: $(call MKESCAPE,$(SRCDIR))/docs/ironclad.texi + $(TEXI2HTML) --set-customization-variable 'HIGHLIGHT_SYNTAX highlight' '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' + +.PHONY: dvi +dvi: ironclad.dvi + +ironclad.dvi: $(call MKESCAPE,$(SRCDIR))/docs/ironclad.texi + $(TEXI2DVI) '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' +############################################################################### +# Rules for checks and formal verification. +.PHONY: check +check: checkstack prove + +.PHONY: checkstack +checkstack: $(OUTPUT) + $(OBJDUMP) -d $(OUTPUT) | $(PERL) '$(call SHESCAPE,$(SRCDIR))'/scripts/checkstack.pl ${target_full} + +.PHONY: prove +prove: + $(GNATPROVE) -U --prover=cvc4,altergo,z3 --mode=all --counterexamples=on \ + -j$(PARALLELISM) -P '$(call SHESCAPE,$(SRCDIR))'/ironclad.gpr +############################################################################### +# Rules for cleaning build and configuration artifacts +.PHONY: clean +clean: + rm -rf $(OUTPUT) obj gnatprove '$(call SHESCAPE,$(SRCDIR))'/tests/obj \ + '$(call SHESCAPE,$(SRCDIR))'/source/rts/obj \ + '$(call SHESCAPE,$(SRCDIR))'/source/rts/adalib \ + ironclad.info ironclad.html ironclad.dvi ironclad.log ironclad.toc \ + ironclad.aux ironclad.info.gz rtsdir/obj + +# Remove files generated by configure. +.PHONY: distclean +distclean: clean + rm -rf config.log config.status GNUmakefile ironclad.gpr rts.gpr rtsdir libgnat-hack + +.PHONY: maintainer-clean +maintainer-clean: distclean + cd '$(call SHESCAPE,$(SRCDIR))' && rm -rf configure build-aux *'~' autom4te.cache +############################################################################### +# Create a release tarball. +.PHONY: dist +dist: + rm -rf "$(DIST_OUTPUT)" + $(MKDIR_P) "$(DIST_OUTPUT)" + cp -rp '$(call SHESCAPE,$(SRCDIR))'/.git "$(DIST_OUTPUT)"/ + cd "$(DIST_OUTPUT)" && git checkout . + cd "$(DIST_OUTPUT)" && git log --decorate --use-mailmap > ChangeLog + cd "$(DIST_OUTPUT)" && ./bootstrap + rm -rf "$(DIST_OUTPUT)"/.git + rm -rf "$(DIST_OUTPUT)"/.gitignore + rm -rf "$(DIST_OUTPUT)"/.mailmap + rm -rf "$(DIST_OUTPUT)"/autom4te.cache + echo "$(PACKAGE_VERSION)" >"$(DIST_OUTPUT)"/version + tar -zcf "$(DIST_OUTPUT)".tar.gz "$(DIST_OUTPUT)" + rm -rf "$(DIST_OUTPUT)" +############################################################################### +# Install artifacts and other files to their final locations. +.PHONY: install +install: all + $(INSTALL) -d '$(call SHESCAPE,$(DESTDIR)$(infodir))' + $(INSTALL) -d '$(call SHESCAPE,$(DESTDIR)$(docdir))' + $(INSTALL) -d '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/$(PACKAGE_TARNAME)' + $(INSTALL_DATA) $(OUTPUT) '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/$(PACKAGE_TARNAME)/' + $(INSTALL_DATA) ironclad.info.gz '$(call SHESCAPE,$(DESTDIR)$(infodir))/' + +# Install and strip executables. +.PHONY: install-strip +install-strip: install + $(STRIP) '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/$(PACKAGE_TARNAME)'/"$$(basename '$(OUTPUT)')" +############################################################################### +# Uninstall previously installed files and executables. +.PHONY: uninstall +uninstall: + rm '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/$(PACKAGE_TARNAME)/$(OUTPUT)' + rm '$(call SHESCAPE,$(DESTDIR)$(infodir))/ironclad.info' diff --git a/GNUmakefile.in b/GNUmakefile.in new file mode 100644 index 0000000..8916318 --- /dev/null +++ b/GNUmakefile.in @@ -0,0 +1,162 @@ +# GNUmakefile.in: Standard-complying wrapper for gprbuild and install. +# Copyright (C) 2023 streaksu +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Nuke built-in rules and variables +override MAKEFLAGS += -rR + +# Import some autoconf variables as make variables +override SRCDIR := @SRCDIR@ +override BUILDDIR := @BUILDDIR@ +override PACKAGE_VERSION := @PACKAGE_VERSION@ +override PACKAGE_TARNAME := @PACKAGE_TARNAME@ +override OUTPUT := $(PACKAGE_TARNAME) +override DIST_OUTPUT := $(PACKAGE_TARNAME)-$(PACKAGE_VERSION) + +# Take care of reproducible dates. +override SOURCE_DATE_EPOCH := @SOURCE_DATE_EPOCH@ +export SOURCE_DATE_EPOCH + +# Autoconf dir variables. +override prefix := @prefix@ +override datarootdir := @datarootdir@ +override infodir := @infodir@ +override docdir := @docdir@ + +# Generator executables. +override MKDIR_P := @MKDIR_P@ +override INSTALL := @INSTALL@ +override INSTALL_DATA := @INSTALL_DATA@ +override MAKEINFO := @MAKEINFO@ +override TEXI2HTML := @TEXI2HTML@ +override TEXI2DVI := @TEXI2DVI@ +override GPRBUILD := @GPRBUILD@ +override GNATPROVE := @GNATPROVE@ +override PERL := @PERL@ +override OBJDUMP := @OBJDUMP@ +override GZIP := @GZIP@ +override STRIP := @STRIP@ + +# Target information. +override target_cpu := @target_cpu@ +override target_vendor := @target_vendor@ +override target_full := $(target_cpu)-$(target_vendor) + +# Macros to make our build system still work from within paths with spaces +# or other special characters. +override SPACE := $(subst ,, ) +MKESCAPE = $(subst $(SPACE),\ ,$(1)) +SHESCAPE = $(subst ','\'',$(1)) + +# Max threads. MAX POWAHH +override PARALLELISM := $(shell nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || psrinfo -tc 2>/dev/null || echo 1) +############################################################################### +# Rules for generating executables, documentation, and other artifacts. +.PHONY: all +all: $(OUTPUT) ironclad.info.gz + +$(OUTPUT): + $(GPRBUILD) -P '$(call SHESCAPE,$(BUILDDIR))'/rts.gpr -j$(PARALLELISM) + $(GPRBUILD) --RTS='$(call SHESCAPE,$(BUILDDIR))'/rtsdir \ + -P '$(call SHESCAPE,$(BUILDDIR))'/ironclad.gpr -j$(PARALLELISM) + +.PHONY: info +info: ironclad.info.gz + +ironclad.info.gz: ironclad.info + $(GZIP) -c '$(call SHESCAPE,$<)' > '$(call SHESCAPE,$@)' + +ironclad.info: $(call MKESCAPE,$(SRCDIR))/docs/ironclad.texi + $(MAKEINFO) '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' + +.PHONY: html +html: ironclad.html + +ironclad.html: $(call MKESCAPE,$(SRCDIR))/docs/ironclad.texi + $(TEXI2HTML) --set-customization-variable 'HIGHLIGHT_SYNTAX highlight' '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' + +.PHONY: dvi +dvi: ironclad.dvi + +ironclad.dvi: $(call MKESCAPE,$(SRCDIR))/docs/ironclad.texi + $(TEXI2DVI) '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' +############################################################################### +# Rules for checks and formal verification. +.PHONY: check +check: checkstack prove + +.PHONY: checkstack +checkstack: $(OUTPUT) + $(OBJDUMP) -d $(OUTPUT) | $(PERL) '$(call SHESCAPE,$(SRCDIR))'/scripts/checkstack.pl ${target_full} + +.PHONY: prove +prove: + $(GNATPROVE) -U --prover=cvc4,altergo,z3 --mode=all --counterexamples=on \ + -j$(PARALLELISM) -P '$(call SHESCAPE,$(SRCDIR))'/ironclad.gpr +############################################################################### +# Rules for cleaning build and configuration artifacts +.PHONY: clean +clean: + rm -rf $(OUTPUT) obj gnatprove '$(call SHESCAPE,$(SRCDIR))'/tests/obj \ + '$(call SHESCAPE,$(SRCDIR))'/source/rts/obj \ + '$(call SHESCAPE,$(SRCDIR))'/source/rts/adalib \ + ironclad.info ironclad.html ironclad.dvi ironclad.log ironclad.toc \ + ironclad.aux ironclad.info.gz rtsdir/obj + +# Remove files generated by configure. +.PHONY: distclean +distclean: clean + rm -rf config.log config.status GNUmakefile ironclad.gpr rts.gpr rtsdir libgnat-hack + +.PHONY: maintainer-clean +maintainer-clean: distclean + cd '$(call SHESCAPE,$(SRCDIR))' && rm -rf configure build-aux *'~' autom4te.cache +############################################################################### +# Create a release tarball. +.PHONY: dist +dist: + rm -rf "$(DIST_OUTPUT)" + $(MKDIR_P) "$(DIST_OUTPUT)" + cp -rp '$(call SHESCAPE,$(SRCDIR))'/.git "$(DIST_OUTPUT)"/ + cd "$(DIST_OUTPUT)" && git checkout . + cd "$(DIST_OUTPUT)" && git log --decorate --use-mailmap > ChangeLog + cd "$(DIST_OUTPUT)" && ./bootstrap + rm -rf "$(DIST_OUTPUT)"/.git + rm -rf "$(DIST_OUTPUT)"/.gitignore + rm -rf "$(DIST_OUTPUT)"/.mailmap + rm -rf "$(DIST_OUTPUT)"/autom4te.cache + echo "$(PACKAGE_VERSION)" >"$(DIST_OUTPUT)"/version + tar -zcf "$(DIST_OUTPUT)".tar.gz "$(DIST_OUTPUT)" + rm -rf "$(DIST_OUTPUT)" +############################################################################### +# Install artifacts and other files to their final locations. +.PHONY: install +install: all + $(INSTALL) -d '$(call SHESCAPE,$(DESTDIR)$(infodir))' + $(INSTALL) -d '$(call SHESCAPE,$(DESTDIR)$(docdir))' + $(INSTALL) -d '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/$(PACKAGE_TARNAME)' + $(INSTALL_DATA) $(OUTPUT) '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/$(PACKAGE_TARNAME)/' + $(INSTALL_DATA) ironclad.info.gz '$(call SHESCAPE,$(DESTDIR)$(infodir))/' + +# Install and strip executables. +.PHONY: install-strip +install-strip: install + $(STRIP) '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/$(PACKAGE_TARNAME)'/"$$(basename '$(OUTPUT)')" +############################################################################### +# Uninstall previously installed files and executables. +.PHONY: uninstall +uninstall: + rm '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/$(PACKAGE_TARNAME)/$(OUTPUT)' + rm '$(call SHESCAPE,$(DESTDIR)$(infodir))/ironclad.info' diff --git a/README b/README new file mode 100644 index 0000000..c3d0a32 --- /dev/null +++ b/README @@ -0,0 +1,61 @@ +Ironclad is a partially formally verified real-time kernel, with a small +footprint, for general-purpose and embedded OSes, written in SPARK and Ada. + +Some of the supported features are: + +- A familiar POSIX-compatible interface. +- True simultaneous multitasking. +- Resiliency and small footprint. +- Partial gold-level formal verification. +- Advanced cryptography and a security-centered architecture, including MAC. +- Hard real-time scheduling and real-time oriented features. +- Support for severals architectures and boards. + +For more information about the project, some autogenerated documentation, bug +reporting, and development guides, check https://ironclad.nongnu.org + +-- Building and testing -- + +The tools needed are: + +- autoconf and automake when not using a tarball. +- perl for some checks, not for compilation. +- gprbuild for compilation, along with a compatible Ada compiler and assembler. +- GNU Info for building the documentation. +- gnatprove for formal verification, if desired. +- highlight for syntax highlighting when building the HTML documentation. + +For building the project's binaries, a standard configure-make-make install is +enough, like the following: + +./configure --target=x86_64-limine-elf # Or whatever other target. +make +make check # If desired, will need gnatprove and perl. +make install + +Several flags are provided in configure for customizing kernel settings, one +can check them with ./configure --help. + +The target has to always been specified, the vendor is used as the board to +compile for, the OS field is a placeholder and not used, autoconf just wants +it to be there. + +Documentation will be generated and installed with the main executable in the +info format, additional formats can be built with `make html` or `make dvi`. + +-- Contributing -- + +Thanks for considering contributing to Ironclad, it means a lot. + +Please check for information +on how to get started, and how to submit patches to the project. +======================================================================== + +Copyright (C) 2023 streaksu + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front-Cover Texts, and with no Back-Cover +Texts. A copy of the license is included in the "GNU Free +Documentation License" file as part of this distribution. diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0 new file mode 100644 index 0000000..8887f93 --- /dev/null +++ b/autom4te.cache/output.0 @@ -0,0 +1,3893 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: https://ironclad.nongnu.org/usersupport.html about your +$0: system, including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit +@%:@ as_fn_nop +@%:@ --------- +@%:@ Do nothing but, unlike ":", preserve the value of @S|@?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +@%:@ as_fn_nop +@%:@ --------- +@%:@ Do nothing but, unlike ":", preserve the value of @S|@?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Ironclad' +PACKAGE_TARNAME='ironclad' +PACKAGE_VERSION='g0a370c9' +PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' +PACKAGE_URL='' + +ac_default_prefix=/usr/local +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +GNATPROVE_FOUND +GNATPROVE +GPRBUILD_FOUND +GPRBUILD +TEXI2HTML_FOUND +TEXI2HTML +TEXI2DVI_FOUND +TEXI2DVI +MAKEINFO_FOUND +MAKEINFO +STRIP_FOUND +STRIP +GZIP_FOUND +GZIP +OBJDUMP_FOUND +OBJDUMP +PERL_FOUND +PERL +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +MKDIR_P +SOURCE_DATE_EPOCH +LDFLAGS +ASFLAGS +ADAFLAGS +MEMORY_ALLOCONLY +BUILDDIR +SRCDIR +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_werror +enable_alloconly +' + ac_precious_vars='build_alias +host_alias +target_alias +ADAFLAGS +ASFLAGS +LDFLAGS +PERL +OBJDUMP +GZIP +STRIP +MAKEINFO +TEXI2DVI +TEXI2HTML +GPRBUILD +GNATPROVE' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/ironclad@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Ironclad g0a370c9:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-werror treat warnings as errors + --enable-alloconly Use the alloconly allocator instead of standard + +Some influential environment variables: + ADAFLAGS Ada flags @<:@default: -g -O2 -pipe -gnaty -Wall -Wextra@:>@ + ASFLAGS Assembler flags @<:@default: -g -O2 -pipe -Wall@:>@ + LDFLAGS Linker flags @<:@default: -g -O2 -pipe -Wall@:>@ + PERL perl executable @<:@default: perl@:>@ + OBJDUMP objdump executable @<:@default: objdump@:>@ + GZIP gzip executable @<:@default: gzip@:>@ + STRIP strip executable @<:@default: strip@:>@ + MAKEINFO makeinfo executable @<:@default: makeinfo@:>@ + TEXI2DVI texi2dvi executable @<:@default: texi2dvi@:>@ + TEXI2HTML texi2html executable @<:@default: makeinfo --no-split --html@:>@ + GPRBUILD gprbuild executable @<:@default: gprbuild@:>@ + GNATPROVE gnatprove executable @<:@default: gnatprove@:>@ + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Ironclad configure g0a370c9 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# Auxiliary files required by this configure script. +ac_aux_files="config.guess config.sub install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +############################################################################### +# General project options. + + +SRCDIR="$(cd "$srcdir" && pwd -P)" +BUILDDIR="$(pwd -P)" + + + +werror_state="no" +@%:@ Check whether --enable-werror was given. +if test ${enable_werror+y} +then : + enableval=$enable_werror; werror_state="$enableval" +fi + + +MEMORY_ALLOCONLY="False" +@%:@ Check whether --enable-alloconly was given. +if test ${enable_alloconly+y} +then : + enableval=$enable_alloconly; test "$enableval" = "yes" && MEMORY_ALLOCONLY="True" +fi + + + + + +test "x$ADAFLAGS" = "x" && ADAFLAGS="-g -O2 -pipe -gnaty -Wall -Wextra" +if test "$werror_state" = "yes"; then + ADAFLAGS="$ADAFLAGS -Werror" +fi + + + +test "x$ASFLAGS" = "x" && ASFLAGS="-g -O2 -pipe -Wall" +if test "$werror_state" = "yes"; then + ASFLAGS="$ASFLAGS -Werror" +fi + + + +test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" +############################################################################### +# A ton of tools use source date epoch in order to not use date in the effort +# of doing reproducible builds. +# This command uses git, but thats no biggie because there is a fallback if +# no git is present and it is meant to only be run when regenerating, so +# tarball users will (ideally) never see this. +SOURCE_DATE_EPOCH="1731253613" + +############################################################################### +# Get programs and put them in comfortable variables. + +# $1 - UPERCASEVAR, $2 - default program, $3 - nice name + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + + + test "x$PERL" = "x" && PERL="perl" + # Extract the first word of "$PERL", so it can be a program name with args. +set dummy $PERL; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$PERL_FOUND"; then + ac_cv_prog_PERL_FOUND="$PERL_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL_FOUND="$PERL" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PERL_FOUND=$ac_cv_prog_PERL_FOUND +if test -n "$PERL_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL_FOUND" >&5 +printf "%s\n" "$PERL_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$PERL_FOUND" = "x$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: perl not found, please install perl or set PERL to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: perl not found, please install perl or set PERL to a valid executable" >&2;} + fi + + + + + test "x$OBJDUMP" = "x" && OBJDUMP="objdump" + # Extract the first word of "$OBJDUMP", so it can be a program name with args. +set dummy $OBJDUMP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OBJDUMP_FOUND"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP_FOUND=$ac_cv_prog_OBJDUMP_FOUND +if test -n "$OBJDUMP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP_FOUND" >&5 +printf "%s\n" "$OBJDUMP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$OBJDUMP_FOUND" = "x$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&2;} + fi + + + + + test "x$GZIP" = "x" && GZIP="gzip" + # Extract the first word of "$GZIP", so it can be a program name with args. +set dummy $GZIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GZIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GZIP_FOUND"; then + ac_cv_prog_GZIP_FOUND="$GZIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GZIP_FOUND="$GZIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GZIP_FOUND=$ac_cv_prog_GZIP_FOUND +if test -n "$GZIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GZIP_FOUND" >&5 +printf "%s\n" "$GZIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GZIP_FOUND" = "x$GZIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&2;} + fi + + + + + test "x$STRIP" = "x" && STRIP="strip" + # Extract the first word of "$STRIP", so it can be a program name with args. +set dummy $STRIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP_FOUND"; then + ac_cv_prog_STRIP_FOUND="$STRIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP_FOUND="$STRIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP_FOUND=$ac_cv_prog_STRIP_FOUND +if test -n "$STRIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP_FOUND" >&5 +printf "%s\n" "$STRIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$STRIP_FOUND" = "x$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&2;} + fi + + + + + test "x$MAKEINFO" = "x" && MAKEINFO="makeinfo" + # Extract the first word of "$MAKEINFO", so it can be a program name with args. +set dummy $MAKEINFO; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MAKEINFO_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$MAKEINFO_FOUND"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MAKEINFO_FOUND=$ac_cv_prog_MAKEINFO_FOUND +if test -n "$MAKEINFO_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO_FOUND" >&5 +printf "%s\n" "$MAKEINFO_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$MAKEINFO_FOUND" = "x$MAKEINFO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&2;} + fi + + + + + test "x$TEXI2DVI" = "x" && TEXI2DVI="texi2dvi" + # Extract the first word of "$TEXI2DVI", so it can be a program name with args. +set dummy $TEXI2DVI; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2DVI_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2DVI_FOUND"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2DVI_FOUND=$ac_cv_prog_TEXI2DVI_FOUND +if test -n "$TEXI2DVI_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2DVI_FOUND" >&5 +printf "%s\n" "$TEXI2DVI_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2DVI_FOUND" = "x$TEXI2DVI"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&2;} + fi + + + + + test "x$TEXI2HTML" = "x" && TEXI2HTML="makeinfo --no-split --html" + # Extract the first word of "$TEXI2HTML", so it can be a program name with args. +set dummy $TEXI2HTML; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2HTML_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2HTML_FOUND"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2HTML_FOUND=$ac_cv_prog_TEXI2HTML_FOUND +if test -n "$TEXI2HTML_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2HTML_FOUND" >&5 +printf "%s\n" "$TEXI2HTML_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2HTML_FOUND" = "x$TEXI2HTML"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&2;} + fi + + + + + test "x$GPRBUILD" = "x" && GPRBUILD="gprbuild" + # Extract the first word of "$GPRBUILD", so it can be a program name with args. +set dummy $GPRBUILD; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GPRBUILD_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GPRBUILD_FOUND"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GPRBUILD_FOUND=$ac_cv_prog_GPRBUILD_FOUND +if test -n "$GPRBUILD_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GPRBUILD_FOUND" >&5 +printf "%s\n" "$GPRBUILD_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GPRBUILD_FOUND" = "x$GPRBUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&2;} + fi + + + + + test "x$GNATPROVE" = "x" && GNATPROVE="gnatprove" + # Extract the first word of "$GNATPROVE", so it can be a program name with args. +set dummy $GNATPROVE; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GNATPROVE_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GNATPROVE_FOUND"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GNATPROVE_FOUND=$ac_cv_prog_GNATPROVE_FOUND +if test -n "$GNATPROVE_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNATPROVE_FOUND" >&5 +printf "%s\n" "$GNATPROVE_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GNATPROVE_FOUND" = "x$GNATPROVE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&2;} + fi + +############################################################################### +# Target acquisition and checking. + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +printf %s "checking target system type... " >&6; } +if test ${ac_cv_target+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +printf "%s\n" "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +case $target_cpu-$target_vendor in + riscv64-limine|x86_64-limine) + ;; + *) + as_fn_error $? "$target_cpu-$target_vendor is not available for compilation" "$LINENO" 5 + ;; +esac +############################################################################### +# Prepare an RTS from the cooked, pretty sources in the kernel. +mkdir -p rtsdir +mkdir -p rtsdir/adainclude +mkdir -p rtsdir/adalib +cp "$SRCDIR"/source/rts/*.adb rtsdir/adainclude +cp "$SRCDIR"/source/rts/*.ads rtsdir/adainclude +cp "$SRCDIR"/source/rts/$target_cpu-$target_vendor/*.ads rtsdir/adainclude +############## WARNING: DRAGONS LIE AHEAD ##################################### +# ____ __ +# { --.\ | .)%%%)%% +# '-._\\ | (\___ %)%%(%%(%%% +# `\\|{/ ^ _)-%(%%%%)%%;%%% +# .'^^^^^^^ /` %%)%%%%)%%%' +# //\ ) , / '%%%%(%%' +# , _.'/ `\<-- \< +# `^^^` ^^ ^^ +############################################################################### +# Some distros (looking at you, debian), despite we providing our RTS, will +# require for their gprbuild to link against -lgnat-XX where XX is the system +# version, this is not always provided by the distributions (sigh). +# Since we need nothing from them apart of their existance, we are just going +# to generate every possible file from libgnat-1.a to libgnat-99.a. +# Thats 100 years of GCC (Sorry Ironclad users in 3026). +mkdir -p libgnat-hack +touch libgnat-hack/libgnat.a +for i in $(seq 99); do + touch libgnat-hack/libgnat-$i.a +done +############################################################################### +# Finalize the settings and output the files. + +ac_config_files="$ac_config_files GNUmakefile ironclad.gpr rts.gpr" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +Ironclad config.status g0a370c9 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "GNUmakefile") CONFIG_FILES="$CONFIG_FILES GNUmakefile" ;; + "ironclad.gpr") CONFIG_FILES="$CONFIG_FILES ironclad.gpr" ;; + "rts.gpr") CONFIG_FILES="$CONFIG_FILES rts.gpr" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1 new file mode 100644 index 0000000..8887f93 --- /dev/null +++ b/autom4te.cache/output.1 @@ -0,0 +1,3893 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: https://ironclad.nongnu.org/usersupport.html about your +$0: system, including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit +@%:@ as_fn_nop +@%:@ --------- +@%:@ Do nothing but, unlike ":", preserve the value of @S|@?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +@%:@ as_fn_nop +@%:@ --------- +@%:@ Do nothing but, unlike ":", preserve the value of @S|@?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Ironclad' +PACKAGE_TARNAME='ironclad' +PACKAGE_VERSION='g0a370c9' +PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' +PACKAGE_URL='' + +ac_default_prefix=/usr/local +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +GNATPROVE_FOUND +GNATPROVE +GPRBUILD_FOUND +GPRBUILD +TEXI2HTML_FOUND +TEXI2HTML +TEXI2DVI_FOUND +TEXI2DVI +MAKEINFO_FOUND +MAKEINFO +STRIP_FOUND +STRIP +GZIP_FOUND +GZIP +OBJDUMP_FOUND +OBJDUMP +PERL_FOUND +PERL +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +MKDIR_P +SOURCE_DATE_EPOCH +LDFLAGS +ASFLAGS +ADAFLAGS +MEMORY_ALLOCONLY +BUILDDIR +SRCDIR +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_werror +enable_alloconly +' + ac_precious_vars='build_alias +host_alias +target_alias +ADAFLAGS +ASFLAGS +LDFLAGS +PERL +OBJDUMP +GZIP +STRIP +MAKEINFO +TEXI2DVI +TEXI2HTML +GPRBUILD +GNATPROVE' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/ironclad@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Ironclad g0a370c9:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-werror treat warnings as errors + --enable-alloconly Use the alloconly allocator instead of standard + +Some influential environment variables: + ADAFLAGS Ada flags @<:@default: -g -O2 -pipe -gnaty -Wall -Wextra@:>@ + ASFLAGS Assembler flags @<:@default: -g -O2 -pipe -Wall@:>@ + LDFLAGS Linker flags @<:@default: -g -O2 -pipe -Wall@:>@ + PERL perl executable @<:@default: perl@:>@ + OBJDUMP objdump executable @<:@default: objdump@:>@ + GZIP gzip executable @<:@default: gzip@:>@ + STRIP strip executable @<:@default: strip@:>@ + MAKEINFO makeinfo executable @<:@default: makeinfo@:>@ + TEXI2DVI texi2dvi executable @<:@default: texi2dvi@:>@ + TEXI2HTML texi2html executable @<:@default: makeinfo --no-split --html@:>@ + GPRBUILD gprbuild executable @<:@default: gprbuild@:>@ + GNATPROVE gnatprove executable @<:@default: gnatprove@:>@ + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Ironclad configure g0a370c9 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# Auxiliary files required by this configure script. +ac_aux_files="config.guess config.sub install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +############################################################################### +# General project options. + + +SRCDIR="$(cd "$srcdir" && pwd -P)" +BUILDDIR="$(pwd -P)" + + + +werror_state="no" +@%:@ Check whether --enable-werror was given. +if test ${enable_werror+y} +then : + enableval=$enable_werror; werror_state="$enableval" +fi + + +MEMORY_ALLOCONLY="False" +@%:@ Check whether --enable-alloconly was given. +if test ${enable_alloconly+y} +then : + enableval=$enable_alloconly; test "$enableval" = "yes" && MEMORY_ALLOCONLY="True" +fi + + + + + +test "x$ADAFLAGS" = "x" && ADAFLAGS="-g -O2 -pipe -gnaty -Wall -Wextra" +if test "$werror_state" = "yes"; then + ADAFLAGS="$ADAFLAGS -Werror" +fi + + + +test "x$ASFLAGS" = "x" && ASFLAGS="-g -O2 -pipe -Wall" +if test "$werror_state" = "yes"; then + ASFLAGS="$ASFLAGS -Werror" +fi + + + +test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" +############################################################################### +# A ton of tools use source date epoch in order to not use date in the effort +# of doing reproducible builds. +# This command uses git, but thats no biggie because there is a fallback if +# no git is present and it is meant to only be run when regenerating, so +# tarball users will (ideally) never see this. +SOURCE_DATE_EPOCH="1731253613" + +############################################################################### +# Get programs and put them in comfortable variables. + +# $1 - UPERCASEVAR, $2 - default program, $3 - nice name + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + + + test "x$PERL" = "x" && PERL="perl" + # Extract the first word of "$PERL", so it can be a program name with args. +set dummy $PERL; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$PERL_FOUND"; then + ac_cv_prog_PERL_FOUND="$PERL_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL_FOUND="$PERL" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PERL_FOUND=$ac_cv_prog_PERL_FOUND +if test -n "$PERL_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL_FOUND" >&5 +printf "%s\n" "$PERL_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$PERL_FOUND" = "x$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: perl not found, please install perl or set PERL to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: perl not found, please install perl or set PERL to a valid executable" >&2;} + fi + + + + + test "x$OBJDUMP" = "x" && OBJDUMP="objdump" + # Extract the first word of "$OBJDUMP", so it can be a program name with args. +set dummy $OBJDUMP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OBJDUMP_FOUND"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP_FOUND=$ac_cv_prog_OBJDUMP_FOUND +if test -n "$OBJDUMP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP_FOUND" >&5 +printf "%s\n" "$OBJDUMP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$OBJDUMP_FOUND" = "x$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&2;} + fi + + + + + test "x$GZIP" = "x" && GZIP="gzip" + # Extract the first word of "$GZIP", so it can be a program name with args. +set dummy $GZIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GZIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GZIP_FOUND"; then + ac_cv_prog_GZIP_FOUND="$GZIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GZIP_FOUND="$GZIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GZIP_FOUND=$ac_cv_prog_GZIP_FOUND +if test -n "$GZIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GZIP_FOUND" >&5 +printf "%s\n" "$GZIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GZIP_FOUND" = "x$GZIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&2;} + fi + + + + + test "x$STRIP" = "x" && STRIP="strip" + # Extract the first word of "$STRIP", so it can be a program name with args. +set dummy $STRIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP_FOUND"; then + ac_cv_prog_STRIP_FOUND="$STRIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP_FOUND="$STRIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP_FOUND=$ac_cv_prog_STRIP_FOUND +if test -n "$STRIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP_FOUND" >&5 +printf "%s\n" "$STRIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$STRIP_FOUND" = "x$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&2;} + fi + + + + + test "x$MAKEINFO" = "x" && MAKEINFO="makeinfo" + # Extract the first word of "$MAKEINFO", so it can be a program name with args. +set dummy $MAKEINFO; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MAKEINFO_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$MAKEINFO_FOUND"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MAKEINFO_FOUND=$ac_cv_prog_MAKEINFO_FOUND +if test -n "$MAKEINFO_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO_FOUND" >&5 +printf "%s\n" "$MAKEINFO_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$MAKEINFO_FOUND" = "x$MAKEINFO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&2;} + fi + + + + + test "x$TEXI2DVI" = "x" && TEXI2DVI="texi2dvi" + # Extract the first word of "$TEXI2DVI", so it can be a program name with args. +set dummy $TEXI2DVI; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2DVI_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2DVI_FOUND"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2DVI_FOUND=$ac_cv_prog_TEXI2DVI_FOUND +if test -n "$TEXI2DVI_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2DVI_FOUND" >&5 +printf "%s\n" "$TEXI2DVI_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2DVI_FOUND" = "x$TEXI2DVI"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&2;} + fi + + + + + test "x$TEXI2HTML" = "x" && TEXI2HTML="makeinfo --no-split --html" + # Extract the first word of "$TEXI2HTML", so it can be a program name with args. +set dummy $TEXI2HTML; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2HTML_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2HTML_FOUND"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2HTML_FOUND=$ac_cv_prog_TEXI2HTML_FOUND +if test -n "$TEXI2HTML_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2HTML_FOUND" >&5 +printf "%s\n" "$TEXI2HTML_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2HTML_FOUND" = "x$TEXI2HTML"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&2;} + fi + + + + + test "x$GPRBUILD" = "x" && GPRBUILD="gprbuild" + # Extract the first word of "$GPRBUILD", so it can be a program name with args. +set dummy $GPRBUILD; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GPRBUILD_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GPRBUILD_FOUND"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GPRBUILD_FOUND=$ac_cv_prog_GPRBUILD_FOUND +if test -n "$GPRBUILD_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GPRBUILD_FOUND" >&5 +printf "%s\n" "$GPRBUILD_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GPRBUILD_FOUND" = "x$GPRBUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&2;} + fi + + + + + test "x$GNATPROVE" = "x" && GNATPROVE="gnatprove" + # Extract the first word of "$GNATPROVE", so it can be a program name with args. +set dummy $GNATPROVE; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GNATPROVE_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GNATPROVE_FOUND"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GNATPROVE_FOUND=$ac_cv_prog_GNATPROVE_FOUND +if test -n "$GNATPROVE_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNATPROVE_FOUND" >&5 +printf "%s\n" "$GNATPROVE_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GNATPROVE_FOUND" = "x$GNATPROVE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&2;} + fi + +############################################################################### +# Target acquisition and checking. + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +printf %s "checking target system type... " >&6; } +if test ${ac_cv_target+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +printf "%s\n" "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +case $target_cpu-$target_vendor in + riscv64-limine|x86_64-limine) + ;; + *) + as_fn_error $? "$target_cpu-$target_vendor is not available for compilation" "$LINENO" 5 + ;; +esac +############################################################################### +# Prepare an RTS from the cooked, pretty sources in the kernel. +mkdir -p rtsdir +mkdir -p rtsdir/adainclude +mkdir -p rtsdir/adalib +cp "$SRCDIR"/source/rts/*.adb rtsdir/adainclude +cp "$SRCDIR"/source/rts/*.ads rtsdir/adainclude +cp "$SRCDIR"/source/rts/$target_cpu-$target_vendor/*.ads rtsdir/adainclude +############## WARNING: DRAGONS LIE AHEAD ##################################### +# ____ __ +# { --.\ | .)%%%)%% +# '-._\\ | (\___ %)%%(%%(%%% +# `\\|{/ ^ _)-%(%%%%)%%;%%% +# .'^^^^^^^ /` %%)%%%%)%%%' +# //\ ) , / '%%%%(%%' +# , _.'/ `\<-- \< +# `^^^` ^^ ^^ +############################################################################### +# Some distros (looking at you, debian), despite we providing our RTS, will +# require for their gprbuild to link against -lgnat-XX where XX is the system +# version, this is not always provided by the distributions (sigh). +# Since we need nothing from them apart of their existance, we are just going +# to generate every possible file from libgnat-1.a to libgnat-99.a. +# Thats 100 years of GCC (Sorry Ironclad users in 3026). +mkdir -p libgnat-hack +touch libgnat-hack/libgnat.a +for i in $(seq 99); do + touch libgnat-hack/libgnat-$i.a +done +############################################################################### +# Finalize the settings and output the files. + +ac_config_files="$ac_config_files GNUmakefile ironclad.gpr rts.gpr" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +Ironclad config.status g0a370c9 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "GNUmakefile") CONFIG_FILES="$CONFIG_FILES GNUmakefile" ;; + "ironclad.gpr") CONFIG_FILES="$CONFIG_FILES ironclad.gpr" ;; + "rts.gpr") CONFIG_FILES="$CONFIG_FILES rts.gpr" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/autom4te.cache/output.2 b/autom4te.cache/output.2 new file mode 100644 index 0000000..4396574 --- /dev/null +++ b/autom4te.cache/output.2 @@ -0,0 +1,3894 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: https://ironclad.nongnu.org/usersupport.html about your +$0: system, including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit +@%:@ as_fn_nop +@%:@ --------- +@%:@ Do nothing but, unlike ":", preserve the value of @S|@?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +@%:@ as_fn_nop +@%:@ --------- +@%:@ Do nothing but, unlike ":", preserve the value of @S|@?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Ironclad' +PACKAGE_TARNAME='ironclad' +PACKAGE_VERSION='g0a370c9' +PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' +PACKAGE_URL='' + +ac_default_prefix=/usr/local +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +GNATPROVE_FOUND +GNATPROVE +GPRBUILD_FOUND +GPRBUILD +TEXI2HTML_FOUND +TEXI2HTML +TEXI2DVI_FOUND +TEXI2DVI +MAKEINFO_FOUND +MAKEINFO +STRIP_FOUND +STRIP +GZIP_FOUND +GZIP +OBJDUMP_FOUND +OBJDUMP +PERL_FOUND +PERL +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +MKDIR_P +SOURCE_DATE_EPOCH +LDFLAGS +ASFLAGS +ADAFLAGS +MEMORY_ALLOCONLY +BUILDDIR +SRCDIR +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_werror +enable_alloconly +' + ac_precious_vars='build_alias +host_alias +target_alias +ADAFLAGS +ASFLAGS +LDFLAGS +PERL +OBJDUMP +GZIP +STRIP +MAKEINFO +TEXI2DVI +TEXI2HTML +GPRBUILD +GNATPROVE' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/ironclad@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Ironclad g0a370c9:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-werror treat warnings as errors + --enable-alloconly Use the alloconly allocator instead of standard + +Some influential environment variables: + ADAFLAGS Ada flags @<:@default: -g -O2 -pipe -gnaty -Wall -Wextra@:>@ + ASFLAGS Assembler flags @<:@default: -g -O2 -pipe -Wall@:>@ + LDFLAGS Linker flags @<:@default: -g -O2 -pipe -Wall@:>@ + PERL perl executable @<:@default: perl@:>@ + OBJDUMP objdump executable @<:@default: objdump@:>@ + GZIP gzip executable @<:@default: gzip@:>@ + STRIP strip executable @<:@default: strip@:>@ + MAKEINFO makeinfo executable @<:@default: makeinfo@:>@ + TEXI2DVI texi2dvi executable @<:@default: texi2dvi@:>@ + TEXI2HTML texi2html executable @<:@default: makeinfo --no-split --html@:>@ + GPRBUILD gprbuild executable @<:@default: gprbuild@:>@ + GNATPROVE gnatprove executable @<:@default: gnatprove@:>@ + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Ironclad configure g0a370c9 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# Auxiliary files required by this configure script. +ac_aux_files="config.guess config.sub install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +############################################################################### +# General project options. + + +SRCDIR="$(cd "$srcdir" && pwd -P)" +BUILDDIR="$(pwd -P)" + + + +werror_state="no" +@%:@ Check whether --enable-werror was given. +if test ${enable_werror+y} +then : + enableval=$enable_werror; werror_state="$enableval" +fi + + +MEMORY_ALLOCONLY="False" +@%:@ Check whether --enable-alloconly was given. +if test ${enable_alloconly+y} +then : + enableval=$enable_alloconly; test "$enableval" = "yes" && MEMORY_ALLOCONLY="True" +fi + + + + + +test "x$ADAFLAGS" = "x" && ADAFLAGS="-g -O2 -pipe -gnaty -Wall -Wextra" +if test "$werror_state" = "yes"; then + ADAFLAGS="$ADAFLAGS -Werror" +fi + + + +test "x$ASFLAGS" = "x" && ASFLAGS="-g -O2 -pipe -Wall" +if test "$werror_state" = "yes"; then + ASFLAGS="$ASFLAGS -Werror" +fi + + + +test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" +############################################################################### +# A ton of tools use source date epoch in order to not use date in the effort +# of doing reproducible builds. +# This command uses git, but thats no biggie because there is a fallback if +# no git is present and it is meant to only be run when regenerating, so +# tarball users will (ideally) never see this. +SOURCE_DATE_EPOCH="1731253613" + +############################################################################### +# Get programs and put them in comfortable variables. + +# $1 - UPERCASEVAR, $2 - default program, $3 - nice name + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + + + test "x$PERL" = "x" && PERL="perl" + # Extract the first word of "$PERL", so it can be a program name with args. +set dummy $PERL; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$PERL_FOUND"; then + ac_cv_prog_PERL_FOUND="$PERL_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL_FOUND="$PERL" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PERL_FOUND=$ac_cv_prog_PERL_FOUND +if test -n "$PERL_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL_FOUND" >&5 +printf "%s\n" "$PERL_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$PERL_FOUND" = "x$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: perl not found, please install perl or set PERL to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: perl not found, please install perl or set PERL to a valid executable" >&2;} + fi + + + + + test "x$OBJDUMP" = "x" && OBJDUMP="objdump" + # Extract the first word of "$OBJDUMP", so it can be a program name with args. +set dummy $OBJDUMP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OBJDUMP_FOUND"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP_FOUND=$ac_cv_prog_OBJDUMP_FOUND +if test -n "$OBJDUMP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP_FOUND" >&5 +printf "%s\n" "$OBJDUMP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$OBJDUMP_FOUND" = "x$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&2;} + fi + + + + + test "x$GZIP" = "x" && GZIP="gzip" + # Extract the first word of "$GZIP", so it can be a program name with args. +set dummy $GZIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GZIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GZIP_FOUND"; then + ac_cv_prog_GZIP_FOUND="$GZIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GZIP_FOUND="$GZIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GZIP_FOUND=$ac_cv_prog_GZIP_FOUND +if test -n "$GZIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GZIP_FOUND" >&5 +printf "%s\n" "$GZIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GZIP_FOUND" = "x$GZIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&2;} + fi + + + + + test "x$STRIP" = "x" && STRIP="strip" + # Extract the first word of "$STRIP", so it can be a program name with args. +set dummy $STRIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP_FOUND"; then + ac_cv_prog_STRIP_FOUND="$STRIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP_FOUND="$STRIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP_FOUND=$ac_cv_prog_STRIP_FOUND +if test -n "$STRIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP_FOUND" >&5 +printf "%s\n" "$STRIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$STRIP_FOUND" = "x$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&2;} + fi + + + + + test "x$MAKEINFO" = "x" && MAKEINFO="makeinfo" + # Extract the first word of "$MAKEINFO", so it can be a program name with args. +set dummy $MAKEINFO; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MAKEINFO_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$MAKEINFO_FOUND"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MAKEINFO_FOUND=$ac_cv_prog_MAKEINFO_FOUND +if test -n "$MAKEINFO_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO_FOUND" >&5 +printf "%s\n" "$MAKEINFO_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$MAKEINFO_FOUND" = "x$MAKEINFO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&2;} + fi + + + + + test "x$TEXI2DVI" = "x" && TEXI2DVI="texi2dvi" + # Extract the first word of "$TEXI2DVI", so it can be a program name with args. +set dummy $TEXI2DVI; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2DVI_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2DVI_FOUND"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2DVI_FOUND=$ac_cv_prog_TEXI2DVI_FOUND +if test -n "$TEXI2DVI_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2DVI_FOUND" >&5 +printf "%s\n" "$TEXI2DVI_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2DVI_FOUND" = "x$TEXI2DVI"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&2;} + fi + + + + + test "x$TEXI2HTML" = "x" && TEXI2HTML="makeinfo --no-split --html" + # Extract the first word of "$TEXI2HTML", so it can be a program name with args. +set dummy $TEXI2HTML; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2HTML_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2HTML_FOUND"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2HTML_FOUND=$ac_cv_prog_TEXI2HTML_FOUND +if test -n "$TEXI2HTML_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2HTML_FOUND" >&5 +printf "%s\n" "$TEXI2HTML_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2HTML_FOUND" = "x$TEXI2HTML"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&2;} + fi + + + + + test "x$GPRBUILD" = "x" && GPRBUILD="gprbuild" + # Extract the first word of "$GPRBUILD", so it can be a program name with args. +set dummy $GPRBUILD; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GPRBUILD_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GPRBUILD_FOUND"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GPRBUILD_FOUND=$ac_cv_prog_GPRBUILD_FOUND +if test -n "$GPRBUILD_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GPRBUILD_FOUND" >&5 +printf "%s\n" "$GPRBUILD_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GPRBUILD_FOUND" = "x$GPRBUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&2;} + fi + + + + + test "x$GNATPROVE" = "x" && GNATPROVE="gnatprove" + # Extract the first word of "$GNATPROVE", so it can be a program name with args. +set dummy $GNATPROVE; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GNATPROVE_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GNATPROVE_FOUND"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GNATPROVE_FOUND=$ac_cv_prog_GNATPROVE_FOUND +if test -n "$GNATPROVE_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNATPROVE_FOUND" >&5 +printf "%s\n" "$GNATPROVE_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GNATPROVE_FOUND" = "x$GNATPROVE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&2;} + fi + +############################################################################### +# Target acquisition and checking. + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +printf %s "checking target system type... " >&6; } +if test ${ac_cv_target+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +printf "%s\n" "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +case $target_cpu-$target_vendor in + riscv64-limine|x86_64-limine) + ;; + *) + as_fn_error $? "$target_cpu-$target_vendor is not available for compilation" "$LINENO" 5 + ;; +esac +############################################################################### +# Prepare an RTS from the cooked, pretty sources in the kernel. +mkdir -p rtsdir +mkdir -p rtsdir/adainclude +mkdir -p rtsdir/adalib +cp "$SRCDIR"/source/rts/*.adb rtsdir/adainclude +cp "$SRCDIR"/source/rts/*.ads rtsdir/adainclude +cp "$SRCDIR"/source/rts/$target_cpu-$target_vendor/*.ads rtsdir/adainclude +############## WARNING: DRAGONS LIE AHEAD ##################################### +# ____ __ +# { --.\ | .)%%%)%% +# '-._\\ | (\___ %)%%(%%(%%% +# `\\|{/ ^ _)-%(%%%%)%%;%%% +# .'^^^^^^^ /` %%)%%%%)%%%' +# //\ ) , / '%%%%(%%' +# , _.'/ `\<-- \< +# `^^^` ^^ ^^ +############################################################################### +# Some distros (looking at you, debian), despite we providing our RTS, will +# require for their gprbuild to link against -lgnat-XX where XX is the system +# version, this is not always provided by the distributions (sigh). +# Since we need nothing from them apart of their existance, we are just going +# to generate every possible file from libgnat-1.a to libgnat-99.a. +# Thats 100 years of GCC (Sorry Ironclad users in 3026). +mkdir -p libgnat-hack +touch libgnat-hack/libgnat.a +for i in $(seq 99); do + touch libgnat-hack/libgnat-$i.a +done +############################################################################### +# Finalize the settings and output the files. + +ac_config_files="$ac_config_files GNUmakefile ironclad.gpr rts.gpr" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +Ironclad config.status g0a370c9 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "GNUmakefile") CONFIG_FILES="$CONFIG_FILES GNUmakefile" ;; + "ironclad.gpr") CONFIG_FILES="$CONFIG_FILES ironclad.gpr" ;; + "rts.gpr") CONFIG_FILES="$CONFIG_FILES rts.gpr" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + \ No newline at end of file diff --git a/autom4te.cache/requests b/autom4te.cache/requests new file mode 100644 index 0000000..e01013f --- /dev/null +++ b/autom4te.cache/requests @@ -0,0 +1,186 @@ +# This file was generated by Autom4te 2.71. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + '/usr/share/aclocal-1.16/internal/ac-config-macro-dirs.m4', + 'configure.ac' + ], + { + 'm4_pattern_forbid' => 1, + 'AU_DEFUN' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'include' => 1, + 'AC_DEFUN' => 1, + '_m4_warn' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, + 'm4_include' => 1, + 'AC_DEFUN_ONCE' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'm4_pattern_allow' => 1, + '_AM_AUTOCONF_VERSION' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '1', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'configure.ac' + ], + { + 'AC_LIBSOURCE' => 1, + 'AC_CONFIG_LINKS' => 1, + 'm4_pattern_forbid' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_SUBST' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'm4_sinclude' => 1, + 'AM_PATH_GUILE' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'AC_SUBST_TRACE' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_MAINTAINER_MODE' => 1, + '_AM_COND_IF' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AC_CANONICAL_TARGET' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_MOC' => 1, + 'AC_INIT' => 1, + '_AM_COND_ENDIF' => 1, + 'm4_pattern_allow' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'LT_INIT' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AC_FC_SRCEXT' => 1, + 'GTK_DOC_CHECK' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'include' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AH_OUTPUT' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_NLS' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CANONICAL_HOST' => 1, + 'sinclude' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_PROG_AR' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'AC_CONFIG_FILES' => 1, + 'm4_include' => 1, + 'AM_POT_TOOLS' => 1, + '_AM_COND_ELSE' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + '_m4_warn' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '2', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + '/usr/share/autoconf/autoconf/trailer.m4', + 'configure.ac' + ], + { + 'AM_ENABLE_MULTILIB' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'GTK_DOC_CHECK' => 1, + 'AC_FC_SRCEXT' => 1, + 'AM_NLS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AH_OUTPUT' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'include' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AM_PROG_AR' => 1, + 'AM_SILENT_RULES' => 1, + 'sinclude' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'm4_include' => 1, + 'AM_POT_TOOLS' => 1, + 'AC_CONFIG_FILES' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + '_m4_warn' => 1, + 'AM_PROG_F77_C_O' => 1, + 'm4_pattern_forbid' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_SUBST' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'm4_sinclude' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_SUBST_TRACE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_PROG_LIBTOOL' => 1, + '_AM_COND_IF' => 1, + 'AM_CONDITIONAL' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + '_AM_COND_ENDIF' => 1, + 'AC_INIT' => 1, + 'AM_PROG_MOC' => 1, + 'm4_pattern_allow' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'LT_INIT' => 1, + 'AM_AUTOMAKE_VERSION' => 1 + } + ], 'Autom4te::Request' ) + ); + diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0 new file mode 100644 index 0000000..379e315 --- /dev/null +++ b/autom4te.cache/traces.0 @@ -0,0 +1,95 @@ +m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:18: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:26: -1- m4_pattern_allow([^SRCDIR$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^BUILDDIR$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^MEMORY_ALLOCONLY$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^ADAFLAGS$]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^ASFLAGS$]) +m4trace:configure.ac:55: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^SOURCE_DATE_EPOCH$]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^PERL_FOUND$]) +m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP_FOUND$]) +m4trace:configure.ac:84: -1- m4_pattern_allow([^GZIP$]) +m4trace:configure.ac:84: -1- m4_pattern_allow([^GZIP_FOUND$]) +m4trace:configure.ac:85: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:85: -1- m4_pattern_allow([^STRIP_FOUND$]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^MAKEINFO_FOUND$]) +m4trace:configure.ac:87: -1- m4_pattern_allow([^TEXI2DVI$]) +m4trace:configure.ac:87: -1- m4_pattern_allow([^TEXI2DVI_FOUND$]) +m4trace:configure.ac:88: -1- m4_pattern_allow([^TEXI2HTML$]) +m4trace:configure.ac:88: -1- m4_pattern_allow([^TEXI2HTML_FOUND$]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^GPRBUILD$]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^GPRBUILD_FOUND$]) +m4trace:configure.ac:90: -1- m4_pattern_allow([^GNATPROVE$]) +m4trace:configure.ac:90: -1- m4_pattern_allow([^GNATPROVE_FOUND$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target_cpu$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target_vendor$]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target_os$]) +m4trace:configure.ac:135: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:135: -1- m4_pattern_allow([^LTLIBOBJS$]) diff --git a/autom4te.cache/traces.1 b/autom4te.cache/traces.1 new file mode 100644 index 0000000..2f5a00b --- /dev/null +++ b/autom4te.cache/traces.1 @@ -0,0 +1,300 @@ +m4trace:configure.ac:18: -1- AC_INIT([Ironclad], [m4_esyscmd([./version.sh])], [https://ironclad.nongnu.org/usersupport.html], [ironclad]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:18: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:18: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:18: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:18: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:18: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:18: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:18: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:18: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:18: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:18: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([runstatedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:18: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:18: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:18: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:18: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:18: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:18: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:18: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:18: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:18: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:18: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:18: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:22: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:26: -1- AC_SUBST([SRCDIR]) +m4trace:configure.ac:26: -1- AC_SUBST_TRACE([SRCDIR]) +m4trace:configure.ac:26: -1- m4_pattern_allow([^SRCDIR$]) +m4trace:configure.ac:27: -1- AC_SUBST([BUILDDIR]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([BUILDDIR]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^BUILDDIR$]) +m4trace:configure.ac:38: -1- AC_SUBST([MEMORY_ALLOCONLY]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([MEMORY_ALLOCONLY]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^MEMORY_ALLOCONLY$]) +m4trace:configure.ac:41: -1- AC_SUBST([ADAFLAGS]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([ADAFLAGS]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^ADAFLAGS$]) +m4trace:configure.ac:48: -1- AC_SUBST([ASFLAGS]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([ASFLAGS]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^ASFLAGS$]) +m4trace:configure.ac:55: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:55: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:55: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:64: -1- AC_SUBST([SOURCE_DATE_EPOCH]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([SOURCE_DATE_EPOCH]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^SOURCE_DATE_EPOCH$]) +m4trace:configure.ac:79: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:79: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:79: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:80: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:80: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:80: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:80: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:82: -1- AC_SUBST([PERL]) +m4trace:configure.ac:82: -1- AC_SUBST_TRACE([PERL]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:82: -1- AC_SUBST([PERL_FOUND]) +m4trace:configure.ac:82: -1- AC_SUBST_TRACE([PERL_FOUND]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^PERL_FOUND$]) +m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP]) +m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP]) +m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP_FOUND]) +m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP_FOUND]) +m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP_FOUND$]) +m4trace:configure.ac:84: -1- AC_SUBST([GZIP]) +m4trace:configure.ac:84: -1- AC_SUBST_TRACE([GZIP]) +m4trace:configure.ac:84: -1- m4_pattern_allow([^GZIP$]) +m4trace:configure.ac:84: -1- AC_SUBST([GZIP_FOUND]) +m4trace:configure.ac:84: -1- AC_SUBST_TRACE([GZIP_FOUND]) +m4trace:configure.ac:84: -1- m4_pattern_allow([^GZIP_FOUND$]) +m4trace:configure.ac:85: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:85: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:85: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:85: -1- AC_SUBST([STRIP_FOUND]) +m4trace:configure.ac:85: -1- AC_SUBST_TRACE([STRIP_FOUND]) +m4trace:configure.ac:85: -1- m4_pattern_allow([^STRIP_FOUND$]) +m4trace:configure.ac:86: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:86: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:86: -1- AC_SUBST([MAKEINFO_FOUND]) +m4trace:configure.ac:86: -1- AC_SUBST_TRACE([MAKEINFO_FOUND]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^MAKEINFO_FOUND$]) +m4trace:configure.ac:87: -1- AC_SUBST([TEXI2DVI]) +m4trace:configure.ac:87: -1- AC_SUBST_TRACE([TEXI2DVI]) +m4trace:configure.ac:87: -1- m4_pattern_allow([^TEXI2DVI$]) +m4trace:configure.ac:87: -1- AC_SUBST([TEXI2DVI_FOUND]) +m4trace:configure.ac:87: -1- AC_SUBST_TRACE([TEXI2DVI_FOUND]) +m4trace:configure.ac:87: -1- m4_pattern_allow([^TEXI2DVI_FOUND$]) +m4trace:configure.ac:88: -1- AC_SUBST([TEXI2HTML]) +m4trace:configure.ac:88: -1- AC_SUBST_TRACE([TEXI2HTML]) +m4trace:configure.ac:88: -1- m4_pattern_allow([^TEXI2HTML$]) +m4trace:configure.ac:88: -1- AC_SUBST([TEXI2HTML_FOUND]) +m4trace:configure.ac:88: -1- AC_SUBST_TRACE([TEXI2HTML_FOUND]) +m4trace:configure.ac:88: -1- m4_pattern_allow([^TEXI2HTML_FOUND$]) +m4trace:configure.ac:89: -1- AC_SUBST([GPRBUILD]) +m4trace:configure.ac:89: -1- AC_SUBST_TRACE([GPRBUILD]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^GPRBUILD$]) +m4trace:configure.ac:89: -1- AC_SUBST([GPRBUILD_FOUND]) +m4trace:configure.ac:89: -1- AC_SUBST_TRACE([GPRBUILD_FOUND]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^GPRBUILD_FOUND$]) +m4trace:configure.ac:90: -1- AC_SUBST([GNATPROVE]) +m4trace:configure.ac:90: -1- AC_SUBST_TRACE([GNATPROVE]) +m4trace:configure.ac:90: -1- m4_pattern_allow([^GNATPROVE$]) +m4trace:configure.ac:90: -1- AC_SUBST([GNATPROVE_FOUND]) +m4trace:configure.ac:90: -1- AC_SUBST_TRACE([GNATPROVE_FOUND]) +m4trace:configure.ac:90: -1- m4_pattern_allow([^GNATPROVE_FOUND$]) +m4trace:configure.ac:93: -1- AC_CANONICAL_TARGET +m4trace:configure.ac:93: -1- AC_CANONICAL_HOST +m4trace:configure.ac:93: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:93: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:93: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:93: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:93: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:93: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:93: -1- AC_SUBST([build_os]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:93: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:93: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:93: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:93: -1- AC_SUBST([host_os]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:93: -1- AC_SUBST([target], [$ac_cv_target]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([target]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target$]) +m4trace:configure.ac:93: -1- AC_SUBST([target_cpu], [$[1]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([target_cpu]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target_cpu$]) +m4trace:configure.ac:93: -1- AC_SUBST([target_vendor], [$[2]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([target_vendor]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target_vendor$]) +m4trace:configure.ac:93: -1- AC_SUBST([target_os]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([target_os]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target_os$]) +m4trace:configure.ac:134: -1- AC_CONFIG_FILES([GNUmakefile ironclad.gpr rts.gpr]) +m4trace:configure.ac:135: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:135: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:135: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:135: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/autom4te.cache/traces.2 b/autom4te.cache/traces.2 new file mode 100644 index 0000000..2f5a00b --- /dev/null +++ b/autom4te.cache/traces.2 @@ -0,0 +1,300 @@ +m4trace:configure.ac:18: -1- AC_INIT([Ironclad], [m4_esyscmd([./version.sh])], [https://ironclad.nongnu.org/usersupport.html], [ironclad]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:18: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:18: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:18: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:18: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:18: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:18: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:18: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:18: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:18: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:18: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([runstatedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:18: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:18: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:18: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:18: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:18: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:18: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:18: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:18: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:18: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:18: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:18: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:18: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:18: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:22: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:26: -1- AC_SUBST([SRCDIR]) +m4trace:configure.ac:26: -1- AC_SUBST_TRACE([SRCDIR]) +m4trace:configure.ac:26: -1- m4_pattern_allow([^SRCDIR$]) +m4trace:configure.ac:27: -1- AC_SUBST([BUILDDIR]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([BUILDDIR]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^BUILDDIR$]) +m4trace:configure.ac:38: -1- AC_SUBST([MEMORY_ALLOCONLY]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([MEMORY_ALLOCONLY]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^MEMORY_ALLOCONLY$]) +m4trace:configure.ac:41: -1- AC_SUBST([ADAFLAGS]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([ADAFLAGS]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^ADAFLAGS$]) +m4trace:configure.ac:48: -1- AC_SUBST([ASFLAGS]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([ASFLAGS]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^ASFLAGS$]) +m4trace:configure.ac:55: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:55: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:55: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:64: -1- AC_SUBST([SOURCE_DATE_EPOCH]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([SOURCE_DATE_EPOCH]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^SOURCE_DATE_EPOCH$]) +m4trace:configure.ac:79: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:79: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:79: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:80: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:80: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:80: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:80: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:82: -1- AC_SUBST([PERL]) +m4trace:configure.ac:82: -1- AC_SUBST_TRACE([PERL]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:82: -1- AC_SUBST([PERL_FOUND]) +m4trace:configure.ac:82: -1- AC_SUBST_TRACE([PERL_FOUND]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^PERL_FOUND$]) +m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP]) +m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP]) +m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:83: -1- AC_SUBST([OBJDUMP_FOUND]) +m4trace:configure.ac:83: -1- AC_SUBST_TRACE([OBJDUMP_FOUND]) +m4trace:configure.ac:83: -1- m4_pattern_allow([^OBJDUMP_FOUND$]) +m4trace:configure.ac:84: -1- AC_SUBST([GZIP]) +m4trace:configure.ac:84: -1- AC_SUBST_TRACE([GZIP]) +m4trace:configure.ac:84: -1- m4_pattern_allow([^GZIP$]) +m4trace:configure.ac:84: -1- AC_SUBST([GZIP_FOUND]) +m4trace:configure.ac:84: -1- AC_SUBST_TRACE([GZIP_FOUND]) +m4trace:configure.ac:84: -1- m4_pattern_allow([^GZIP_FOUND$]) +m4trace:configure.ac:85: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:85: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:85: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:85: -1- AC_SUBST([STRIP_FOUND]) +m4trace:configure.ac:85: -1- AC_SUBST_TRACE([STRIP_FOUND]) +m4trace:configure.ac:85: -1- m4_pattern_allow([^STRIP_FOUND$]) +m4trace:configure.ac:86: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:86: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:86: -1- AC_SUBST([MAKEINFO_FOUND]) +m4trace:configure.ac:86: -1- AC_SUBST_TRACE([MAKEINFO_FOUND]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^MAKEINFO_FOUND$]) +m4trace:configure.ac:87: -1- AC_SUBST([TEXI2DVI]) +m4trace:configure.ac:87: -1- AC_SUBST_TRACE([TEXI2DVI]) +m4trace:configure.ac:87: -1- m4_pattern_allow([^TEXI2DVI$]) +m4trace:configure.ac:87: -1- AC_SUBST([TEXI2DVI_FOUND]) +m4trace:configure.ac:87: -1- AC_SUBST_TRACE([TEXI2DVI_FOUND]) +m4trace:configure.ac:87: -1- m4_pattern_allow([^TEXI2DVI_FOUND$]) +m4trace:configure.ac:88: -1- AC_SUBST([TEXI2HTML]) +m4trace:configure.ac:88: -1- AC_SUBST_TRACE([TEXI2HTML]) +m4trace:configure.ac:88: -1- m4_pattern_allow([^TEXI2HTML$]) +m4trace:configure.ac:88: -1- AC_SUBST([TEXI2HTML_FOUND]) +m4trace:configure.ac:88: -1- AC_SUBST_TRACE([TEXI2HTML_FOUND]) +m4trace:configure.ac:88: -1- m4_pattern_allow([^TEXI2HTML_FOUND$]) +m4trace:configure.ac:89: -1- AC_SUBST([GPRBUILD]) +m4trace:configure.ac:89: -1- AC_SUBST_TRACE([GPRBUILD]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^GPRBUILD$]) +m4trace:configure.ac:89: -1- AC_SUBST([GPRBUILD_FOUND]) +m4trace:configure.ac:89: -1- AC_SUBST_TRACE([GPRBUILD_FOUND]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^GPRBUILD_FOUND$]) +m4trace:configure.ac:90: -1- AC_SUBST([GNATPROVE]) +m4trace:configure.ac:90: -1- AC_SUBST_TRACE([GNATPROVE]) +m4trace:configure.ac:90: -1- m4_pattern_allow([^GNATPROVE$]) +m4trace:configure.ac:90: -1- AC_SUBST([GNATPROVE_FOUND]) +m4trace:configure.ac:90: -1- AC_SUBST_TRACE([GNATPROVE_FOUND]) +m4trace:configure.ac:90: -1- m4_pattern_allow([^GNATPROVE_FOUND$]) +m4trace:configure.ac:93: -1- AC_CANONICAL_TARGET +m4trace:configure.ac:93: -1- AC_CANONICAL_HOST +m4trace:configure.ac:93: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:93: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:93: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:93: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:93: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:93: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:93: -1- AC_SUBST([build_os]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:93: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:93: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:93: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:93: -1- AC_SUBST([host_os]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:93: -1- AC_SUBST([target], [$ac_cv_target]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([target]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target$]) +m4trace:configure.ac:93: -1- AC_SUBST([target_cpu], [$[1]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([target_cpu]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target_cpu$]) +m4trace:configure.ac:93: -1- AC_SUBST([target_vendor], [$[2]]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([target_vendor]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target_vendor$]) +m4trace:configure.ac:93: -1- AC_SUBST([target_os]) +m4trace:configure.ac:93: -1- AC_SUBST_TRACE([target_os]) +m4trace:configure.ac:93: -1- m4_pattern_allow([^target_os$]) +m4trace:configure.ac:134: -1- AC_CONFIG_FILES([GNUmakefile ironclad.gpr rts.gpr]) +m4trace:configure.ac:135: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:135: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:135: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:135: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:135: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/bootstrap b/bootstrap new file mode 100755 index 0000000..357bb35 --- /dev/null +++ b/bootstrap @@ -0,0 +1,81 @@ +#! /bin/sh +# bootstrap: Script for regenerating the whole circus. +# Copyright (C) 2023-2024 streaksu +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set -ex + +srcdir="$(dirname "$0")" +test -z "$srcdir" && srcdir=. + +: "${AUTORECONF:=autoreconf}" +: "${AUTOMAKE:=automake}" + +cd "$srcdir" + +# dependency hashes go here + +AUXFILES="config.guess config.sub install-sh" + +clone_repo_commit() { + if test -d $2/.git; then + git -C $2 reset --hard + git -C $2 clean -fd + if ! git -C $2 checkout $3; then + rm -rf $2 + fi + else + if test -d $2; then + echo "error: '$2' is not a Git repository" + exit 1 + fi + fi + if ! test -d $2; then + git clone $1 $2 + git -C $2 checkout $3 + fi +} + +if ! test -f version; then + # clone_repo_commit calls go here + : +fi + +for auxfile in $AUXFILES; do + rm -f build-aux/$auxfile +done + +$AUTORECONF -fvi -Wall + +# Older versions of autoreconf have a bug where they do not +# install auxiliary files, sometimes... Check if that is the +# case and work around... +for auxfile in $AUXFILES; do + if ! test -f build-aux/$auxfile; then + if ! $AUTOMAKE --print-libdir >/dev/null 2>&1; then + echo "error: Broken autoreconf detected, but missing or broken automake." + echo " Please make sure automake is installed and working." + exit 1 + fi + AUTOMAKE_LIBDIR="$($AUTOMAKE --print-libdir)" + if test -z "$AUTOMAKE_LIBDIR"; then + # Assume `true` was passed as $AUTOMAKE + continue + fi + mkdir -p build-aux + cp -v "$AUTOMAKE_LIBDIR/$auxfile" build-aux/ + chmod +x build-aux/$auxfile + fi +done diff --git a/build-aux/config.guess b/build-aux/config.guess new file mode 100755 index 0000000..f50dcdb --- /dev/null +++ b/build-aux/config.guess @@ -0,0 +1,1480 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-02-24' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > "$dummy.c" ; + for c in cc gcc c89 c99 ; do + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "$UNAME_SYSTEM" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval "$set_cc_for_build" + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)` + case "$UNAME_MACHINE_ARCH" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval "$set_cc_for_build" + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "$UNAME_VERSION" in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "$machine-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" + exit ;; + *:ekkoBSD:*:*) + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" + exit ;; + *:SolidBSD:*:*) + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:MirBSD:*:*) + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix"$UNAME_RELEASE" + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux"$UNAME_RELEASE" + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval "$set_cc_for_build" + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos"$UNAME_RELEASE" + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos"$UNAME_RELEASE" + ;; + sun4) + echo sparc-sun-sunos"$UNAME_RELEASE" + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos"$UNAME_RELEASE" + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten"$UNAME_RELEASE" + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten"$UNAME_RELEASE" + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix"$UNAME_RELEASE" + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix"$UNAME_RELEASE" + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix"$UNAME_RELEASE" + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos"$UNAME_RELEASE" + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + then + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] + then + echo m88k-dg-dgux"$UNAME_RELEASE" + else + echo m88k-dg-dguxbcs"$UNAME_RELEASE" + fi + else + echo i586-dg-dgux"$UNAME_RELEASE" + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "$HP_ARCH" = "" ]; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ "$HP_ARCH" = hppa2.0w ] + then + eval "$set_cc_for_build" + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" + exit ;; + 3050*:HI-UX:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo "$UNAME_MACHINE"-unknown-osf1mk + else + echo "$UNAME_MACHINE"-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:BSD/OS:*:*) + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case "$UNAME_PROCESSOR" in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + i*:CYGWIN*:*) + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; + *:MINGW64*:*) + echo "$UNAME_MACHINE"-pc-mingw64 + exit ;; + *:MINGW*:*) + echo "$UNAME_MACHINE"-pc-mingw32 + exit ;; + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys + exit ;; + i*:PW*:*) + echo "$UNAME_MACHINE"-pc-pw32 + exit ;; + *:Interix*:*) + case "$UNAME_MACHINE" in + x86) + echo i586-pc-interix"$UNAME_RELEASE" + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix"$UNAME_RELEASE" + exit ;; + IA64) + echo ia64-unknown-interix"$UNAME_RELEASE" + exit ;; + esac ;; + i*:UWIN*:*) + echo "$UNAME_MACHINE"-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + *:GNU:*:*) + # the GNU system + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + exit ;; + i*86:Minix:*:*) + echo "$UNAME_MACHINE"-pc-minix + exit ;; + aarch64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arm*:Linux:*:*) + eval "$set_cc_for_build" + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + else + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + cris:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + crisv32:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + frv:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + hexagon:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + ia64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m32r*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m68*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" + test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + ;; + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-"$LIBC" + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-"$LIBC" + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-"$LIBC" + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-"$LIBC" + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + exit ;; + sh64*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sh*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + tile*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + vax:Linux:*:*) + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + exit ;; + x86_64:Linux:*:*) + if objdump -f /bin/sh | grep -q elf32-x86-64; then + echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 + else + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + fi + exit ;; + xtensa*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo "$UNAME_MACHINE"-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo "$UNAME_MACHINE"-unknown-stop + exit ;; + i*86:atheos:*:*) + echo "$UNAME_MACHINE"-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo "$UNAME_MACHINE"-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos"$UNAME_RELEASE" + exit ;; + i*86:*DOS:*:*) + echo "$UNAME_MACHINE"-pc-msdosdjgpp + exit ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos"$UNAME_RELEASE" + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos"$UNAME_RELEASE" + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv"$UNAME_RELEASE" + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo "$UNAME_MACHINE"-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo "$UNAME_MACHINE"-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux"$UNAME_RELEASE" + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv"$UNAME_RELEASE" + else + echo mips-unknown-sysv"$UNAME_RELEASE" + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux"$UNAME_RELEASE" + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux"$UNAME_RELEASE" + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux"$UNAME_RELEASE" + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Rhapsody:*:*) + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval "$set_cc_for_build" + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo "$UNAME_MACHINE"-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux"$UNAME_RELEASE" + exit ;; + *:DragonFly:*:*) + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "$UNAME_MACHINE" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" + exit ;; + i*86:rdos:*:*) + echo "$UNAME_MACHINE"-pc-rdos + exit ;; + i*86:AROS:*:*) + echo "$UNAME_MACHINE"-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-functions 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/build-aux/config.sub b/build-aux/config.sub new file mode 100755 index 0000000..1d8e98b --- /dev/null +++ b/build-aux/config.sub @@ -0,0 +1,1801 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-02-22' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo "$1" | sed 's/-[^-]*$//'` + if [ "$basic_machine" != "$1" ] + then os=`echo "$1" | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | wasm32 \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | wasm32-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-pc + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2*) + basic_machine=m68k-bull + os=-sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + x64) + basic_machine=x86_64-pc + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases that might get confused + # with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # es1800 is here to avoid being matched by es* (a different OS) + -es1800*) + os=-ose + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ + | -midnightbsd*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -xray | -os68k* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4*) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $basic_machine in + arm*) + os=-eabi + ;; + *) + os=-elf + ;; + esac + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + pru-*) + os=-elf + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` + ;; +esac + +echo "$basic_machine$os" +exit + +# Local variables: +# eval: (add-hook 'write-file-functions 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/build-aux/install-sh b/build-aux/install-sh new file mode 100755 index 0000000..ec298b5 --- /dev/null +++ b/build-aux/install-sh @@ -0,0 +1,541 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2020-11-14.01; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. + -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -p) cpprog="$cpprog -p";; + + -s) stripcmd=$stripprog;; + + -S) backupsuffix="$2" + shift;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/config.log b/config.log new file mode 100644 index 0000000..372a303 --- /dev/null +++ b/config.log @@ -0,0 +1,263 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Ironclad configure g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ ./configure --target=riscv64-limine-elf + +## --------- ## +## Platform. ## +## --------- ## + +hostname = shield +uname -m = x86_64 +uname -r = 6.9.3-76060903-generic +uname -s = Linux +uname -v = #202405300957~1726766035~22.04~4092a0e SMP PREEMPT_DYNAMIC Thu S + +/usr/bin/uname -p = x86_64 +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /home/michael/.local/share/alire/toolchains/gprbuild_22.0.1_24dfc1b5/bin/ +PATH: /home/michael/.local/share/alire/toolchains/gnat_native_14.2.1_06bb3def/bin/ +PATH: /home/michael/.local/share/alire/toolchains/gnat_riscv64_elf_14.2.1_4f738310/bin/ +PATH: /home/michael/opt/gnat-riscv64-elf-linux64-x86_64/bin/ +PATH: /home/michael/opt/gnat-x86_64-linux/bin/ +PATH: /home/michael/.local/bin/ +PATH: /usr/local/sbin/ +PATH: /usr/local/bin/ +PATH: /usr/sbin/ +PATH: /usr/bin/ +PATH: /sbin/ +PATH: /bin/ +PATH: /usr/games/ +PATH: /usr/local/games/ +PATH: /snap/bin/ +PATH: /home/michael/.local/share/JetBrains/Toolbox/scripts/ +PATH: /opt/jdk-17.0.7+7/bin/ + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1751: looking for aux files: config.guess config.sub install-sh +configure:1764: trying ./build-aux/ +configure:1793: ./build-aux/config.guess found +configure:1793: ./build-aux/config.sub found +configure:1775: ./build-aux/install-sh found +configure:1964: checking for a race-free mkdir -p +configure:2008: result: /usr/bin/mkdir -p +configure:2026: checking for a BSD-compatible install +configure:2099: result: /usr/bin/install -c +configure:2117: checking for perl +configure:2138: found /usr/bin/perl +configure:2149: result: perl +configure:2168: checking for objdump +configure:2189: found /home/michael/.local/share/alire/toolchains/gnat_native_14.2.1_06bb3def/bin/objdump +configure:2200: result: objdump +configure:2219: checking for gzip +configure:2240: found /usr/bin/gzip +configure:2251: result: gzip +configure:2270: checking for strip +configure:2291: found /home/michael/.local/share/alire/toolchains/gnat_native_14.2.1_06bb3def/bin/strip +configure:2302: result: strip +configure:2321: checking for makeinfo +configure:2342: found /usr/bin/makeinfo +configure:2353: result: makeinfo +configure:2372: checking for texi2dvi +configure:2393: found /usr/bin/texi2dvi +configure:2404: result: texi2dvi +configure:2423: checking for makeinfo +configure:2444: found /usr/bin/makeinfo +configure:2455: result: makeinfo --no-split --html +configure:2474: checking for gprbuild +configure:2495: found /home/michael/.local/share/alire/toolchains/gprbuild_22.0.1_24dfc1b5/bin/gprbuild +configure:2506: result: gprbuild +configure:2525: checking for gnatprove +configure:2560: result: no +configure:2566: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable +configure:2578: checking build system type +configure:2593: result: x86_64-pc-linux-gnu +configure:2613: checking host system type +configure:2627: result: x86_64-pc-linux-gnu +configure:2647: checking target system type +configure:2661: result: riscv64-limine-elf +configure:2871: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by Ironclad config.status g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on shield + +config.status:751: creating GNUmakefile +config.status:751: creating ironclad.gpr +config.status:751: creating rts.gpr + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-pc-linux-gnu +ac_cv_env_ADAFLAGS_set= +ac_cv_env_ADAFLAGS_value= +ac_cv_env_ASFLAGS_set= +ac_cv_env_ASFLAGS_value= +ac_cv_env_GNATPROVE_set= +ac_cv_env_GNATPROVE_value= +ac_cv_env_GPRBUILD_set= +ac_cv_env_GPRBUILD_value= +ac_cv_env_GZIP_set= +ac_cv_env_GZIP_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_MAKEINFO_set= +ac_cv_env_MAKEINFO_value= +ac_cv_env_OBJDUMP_set= +ac_cv_env_OBJDUMP_value= +ac_cv_env_PERL_set= +ac_cv_env_PERL_value= +ac_cv_env_STRIP_set= +ac_cv_env_STRIP_value= +ac_cv_env_TEXI2DVI_set= +ac_cv_env_TEXI2DVI_value= +ac_cv_env_TEXI2HTML_set= +ac_cv_env_TEXI2HTML_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set=set +ac_cv_env_target_alias_value=riscv64-limine-elf +ac_cv_host=x86_64-pc-linux-gnu +ac_cv_path_install='/usr/bin/install -c' +ac_cv_path_mkdir=/usr/bin/mkdir +ac_cv_prog_GPRBUILD_FOUND=gprbuild +ac_cv_prog_GZIP_FOUND=gzip +ac_cv_prog_MAKEINFO_FOUND=makeinfo +ac_cv_prog_OBJDUMP_FOUND=objdump +ac_cv_prog_PERL_FOUND=perl +ac_cv_prog_STRIP_FOUND=strip +ac_cv_prog_TEXI2DVI_FOUND=texi2dvi +ac_cv_prog_TEXI2HTML_FOUND='makeinfo --no-split --html' +ac_cv_target=riscv64-limine-elf + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ADAFLAGS='-g -O2 -pipe -gnaty -Wall -Wextra' +ASFLAGS='-g -O2 -pipe -Wall' +BUILDDIR='/home/michael/capstoneProject/ironclad' +DEFS='-DPACKAGE_NAME=\"Ironclad\" -DPACKAGE_TARNAME=\"ironclad\" -DPACKAGE_VERSION=\"g0a370c9\" -DPACKAGE_STRING=\"Ironclad\ g0a370c9\" -DPACKAGE_BUGREPORT=\"https://ironclad.nongnu.org/usersupport.html\" -DPACKAGE_URL=\"\"' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +GNATPROVE='gnatprove' +GNATPROVE_FOUND='' +GPRBUILD='gprbuild' +GPRBUILD_FOUND='gprbuild' +GZIP='gzip' +GZIP_FOUND='gzip' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +LDFLAGS='-g -O2 -pipe -Wall' +LIBOBJS='' +LIBS='' +LTLIBOBJS='' +MAKEINFO='makeinfo' +MAKEINFO_FOUND='makeinfo' +MEMORY_ALLOCONLY='False' +MKDIR_P='/usr/bin/mkdir -p' +OBJDUMP='objdump' +OBJDUMP_FOUND='objdump' +PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' +PACKAGE_NAME='Ironclad' +PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_TARNAME='ironclad' +PACKAGE_URL='' +PACKAGE_VERSION='g0a370c9' +PATH_SEPARATOR=':' +PERL='perl' +PERL_FOUND='perl' +SHELL='/bin/bash' +SOURCE_DATE_EPOCH='1731253613' +SRCDIR='/home/michael/capstoneProject/ironclad' +STRIP='strip' +STRIP_FOUND='strip' +TEXI2DVI='texi2dvi' +TEXI2DVI_FOUND='texi2dvi' +TEXI2HTML='makeinfo --no-split --html' +TEXI2HTML_FOUND='makeinfo --no-split --html' +bindir='${exec_prefix}/bin' +build='x86_64-pc-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='pc' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host='x86_64-pc-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='pc' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +runstatedir='${localstatedir}/run' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target='riscv64-limine-elf' +target_alias='riscv64-limine-elf' +target_cpu='riscv64' +target_os='elf' +target_vendor='limine' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "Ironclad" +#define PACKAGE_TARNAME "ironclad" +#define PACKAGE_VERSION "g0a370c9" +#define PACKAGE_STRING "Ironclad g0a370c9" +#define PACKAGE_BUGREPORT "https://ironclad.nongnu.org/usersupport.html" +#define PACKAGE_URL "" + +configure: exit 0 diff --git a/config.status b/config.status new file mode 100755 index 0000000..5a1cf01 --- /dev/null +++ b/config.status @@ -0,0 +1,929 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/bash} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" GNUmakefile ironclad.gpr rts.gpr" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +ac_cs_config='--target=riscv64-limine-elf target_alias=riscv64-limine-elf' +ac_cs_version="\ +Ironclad config.status g0a370c9 +configured by ./configure, generated by GNU Autoconf 2.71, + with options \"$ac_cs_config\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/michael/capstoneProject/ironclad' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/usr/bin/mkdir -p' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/bash './configure' '--target=riscv64-limine-elf' 'target_alias=riscv64-limine-elf' $ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "GNUmakefile") CONFIG_FILES="$CONFIG_FILES GNUmakefile" ;; + "ironclad.gpr") CONFIG_FILES="$CONFIG_FILES ironclad.gpr" ;; + "rts.gpr") CONFIG_FILES="$CONFIG_FILES rts.gpr" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["target_os"]="elf" +S["target_vendor"]="limine" +S["target_cpu"]="riscv64" +S["target"]="riscv64-limine-elf" +S["host_os"]="linux-gnu" +S["host_vendor"]="pc" +S["host_cpu"]="x86_64" +S["host"]="x86_64-pc-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="pc" +S["build_cpu"]="x86_64" +S["build"]="x86_64-pc-linux-gnu" +S["GNATPROVE_FOUND"]="" +S["GNATPROVE"]="gnatprove" +S["GPRBUILD_FOUND"]="gprbuild" +S["GPRBUILD"]="gprbuild" +S["TEXI2HTML_FOUND"]="makeinfo --no-split --html" +S["TEXI2HTML"]="makeinfo --no-split --html" +S["TEXI2DVI_FOUND"]="texi2dvi" +S["TEXI2DVI"]="texi2dvi" +S["MAKEINFO_FOUND"]="makeinfo" +S["MAKEINFO"]="makeinfo" +S["STRIP_FOUND"]="strip" +S["STRIP"]="strip" +S["GZIP_FOUND"]="gzip" +S["GZIP"]="gzip" +S["OBJDUMP_FOUND"]="objdump" +S["OBJDUMP"]="objdump" +S["PERL_FOUND"]="perl" +S["PERL"]="perl" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["SOURCE_DATE_EPOCH"]="1731253613" +S["LDFLAGS"]="-g -O2 -pipe -Wall" +S["ASFLAGS"]="-g -O2 -pipe -Wall" +S["ADAFLAGS"]="-g -O2 -pipe -gnaty -Wall -Wextra" +S["MEMORY_ALLOCONLY"]="False" +S["BUILDDIR"]="/home/michael/capstoneProject/ironclad" +S["SRCDIR"]="/home/michael/capstoneProject/ironclad" +S["target_alias"]="riscv64-limine-elf" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DPACKAGE_NAME=\\\"Ironclad\\\" -DPACKAGE_TARNAME=\\\"ironclad\\\" -DPACKAGE_VERSION=\\\"g0a370c9\\\" -DPACKAGE_STRING=\\\"Ironclad\\ g0a370c9\\\" -DPACKAGE_BUGREPOR"\ +"T=\\\"https://ironclad.nongnu.org/usersupport.html\\\" -DPACKAGE_URL=\\\"\\\"" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["runstatedir"]="${localstatedir}/run" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="https://ironclad.nongnu.org/usersupport.html" +S["PACKAGE_STRING"]="Ironclad g0a370c9" +S["PACKAGE_VERSION"]="g0a370c9" +S["PACKAGE_TARNAME"]="ironclad" +S["PACKAGE_NAME"]="Ironclad" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 diff --git a/configure b/configure new file mode 100755 index 0000000..58ba0fa --- /dev/null +++ b/configure @@ -0,0 +1,3894 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: https://ironclad.nongnu.org/usersupport.html about your +$0: system, including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Ironclad' +PACKAGE_TARNAME='ironclad' +PACKAGE_VERSION='g0a370c9' +PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' +PACKAGE_URL='' + +ac_default_prefix=/usr/local +ac_subst_vars='LTLIBOBJS +LIBOBJS +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +GNATPROVE_FOUND +GNATPROVE +GPRBUILD_FOUND +GPRBUILD +TEXI2HTML_FOUND +TEXI2HTML +TEXI2DVI_FOUND +TEXI2DVI +MAKEINFO_FOUND +MAKEINFO +STRIP_FOUND +STRIP +GZIP_FOUND +GZIP +OBJDUMP_FOUND +OBJDUMP +PERL_FOUND +PERL +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +MKDIR_P +SOURCE_DATE_EPOCH +LDFLAGS +ASFLAGS +ADAFLAGS +MEMORY_ALLOCONLY +BUILDDIR +SRCDIR +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_werror +enable_alloconly +' + ac_precious_vars='build_alias +host_alias +target_alias +ADAFLAGS +ASFLAGS +LDFLAGS +PERL +OBJDUMP +GZIP +STRIP +MAKEINFO +TEXI2DVI +TEXI2HTML +GPRBUILD +GNATPROVE' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/ironclad] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Ironclad g0a370c9:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-werror treat warnings as errors + --enable-alloconly Use the alloconly allocator instead of standard + +Some influential environment variables: + ADAFLAGS Ada flags [default: -g -O2 -pipe -gnaty -Wall -Wextra] + ASFLAGS Assembler flags [default: -g -O2 -pipe -Wall] + LDFLAGS Linker flags [default: -g -O2 -pipe -Wall] + PERL perl executable [default: perl] + OBJDUMP objdump executable [default: objdump] + GZIP gzip executable [default: gzip] + STRIP strip executable [default: strip] + MAKEINFO makeinfo executable [default: makeinfo] + TEXI2DVI texi2dvi executable [default: texi2dvi] + TEXI2HTML texi2html executable [default: makeinfo --no-split --html] + GPRBUILD gprbuild executable [default: gprbuild] + GNATPROVE gnatprove executable [default: gnatprove] + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Ironclad configure g0a370c9 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# Auxiliary files required by this configure script. +ac_aux_files="config.guess config.sub install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +############################################################################### +# General project options. + + +SRCDIR="$(cd "$srcdir" && pwd -P)" +BUILDDIR="$(pwd -P)" + + + +werror_state="no" +# Check whether --enable-werror was given. +if test ${enable_werror+y} +then : + enableval=$enable_werror; werror_state="$enableval" +fi + + +MEMORY_ALLOCONLY="False" +# Check whether --enable-alloconly was given. +if test ${enable_alloconly+y} +then : + enableval=$enable_alloconly; test "$enableval" = "yes" && MEMORY_ALLOCONLY="True" +fi + + + + + +test "x$ADAFLAGS" = "x" && ADAFLAGS="-g -O2 -pipe -gnaty -Wall -Wextra" +if test "$werror_state" = "yes"; then + ADAFLAGS="$ADAFLAGS -Werror" +fi + + + +test "x$ASFLAGS" = "x" && ASFLAGS="-g -O2 -pipe -Wall" +if test "$werror_state" = "yes"; then + ASFLAGS="$ASFLAGS -Werror" +fi + + + +test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" +############################################################################### +# A ton of tools use source date epoch in order to not use date in the effort +# of doing reproducible builds. +# This command uses git, but thats no biggie because there is a fallback if +# no git is present and it is meant to only be run when regenerating, so +# tarball users will (ideally) never see this. +SOURCE_DATE_EPOCH="1731253613" + +############################################################################### +# Get programs and put them in comfortable variables. + +# $1 - UPERCASEVAR, $2 - default program, $3 - nice name + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + + + test "x$PERL" = "x" && PERL="perl" + # Extract the first word of "$PERL", so it can be a program name with args. +set dummy $PERL; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$PERL_FOUND"; then + ac_cv_prog_PERL_FOUND="$PERL_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL_FOUND="$PERL" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PERL_FOUND=$ac_cv_prog_PERL_FOUND +if test -n "$PERL_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL_FOUND" >&5 +printf "%s\n" "$PERL_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$PERL_FOUND" = "x$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: perl not found, please install perl or set PERL to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: perl not found, please install perl or set PERL to a valid executable" >&2;} + fi + + + + + test "x$OBJDUMP" = "x" && OBJDUMP="objdump" + # Extract the first word of "$OBJDUMP", so it can be a program name with args. +set dummy $OBJDUMP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OBJDUMP_FOUND"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP_FOUND=$ac_cv_prog_OBJDUMP_FOUND +if test -n "$OBJDUMP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP_FOUND" >&5 +printf "%s\n" "$OBJDUMP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$OBJDUMP_FOUND" = "x$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&2;} + fi + + + + + test "x$GZIP" = "x" && GZIP="gzip" + # Extract the first word of "$GZIP", so it can be a program name with args. +set dummy $GZIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GZIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GZIP_FOUND"; then + ac_cv_prog_GZIP_FOUND="$GZIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GZIP_FOUND="$GZIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GZIP_FOUND=$ac_cv_prog_GZIP_FOUND +if test -n "$GZIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GZIP_FOUND" >&5 +printf "%s\n" "$GZIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GZIP_FOUND" = "x$GZIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&2;} + fi + + + + + test "x$STRIP" = "x" && STRIP="strip" + # Extract the first word of "$STRIP", so it can be a program name with args. +set dummy $STRIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP_FOUND"; then + ac_cv_prog_STRIP_FOUND="$STRIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP_FOUND="$STRIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP_FOUND=$ac_cv_prog_STRIP_FOUND +if test -n "$STRIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP_FOUND" >&5 +printf "%s\n" "$STRIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$STRIP_FOUND" = "x$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&2;} + fi + + + + + test "x$MAKEINFO" = "x" && MAKEINFO="makeinfo" + # Extract the first word of "$MAKEINFO", so it can be a program name with args. +set dummy $MAKEINFO; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MAKEINFO_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$MAKEINFO_FOUND"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MAKEINFO_FOUND=$ac_cv_prog_MAKEINFO_FOUND +if test -n "$MAKEINFO_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO_FOUND" >&5 +printf "%s\n" "$MAKEINFO_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$MAKEINFO_FOUND" = "x$MAKEINFO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&2;} + fi + + + + + test "x$TEXI2DVI" = "x" && TEXI2DVI="texi2dvi" + # Extract the first word of "$TEXI2DVI", so it can be a program name with args. +set dummy $TEXI2DVI; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2DVI_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2DVI_FOUND"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2DVI_FOUND=$ac_cv_prog_TEXI2DVI_FOUND +if test -n "$TEXI2DVI_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2DVI_FOUND" >&5 +printf "%s\n" "$TEXI2DVI_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2DVI_FOUND" = "x$TEXI2DVI"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&2;} + fi + + + + + test "x$TEXI2HTML" = "x" && TEXI2HTML="makeinfo --no-split --html" + # Extract the first word of "$TEXI2HTML", so it can be a program name with args. +set dummy $TEXI2HTML; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2HTML_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2HTML_FOUND"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2HTML_FOUND=$ac_cv_prog_TEXI2HTML_FOUND +if test -n "$TEXI2HTML_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2HTML_FOUND" >&5 +printf "%s\n" "$TEXI2HTML_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2HTML_FOUND" = "x$TEXI2HTML"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&2;} + fi + + + + + test "x$GPRBUILD" = "x" && GPRBUILD="gprbuild" + # Extract the first word of "$GPRBUILD", so it can be a program name with args. +set dummy $GPRBUILD; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GPRBUILD_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GPRBUILD_FOUND"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GPRBUILD_FOUND=$ac_cv_prog_GPRBUILD_FOUND +if test -n "$GPRBUILD_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GPRBUILD_FOUND" >&5 +printf "%s\n" "$GPRBUILD_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GPRBUILD_FOUND" = "x$GPRBUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&2;} + fi + + + + + test "x$GNATPROVE" = "x" && GNATPROVE="gnatprove" + # Extract the first word of "$GNATPROVE", so it can be a program name with args. +set dummy $GNATPROVE; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GNATPROVE_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GNATPROVE_FOUND"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GNATPROVE_FOUND=$ac_cv_prog_GNATPROVE_FOUND +if test -n "$GNATPROVE_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNATPROVE_FOUND" >&5 +printf "%s\n" "$GNATPROVE_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GNATPROVE_FOUND" = "x$GNATPROVE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&2;} + fi + +############################################################################### +# Target acquisition and checking. + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +printf %s "checking target system type... " >&6; } +if test ${ac_cv_target+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +printf "%s\n" "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +case $target_cpu-$target_vendor in + riscv64-limine|x86_64-limine) + ;; + *) + as_fn_error $? "$target_cpu-$target_vendor is not available for compilation" "$LINENO" 5 + ;; +esac +############################################################################### +# Prepare an RTS from the cooked, pretty sources in the kernel. +mkdir -p rtsdir +mkdir -p rtsdir/adainclude +mkdir -p rtsdir/adalib +cp "$SRCDIR"/source/rts/*.adb rtsdir/adainclude +cp "$SRCDIR"/source/rts/*.ads rtsdir/adainclude +cp "$SRCDIR"/source/rts/$target_cpu-$target_vendor/*.ads rtsdir/adainclude +############## WARNING: DRAGONS LIE AHEAD ##################################### +# ____ __ +# { --.\ | .)%%%)%% +# '-._\\ | (\___ %)%%(%%(%%% +# `\\|{/ ^ _)-%(%%%%)%%;%%% +# .'^^^^^^^ /` %%)%%%%)%%%' +# //\ ) , / '%%%%(%%' +# , _.'/ `\<-- \< +# `^^^` ^^ ^^ +############################################################################### +# Some distros (looking at you, debian), despite we providing our RTS, will +# require for their gprbuild to link against -lgnat-XX where XX is the system +# version, this is not always provided by the distributions (sigh). +# Since we need nothing from them apart of their existance, we are just going +# to generate every possible file from libgnat-1.a to libgnat-99.a. +# Thats 100 years of GCC (Sorry Ironclad users in 3026). +mkdir -p libgnat-hack +touch libgnat-hack/libgnat.a +for i in $(seq 99); do + touch libgnat-hack/libgnat-$i.a +done +############################################################################### +# Finalize the settings and output the files. + +ac_config_files="$ac_config_files GNUmakefile ironclad.gpr rts.gpr" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +Ironclad config.status g0a370c9 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "GNUmakefile") CONFIG_FILES="$CONFIG_FILES GNUmakefile" ;; + "ironclad.gpr") CONFIG_FILES="$CONFIG_FILES ironclad.gpr" ;; + "rts.gpr") CONFIG_FILES="$CONFIG_FILES rts.gpr" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..0234cfb --- /dev/null +++ b/configure.ac @@ -0,0 +1,135 @@ +# configure.ac: Configure template of the project. +# Copyright (C) 2023 streaksu +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Project initialization. +AC_INIT([Ironclad], [m4_esyscmd([./version.sh])], [https://ironclad.nongnu.org/usersupport.html], [ironclad]) +AC_PREREQ([2.69]) +############################################################################### +# General project options. +AC_CONFIG_AUX_DIR([build-aux]) + +SRCDIR="$(cd "$srcdir" && pwd -P)" +BUILDDIR="$(pwd -P)" +AC_SUBST([SRCDIR]) +AC_SUBST([BUILDDIR]) + +werror_state="no" +AC_ARG_ENABLE([werror], + [AS_HELP_STRING([--enable-werror], [treat warnings as errors])], + [werror_state="$enableval"]) + +MEMORY_ALLOCONLY="False" +AC_ARG_ENABLE([alloconly], + [AS_HELP_STRING([--enable-alloconly], [Use the alloconly allocator instead of standard])], + [test "$enableval" = "yes" && MEMORY_ALLOCONLY="True"]) +AC_SUBST([MEMORY_ALLOCONLY]) + +m4_define([DEFAULT_ADAFLAGS], [-g -O2 -pipe -gnaty -Wall -Wextra]) +AC_ARG_VAR([ADAFLAGS], [Ada flags @<:@default: ]DEFAULT_ADAFLAGS[@:>@]) +test "x$ADAFLAGS" = "x" && ADAFLAGS="DEFAULT_ADAFLAGS" +if test "$werror_state" = "yes"; then + ADAFLAGS="$ADAFLAGS -Werror" +fi + +m4_define([DEFAULT_ASFLAGS], [-g -O2 -pipe -Wall]) +AC_ARG_VAR([ASFLAGS], [Assembler flags @<:@default: ]DEFAULT_ASFLAGS[@:>@]) +test "x$ASFLAGS" = "x" && ASFLAGS="DEFAULT_ASFLAGS" +if test "$werror_state" = "yes"; then + ASFLAGS="$ASFLAGS -Werror" +fi + +m4_define([DEFAULT_LDFLAGS], [-g -O2 -pipe -Wall]) +AC_ARG_VAR([LDFLAGS], [Linker flags @<:@default: ]DEFAULT_LDFLAGS[@:>@]) +test "x$LDFLAGS" = "x" && LDFLAGS="DEFAULT_LDFLAGS" +############################################################################### +# A ton of tools use source date epoch in order to not use date in the effort +# of doing reproducible builds. +# This command uses git, but thats no biggie because there is a fallback if +# no git is present and it is meant to only be run when regenerating, so +# tarball users will (ideally) never see this. +SOURCE_DATE_EPOCH="m4_esyscmd([if git log -1 >/dev/null 2>&1; then git log -1 --pretty=%ct | tr -d '\n'; else printf 1546300800; fi])" +AC_SUBST([SOURCE_DATE_EPOCH]) +############################################################################### +# Get programs and put them in comfortable variables. + +# $1 - UPERCASEVAR, $2 - default program, $3 - nice name +m4_define([GET_PROG], [ + m4_define([DEFAULT_$1], [$2]) + AC_ARG_VAR([$1], [$3 executable @<:@default: ]DEFAULT_$1[@:>@]) + test "x$$1" = "x" && $1="DEFAULT_$1" + AC_CHECK_PROG([$1_FOUND], [$$1], [$$1]) + if ! test "x$$1_FOUND" = "x$$1"; then + AC_MSG_WARN([$3 not found, please install $3 or set $1 to a valid executable]) + fi +]) + +AC_PROG_MKDIR_P +AC_PROG_INSTALL + +GET_PROG([PERL], [perl], [perl]) +GET_PROG([OBJDUMP], [objdump], [objdump]) +GET_PROG([GZIP], [gzip], [gzip]) +GET_PROG([STRIP], [strip], [strip]) +GET_PROG([MAKEINFO], [makeinfo], [makeinfo]) +GET_PROG([TEXI2DVI], [texi2dvi], [texi2dvi]) +GET_PROG([TEXI2HTML], [makeinfo --no-split --html], [texi2html]) +GET_PROG([GPRBUILD], [gprbuild], [gprbuild]) +GET_PROG([GNATPROVE], [gnatprove], [gnatprove]) +############################################################################### +# Target acquisition and checking. +AC_CANONICAL_TARGET + +case $target_cpu-$target_vendor in + riscv64-limine|x86_64-limine) + ;; + *) + AC_MSG_ERROR([$target_cpu-$target_vendor is not available for compilation]) + ;; +esac +############################################################################### +# Prepare an RTS from the cooked, pretty sources in the kernel. +mkdir -p rtsdir +mkdir -p rtsdir/adainclude +mkdir -p rtsdir/adalib +cp "$SRCDIR"/source/rts/*.adb rtsdir/adainclude +cp "$SRCDIR"/source/rts/*.ads rtsdir/adainclude +cp "$SRCDIR"/source/rts/$target_cpu-$target_vendor/*.ads rtsdir/adainclude +############## WARNING: DRAGONS LIE AHEAD ##################################### +# ____ __ +# { --.\ | .)%%%)%% +# '-._\\ | (\___ %)%%(%%(%%% +# `\\|{/ ^ _)-%(%%%%)%%;%%% +# .'^^^^^^^ /` %%)%%%%)%%%' +# //\ ) , / '%%%%(%%' +# , _.'/ `\<-- \< +# `^^^` ^^ ^^ +############################################################################### +# Some distros (looking at you, debian), despite we providing our RTS, will +# require for their gprbuild to link against -lgnat-XX where XX is the system +# version, this is not always provided by the distributions (sigh). +# Since we need nothing from them apart of their existance, we are just going +# to generate every possible file from libgnat-1.a to libgnat-99.a. +# Thats 100 years of GCC (Sorry Ironclad users in 3026). +mkdir -p libgnat-hack +touch libgnat-hack/libgnat.a +for i in $(seq 99); do + touch libgnat-hack/libgnat-$i.a +done +############################################################################### +# Finalize the settings and output the files. +AC_PREFIX_DEFAULT([/usr/local]) +AC_CONFIG_FILES([GNUmakefile ironclad.gpr rts.gpr]) +AC_OUTPUT diff --git a/configure~ b/configure~ new file mode 100755 index 0000000..58ba0fa --- /dev/null +++ b/configure~ @@ -0,0 +1,3894 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: https://ironclad.nongnu.org/usersupport.html about your +$0: system, including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Ironclad' +PACKAGE_TARNAME='ironclad' +PACKAGE_VERSION='g0a370c9' +PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' +PACKAGE_URL='' + +ac_default_prefix=/usr/local +ac_subst_vars='LTLIBOBJS +LIBOBJS +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +GNATPROVE_FOUND +GNATPROVE +GPRBUILD_FOUND +GPRBUILD +TEXI2HTML_FOUND +TEXI2HTML +TEXI2DVI_FOUND +TEXI2DVI +MAKEINFO_FOUND +MAKEINFO +STRIP_FOUND +STRIP +GZIP_FOUND +GZIP +OBJDUMP_FOUND +OBJDUMP +PERL_FOUND +PERL +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +MKDIR_P +SOURCE_DATE_EPOCH +LDFLAGS +ASFLAGS +ADAFLAGS +MEMORY_ALLOCONLY +BUILDDIR +SRCDIR +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_werror +enable_alloconly +' + ac_precious_vars='build_alias +host_alias +target_alias +ADAFLAGS +ASFLAGS +LDFLAGS +PERL +OBJDUMP +GZIP +STRIP +MAKEINFO +TEXI2DVI +TEXI2HTML +GPRBUILD +GNATPROVE' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/ironclad] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Ironclad g0a370c9:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-werror treat warnings as errors + --enable-alloconly Use the alloconly allocator instead of standard + +Some influential environment variables: + ADAFLAGS Ada flags [default: -g -O2 -pipe -gnaty -Wall -Wextra] + ASFLAGS Assembler flags [default: -g -O2 -pipe -Wall] + LDFLAGS Linker flags [default: -g -O2 -pipe -Wall] + PERL perl executable [default: perl] + OBJDUMP objdump executable [default: objdump] + GZIP gzip executable [default: gzip] + STRIP strip executable [default: strip] + MAKEINFO makeinfo executable [default: makeinfo] + TEXI2DVI texi2dvi executable [default: texi2dvi] + TEXI2HTML texi2html executable [default: makeinfo --no-split --html] + GPRBUILD gprbuild executable [default: gprbuild] + GNATPROVE gnatprove executable [default: gnatprove] + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Ironclad configure g0a370c9 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# Auxiliary files required by this configure script. +ac_aux_files="config.guess config.sub install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +############################################################################### +# General project options. + + +SRCDIR="$(cd "$srcdir" && pwd -P)" +BUILDDIR="$(pwd -P)" + + + +werror_state="no" +# Check whether --enable-werror was given. +if test ${enable_werror+y} +then : + enableval=$enable_werror; werror_state="$enableval" +fi + + +MEMORY_ALLOCONLY="False" +# Check whether --enable-alloconly was given. +if test ${enable_alloconly+y} +then : + enableval=$enable_alloconly; test "$enableval" = "yes" && MEMORY_ALLOCONLY="True" +fi + + + + + +test "x$ADAFLAGS" = "x" && ADAFLAGS="-g -O2 -pipe -gnaty -Wall -Wextra" +if test "$werror_state" = "yes"; then + ADAFLAGS="$ADAFLAGS -Werror" +fi + + + +test "x$ASFLAGS" = "x" && ASFLAGS="-g -O2 -pipe -Wall" +if test "$werror_state" = "yes"; then + ASFLAGS="$ASFLAGS -Werror" +fi + + + +test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" +############################################################################### +# A ton of tools use source date epoch in order to not use date in the effort +# of doing reproducible builds. +# This command uses git, but thats no biggie because there is a fallback if +# no git is present and it is meant to only be run when regenerating, so +# tarball users will (ideally) never see this. +SOURCE_DATE_EPOCH="1731253613" + +############################################################################### +# Get programs and put them in comfortable variables. + +# $1 - UPERCASEVAR, $2 - default program, $3 - nice name + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + + + test "x$PERL" = "x" && PERL="perl" + # Extract the first word of "$PERL", so it can be a program name with args. +set dummy $PERL; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$PERL_FOUND"; then + ac_cv_prog_PERL_FOUND="$PERL_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL_FOUND="$PERL" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PERL_FOUND=$ac_cv_prog_PERL_FOUND +if test -n "$PERL_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL_FOUND" >&5 +printf "%s\n" "$PERL_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$PERL_FOUND" = "x$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: perl not found, please install perl or set PERL to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: perl not found, please install perl or set PERL to a valid executable" >&2;} + fi + + + + + test "x$OBJDUMP" = "x" && OBJDUMP="objdump" + # Extract the first word of "$OBJDUMP", so it can be a program name with args. +set dummy $OBJDUMP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$OBJDUMP_FOUND"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP_FOUND="$OBJDUMP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP_FOUND=$ac_cv_prog_OBJDUMP_FOUND +if test -n "$OBJDUMP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP_FOUND" >&5 +printf "%s\n" "$OBJDUMP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$OBJDUMP_FOUND" = "x$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: objdump not found, please install objdump or set OBJDUMP to a valid executable" >&2;} + fi + + + + + test "x$GZIP" = "x" && GZIP="gzip" + # Extract the first word of "$GZIP", so it can be a program name with args. +set dummy $GZIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GZIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GZIP_FOUND"; then + ac_cv_prog_GZIP_FOUND="$GZIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GZIP_FOUND="$GZIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GZIP_FOUND=$ac_cv_prog_GZIP_FOUND +if test -n "$GZIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GZIP_FOUND" >&5 +printf "%s\n" "$GZIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GZIP_FOUND" = "x$GZIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gzip not found, please install gzip or set GZIP to a valid executable" >&2;} + fi + + + + + test "x$STRIP" = "x" && STRIP="strip" + # Extract the first word of "$STRIP", so it can be a program name with args. +set dummy $STRIP; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP_FOUND"; then + ac_cv_prog_STRIP_FOUND="$STRIP_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP_FOUND="$STRIP" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP_FOUND=$ac_cv_prog_STRIP_FOUND +if test -n "$STRIP_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP_FOUND" >&5 +printf "%s\n" "$STRIP_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$STRIP_FOUND" = "x$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: strip not found, please install strip or set STRIP to a valid executable" >&2;} + fi + + + + + test "x$MAKEINFO" = "x" && MAKEINFO="makeinfo" + # Extract the first word of "$MAKEINFO", so it can be a program name with args. +set dummy $MAKEINFO; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MAKEINFO_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$MAKEINFO_FOUND"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKEINFO_FOUND="$MAKEINFO" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MAKEINFO_FOUND=$ac_cv_prog_MAKEINFO_FOUND +if test -n "$MAKEINFO_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO_FOUND" >&5 +printf "%s\n" "$MAKEINFO_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$MAKEINFO_FOUND" = "x$MAKEINFO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: makeinfo not found, please install makeinfo or set MAKEINFO to a valid executable" >&2;} + fi + + + + + test "x$TEXI2DVI" = "x" && TEXI2DVI="texi2dvi" + # Extract the first word of "$TEXI2DVI", so it can be a program name with args. +set dummy $TEXI2DVI; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2DVI_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2DVI_FOUND"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2DVI_FOUND="$TEXI2DVI" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2DVI_FOUND=$ac_cv_prog_TEXI2DVI_FOUND +if test -n "$TEXI2DVI_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2DVI_FOUND" >&5 +printf "%s\n" "$TEXI2DVI_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2DVI_FOUND" = "x$TEXI2DVI"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2dvi not found, please install texi2dvi or set TEXI2DVI to a valid executable" >&2;} + fi + + + + + test "x$TEXI2HTML" = "x" && TEXI2HTML="makeinfo --no-split --html" + # Extract the first word of "$TEXI2HTML", so it can be a program name with args. +set dummy $TEXI2HTML; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_TEXI2HTML_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$TEXI2HTML_FOUND"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_TEXI2HTML_FOUND="$TEXI2HTML" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +TEXI2HTML_FOUND=$ac_cv_prog_TEXI2HTML_FOUND +if test -n "$TEXI2HTML_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEXI2HTML_FOUND" >&5 +printf "%s\n" "$TEXI2HTML_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$TEXI2HTML_FOUND" = "x$TEXI2HTML"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: texi2html not found, please install texi2html or set TEXI2HTML to a valid executable" >&2;} + fi + + + + + test "x$GPRBUILD" = "x" && GPRBUILD="gprbuild" + # Extract the first word of "$GPRBUILD", so it can be a program name with args. +set dummy $GPRBUILD; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GPRBUILD_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GPRBUILD_FOUND"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GPRBUILD_FOUND="$GPRBUILD" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GPRBUILD_FOUND=$ac_cv_prog_GPRBUILD_FOUND +if test -n "$GPRBUILD_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GPRBUILD_FOUND" >&5 +printf "%s\n" "$GPRBUILD_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GPRBUILD_FOUND" = "x$GPRBUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gprbuild not found, please install gprbuild or set GPRBUILD to a valid executable" >&2;} + fi + + + + + test "x$GNATPROVE" = "x" && GNATPROVE="gnatprove" + # Extract the first word of "$GNATPROVE", so it can be a program name with args. +set dummy $GNATPROVE; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GNATPROVE_FOUND+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$GNATPROVE_FOUND"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE_FOUND" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_GNATPROVE_FOUND="$GNATPROVE" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GNATPROVE_FOUND=$ac_cv_prog_GNATPROVE_FOUND +if test -n "$GNATPROVE_FOUND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNATPROVE_FOUND" >&5 +printf "%s\n" "$GNATPROVE_FOUND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if ! test "x$GNATPROVE_FOUND" = "x$GNATPROVE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&5 +printf "%s\n" "$as_me: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable" >&2;} + fi + +############################################################################### +# Target acquisition and checking. + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +printf %s "checking target system type... " >&6; } +if test ${ac_cv_target+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +printf "%s\n" "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +case $target_cpu-$target_vendor in + riscv64-limine|x86_64-limine) + ;; + *) + as_fn_error $? "$target_cpu-$target_vendor is not available for compilation" "$LINENO" 5 + ;; +esac +############################################################################### +# Prepare an RTS from the cooked, pretty sources in the kernel. +mkdir -p rtsdir +mkdir -p rtsdir/adainclude +mkdir -p rtsdir/adalib +cp "$SRCDIR"/source/rts/*.adb rtsdir/adainclude +cp "$SRCDIR"/source/rts/*.ads rtsdir/adainclude +cp "$SRCDIR"/source/rts/$target_cpu-$target_vendor/*.ads rtsdir/adainclude +############## WARNING: DRAGONS LIE AHEAD ##################################### +# ____ __ +# { --.\ | .)%%%)%% +# '-._\\ | (\___ %)%%(%%(%%% +# `\\|{/ ^ _)-%(%%%%)%%;%%% +# .'^^^^^^^ /` %%)%%%%)%%%' +# //\ ) , / '%%%%(%%' +# , _.'/ `\<-- \< +# `^^^` ^^ ^^ +############################################################################### +# Some distros (looking at you, debian), despite we providing our RTS, will +# require for their gprbuild to link against -lgnat-XX where XX is the system +# version, this is not always provided by the distributions (sigh). +# Since we need nothing from them apart of their existance, we are just going +# to generate every possible file from libgnat-1.a to libgnat-99.a. +# Thats 100 years of GCC (Sorry Ironclad users in 3026). +mkdir -p libgnat-hack +touch libgnat-hack/libgnat.a +for i in $(seq 99); do + touch libgnat-hack/libgnat-$i.a +done +############################################################################### +# Finalize the settings and output the files. + +ac_config_files="$ac_config_files GNUmakefile ironclad.gpr rts.gpr" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Ironclad $as_me g0a370c9, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +Ironclad config.status g0a370c9 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "GNUmakefile") CONFIG_FILES="$CONFIG_FILES GNUmakefile" ;; + "ironclad.gpr") CONFIG_FILES="$CONFIG_FILES ironclad.gpr" ;; + "rts.gpr") CONFIG_FILES="$CONFIG_FILES rts.gpr" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/docs/fdl.texi b/docs/fdl.texi new file mode 100644 index 0000000..eaf3da0 --- /dev/null +++ b/docs/fdl.texi @@ -0,0 +1,505 @@ +@c The GNU Free Documentation License. +@center Version 1.3, 3 November 2008 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. +@uref{https://fsf.org/} + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document @dfn{free} in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The ``Document'', below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as ``you''. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, La@TeX{} input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG@. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The ``publisher'' means any person or entity that distributes copies +of the Document to the public. + +A section ``Entitled XYZ'' means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as ``Acknowledgements'', +``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' +of such a section when you modify the Document means that it remains a +section ``Entitled XYZ'' according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +@item +COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +@enumerate A +@item +Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +@item +List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +@item +State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +@item +Preserve all the copyright notices of the Document. + +@item +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +@item +Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +@item +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +@item +Include an unaltered copy of this License. + +@item +Preserve the section Entitled ``History'', Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled ``History'' in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +@item +Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the ``History'' section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +@item +For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +@item +Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +@item +Delete any section Entitled ``Endorsements''. Such a section +may not be included in the Modified Version. + +@item +Do not retitle any existing section to be Entitled ``Endorsements'' or +to conflict in title with any Invariant Section. + +@item +Preserve any Warranty Disclaimers. +@end enumerate + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties---for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled ``History'' +in the various original documents, forming one section Entitled +``History''; likewise combine any sections Entitled ``Acknowledgements'', +and any sections Entitled ``Dedications''. You must delete all +sections Entitled ``Endorsements.'' + +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an ``aggregate'' if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled ``Acknowledgements'', +``Dedications'', or ``History'', the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + +@item +FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +@uref{https://www.gnu.org/licenses/}. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +@item +RELICENSING + +``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the +site means any set of copyrightable works thus published on the MMC +site. + +``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +``Incorporate'' means to publish or republish a Document, in whole or +in part, as part of another Document. + +An MMC is ``eligible for relicensing'' if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + +@end enumerate + +@page +@heading ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the ``with@dots{}Texts.''@: line with this: + +@smallexample +@group + with the Invariant Sections being @var{list their titles}, with + the Front-Cover Texts being @var{list}, and with the Back-Cover Texts + being @var{list}. +@end group +@end smallexample + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +@c Local Variables: +@c ispell-local-pdict: "ispell-dict" +@c End: diff --git a/docs/ironclad.texi b/docs/ironclad.texi new file mode 100644 index 0000000..02261f4 --- /dev/null +++ b/docs/ironclad.texi @@ -0,0 +1,4314 @@ +\input texinfo +@setfilename ironclad.info +@documentencoding UTF-8 +@settitle Ironclad User's Guide + +@copying +Copyright @copyright{} 2024 streaksu + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A +copy of the license is included in the section entitled ``GNU Free +Documentation License''. +@end quotation +@end copying + +@titlepage +@title Ironclad User's Guide +@subtitle Userland interfaces and devices, features, and kernel internals. +@author streaksu +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage +@contents + +@ifnottex +@node Top +@top Ironclad User's Guide + +This manual documents usage of Ironclad, interfaces and devices it exposes to +userland, and discusses kernel internals, without having to navigate the often +cryptic and scary Ada code. + +@insertcopying +@end ifnottex + +@menu +* Installation and target support:: Installation and hardware support. +* Boot-time command-line options:: Command-line options. +* Scheduling and RTC:: Scheduling methodology and features. +* Inter-process communication:: IPC primitives, methods, and quirks. +* Memory architecture:: Memory architecture of the kernel. +* Userland state and conditions:: Userland state and conditions. +* Security and integrity facilities:: Ironclad-specific security facilities. +* Debugging facilities:: Ironclad-specific debugging facilities. +* Syscalls:: Listings and explanation of syscalls. +* Networking:: Networking support and details. +* Filesystem support and interfaces:: VFS details and supported filesystems. +* Devices and their properties:: Devices exposed by the kernel. +* GNU Free Documentation License:: Copying and sharing this manual. + +@detailmenu +--- The Detailed Node Listing --- + +Installation and target support + +* riscv64-limine support:: riscv64-limine installation and support. +* x86_64-limine support:: x86_64-limine installation and support. + +Boot-time command-line options + +* Format:: Description of the format. +* List:: List of all the available command line arguments. + +Scheduling and RTC + +* Ticks and other interruptions:: Thread interruptions to expect. +* Scheduling basics:: Scheduling model used in Ironclad. +* Thread clustering management:: Thread cluster management in Ironclad. + +Inter-process communication + +* Pipes:: FIFOs (yay!). +* Futexes:: Fast-Userspace MuTeXes. +* PTYs:: Pseudo-terminal creation and management. +* Signals:: Ironclad's signal mechanism. +* Sockets:: Sockets in all of its glory and flavours. + +Memory architecture + +* Physical memory allocation:: How the kernel goes about allocating memory. +* Virtual memory:: Virtual memory architecture. +* Memory failures:: Memory failure policies and conditions. + +Userland state and conditions + +* Program loading:: Format of the loaded programs. +* Memory layout:: Layout of memory in userland. + +Security and integrity facilities + +* Users and groups:: UIDs, EUIDs, GIDs, and all the fuzz. +* Mandatory access control (MAC):: MAC quickguide and configuration. +* Resource limits:: Limits on resources built into MAC. +* Miscellaneous measures:: Miscelaneous security measures. + +Debugging facilities + +* Corefile and process dumping:: Format of dumped files, and settings. +* Program tracing:: Details on program tracing. + +Syscalls + +* Table and target quirks:: Syscall table and architectural ABI. +* Errno:: Error conditions and their values. +* exit:: Exit the callee process. +* arch_prctl:: Interacting with architectural thread-local data. +* open:: Opening file-system entities. +* close:: Closing file descriptors. +* read/write:: Read and write from file descriptors. +* seek:: Modify and fetch file offsets. +* mmap/mprotect/munmap:: Manage memory regions. +* getpid/getppid:: Get the PIDs of the caller. +* exec:: Launching new programs. +* clone:: Create new processes and threads. +* wait:: Waiting for execution of a child to finish. +* socket:: Create sockets. +* sethostname:: Hostname setting. +* unlink:: Queue files for deletion. +* fstat:: Fetch file information. +* chdir:: Current working directory manipulation. +* ioctl:: IO multiplexer. +* sched_yield:: Relinquish CPU time. +* delete_tcluster:: Delete thread clusters. +* pipe:: Create pipes. +* rename:: Rename a file. +* sysconf:: Fetch general system parameters and information. +* spawn:: clone+exec power incarnate. +* gettid:: Get the current thread id. +* manage_tcluster:: Manage and create thread clusters. +* fcntl:: Multiplexed operations for files. +* exit_thread:: Exit the calling thread. +* getrandom:: Bypass /dev/random for avoiding DoS attacks. +* mac_capabilities:: Get and set MAC capabilities. +* add_mac_permissions:: Configure MAC using filesystem-based filters. +* set_mac_enforcement:: Set enforcement to follow on MAC violations. +* mount/umount:: Mount and unmount partitions. +* readlink:: Read the contents of a symlink. +* getdents:: Get directory entries. +* sync:: Synchronize device caches. +* mknod:: Create several kinds of files. +* truncate:: Truncate the contents of a file to an offset. +* bind:: Bind sockets to locations. +* mkdir:: Create directories. +* symlink:: Create symbolic links. +* connect:: Connect a socket. +* openpty:: Create pseudoterminals. +* fsync:: Synchronize file-specific caches. +* link:: Create hard links. +* ptrace:: Trace and debug children processes. +* listen:: Listen for connections to a socket. +* accept:: Accept socket connections. +* getrlimit/setrlimit:: Get and set resource limits. +* access:: Check file access permissions and existance. +* ppoll:: I/O event multiplexer. +* getuid/geteuid:: Get the UID and the effective UID. +* setuids:: Set the UID and the effective UID. +* fchmod:: Change the mode of a file descriptor. +* umask:: Get and set the calling process umask. +* reboot:: Machine power management. +* fchown:: Change ownership of a file descriptor. +* pread/pwrite:: Atomic read and write from file descriptors. +* getsockname:: Get address of a bound socket. +* getpeername:: Get address of a socket's peer. +* shutdown:: Disconnect socket from its peer. +* futex:: Fast userland mutexes. +* clock:: Clock and time operations. +* clock_nanosleep:: Sleep on a clock. +* getrusage:: Get resource usage for the process. +* recvfrom/sendto:: Socket IO support functions. +* config_netinter:: Configure network interfaces. +* utimes:: Modify timestamps for a file. +* create_tcluster:: Create a thread cluster. +* switch_tcluster:: Switch thread cluster. +* sigprogmask:: Fetch and change a process' blocked signal. +* sigaction:: Fetch and change a signal's action. +* send_signal:: Send a signal to a process. +* getprio/setprio:: Get / Set the niceness of some entities. +* getgid/getegid:: Get the GID and the effective GID. +* setgids:: Set the GID and the effective GID. +* getgroups/setgroups:: Get and set supplementary user groups. +* ttyname:: Get the name of a TTY file descriptor. +* fadvise:: Advise caching for file access. +* shmat:: Attach a shared memory region. +* shmctl:: Control a shared memory region. +* shmdl:: Delete a shared memory region. +* shmget:: Create or get a shared memory region by key. +* getsockopt/setsockopt:: Get and set options on sockets. +* gettidid/settidid:: Get and set TID IDs. +* failure_policy:: Get or set failure policies. + +Filesystem support and interfaces + +* Extended FileSystem:: EXT-series filesystems (ext2, ext3, ext4). +* File Allocation Table:: FAT-series filesystems. + +Networking + +* Layering:: What Ironclad provides in terms of the OSI model. +* Interface handling:: How interfaces work inside Ironclad. +* Loopback:: Loopback device use and specification. + +Devices and their properties + +* Common devices:: Devices common to all architectures and targets. +* riscv64-limine devices:: Devices specific to riscv64-limine. +* x86_64-limine devices:: Devices specific to x86_64-limine. + +@end detailmenu +@end menu + +@node Installation and target support +@chapter Installation and target support + +This chapter delves on what hardware configurations Ironclad supports and how +to get Ironclad running on those platforms. + +Ironclad hardware support is divided in targets, which are combos of +an architecture and board that are supported in tandem, along with any +accompaning hardware, some hardware is supported regardless of the underlying +target, @ref{Common devices}. + +@node riscv64-limine support +@section riscv64-limine support + +Ironclad supports RISC-V64 systems supporting the IMAC, ZICSR, and ZIFENCEI +extensions using the Limine boot protocol, which as of time of writing +depends on UEFI support being present, but this might change in the future. The +machines running Ironclad are required to provide a device tree blob (DTB). + +Refer to your limine compliant bootloader for instructions on where to put +kernel images, configuration formats, and the like. + +For supported devices and how they are abstracted, @ref{riscv64-limine devices} + +@node x86_64-limine support +@section x86_64-limine support + +x86_64 systems are supported using the limine boot protocol, any +limine compliant bootloader will be able to boot it just fine. + +Refer to your limine compliant bootloader for instructions on where to put +kernel images, configuration formats, and the like. + +For supported devices and how they are abstracted, +@ref{x86_64-limine devices}. + +@node Boot-time command-line options +@chapter Boot-time command-line options + +Ironclad takes, as part of its boot protocol, a series of options and values. +The parsing of this options is architecture and platform independent, while the +ability to modify said options and values is entirely up to the platform and +bootloader. + +@node Format +@section Format + +The format is a list of keys with optional arguments as such: + +@example shellscript +key1=value1 key2 key3=value3 key4="value4 value5" ... keyN=(")valueN(") +@end example + +For arguments that need spaces within, like init program arguments and such, +quotation marks are available for use, nested quotation marks are not allowed +in any shape or form, due to the primitive parsing available within the kernel. + +@node List +@section List + +This are the keys and values the kernel takes, and under which circumstances: + +@table @code +@item root= +Device to mount as root, if any. + +@item rootuuid= +Used instead of @code{root}. It addresses the root device with a UUID instead +of a device name. This can be used to gain some device-independence, for +example, for addressing a given partition in a GPT drive regardless the +containing device. + +@item init= +Path to a program that will be booted by the kernel when finished loading. +The program will be started with @code{stdin} set to @code{/dev/null}, and +@code{stdout} and @code{stderr} set to @code{/dev/console}. + +@item initargs= +Arguments to pass to init. If environment variables are what is desired, +consider the trick of booting in typical UNIX fashion +@code{/bin/env }. + +@item noprogaslr +The offset of loaded programs in virtual memory is randomized when loading if +possible, this option disables it system-wide at boot time and hardcodes it to +the lowest available value. + +@item nolocaslr +The same as @code{noprogaslr} but applied to memory locations like stacks +and memory allocation. +@end table + +@node Scheduling and RTC +@chapter Scheduling and RTC + +Ironclad is built around hard real-time work, this chapter explains how that +is accomplished along with how scheduling works, predictability of it, and +other useful related features. + +@node Ticks and other interruptions +@section Ticks and other interruptions + +Ironclad will not interrupt a running thread for timers or heartbeats, if +necessary, at the expense of performance by, for example, using polling instead +of interrupt-based operation for device drivers. + +A thread, however, may be interrupted for task-switching, which is needed for +scheduling to work. This will not be an issue for most operations, but if the +user desires absolutely 0 interruptions and/or jitter, one can use + +@node Scheduling basics +@section Scheduling basics + +Scheduling in Ironclad is based broadly on +@url{https://en.wikipedia.org/wiki/ARINC_653, ARINC 653 partitioning} and +process models. Like the standard specifies, it employs 2 hierarchies of +schedulable entities, the thread cluster, and the thread (or partition and +process in ARINC nomenclature respectively). + +Each cluster needs to have a percentage of CPU time assigned at creation +(which can be modified later on), that the scheduler will uphold with +preemption, effectively promissing that any given cluster will be given, at +least, the specified execution time. Validy of the cluster configuration is +checked when adding, deleting, or modifying individual clusters. + +Slack time (time not covered percent-wise by any cluster) will be used as seen +fit, while not breaking scheduler guarantees, in an unspecified way. Thus, it +shall be treated as @b{UNDEFINED BEHAVIOUR} by system users, and it is the +responsability of the user to configure the scheduling to keep this into +account. It is also why the above paragraph mentions "at least", as unspecified +time can be assigned to other clusters. + +Ironclad supports multicore configurations, shuffling cores around clusters, +while always keeping the assigned slices for each cluster. + +@node Thread clustering management +@section Thread clustering management + +Thread clusters are identified by an integer id, not unlike threads or PIDs. +Clusters rule over a group of threads, regardless of their process of origin, +and allow specifiying an algorithm and a percentage over all the CPU time. + +The algorithm of a cluster affects how threads inside the cluster are +scheduled. The available algorithms are: + +@table @code +@item SCHED_RR +A prioritized round robin. One can specify a quantum to use when +switching threads, while one can specify a priority using standard POSIX +niceness. @ref{getprio/setprio}. + +Priorities affect inter-thread quantum following the formula: + +@example +timeout = quantum - ((quantum / 40) * niceness); +@end example + +@item SCHED_COOP +Cooperative scheduling, the scheduler will not attempt to preempt unless +explicitly requested by exiting or yielding. +@end table + +Additionally, by using the @code{SCHED_INTR} flag, a cluster can be configured +to be interruptible, which makes the kernel able to interrupt a thread and +queue another during long waits, in order to increase performance and +responsiveness. This does not affect cluster-wide scheduling guarantees. + +At startup, Ironclad will have a single interruptible cluster assigned to 100% +of execution time, configured to use a flat RR with a reasonable quantum with +cluster number @code{1}. Software is free to modify it however it sees fit, it +is just provided in order to have some natural-ish behaviour for running +software blissfully unaware of the clusters beneath. + +Syscalls used for modifying clusters and their settings are +@code{manage_tcluster} and @code{delete_tcluster}, @code{create_tcluster}, and +@code{switch_tcluster}. + +@node Inter-process communication +@chapter Inter-process communication + +This chapter digs into the forms of IPC Ironclad supports, what they do, and +how they can help accomplish complex local or remote IPC. + +@node Pipes +@section Pipes + +Ironclad features standard POSIX-like pipes, they are created using +@pxref{pipe}. + +The standard size of pipes is 10 architectural pages. This size can be modified +using the following @code{fcntl} calls. + +@example c +#define F_GETPIPE_SZ 7 // Get the size in bytes. +#define F_SETPIPE_SZ 8 // Set the size in bytes. +@end example + +@node Futexes +@section Futexes + +Standard Linux-like futexes. @ref{futex}. + +@node PTYs +@section PTYs + +Pseudo terminals (PTYs) are available in Ironclad, with a few quirks. They are +created using @pxref{openpty}. + +PTYs, unlike other OSes like Linux, when created, do not populate @code{/dev}. +They live exclusively as file descriptors, not unlike a pipe. Apart of that +they behave as you would expect when compared with other UNIX-likes. + +@node Signals +@section Signals + +Ironclad implements standard POSIX signals. + +@node Sockets +@section Sockets + +Standard sockets. @ref{socket}. + +@node Memory architecture +@chapter Memory architecture + +This section delves into details on Ironclad's memory management. + +@node Physical memory allocation +@section Physical memory allocation + +Ironclad features two physical memory allocator choices for use, the chosen +allocator will be used both for kernel and userland allocations, the standard +and alloconly allocators. + +The standard allocator is a general purpose allocator for your average +everyday allocator needs. Its internally implemented as a bitmap allocator with +page-sized blocks and a quick cache for small objects, along with some quick +hardening features, like checksums. + +The alloconly option features several optimizations on top of the usual +allocator in order to save memory and tune operation, for usecases where nor +userland nor the kernel are wanted to deallocate memory at all. + +@node Virtual memory +@section Virtual memory + +The virtual memory architecture of Ironclad is quite simple, given the need +to avoid things like complex virtual memory management which could influence +predictability with page-related interrupts, and similar features. For the same +reason, memory overcommiting is not allowed. + +@node Memory failures +@section Memory failures + +Ironclad is capable of answering to out of memory conditions as well as +hardware memory errors. + +For OOM failures, Ironclad will try to free internal storage used for cache and +retry allocation until it is deemed the situation is not recoverable, in which +case it will panic. To this end, Ironclad will kill high memory consuming +processes, this behaviour is configurable in @ref{failure_policy}. + +For hardware memory failures, like RAM sticks going bad, handling will depend +on the underlying architecture. Behaviour is configurable as well under +@ref{failure_policy}. + +@node Userland state and conditions +@chapter Userland state and conditions + +Ironclad places several requirements on loaded userland programs, from the +format of which, to memory layout. + +@node Program loading +@section Program loading + +Loaded programs must be under the ELF64 format, other formats may be supported +in the future. Loaded programs can be static or relocatable. + +@code{ld.so}, or any other linker program detailed on the interpreter segment +of the ELF executable will be a special case, it is assumed to be relocatable. + +@node Memory layout +@section Memory layout + +Loaded programs are loaded at address 0, and they are free to allocate +themselves at nearby offsets. + +@code{ld.so} and entities like stacks, anonymous memory regions, and others, +will be randomized on load time following +@uref{https://en.wikipedia.org/wiki/Address_space_layout_randomization, ASLR}, +and must not be relied upon. It is up to @code{ld.so} to optionally place +additionally loaded libraries at random offsets. + +The stack is a fixed @code{128 KiB} in size, and is not executable, by default. + +@node Security and integrity facilities +@chapter Security and integrity facilities + +This chapter digs into the various Ironclad-specific security and integrity +features available for the user. + +@node Users and groups +@section Users and groups + +As part of the UNIX-like package, Ironclad supports the traditional UID/EUID +values per-process for basic access protection, both for files and syscalls. + +Unlike most UNIX systems, the @code{setuid} bit is fully ignored and not +implemented, instead, as part of the mandatory access control facilities +explained later, @code{MAC_CAP_SETUID} is provided, with similar functionality. + +Groups are not supported in any shape or form. + +@node Mandatory access control (MAC) +@section Mandatory access control (MAC) + +Mandatory access control (MAC) is one of the main components of Ironclad's +security. It does not necesarily help with preventing breaches, but, when +configured correctly, it can help mitigate consequences to a massive degree. + +MAC in Ironclad consists on a series of settings inherited from parent process +to children, these settings come in the form of capabilities and file filters. + +Capabilities are a set of coarse permissions that restrict a process on what it +can and cannot do, only more restrictive capability escalations are allowed, +they are configured using @ref{mac_capabilities}. + +The available capability list is: + +@table @code +@item MAC_CAP_SCHED +The process will be allowed to change its own scheduling rules, like modifying +deadlines. + +@item MAC_CAP_SPAWN +The process will be allowed to spawn other processes and threads. + +@item MAC_CAP_ENTROPY +The process will have unrestricted access to the sources of entropy of the +kernel, this does not cover the UNIX-standard @code{random/urandom}. + +@item MAC_CAP_SYS_MEM +The process will be able to allocate and deallocate both private and shared +memory regions. + +@item MAC_CAP_USE_NET +The process will be able to use networking. + +@item MAC_CAP_SYS_NET +The process will be able to modify networking, for things like hostname +changing. + +@item MAC_CAP_SYS_MNT +The process will be able to modify, add, and remove mountpoints. + +@item MAC_CAP_SYS_PWR +The process will be able to modify power settings, along doing things like +shutdown and reboot. + +@item MAC_CAP_PTRACE +The process will be able to use ptrace on children processes. + +@item MAC_CAP_SETUID +The process will be able to change its effective and global UIDs without +checks. + +@item MAC_CAP_SYS_MAC +The process will be able to add allowed inodes to the MAC definitions, along +with modifying hard limits for system resources. + +@item MAC_CAP_CLOCK +The process will be able to access clocks syscalls like @ref{clock} or +@code{clock_nanosleep}, as well as setting the time of clocks that can do so. +This is provided as reading clock time can sometimes be used as a way to +coordinate attacks. + +@item MAC_CAP_SIGNALALL +Processes by default need to share the user with another one to either kill it +or send a signal. This capability allows to send signals to all processes, +regardless of the user issuing it. + +@item MAC_CAP_SETGID +The process will be able to change its effective and global UIDs without +checks. + +@item MAC_CAP_IPC +The process will be able to bypass UID/GID and mode checks when interacting +with SystemV-style IPC objects, like the ones you can create with @ref{shmget}. +@end table + +File filters consist on permissions given to specific paths and files, that, +just like capabilities, get inherited from parent to child processes. +Access to inodes and devices can be granted using @ref{add_mac_permissions}. + +The action to take on MAC violations can be set with @ref{set_mac_enforcement}. +Possible values include denying requests, killing the offending part outright, +or denying and additionally logging the event. + +Once booted, MAC is enabled and gives full access to all capabilities, and +offers full access to all inodes and devices. It is up to userland to further +restrict access, and for those settings to trickle down to children processes. +File access enforcement will kick in only once the first filter is added with +@ref{add_mac_permissions}. + +@node Resource limits +@section Resource limits + +As part of the UNIX-like package, Ironclad supports various resource limits +that, in the case of Ironclad, are built inside MAC, and are passed down like +MAC capabilities (@pxref{Mandatory access control (MAC)}). +@xref{getrlimit/setrlimit}. + +Limits mostly act as you would expect them to behave, and they are all +initialized to the maximum possible value, there are only 2 quirks: For one, +limits are only deescalatory (like MAC), you can only go down, never up, and, +since Ironclad does not support dynamically growing stacks, the initial size is +dictated (for the stacks created by the kernel) with @code{RLIMIT_STACK}. Thus, +Ironclad does not start that limit with the maximum value, but a smaller valid +size. + +A short description of the available limits and their default values is: + +@table @code +@item RLIMIT_CORE +Size of corefile dumps, by default 0 (disabling it). + +@item RLIMIT_CPU +Limit of CPU time a process can consume in seconds, by default -1 (max value). + +@item RLIMIT_FSIZE +Limit of individual file size a process can write, by default -1 (max value). + +@item RLIMIT_NOFILE +Limit of files a process can open on top of other system limits, by default +-1 (max value). + +@item RLIMIT_STACK +Limit of stack size for a process, by default 4 MiB. + +@item RLIMIT_AS +Limit of maximum address size space used by a process, by default +-1 (max value). +@end table + +@node Miscellaneous measures +@section Miscellaneous measures + +@subsection W^X + +Ironclad does not allow mapping memory sections write and execute at the same +time, this helps mitigate several kinds of memory corruption vulnerabilities +by making it much harder to transform them into arbitrary code execution. + +@node Debugging facilities +@chapter Debugging facilities + +This chapter digs into the various Ironclad-specific debugging features +available for the user. + +@node Corefile and process dumping +@section Corefile and process dumping + +Ironclad implements corefile dumping when a process irreparably crashes, which +can be controlled and entirely disabled if wanted with the related limits, see +@ref{Resource limits}. + +Corefiles are generated on a path created as: + +@example +/tmp/.core +@end example + +This path is not configurable, and will only be created and overwritten if the +file des not exist already. + +As seen in @ref{Resource limits}, corefiles are disabled by default, this is +done since core files can potentially contain private, sensible information +that could be exploited by an attacker. + +The format is a register dump of the process. + +@node Program tracing +@section Program tracing + +Ironclad allows tracing children processes for a variety of information, MAC +willing, see @ref{ptrace}. + +@node Syscalls +@chapter Syscalls + +Syscall are the main method for userland to interface with the kernel's +facilities, this section delves into the mechanism and how it works. + +@node Table and target quirks +@section Table and target quirks + +Syscalls in Ironclad have an architecture-dependent ABI, but the table and its +indexes are always the same, this is done to simplify development. and here is a list of the +supported architectures and the ABI for each of them. Here is the table: + +@enumerate 0 +@item +@ref{exit}. +@item +@ref{arch_prctl}. +@item +@ref{open}. +@item +@ref{close}. +@item +@ref{read/write, read}. +@item +@ref{read/write, write}. +@item +@ref{seek}. +@item +@ref{mmap/mprotect/munmap, mmap}. +@item +@ref{mmap/mprotect/munmap, munmap}. +@item +@ref{getpid/getppid, getpid}. +@item +@ref{getpid/getppid, getppid}. +@item +@ref{exec}. +@item +@ref{clone}. +@item +@ref{wait}. +@item +@ref{socket}. +@item +@ref{sethostname}. +@item +@ref{unlink}. +@item +@ref{fstat}. +@item +Empty. +@item +@ref{chdir}. +@item +@ref{ioctl}. +@item +@ref{sched_yield}. +@item +@ref{delete_tcluster}. +@item +@ref{pipe}. +@item +@ref{getuid/geteuid, getuid}. +@item +@ref{rename}. +@item +@ref{sysconf}. +@item +@ref{spawn}. +@item +@ref{gettid}. +@item +@ref{manage_tcluster}. +@item +@ref{fcntl}. +@item +@ref{exit_thread}. +@item +@ref{getrandom}. +@item +@ref{mmap/mprotect/munmap, mprotect}. +@item +@ref{sync}. +@item +@ref{mac_capabilities, set_mac_capabilities}. +@item +@ref{mac_capabilities, get_mac_capabilities}. +@item +@ref{add_mac_permissions}. +@item +@ref{set_mac_enforcement}. +@item +@ref{mount/umount, mount}. +@item +@ref{mount/umount, umount}. +@item +@ref{readlink}. +@item +@ref{getdents}. +@item +@ref{mknod}. +@item +@ref{truncate}. +@item +@ref{bind}. +@item +@ref{symlink}. +@item +@ref{connect}. +@item +@ref{openpty}. +@item +@ref{fsync}. +@item +@ref{link}. +@item +@ref{ptrace}. +@item +@ref{listen}. +@item +@ref{accept}. +@item +@ref{getrlimit/setrlimit, getrlimit}. +@item +@ref{getrlimit/setrlimit, setrlimit}. +@item +@ref{access}. +@item +@ref{ppoll}. +@item +@ref{getuid/geteuid, geteuid}. +@item +@ref{setuids}. +@item +@ref{fchmod}. +@item +@ref{umask}. +@item +@ref{reboot}. +@item +@ref{fchown}. +@item +@ref{pread/pwrite, pread}. +@item +@ref{pread/pwrite, pwrite}. +@item +@ref{getsockname}. +@item +@ref{getpeername}. +@item +@ref{shutdown}. +@item +@ref{futex}. +@item +@ref{clock}. +@item +@ref{clock_nanosleep}. +@item +@ref{getrusage}. +@item +@ref{recvfrom/sendto, recvfrom}. +@item +@ref{recvfrom/sendto, sendto}. +@item +@ref{config_netinter}. +@item +@ref{utimes}. +@item +@ref{create_tcluster}. +@item +@ref{switch_tcluster}. +@item +@ref{sigprogmask}. +@item +@ref{sigaction}. +@item +@ref{send_signal}. +@item +@ref{getprio/setprio, getprio}. +@item +@ref{getprio/setprio, setprio}. +@item +@ref{getgid/getegid, getgid}. +@item +@ref{getgid/getegid, getegid}. +@item +@ref{setgids}. +@item +@ref{getgroups/setgroups, getgroups}. +@item +@ref{getgroups/setgroups, setgroups}. +@item +@ref{ttyname}. +@item +@ref{fadvise}. +@item +@ref{shmat}. +@item +@ref{shmctl}. +@item +@ref{shmdl}. +@item +@ref{shmget}. +@item +@ref{getsockopt/setsockopt, getsockopt}. +@item +@ref{getsockopt/setsockopt, setsockopt}. +@item +@ref{gettidid/settidid, gettidid}. +@item +@ref{gettidid/settidid, settidid}. +@end enumerate + +@subsection riscv64-limine + +Syscalls are invoked in Ironclad by using @code{ecall}. + +The index of the syscall is passed over @code{a7}, while the return value is +returned in @code{a0}, errno is returned in @code{a1}, arguments are passed +over @code{a0} to @code{a6}. + +@subsection x86_64-limine + +Syscalls are invoked in Ironclad by using @code{syscall}. + +The index of the syscall is passed over @code{%rax}, while the return value is +returned in @code{%rax}, errno is returned on @code{%rdx}, arguments are passed +over @code{%rdi}, @code{%rsi}, @code{%rdx}, @code{%r12}, @code{%r8}, +@code{%r9}, and @code{%r10}, following the SysV ABI. + +@node Errno +@section Errno + +Errno are values returned by the kernel to detail the nature of an error in +depth. When a syscall does not error out, it returns the value 0 on the errno +field. Here is a table of all the possible errno and its values and meaning: + +@table @code +@item ERANGE (3) +The passed value was not big enough. + +@item EACCES (1002) +The passed access for a variable points to bad memory. + +@item EAGAIN (1006) +The requested resource is not available at the moment. + +@item EBUSY (1010) +The requested resource is busy and cannot handle the request. + +@item ECHILD (1012) +The passed value is not a child process. + +@item EFAULT (1020) +The passed value would make the program fault. + +@item EFBIG (1021) +File too large, or an attempt to surpass the limit on file size was issued. + +@item EIDRM (1023) +Invalid identifier. + +@item EINVAL (1026) +The passed value is not valid for the called syscall. + +@item EIO (1027) +The requested operation failed at a device level. + +@item ELOOP (1030) +Too many symlinks were encountered when resolving a requested path. + +@item EMFILE (1031) +Too many files were opened by the process. + +@item ENAMETOOLONG (1036) +The passed value is too big for the syscall. + +@item ENOENT (1043) +No such file or directory. + +@item ENOSYS (1051) +The requested syscall or flag is not implemented. + +@item ENOTTY (1058) +The passed argument is not a TTY. + +@item ENOTSUPP (1060) +The passed argument is valid, but does not implement the operation. Mostly +used for sockets and other networking elements when dealing with protocols. + +@item EPERM (1063) +Bad permissions. + +@item ESPIPE (1069) +A seek was issued to an invalid device. + +@item ESRCH (1070) +The passed item could not be found after a search. + +@item EBADFD (1081) +The passed FD is in a bad state or invalid. + +@end table + +@node exit +@section exit + +@example c +void exit(uint64_t status); +@end example + +This syscall terminates the calling process "immediately". +Any open file descriptors belonging to the process to be closed, and any +threads of execution are terminated. + +This syscall does not return any value, but it sets errno on failure: + +@itemize @bullet +@item +@code{EACCES}: MAC disallowed this, rookie mistake. +@end itemize + +@node arch_prctl +@section arch_prctl + +@example c +int arch_prctl(int code, uint64_t argument); +@end example + +This syscall interacts with architecture-specific thread-local storage. For +x86_64, these are the available codes: + +@table @code +@item ARCH_SET_FS (1) +Sets @code{argument} as the current thread's FS. + +@item ARCH_GET_FS (2) +Stores the current thread's FS into the variable pointed to by @code{argument}. + +@item ARCH_SET_GS (3) +Sets @code{argument} as the current thread's FS. + +@item ARCH_GET_GS (4) +Stores the current thread's GS into the variable pointed to by @code{argument}. +@end table + +This syscall returns @code{0} on success, and @code{-1} on failure. +errno is to be set to the following values on failure: + +@itemize @bullet +@item +@code{EINVAL}: @code{code} is not valid. + +@item +@code{EFAULT}: @code{argument} is outside the available address space. +@end itemize + +@node open +@section open + +@example c +int open(int dir_fd, char *path, int path_len, int flags); +@end example + +@code{open} opens the passed file relative to @code{dir_fd}, depending on the +flags passed. It does not create the file if not existent. By default, the file +descriptor will remain open accross an @code{exec}. + +@code{flags} can be an OR'd field of the following elements: + +@table @code +@item O_RDONLY (0b000001) +Makes the file able to be read. + +@item O_WRONLY (0b000010) +Makes the file able to be written to. + +@item O_APPEND (0b000100) +Makes the file be opened at the end of the file, instead of the beggining. + +@item O_CLOEXEC (0b001000) +Will make the file close when @code{exec}'d. + +@item O_NOFOLLOW (0b0100000000) +Do not follow symlinks when opening the file. + +@item O_NONBLOCK (0b1000000000) +Make the file not block on read or write operations when possible. +@end table + +The syscall returns the opened file descriptor or @code{-1} on error, and errno +is set to the following: + +@itemize @bullet +@item +@code{ENOENT}: The referenced file does not exist. + +@item +@code{EINVAL}: Combination of @code{flags} is not valid. + +@item +@code{EMFILE}: Too many files are already owned by the process. + +@item +@code{EFAULT}: The passed path is outside the available address space. +@end itemize + +@node close +@section close + +@example c +int close(int fd); +@end example + +@code{close} closes an open file descriptor. Once no open references exist of a +file descriptor, its resources are freed, and the file deleted if needed. + +The syscall returns 0 on success and -1 in failure, and errno is set to: + +@itemize @bullet +@item +@code{EBADF}: The passed file to @code{close} is not valid. +@end itemize + +@node read/write +@section read/write + +@example c +ssize_t read(int fd, void *buffer, size_t count); +ssize_t write(int fd, void *buffer, size_t count); +@end example + +These syscalls attempts to read or write up to passed count from the passed file descriptor. + +On files that support seeking, the operation commences at the file offset, and +the file offset is incremented by the number of bytes read or written. If the +file offset is at or past the end of file, no bytes are read or written, and +the operation returns zero. + +These syscalls returns the number of bytes operated on, or @code{-1} on +failure. errno is to be set to: + +@itemize @bullet +@item +@code{EBADF}: Bad file descriptor. + +@item +@code{EFAULT}: The passed buffer is not accessible. + +@item +@code{EINVAL}: The passed fd is not suitable for the operation. + +@item +@code{EFBIG}: When writing, the issued write would surpass the process +file size limit. + +@item +@code{EIO}: The requested operation failed at the device level. +@end itemize + +@node seek +@section seek + +@example c +off_t seek(int fd, off_t offset, int whence); +@end example + +This syscall repositions the file offset of the passed file description to the +passed offset according to the directive whence as follows: + +@itemize @bullet +@item +@code{SEEK_SET} (1): Set to the passed offset. + +@code{SEEK_CUR} (2): Set to the current offset plus the passed offset. + +@code{SEEK_END} (4): Set to the size of the file plus the passed offset. +@end itemize + +This syscall returns the resulting offset, or @code{-1} on failure. errno is to +be set to: + +@itemize @bullet +@item +@code{EBADF}: Bad file descriptor. + +@item +@code{EINVAL}: The whence is malformed or the resulting offset would be invalid. + +@item +@code{ESPIPE}: @code{seek} was called on a TTY or a pipe. +@end itemize + +@node mmap/mprotect/munmap +@section mmap/mprotect/munmap + +@example c +void *mmap(void *hint, size_t length, int protection, int flags, int fd, + off_t offset); +int mprotect(void *addr, size_t len, int prot); +int munmap(void *address, size_t length); +@end example + +@code{mmap} creates a new mapping in the virtual address space of the calling +process. An address can be passed, if it is @code{null}, then the kernel gets +to choose the address, else, it is taken as a hint about where to place the +mapping. If a section of the mapping overlaps an existing mapping, it will be +ignored. + +@code{fd} may be used to specify a device or inode in the filesystem to back +the memory region. For devices, the mmap operation has a different meaning +for each device. For framebuffer devices, for example, one can make framebuffer +windows this way. For inodes, the contents of the file will be used to +initialize the requested memory window, starting to read from @code{offset}, +filling with zeros the non-filled part, if any. This kind of filling does not +advance the reading counter of the passed device or inode. + +@code{hint} and @code{length} are required to be aligned to page boundaries +for the running architecture, else it will fail. + +@code{protection} and @code{flags} are a bitfield of the following flags: + +@itemize @bullet +@item +@code{PROT_READ} (0b00001): Read permissions. + +@item +@code{PROT_WRITE} (0b00010): Write permissions. + +@item +@code{MAP_FIXED} (0b00100): Use hint as a hard requirement. + +@item +@code{MAP_ANON} (0b01000): Mapping is not backed by any file, and @code{fd} is +ignored. + +@item +@code{MAP_WC} (0b10000): Map using write-combining when possible. +@end itemize + +@code{munmap} will unmap a range for the virtual address space of the calling +process, this values must be the same as passed and returned by @code{mmap}, +partial unmapping is allowed. + +@code{mprotect} allows to change the permission of a range of memory of the +passed length pointed by @code{addr}, previously mapped by the caller. +The format of @code{prot} is the same as @code{mmap}. + +@code{mmap} returns a pointer to the allocated area, or @code{-1} on failure. +@code{munmap} and @code{mprotect} both returns @code{0} on success and +@code{-1} on failure. All the functions set the following errno: + +@itemize @bullet +@item +@code{EINVAL}: Bad hints or parameters. + +@item +@code{ENOMEM}: The operation could not be completed due to a lack of memory. + +@item +@code{EACCES}: MAC disallowed this. +@end itemize + +@node getpid/getppid +@section getpid/getppid + +@example c +int getpid(); +int getppid(); +@end example + +@code{getpid} returns the process ID (PID) of the calling process. +@code{getppid} does the same but it returns the one of the parent, which is the +process that created the callee by a myriad of ways. + +This functions are always successful. + +@node exec +@section exec + +@example c +int exec(const char *path, int path_len, char *const argv[], int argv_len, char *const envp[], envp_len); +@end example + +This syscall executes the program passed with the passed argv and evp, closing +all the threads of the callee process and putting a single one in place for +the new program. Other process-specific elements like file descriptors are +untouched. + +This syscall only returns in failure with @code{-1} with the following errno: + +@itemize @bullet +@item +@code{EINVAL}: One of the passed strings or arrays is not valid. + +@item +@code{ENOENT}: The file passed in path doesnt exist. + +@item +@code{EACCES}: The file couldn't be launched out of a permission error. +@end itemize + +@node clone +@section clone + +@example c +#define CLONE_PARENT 0b01 +#define CLONE_THREAD 0b10 + +pid_t clone(void *callback, uint64_t arg, void *stack, int flags, void *tls); +@end example + +This syscall creates a new thread or process depending on @code{flags}. +@code{flags} can be an OR'd combination of the following flags: + +@itemize @bullet +@item +@code{CLONE_PARENT} (0b01): The process or thread will be a child of the parent +of the caller process, instead of the caller process itself. + +@code{CLONE_THREAD} (0b10): If set, a thread will be created and added to the +parent process, if not set, a process will be created instead. The child +process will only have the callee thread cloned. The other threads, if any, +are not cloned. +@end itemize + +This syscall returns @code{0} on success for the child, and the children PID or +TID to the parent, in failure, the parent gets @code{-1} with the following +errno: + +@itemize @bullet +@item +@code{EAGAIN}: The system could not create the entity right now, try again +later. + +@item +@code{EINVAL}: @code{CLONE_PARENT} is specified and the caller process has no +parent. + +@item +@code{EACCES}: MAC disallowed this. +@end itemize + +@node wait +@section wait + +@example c +pid_t wait(pid_t pid, int *status, int options); +@end example + +This syscall suspends execution until the passed pid exits, to then store the +exit code in @code{status}. + +@code{wait} allows the option @code{WNOHANG(0b000010)} for non-blocking +waiting, if the process has not finished yet, @code{0} will be returned. + +@code{pid} can be a PID the callee is a parent of, or @code{-1} to wait on all +the PIDs the callee has as children. @code{0}, which waits on all the children +of a process group, is not implemented yet. + +This syscall returns the PID waited on or @code{-1} on failure, along with the +following errno: + +@itemize @bullet +@item +@code{ECHILD}: The passed PID does not exist. + +@item +@code{EINVAL}: The passed options are not correct or the passed PID is @code{0} +@end itemize + +@node socket +@section socket + +@example c +#define AF_INET 1 +#define AF_INET6 2 +#define AF_UNIX 3 + +#define SOCK_DGRAM 0b000000000000000001 +#define SOCK_RAW 0b000000000000000010 +#define SOCK_STREAM 0b000000000000000100 +#define SOCK_SEQPACKET 0b000000000000001000 +#define SOCK_NONBLOCK 0b001000000000000000 +#define SOCK_CLOEXEC 0b010000000000000000 +#define SOCK_CLOFORK 0b100000000000000000 +int socket(int domain, int type); +@end example + +This syscall for creating sockets, the passed fields can be used for selecting +the type of socket to create. The available sockets type are: + +@itemize @bullet +@item +@code{AF_INET}: Basically IPv4 socket. + +The address of a INET domain socket takes the shape of + +@example c +struct sockaddr_in @{ + uint32_t sin_family; + uint16_t sin_port; + char sin_addr[4]; + uint8_t pad[8]; +@}; +@end example + +@code{type} can be one of @code{SOCK_DGRAM} or @code{SOCK_STREAM}. +@code{SOCK_DGRAM} will be translated to @code{TCP}, while @code{SOCK_STREAM} +will be translated to @code{UDP}. + +@item +@code{AF_INET6}: Basically IPv6 socket. + +The address of a INET domain socket takes the shape of + +@example c +struct sockaddr_in6 @{ + uint32_t sin6_family; + uint16_t sin6_port; + uint32_t sin6_flowinfo; + char sin6_addr[16]; + uint32_t sin6_scope_id; +@}; +@end example + +@code{type} can be one of @code{SOCK_DGRAM} or @code{SOCK_STREAM}. +@code{SOCK_DGRAM} will be translated to @code{TCP}, while @code{SOCK_STREAM} +will be translated to @code{UDP}. + +@item +@code{AF_UNIX}: UNIX domain socket for local communication, this sockets +can be unnamed or bound to filesystem paths. + +The address of a UNIX domain socket takes the shape of + +@example c +struct sockaddr_un @{ + uint32_t sun_family; // AF_UNIX. + char path[]; // Must be null terminated. +@}; +@end example +@end itemize + +@code{type} can be one of: + +@itemize @bullet +@item +@code{SOCK_DGRAM}: Unreliable, connection-less, datagram-based interface. When +used with INET protocols, it will correspond to UDP. When connected, these +sockets will just cache the address for further reception / sending. +@item +@code{SOCK_STREAM}: Reliable, connection-based stream-based interface. +Connection, accepting, and listening will be necessary for a proper handshake. +@item +@code{SOCK_RAW}: Raw communication directly with the domain layer. When using +these, no TCP or UDP will be done whatsoever, and the user will be free to +implement their own protocol on top, or none at all and just use the domain +datagram transport. Not supported for some protocols, like UNIX domain sockets. +@item +@code{SOCK_SEQPACKET}: Sequenced-packet socket that is connection-oriented, +preserves message boundaries, and delivers messages in the order that they were +sent. +@end itemize + +Any socket type may have @code{type} be OR'ed with @code{SOCK_NONBLOCK} or +@code{SOCK_CLOEXEC} for setting the created socket nonblock or cloese on exec +respectively. + +The syscall returns the resulting FD or @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EINVAL}: Invalid combination of flags. +@item +@code{EMFILE}: No available file descriptor slots. +@end itemize + +@node sethostname +@section sethostname + +@example c +int sethostname(const char *buffer, size_t length); +@end example + +This syscall sets the kernel hostname to the passed string. @code{0} is +returned on success and @code{-1} on failure, with the following errno: + +@itemize @bullet +@item +@code{EFAULT}: The passed buffer points to an invalid address. + +@item +@code{EINVAL}: The passed length is bigger than the kernel can handle or 0. + +@item +@code{EACCES}: MAC did not allow this. +@end itemize + +@node unlink +@section unlink + +@example c +int unlink(int dir_fd, const char *path, int path_len); +@end example + +The syscall queues for deletion the file pointed to by @code{path}. If +@code{path} points to a directory, it must be empty. + +The syscall returns @code{0} or @code{-1} on failure, with the following errno: + +@itemize @bullet +@item +@code{ENOENT}: @code{delete} points to a file not valid for deletion, if at all. +@end itemize + +@node fstat +@section fstat + +@example c +struct stat @{ + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + off_t st_size; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + blksize_t st_blksize; + blkcnt_t st_blocks; +@}; + +int fstat(int dir_fd, char *path, int len, struct stat *statbuf, + int flags); +@end example + +This syscalls return information about a file, be it an already opened one with +@code{dir_fd} and @code{AT_EMPTY_PATH} in @code{flags}, or by relatively +opening, either following or not following symlinks with +@code{AT_SYMLINK_NOFOLLOW}. + +@code{0} is returned on success, @code{-1} on failure, with the following errno: + +@itemize @bullet +@item +@code{EBADF}: The passed path or file descriptor is not valid. + +@item +@code{ENOENT}: The file pointed by @code{path} does not exist. + +@item +@code{EFAULT}: The passed address for the path or stat buffer is not valid. +@end itemize + +@node chdir +@section chdir + +@example c +int chdir(int fd); +@end example + +This syscalls will set the callee's process current working directory to +the passed FD, which must point to a directory. + +The syscall returns @code{0} on success and @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EBADFD}: The passed descriptor is not a valid directory. +@end itemize + +@node ioctl +@section ioctl + +@example c +int ioctl(int fd, unsigned long request, void *argument); +@end example + +This syscall manipulates the underlying device parameters of special files. It +allows a device-dependent API for fetching and setting several modes. + +Despite not all ioctl calls needing a specific value for their arguments, due +to current limitations, all arguments must point to valid memory, regardless +of whether it ends up used or not. + +@code{ioctl} returns @code{0} on success and @code{-1} on failure, and sets the +following errno: + +@itemize @bullet +@item +@code{ENOTTY}: The passed file does not support the passed ioctl. + +@item +@code{EBADF}: The passed file does not exist for the process. + +@item +@code{EFAULT}: The passed argument is in non-accesible memory +@end itemize + +@node sched_yield +@section sched_yield + +@example c +int sched_yield(void); +@end example + +This syscall relinquishes execution of the caller thread. +Its up for the kernel how far in the queue of execution this thread will go. + +This syscall returns @code{0} always, as it never fails, this is done for +compatibility with POSIX instead of having a @code{void} return type. + +@node delete_tcluster +@section delete_tcluster + +@example c +int delete_tcluster(int cluster); +@end example + +This syscall deletes the passed thread cluster, will only succeed if the +cluster has no associated threads. + +The syscall returns @code{0} on success and @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EINVAL}: The passed cluster does not exist or still has threads. +@end itemize + +@node pipe +@section pipe + +@example c +int pipe(int pipefd[2], int flags); +@end example + +This syscalls creates a pipe with the passed flags and returns the registered +file descriptors in @code{pipefd}. Index @code{0} is the reader end, @code{1} +is the writing one. + +The only available flag for use is @code{O_NONBLOCK}. + +The syscall returns @code{0} on success and @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EFAULT}: @code{pipefd} points to bogus memory. +@item +@code{EMFILE}: No available file descriptor slots. +@end itemize + +@node rename +@section rename + +@example c +#define RENAME_NOREPLACE 1 +int rename(int sourcedirfd, const char *sourcepath, size_t sourcelen, + int targetirfd, const char *targetpath, size_t targetlen, int flags); +@end example + +This syscalls renames a file in an atomic operation, it is only available in +between files in the same mountpoint. If @code{targetpath} exists, it will be +replaced, @code{RENAME_NOREPLACE} may be passed in @code{flags} for making the +call fail in said case instead of replacing silently. + +The syscall return the new fd on success and @code{-1} on failure. The errno +codes set on failure are: + +@itemize @bullet +@item +@code{EFAULT}: One of the passed values is outside addressable memory. + +@item +@code{ENAMETOOLONG}: The passed path is too long. + +@item +@code{EIO}: The operation could not be done out of an internal error. +@end itemize + +@node sysconf +@section sysconf + +@example c +#define SC_PAGESIZE 1 // Page size of the system. +#define SC_OPEN_MAX 2 // Maximum amount of files per process. +#define SC_HOST_NAME_MAX 3 // Maximum length of hostnames. +#define SC_AVPHYS_PAGES 4 // Number of free physical pages. +#define SC_PHYS_PAGES 5 // Number of total available pages. +#define SC_NPROCESSORS_ONLN 6 // Number of processors active and used. +#define SC_TOTAL_PAGES 7 // Total amount of installed memory pages. +#define SC_LIST_PROCS 8 // List all processes of the system. +#define SC_LIST_MOUNTS 9 // List all mountpoints of the system. +#define SC_UNAME 10 // Fetch basic system information. +#define SC_CHILD_MAX 11 // Maximum number of children for the user. +#define SC_LIST_THREADS 12 // List all threads of the system. +#define SC_LIST_CLUSTERS 13 // List all thread clusters of the system. +#define SC_LIST_NETINTER 14 // List all network interfaces. +#define SC_DUMPLOGS 15 // Dump kernel logging to a buffer. +#define SC_NGROUPS_MAX 16 // Max number of supplementary groups. +#define SC_SYMLOOP_MAX 17 // Max number of symbolic loops to follow. +#define SC_LIST_FILELOCKS 18 // List all advisory file locks. +#define SC_LOADAVG 19 // Dump load averages. +#define SC_MEMINFO 20 // Dump memory information. + +long int sysconf(int request, uintptr_t addr, uintptr_t len); +@end example + +This syscalls fetches the requested information in @code{request} and returns +it. + +Depending on the request, @code{addr} and @code{len} may be used for +determining the address of a buffer and its length for reporting information +that doesn't fit on the usual return value. The options where they have meaning +are: + +@itemize @bullet +@item +@code{SC_LIST_PROCS}: @code{addr} points to an array of items, and @code{len} +is the count of bytes reserved in the array. The items have the structure: + +@example c +struct procinfo @{ + char id[20]; + uint16_t id_len; + uint16_t ppid; + uint16_t pid; + uint32_t uid; + uint32_t flags; +@} __attribute__((packed)); +@end example + +The total number of processes is returned, even if it doesnt fit in the passed +array. + +@item +@code{SC_LIST_MOUNTS}: @code{addr} points to an array of items, and @code{len} +is the count of bytes reserved in the array. The items have the structure: + +@example c +struct mountinfo @{ + uint32_t fs_type; + uint32_t flags; + char source[20]; + uint32_t source_len; + char location[20]; + uint32_t location_len; +@}; +@end example + +The total number of mounts is returned, even if it doesnt fit in the passed +array. + +@item +@code{SC_UNAME}: @code{addr} points to the following structure, and @code{len} +is the length in bytes of said structure: + +@example c +struct utsname @{ + char sysname[65]; // Kernel name (e.g., "Ironclad") + char nodename[65]; // Hostname of the machine. + char release[65]; // Kernel release (e.g., "2.6.28") + char version[65]; // Kernel release, again. + char machine[65]; // Hardware identifier (e.g., "x86") +@}; +@end example + +In success, the returned value will be @code{0}. + +@item +@code{SC_LIST_THREADS}: @code{addr} points to an array of items, and @code{len} +is the count of bytes reserved in the array. The items have the structure: + +@example c +struct threadinfo @{ + uint16_t tid; + int16_t niceness; + uint16_t tcid; + uint16_t pid; +@}; +@end example + +The total number of threads is returned, even if it doesnt fit in the passed +array. + +@item +@code{SC_LIST_CLUSTERS}: @code{addr} points to an array of items, and +@code{len} is the count of bytes reserved in the array. The items have the +structure: + +@example c +struct tclusterinfo @{ + uint16_t tcid; + uint16_t tflags; + uint16_t tquantum; +@}; +@end example + +The total number of thread clusters is returned, even if it doesnt fit in the +passed array. + +@item +@code{SC_LIST_NETINTER}: @code{addr} points to an array of items, and +@code{len} is the count of bytes reserved in the array. The items have the +structure: + +@example c +struct netinterface @{ + char device[64]; // null terminated. + uint64_t flags; + uint8_t mac_addr[6]; + uint8_t ip4_addr[4]; + uint8_t ip4_subnet[4]; + uint8_t ip6_addr[16]; + uint8_t ip6_subnet[16]; +@}; +@end example + +@item +@code{SC_DUMPLOGS}: @code{addr} points to a string to store the buffer, which +is an array of 80-char long strings. @code{len} is the length of the buffer. +The total length of the kernel buffer is returned, regardless of whether it +fits or not. + +@item +@code{SC_LIST_FILELOCKS}: @code{addr} points to an array of items, and +@code{len} is the count of bytes reserved in the array. The items have the +structure: + +@example c +struct flock_info @{ + uint32_t pid; + uint32_t mode; + uint64_t start; + uint64_t length; + uint64_t dev_id; + uint64_t inode; +@}; +@end example + +@item +@code{SC_LOADAVG}: @code{addr} points to an array of at least 3 integers, and +@code{len} is the count of bytes reserved in the array. The array has the +structure: + +@example c +uint32_t array[3]; +@end example + +The values the number of threads in the system run queue averaged over +various periods of time. The 3 samples correspond to the averages of 1, 5, and +15 minutes, respectively. It can be used as a measure of relative load. The +values are to be divided by 100 before being used. + +@item +@code{SC_MEMINFO}: @code{len} is ignored and @code{addr} points to a structure +as such: + +@example c +struct mem_info @{ + // All data is in bytes. + uint64_t phys_total; // Total physical memory of the system. + uint64_t phys_available; // Non-reserved memory managed by the system. + uint64_t phys_free; // Free memory available to the system. + uint64_t shared_usage; // Amount of shared memory in the system. + uint64_t kernel_usage; // Amount of memory in use by the kernel. + uint64_t table_usage; // Of the kernel, amount in use for page tables. + uint64_t poison_usage; // Memory marked by the hardware as faulty. +@}; +@end example + +@code{0} is returned on success. + +@end itemize + +The syscall return the requested information on success and @code{-1} on +failure. If the requested value can also be @code{-1}, errno must be checked. + +The errno codes set on failure are: + +@itemize @bullet +@item +@code{EINVAL}: Invalid request. +@end itemize + +@node spawn +@section spawn + +@example c +pid_t spawn(const char *path, int path_len, char *const argv[], + int argv_len, char *const envp[], int envp_len, uint64_t *caps); +@end example + +This syscall spawns a child process in a way similar to what a +@code{clone}+@code{exec} could be used for, but more efficiently, given it +doesn't need to copy the address space just to overwrite it. + +File descriptors are copied and treated the same way a @code{fork} followed +by an @code{exec} call would. That is, @code{FD_CLOEXEC} FDs are closed, and +@code{FD_CLOFORK} FDs are not carried over. + +The argument @code{caps}, if not @code{NULL}, points to a capability set in +the same format as @ref{mac_capabilities}. This can be useful for deescalating +capabilities in the same convenient way as a call to @code{mac_capabilities} in +between @code{clone} and @code{exec} could. + +The syscall returns the created PID on success and @code{0} on failure, with +the errno codes being: + +@itemize @bullet +@item +@code{EAGAIN}: The system could not create the process right now. + +@item +@code{EFAULT}: One or more of the passed arguments point to invalid memory. + +@item +@code{EACCES}: MAC disallowed this. +@end itemize + +@node gettid +@section gettid + +@example c +int gettid(void); +@end example + +This syscall returns the current thread id. It never fails. + +@node manage_tcluster +@section manage_tcluster + +@example c +#define SCHED_RR 0b001 +#define SCHED_COOP 0b010 +#define SCHED_INTR 0b100 + +int manage_tcluster(int cluster, int flags, int quantum, int percentage); +@end example + +This syscall sets settings for the passed cluster. + +The syscall returns @code{0} on success and @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EACCES}: MAC did not allow the operation. +@item +@code{EINVAL}: One of the passed values was not correct. +@end itemize + +@node fcntl +@section fcntl + +@example c +#define F_DUPFD 1 +#define F_DUPFD_CLOEXEC 2 +#define F_GETFD 3 +#define F_SETFD 4 +#define F_GETFL 5 +#define F_SETFL 6 +#define F_GETPIPE_SZ 7 +#define F_SETPIPE_SZ 8 +#define F_GETLK 9 +#define F_SETLK 10 +#define F_SETLKW 11 + +#define FD_CLOEXEC 0b01 +#define FD_CLOFORK 0b10 + +#define F_RDLCK 1 +#define F_UNLCK 2 +#define F_WRLCK 3 + +struct flock @{ + uint16_t l_type; + uint16_t l_whence; + uint64_t l_start; + uint64_t l_len; + uint32_t l_pid; +@} + +int fcntl(int fd, int cmd, void *arg); +@end example + +This syscall is a multiplexed syscall that performs the operations described +below on the open file descriptor @code{fd}. The operation is determined by +@code{cmd} and may take an optional argument @code{arg}. + +The syscall's return value will depend on the requested @code{cmd}, and is +detailed along the operations below. + +The valid operations are: + +@itemize @bullet +@item +@code{F_DUPFD}: Clones @code{fd} into a the first available file descriptor +starting by @code{arg}. Returns the resulting FD. + +@item +@code{F_DUPFD_CLOEXEC}: The same as @code{F_DUPFD} but sets the close on exec +flag for the cloned FD if succesful, in order to save a subsequent call. + +@item +@code{F_GETFD}: The flags used for @code{fd} will be returned. These can be +@code{FD_CLOEXEC}, which if set, will signal that @code{fd} will be closed +should an @code{exec} call or similar happen, and @code{FD_CLOFORK}, which +signals that @code{fd} will not be cloned when calling @code{clone} or similar. + +@item +@code{F_SETFD}: The flags for @code{fd} will be set with @code{arg} using +the same values returned by @code{F_GETFD}. The syscall will return @code{0} +on sucess. + +@item +@code{F_GETFL}: Returns as the function result the file access mode +and status flags. + +@item +@code{F_SETFL}: What @code{F_SETFD} is to @code{F_GETFD} for +@code{F_GETFL}. + +@item +@code{F_GETPIPE_SZ}: If @code{fd} points to a FIFO or pipe, return +its size. + +@item +@code{F_SETPIPE_SZ}: If @code{fd} points to a FIFO or pipe, the size will +be set to the value of @code{arg}. If the operation would cause data loss, it +will fail. + +@item +@code{F_GETLK}: If @code{fd} points to a filesystem inode, the data passed +in @code{arg} will be taken as a pointer to a @code{flock} struct, and the +possibility to add the advisory lock described there will be checked. + +POSIX advisory locks are advisory file description-bound marks that may be +used as a filesystem semaphore. They require processes to check them, and are +not automatic nor mandatory, thus, advisory. + +If the lock could be placed, the passed struct's @code{l_type} will become +@code{F_UNLCK}, else, the call will fail and the fields used to write the +information regarding one of the conflicting locks. As all IPC, this data may +not be true once processed, it is merely informative. + +POSIX advisory locks can be used for implementing PID lock files, as to +make sure only one instance of the same daemon is running. + +@item +@code{F_SETLK}: The same as @code{F_GETLK}, but actually sets the passed lock. +If it cannot be set, it will return failure with @code{EAGAIN}. + +@item +@code{F_SETLKW}: The same as @code{F_SETLK}, but instead of being non-blocking, +this call will block until the passed lock can be set. +@end itemize + +On failure, the syscall returns @code{-1}. The returned @code{errno} are: + +@itemize @bullet +@item +@code{EINVAL}: The passed @code{cmd} is not implemented by the kernel. + +@item +@code{EBADF}: The passed @code{fd} is not open. +@end itemize + +@node exit_thread +@section exit_thread + +@example c +void exit_thread(void); +@end example + +This syscall terminates the calling thread "immediately". +Any open file descriptors belonging to the process to be closed, and any +threads of execution are terminated. + +This syscall does not return any value, but it sets errno on failure: + +@itemize @bullet +@item +@code{EACCES}: MAC disallowed this. +@end itemize + +@node getrandom +@section getrandom + +@example c +ssize_t getrandom(void *buffer, size_t length); +@end example + +This syscall fills the buffer pointed to @code{buffer} with up to @code{length} +random bytes. These bytes can be used for cryptographic purposes. + +The operation is the same as reading from @code{/dev/random}. It is provided +instead of just reading from the device as to avoid denial of service attacks +based on exhausting the file descriptor limit of the system, along with other +vulnerabilities and inconveniences related to the classic file interface. + +The syscall returns the count of read random data or @code{-1} on failure, and +sets the following errno: + +@itemize @bullet +@item +@code{EFAULT}: @code{buffer} points to invalid memory. +@item +@code{EACCES}: MAC disallowed this. +@end itemize + +@node mac_capabilities +@section mac_capabilities + +@example c +#define MAC_CAP_SCHED 0b00000000000001 +#define MAC_CAP_SPAWN 0b00000000000010 +#define MAC_CAP_ENTROPY 0b00000000000100 +#define MAC_CAP_SYS_MEM 0b00000000001000 +#define MAC_CAP_USE_NET 0b00000000010000 +#define MAC_CAP_SYS_NET 0b00000000100000 +#define MAC_CAP_SYS_MNT 0b00000001000000 +#define MAC_CAP_SYS_PWR 0b00000010000000 +#define MAC_CAP_PTRACE 0b00000100000000 +#define MAC_CAP_SETUID 0b00001000000000 +#define MAC_CAP_SYS_MAC 0b00010000000000 +#define MAC_CAP_SIGNALALL 0b00100000000000 +#define MAC_CAP_SETGID 0b01000000000000 +#define MAC_CAP_IPC 0b10000000000000 +unsigned long get_mac_capabilities(void); +int set_mac_capabilities(unsigned long request); +@end example + +These syscalls allow to fetch and set MAC capabilities on the way described in +@ref{Mandatory access control (MAC)}. + +Both syscalls cannot fail, @code{get_mac_capabilities} always returns the +capabilities of the callee process and @code{set_mac_capabilities} always +returns @code{0}, settings will just be ignored if permission to change them +is not granted. + +@node add_mac_permissions +@section add_mac_permissions + +@example c +#define MAC_PERM_CONTENTS 0b000001 +#define MAC_PERM_READ 0b000010 +#define MAC_PERM_WRITE 0b000100 +#define MAC_PERM_EXEC 0b001000 +#define MAC_PERM_APPEND 0b010000 +#define MAC_PERM_FLOCK 0b100000 + +int add_mac_permissions(const char *path, int flags); +@end example + +This syscall adds permissions to access an inode or device as described in +@ref{Mandatory access control (MAC)}. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EPERM}: MAC did not allow this. +@item +@code{EFAULT}: The passed pointer does not point to valid memory. +@item +@code{EAGAIN}: The system has reached a limit on registered rules. +@item +@code{EINVAL}: The passed rule is already covered or conflicts with an existent +one. +@end itemize + +@node set_mac_enforcement +@section set_mac_enforcement + +@example c +#define MAC_DENY 0b001 +#define MAC_DENY_AND_SCREAM 0b010 +#define MAC_KILL 0b100 + +int set_mac_enforcement(unsigned long request); +@end example + +This syscall sets the action to take for enforcement on MAC issues as explained +in @ref{Mandatory access control (MAC)}. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EACCES}: MAC was locked. +@end itemize + +@node mount/umount +@section mount/umount + +@example c +#define MNT_FAT 1 +#define MNT_EXT 2 +#define MNT_DEV 3 +#define MS_RDONLY 1 + +#define MNT_FORCE 1 + +int mount(const char *source, int source_len, const char *target, + int target_len, int fs_type, unsigned long flags); +int umount(const char *target, int target_len, int flags); +@end example + +These syscalls mount and unmount filesystems. For @code{mount}, @code{source} +is the source device while @code{target} is where to mount in the +global virtual filesystem. For @code{umount}, @code{target} is the path to +unmount. + +For @code{mount}, @code{fs_type} can be one of the following values to choose +the filesystem type to mount, it must be specified, detection is not done. + +@itemize @bullet +@item +@code{MNT_FAT}: FAT family filesystem. +@item +@code{MNT_EXT}: EXT family filesystem. +@item +@code{MNT_DEV}: DevFS filesystem, cannot be used. +@end itemize + +@code{flags} may contain @code{MS_RDONLY} to force mounting read-only mounting. + +For @code{umount}, @code{flags} allows the following options: + +@itemize @bullet +@item +@code{MNT_FORCE}: Unmount the filesystem even if busy, can cause data loss. +@end itemize + +These syscalls returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EFAULT}: Incorrect addresses for the string arguments. +@item +@code{EACCES}: MAC forbid this operation. +@item +@code{EINVAL}: Wrong arguments. +@item +@code{EBUSY}: For @code{umount}, the mount is busy, and @code{MNT_FORCE} was +not passed. +@end itemize + +@node readlink +@section readlink + +@example c +ssize_t readlink(char *path, int path_len, char *buffer, size_t buffer_len); +@end example + +The syscall reads the redirected path of a symlink. + +The syscalls return the read length on success or @code{-1} on failure, with +the following errno: + +@itemize @bullet +@item +@code{EFAULT}: Incorrect addresses for the string arguments. +@item +@code{EACCES}: MAC forbid this operation. +@item +@code{EINVAL}: The passed file is not a symbolic link. +@end itemize + +@node getdents +@section getdents + +@example c +#define DT_UNKNOWN 0 +#define DT_FIFO 1 +#define DT_CHR 2 +#define DT_DIR 4 +#define DT_BLK 6 +#define DT_REG 8 +#define DT_LNK 10 +#define DT_SOCK 12 +#define DT_WHT 14 + +struct dirent @{ + uint64_t d_ino; + uint64_t d_off; + uint16_t d_reclen; + uint8_t d_type; // One of the DT_ values. + char d_name[61]; // Null-terminated. +@}; + +ssize_t getdents(int fd, struct dirent *buffer, size_t size); +@end example + +This syscall reads the contents of the passed directory, and advances the +file position for the directory by the amount of read directory entries. +Partial reads are supported. + +The syscalls return the read length in bytes on success, or @code{0} if no +contents or @code{-1} on failure, with the following errno: + +@itemize @bullet +@item +@code{EFAULT}: Incorrect addresses for the arguments. +@item +@code{EBADFD}: @code{fd} does not contain a valid file. +@item +@code{ENOENT}: @code{fd} is not a directory. +@item +@code{EINVAL}: @code{size} is not big enough to fit all the directory entries. +@end itemize + +@node sync +@section sync + +@example c +int sync(void); +@end example + +The syscall flushes the associated caches of all FSes and the devices that +contain said FSs, ensuring that all operations are finished, this can be used +in order to ensure data coherency on power loss or program failure. + +The syscall returns @code{0} or @code{-1} on failure, with a corresponding +errno: + +@itemize @bullet +@item +@code{EIO}: Device error while flushing. +@end itemize + +@node mknod +@section mknod + +@example c +int mknod(int dir_fd, const char *path, int path_len, int mode, int dev); +@end example + +This syscall creates files in the passed path and dir. The type is chosen by +@code{code}, which uses the same format as @code{stat}'s mode field. + +The syscall returns @code{0} or @code{-1} on failure, with the following errno: + +@itemize @bullet +@code{EACCES}: Bad memory addresses. +@item +@code{EINVAL}: The passed path length is way too big, or the mode is invalid. +@item +@code{EIO}: Internal error. +@end itemize + +@node truncate +@section truncate + +@example c +int truncate(int fd, uint64_t new_size); +@end example + +The syscall truncates the size of @code{fd} on disk to exactly @code{new_size} +bytes. + +If the file was larger, the cropped contents are lost, if it was smaller, the +new data is zero'd out. No other file data is changed. + +The syscall returns @code{0} or @code{-1} on failure, with the following errno: + +@itemize @bullet +@item +@code{EBADF}: The file pointed by @code{fd} is not valid for truncation. +@item +@code{EINVAL}: @code{new_size} could not be set. +@end itemize + +@node bind +@section bind + +@example c +struct sockaddr @{ + uint32_t sun_family; // AF values of socket(). + char data[]; +@}; + +int bind(int sockfd, const struct sockaddr *addr, unsigned int addrlen); +@end example + +This syscall assigns a global address to the passed socket, the meaning and +nature of the address depends on the passed socket. + +The actual structure passed for the @code{addr} argument will depend on +the address family, @code{sockaddr} is a catch-all placeholder value. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EINVAL}: Invalid address, may be already in use. +@item +@code{EFAULT}: Bad memory address. +@item +@code{EBADFD}: The passed FD is not a socket. +@end itemize + +@node mkdir +@section mkdir + +@example c +int mkdir(int dir_fd, const char *path, int path_len, int mode); +@end example + +This syscall creates directories in the passed path. + +The syscall returns @code{0} or @code{-1} on failure, with the following errno: + +@itemize @bullet +@code{EACCES}: Bad memory addresses. +@item +@code{EINVAL}: The passed path length is way too big. +@item +@code{EIO}: Internal error. +@end itemize + +@node symlink +@section symlink + +@example c +int symlink(int dir_fd, const char *path, int path_len, + const char *target, int target_len, int mode); +@end example + +This syscall creates symlinks for the passed path and mode. + +The syscall returns @code{0} or @code{-1} on failure, with the following errno: + +@itemize @bullet +@code{EACCES}: Bad memory addresses. +@item +@code{EINVAL}: The passed path and target lengths are way too big, or the +passed mode is invalid. +@item +@code{EIO}: Internal error. +@end itemize + +@node connect +@section connect + +@example c +int connect(int sockfd, const struct sockaddr *addr, unsigned int addrlen); +@end example + +This syscall connects the passed socket to the passed global address. + +If the passed socket is datagram-based, then @code{addr} is the address to +which datagrams are sent by default, and the only address from which datagrams +are received. If the socket is stream-based, the syscall attempts to make a +connection to the socket that is bound to the address specified by @code{addr}. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EINVAL}: Invalid address, may not be bound. +@item +@code{EFAULT}: Bad memory address. +@item +@code{EBADFD}: The passed FD is not a socket. +@end itemize + +@node openpty +@section openpty + +@example c +int openty(int ptys[2]); +@end example + +This syscalls creates a pair of pseudoterminals and returns the registered +file descriptors in @code{ptys}. Index @code{0} is the primary end +(also known as master), @code{1} is the secondary end (also known as slave). + +The syscall returns @code{0} on success and @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EFAULT}: @code{ptys} points to bogus memory. +@item +@code{EMFILE}: No available file descriptor slots. +@end itemize + +@node fsync +@section fsync + +@example c +int fsync(int fd, int flags); +@end example + +The syscall does the same as @code{sync}, just only applied to @code{fd}. If +the passed file is a device, the device will flush its internal caches. + +If the file was just created, one might considering synchronizing the parent +directory as well, as, depending on the FS and FS driver, parent directory +entries are stored separately to the file, EXT-series filesystems come to mind. + +If @code{flags} is not zero, only the data of the passed descriptor will be +guaranteed to be flushed, and not modified metadata, this can be used in +order to minimize disk activity even further. + +The syscall returns @code{0} or @code{-1} on failure, with the errno: + +@itemize @bullet +@item +@code{EBADF}: The passed file is not open. +@item +@code{EINVAL}: The passed points to a non-synchronizable entity. +@item +@code{EIO}: FS or device error while flushing. +@end itemize + +@node link +@section link + +@example c +int link(int dir_fd, const char *path, int path_len, + const char *target, int target_len); +@end example + +This syscall creates hard links, the paths are not dereferenced in the case +of being symlinks. + +The syscall returns @code{0} or @code{-1} on failure, with the following errno: + +@itemize @bullet +@item +@code{EACCES}: Bad memory addresses. +@item +@code{EINVAL}: The passed path and target lengths are way too big. +@item +@code{EIO}: Internal error. +@end itemize + +@node ptrace +@section ptrace + +@example c +#define PTRACE_SYSCALL_PIPE 1 + +long ptrace(long request, pid_t pid, void *addr, void *data); +@end example + +This syscall can be used for tracing, debugging, execution control, and info +reporting of data owned by a child process. The operations is indicated by +@code{request}, while the PID to act upon is @code{pid}, @code{addr} the +address in the child process to modify, and @code{data} what to modify with. + +@code{request} can be one of: + +@itemize @bullet +@item +@code{PTRACE_SYSCALL_PIPE (1)}: @code{data} will be taken as an FD in the +child process, which the kernel will use to report the state on every syscall +the child process does. The descriptor must be a pipe, no other files are +supported. Errors writing are silently ignored. +@end itemize + +The syscall returns @code{0} or @code{-1} on failure, with the following errno: + +@itemize @bullet +@item +@code{EACCES}: MAC did not allow this. +@item +@code{EPERM}: @code{pid} is not a child or does not exist. +@item +@code{EINVAL}: @code{request} is not valid. +@end itemize + +@node listen +@section listen + +@example c +int listen(int sockfd, int backlog); +@end example + +This syscall marks the passed socket as a passive socket, that is, as a socket +that will be used to accept incoming connection requests using @code{accept}. + +The passed socket must be stream based, as these are the only sockets with a +true sense of connection. + +@code{backlog} is a recommendation as to the maximum length to which the +queue of pending connections for @code{sockfd} may grow. If a connection +request arrives when the queue is full, depending on the protocols involved, +the client may receive an error or the connection may be ignored so that a +later reattempt at connection succeeds. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EINVAL}: Invalid value for backlog. +@item +@code{EBADFD}: The passed FD is not a socket. +@item +@code{ENOTSUPP}: The passed FD is a socket, but it is not a stream socket. +@end itemize + +@node accept +@section accept + +@example c +int accept(int sockfd, const struct sockaddr *addr, int *addrlen, int flags); +@end example + +This syscall takes the first connection request of @code{sockfd} and creates +a new connected socket with the flags in @code{flags} (@code{SOCK_NONBLOCK} and +@code{SOCK_CLOEXEC}). @code{addr} is used for writing the address of the +connection request. @code{addrlen} must be the length of the available buffer, +and it will be written to be the actual length copied. + +The syscall returns the added FD on success or @code{-1} on failure, with the +following errno: + +@itemize @bullet +@item +@code{EINVAL}: Invalid value for backlog. +@item +@code{EBADFD}: The passed FD is not a socket and listening. +@item +@code{ENOTSUPP}: The passed FD is a socket, but it is not a stream socket. +@end itemize + +@node getrlimit/setrlimit +@section getrlimit/setrlimit + +@example c +#define RLIMIT_CORE 1 // Size of core files, 0 for disabling. +#define RLIMIT_CPU 2 // CPU time limit in seconds. +#define RLIMIT_FSIZE 4 // Maximum file size in bytes. +#define RLIMIT_NOFILE 5 // Maximum number of open file descriptors. +#define RLIMIT_STACK 6 // Maximum stack size in bytes. +#define RLIMIT_AS 7 // Maximum memory size in bytes. + +uint64_t getrlimit(int resource); +int setrlimit(int resource, uint64_t limit); +@end example + +This syscall fetches and sets current limits for a specified resource, limits +can only be lowered, are inherited from parent to children, and start +maxed out. + +When a limit is reached, the operation that would reach or exceed it will fail +like the following: + +@itemize @bullet +@item +@code{RLIMIT_CORE}: Core files exceeding this size will be truncated, with 0, +core files are not generated. +@item +@code{RLIMIT_CPU}: Once the limit is passed, the process is killed. +@item +@code{RLIMIT_FSIZE}: System call growing the file fails with @code{EFBIG}. +@item +@code{RLIMIT_NOFILE}: Adding a new file descriptor fails with @code{EMFILE}. +@item +@code{RLIMIT_STACK}: The value is used for the size of created stacks, thus +there is no failure condition. +@item +@code{RLIMIT_AS}: @code{mmap} or other virtual memory allocation syscalls will +fail with @code{ENOMEM}. +@end itemize + +@code{setrlimit} returns @code{0} on success or @code{-1} on failure. For +@code{getrlimit}, @code{0} is a valid return so checking errno is necessary. +Both report the following errno: + +@itemize @bullet +@item +@code{EINVAL}: Invalid value for resource. +@item +@code{EPERM}: MAC did not allow the operation. +@end itemize + +@node access +@section access + +@example c +#define F_OK 0b0001 +#define R_OK 0b0010 +#define W_OK 0b0100 +#define X_OK 0b1000 + +#define AT_EACCESS 512 + +int access(int dir_fd, char *path, int len, mode_t mode, int flags); +@end example + +This syscall whether the callee process can access the passed file against +POSIX file permissions and Ironclad's MAC. What to check for is specified in +@code{mode} as an ORd list, as such: + +@itemize @bullet +@item +@code{F_OK}: When passed, only file existance will be checked. +@item +@code{R_OK}: When passed, read permissions will be checked. +@item +@code{W_OK}: When passed, write permissions will be checked. +@item +@code{X_OK}: When passed, execute permissions will be checked. +@end itemize + +Permissions are checked with the real user and group IDs, instead of the +effective ones, that behaviour can be changed by passing @code{AT_EACCESS} in +@code{flags}, which can also be used for other common AT flags. +@code{AT_EMPTY_PATH} is not accepted because that does not make any sense with +this syscall. + +The syscall returns @code{0} on success when the passed mode is checked valid, +or @code{-1} on check failure, with the following errno: + +@itemize @bullet +@item +@code{EBADF}: @code{dirfd} is not valid. +@item +@code{ENOENT}: The requested file does not exist. +@item +@code{EACCES}: The access is not allowed. +@end itemize + +@node ppoll +@section ppoll + +@example c +#define POLLIN 0b00000001 +#define POLLOUT 0b00000010 +#define POLLPRI 0b00000100 +#define POLLHUP 0b00001000 +#define POLLERR 0b00010000 +#define POLLNVAL 0b01000000 + +struct pollfd @{ + uint32_t fd; + uint16_t events; + uint16_t revents; +@}; + +int poll(struct pollfd *fds, nfds_t nfds, struct timespec *timeout, + const sigset_t *sigmask); +@end example + +This syscall allows to wait for a series of events to happen to the passed +FDs, in a manner similar to POSIX's @code{select}. + +@code{fds} is an array of @code{nfds} length of @code{pollfd} structures. Each +structure represents one FD, for which @code{events} is a list of events +to wait for and @code{revents} is a bitmap written by the kernel to indicate +which events of the waited ones did happen. If the FD of an structure is +negative, that is, it has the first bit set, it is ignored, and @code{revents} +is set to @code{0}. + +If passed no FDs to ppoll, that is, with @code{nfds == 0}, @code{ppoll} will +block for @code{timeout} time. This is used by some software as a means to +implement @code{sleep} functionality, for those cases, @ref{clock_nanosleep}. + +If @code{sigmask} is not @code{NULL}, it will atomatically set the passed +sigmask for waiting. + +Both @code{events} and @code{revents} are bitmaps of the values: + +@table @code +@item POLLIN +The passed FD has data pending for reading. + +@item POLLOUT +The passed FD will not block when written to. + +@item POLLPRI +The passed FD has prioritary data for processing, this data depends on what is +polled, some examples are a change of termios information on a PTY, or +Out-Of-Band (OOB) data for a TCP socket. + +@item POLLERR +Only for @code{revents}, it is set when encountering an error waiting. This bit +is also set for FDs referring to the write end of a pipe when the read end has +been closed. + +@item POLLHUP +Only for @code{revents}, it is set in the case of the passed FD having lost +connection, or the FD being the reader end of a broken pipe. + +@item POLLNVAL +Only for @code{revents}, equivalent of @code{EBADFD}, that is, the passed FD +is not valid. +@end table + +The call will block until either a file descriptor gets an event, the call is +interrupted by a signal handler, or the timeout expires. + +The syscall returns the number of FDs to have an event happen on success or +@code{-1} on failure, with the following errno: + +@table @code +@item EFAULT +The passed pointers are not in addressable memory. + +@item EINVAL +The passed values are not valid. +@end table + +@node getuid/geteuid +@section getuid/geteuid + +@example c +uid_t getuid(void); +uid_t geteuid(void); +@end example + +These syscalls fetch the UID and the effective UID of the calling process. They +never fail. + +@node setuids +@section setuids + +@example +int setuids(uid_t uid, uid_t euid); +@end example + +This syscall sets the UID and effective UID of the calling process. If the +calling process has the @code{MAC_CAP_SETUID} capability, it will set both +the EUID and UID, else, it will only try to set EUID to values matching the +process's UID. If any of them is @code{-1}, it will not be modified. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EPERM +MAC did not allow this. +@end table + +@node fchmod +@section fchmod + +@example c +int fchmod(int dir_fd, char *path, int len, mode_t mode, int flags); +@end example + +This syscall sets the mode for the passed arguments in the same way +@ref{fstat} fetches information for the passed arguments. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EINVAL +The passed FD or mode is not valid. + +@item EACCES +MAC did not allow this. +@end table + +@node umask +@section umask + +@example c +mode_t umask(mode_t mask); +@end example + +This syscall sets the umask of the calling process to the passed mask AND'd +with @code{777} in octal. + +The umask is used by the kernel when creating files in the name of the calling +process. It marks permissions to be turned off from @code{mode} arguments +passed by the user. The default value is @code{22} in octal, and is inherited +from parent processes to children. + +This syscall never fails, it always returns the old mask before modification. + +@node reboot +@section reboot + +@example c +#define RB_HALT 1 +#define RB_POWEROFF 2 +#define RB_RESTART 3 +#define RB_ERROR_RET 0b1 + +int reboot(int cmd, int flags); +@end example + +This syscall does the passed action to the system's power management, the +action is specified with @code{cmd}, it can be one of: + +@table @code +@item RB_HALT +System activity is terminated and the system will make all needed preparations, +but power will not be cut off, instead, the user will have to do so, say, with +the power button. Data syncing is up to the user. + +@item RB_POWEROFF +The same as @code{RB_HALT} but actually cuts power. + +@item RB_RESTART +The same as @code{RB_HALT} but at the end, the system will reboot. +@end table + +If the operation fails internally, for any reason, the kernel will panic, for +returning an error instead, one can use @code{RB_ERROR_RET} in @code{flags}. + +This syscall does not return on success, it will only return in the case of +invalid value for @code{cmd}, before comitting to an operation, or by using +@code{RB_ERROR_RET} as previously said. In error, @code{-1} will be returned, +and errno will be set to: + +@table @code +@item EINVAL +The passed @code{cmd} is not valid. + +@item EACCES +MAC did not allow this. + +@item EIO +The operation failed internally. +@end table + +@node fchown +@section fchown + +@example c +int fchown(int dir_fd, char *path, int len, uint32_t user, uint32_t group, + int flags); +@end example + +This syscall sets the owner's UID and GID for the passed arguments in the same +way @ref{fstat} fetches information for the passed arguments. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EINVAL +The passed FD or the user and group were not valid. + +@item EACCES +MAC did not allow this. + +@item EBADF +The passed file is valid but it was not a physical file in a filesystem. +@end table + +@node pread/pwrite +@section pread/pwrite + +@example c +ssize_t pread(int fd, void *buffer, size_t count, off_t offset); +ssize_t pwrite(int fd, void *buffer, size_t count, off_t offset); +@end example + +These syscalls do the same as @code{read} and @code{write} respectively, but +instead of using the description's saved location for data access, they use the +passed @code{offset}, and do not update it at the end of the operation. +@code{fd} must point to a seekable file. + +These syscalls are made for use in multithreaded applications, as having more +than one thread updating file locations for a shared file description can lead +to sudden catharsis. + +These syscalls return the same values and errno as the non-p variants. +@ref{read/write}. + +@node getsockname +@section getsockname + +@example c +int getsockname(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict addrlen); +@end example + +This syscall fetches the address of an already bound socket. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EINVAL +The passed FD was a non bound socket. + +@item EBADF +The passed file is valid but it was not a physical file in a filesystem. +@end table + +@node getpeername +@section getpeername + +@example c +int getpeername(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict addrlen); +@end example + +This syscall fetches the address of a socket's peer. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EINVAL +The passed FD was a non bound socket. + +@item EBADF +The passed file is valid but it was not a physical file in a filesystem. +@end table + +@node shutdown +@section shutdown + +@example c +#define SHUT_RD 0b01 +#define SHUT_RDWR 0b10 +#define SHUT_WR 0b11 + +int shutdown(int sockfd, int how); +@end example + +This syscall stops transmission or reception for a socket from a peer. + +@code{how} signals how to stop communication, it can be the following values: + +@table @code +@item SHUT_RD +Further receiving will not be allowed. + +@item SHUT_WR +Further transmitting will not be allowed. + +@item SHUT_RDWR +Further receiving and transmitting will not be allowed. +@end table + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EINVAL +The passed FD was a non bound socket. + +@item EBADF +The passed file is valid but it was not a physical file in a filesystem. +@end table + +@node futex +@section futex + +@example c +struct futex_item @{ + uint64_t addr; + uint32_t expected; + uint32_t flags; +@}; + +#define FUTEX_WAIT 1 +#define FUTEX_WAKE 2 + +int futex(int operation, struct futex_item *futexes, size_t count, + struct timespec *time); +@end example + +This syscall helps implement fast userland mutexes (futexes!). It is typically +used as a blocking construct in the context of shared-memory synchronization. + +When using futexes, the majority of the synchronization operations are +performed in user space by atomically testing for a 32-bit value. User-space is +to use @code{futex} only when it is likely that the program has to block for a +longer time until the condition becomes true. Other @code{futex} operations +can be used to wake any processes or threads waiting for an address. + +When executing a futex operation that requests to block a thread, the kernel +will block only if the futex contents has the value that the call suplied under +@code{expected}. The loading of the futex's contents and comparison of that +value are atomic, and will be totally ordered with respect to concurrent +operations performed by other threads on the same futex contents. Thus, the +futex contents are used to connect the synchronization in user space with the +implementation of blocking by the kernel. Analogously to an atomic +compare-and-exchange operation that potentially changes shared memory, blocking +via a futex is an atomic compare-and-block operation. When blocked, the kernel +will calmly wait for waking by @code{FUTEX_WAKE}, waking is not automatic once +the values are acquired. + +Note that no explicit initialization or destruction is necessary to use +futexes; the kernel maintains a futex only while operations such as +@code{FUTEX_WAIT} are being performed on particular futex contents. + +When compared with other implementations like Linux's, Ironclad's allows for +waiting and waking several futexes at once, this is done as to ease handling +several futexes at once. + +The available futex operations are: + +@table @code +@item FUTEX_WAIT +The passed values in futexes will be waited for. + +@item FUTEX_WAKE +The passed values in futexes will be woken up. +@end table + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EFAULT +The passed addresses would fault if accessed. + +@item EINVAL +The passed operation is not valid. +@end table + +@node clock +@section clock + +@example c +#define CLOCK_REALTIME 0 +#define CLOCK_MONOTONIC 1 +#define CLOCK_GETRES 0 +#define CLOCK_GETTIME 1 +#define CLOCK_SETTIME 2 + +int clock(int operation, int clock_id, struct timespec *time); +@end example + +This syscall fetches or sets epoch dates for each of the supported clocks. +Clock is passed in @code{clock_id}, with the following values. + +@table @code +@item CLOCK_REALTIME +Wall-clock, may jump forward and back thanks to time setting. + +@item CLOCK_MONOTONIC +Clock that only moves forward, and is unaffected by NTP or adjustements. It +starts from an unspecified, target-dependent point in time, usually boot. + +Unlike Linux, it is still counted during suspend. +@end table + +@code{operation} specifies what to do, as such: + +@table @code +@item CLOCK_GETRES +Load the resolution of the passed clock on the contents of @code{time}. + +@item CLOCK_GETTIME +Load the epoch date of the passed clock on the contents of @code{time}. + +@item CLOCK_SETTIME +Set the epoch date of the passed clock to the contents of @code{time}, not +supported for @code{CLOCK_MONOTONIC}. Underlying hardware will always be +updated. +@end table + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EFAULT +@code{time} points to non accessible memory. + +@item EINVAL +One of the passed values is not valid. +@end table + +@node clock_nanosleep +@section clock_nanosleep + +@example c +#define TIMER_ABSTIME 1 + +int clock_nanosleep(int clock_id, int flags, struct timespec *time, + struct timespec *remaining); +@end example + +This syscall sleeps the callee thread for the passed time with the requested +clock. If interrupted by a signal or similar, it returns the remaining time +that could not be waited. + +Unlike what POSIX mandates, this syscall will always need @code{remaining} to +be a valid structure. @code{clock_id} takes the same value as @ref{clock}. + +@code{flags} can be one of the following: + +@table @code +@item TIMER_ABSTIME +Instead of an increment on top of the current time, @code{time} is taken as an +absolute time (ideally in the future!). +@end table + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EFAULT +@code{time} or @code{remaining} point to non accessible memory. + +@item EINVAL +One of the passed values is not valid. + +@item EPERM +MAC did not allow this. +@end table + +@node getrusage +@section getrusage + +@example c +#define RUSAGE_SELF 1 +#define RUSAGE_CHILDREN 2 + +struct rusage @{ + struct timeval ru_utime; // user CPU time used. + struct timeval ru_stime; // system CPU time used. +@}; + +int getusage(int who, struct rusage *usage); +@end example + +This syscall gets the use of several resources by a process. + +Unlike what POSIX mandates, this syscall will always need @code{remaining} to +be a valid structure. @code{clock_id} takes the same value as @ref{clock}. + +Due to implementation details, for now, system time does include waiting time, +but given this syscall's information is merely advisory, it may be changed +later. + +@code{who} establishes who to request the information for, it can be one of: + +@table @code +@item RUSAGE_SELF +Get information for the callee process. + +@item RUSAGE_CHILDREN +Get information for all of the children processes. +@end table + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EFAULT +@code{usage} point to non accessible memory. + +@item EINVAL +@code{who} was not valid. +@end table + +@node recvfrom/sendto +@section recvfrom/sendto + +@example c +ssize_t recvfrom(int socket_fd, void *restrict buffer, size_t length, + int flags, struct sockaddr *address, socklen_t *address_len); +ssize_t sendto(int socket_fd, void *restrict buffer, size_t length, + int flags, struct sockaddr *address, socklen_t address_len); +@end example + +These syscalls compliment @code{read} and @code{write} for socket-based IO. +They allow specifing or fetching the address of a read or write operation when +doing them, which can be vital for reading connection-less socket protocols. + +Unlike doing @code{connect} on a connection-less socket, the addresses passed +here will not affect future transactions. + +When used for connection-based protocols, or when passed as @code{NULL}, +@code{address} and @code{address_len} will be ignored. + +@code{flags} is right now a placeholder for future options. + +These syscalls return and fail in the same ways @ref{read/write} would, with +the addition of only accepting sockets as their passed @code{socket_fd}. + +@node config_netinter +@section config_netinter + +@example c +#define NETINTER_SET_BLOCK 1 +#define NETINTER_SET_STATIC_IP4 2 +#define NETINTER_SET_STATIC_IP6 3 + +struct addr4_netinter @{ + uint32_t ip; + uint32_t sub; +@}; + +struct addr6_netinter @{ + uint128_t ip; + uint128_t sub; +@}; + +int config_netinter (int fd, int op, void *arg); +@end example + +This syscall configures networking interfaces by using the device that +implements the desired interface. + +@code{op} dictates what the arguments and action to do are, it can be one of: + +@table @code +@item NETINTER_SET_BLOCK +@code{arg} will be a pointer to a boolean value, if it evaluates to true, the +passed interface will be blocked, if it evaluates to false, it will be +unblocked. + +@item NETINTER_SET_STATIC_IP4 +@code{arg} will be a pointer to a @code{addr4_netinter} structure, which +specifies an address and subnet to set as static addresses. + +@item NETINTER_SET_STATIC_IP6 +@code{arg} will be a pointer to a @code{addr6_netinter} structure, which +specifies an address and subnet to set as static addresses. +@end table + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EFAULT +@code{arg} point to non accessible memory. + +@item EACCES +MAC did not allow this. + +@item EINVAL +An argument is not valid. +@end table + +@node utimes +@section utimes + +@example c +int utimes(int dir, const char *path, struct timespec *times, int flags); +@end example + +This syscall changes the access and modification time of the passed file to the +2 first values contained in the @code{times} array. All the standard options +for @code{dir} are accepted and @code{flags} takes @code{AT_EMPTY_PATH} and +@code{AT_SYMLINK_NOFOLLOW}. + +@table @code +@item EFAULT +@code{path} or @code{times} point to non accessible memory. + +@item EACCES +MAC did not allow this. + +@item EINVAL +An argument is not valid. +@end table + +@node create_tcluster +@section create_tcluster + +@example c +int create_tcluster(void); +@end example + +This syscall creates a thread cluster. It returns the new cluster ID or +@code {-1} on failure, with the following errno: + +@table @code +@item ENOMEM +A new cluster could not be made. + +@item EACCES +MAC did not allow this. +@end table + +@node switch_tcluster +@section switch_tcluster + +@example c +int switch_tcluster(int cluster, int tid); +@end example + +This syscall moves the thread identified by @code{tid} to the thread cluster +identified by @code{cluster}. No checks of parenthood are done. + +It returns @code{0} on success and @code{-1} on failure, with the following +errno: + +@table @code +@item EINVAL +@code{cluster} is not a valid cluster, or @code{tid} is not a valid tid. + +@item EACCES +MAC did not allow this. +@end table + +@node sigprogmask +@section sigprogmask + +@example c +#define SIG_BLOCK 1 +#define SIG_UNBLOCK 2 +#define SIG_SETMASK 3 + +int sigprocmask(int how, sigset_t *set, sigset_t *oldset); +@end example + +This syscall fetches and/or changes the signal mask of the calling +process. The signal mask is the set of signals whose delivery is currently +blocked. + +If not @code{NULL}, @code{set} can be used for passing a new mask, if not +@code{NULL}, @code{oldset} can be used for getting the existing mask. + +The behaviour of the syscall will depend on the value passed to +@code{how}, which can be one of: + +@table @code +@item SIG_BLOCK +The blocked signals will be a union of the current ones and the passed ones. + +@item SIG_UNBLOCK +The blocked signals will be the current ones minus the passed ones. + +@item SIG_SETMASK +The blocked signals will be the passed ones. +@end table + +It returns @code{0} on success and @code{-1} on failure, with the following +errno: + +@table @code +@item EINVAL +@code{how} is not valid. + +@item EFAULT +A non-@code{NULL} pointer points to not valid memory. +@end table + +@node sigaction +@section sigaction + +@example c +int sigaction(int sig, struct sigaction *act, struct sigaction *oldact); +@end example + +This syscall fetches and/or changes the associated actions with the signal +@code{sig}. + +If not @code{NULL}, @code{act} can be used for setting a new action, if not +@code{NULL}, @code{oldact} can be used for getting the existing action. + +It returns @code{0} on success or @code{-1} on failure, with the following +errno: + +@table @code +@item EINVAL +@code{sig} is not valid. + +@item EFAULT +A non-@code{NULL} pointer points to not valid memory. + +@item EPERM +The caller does not have the appropiate permissions over @code{pid} to actually +kill. +@end table + +@node send_signal +@section send_signal + +@example c +int send_signal(int pid, int signal); +@end example + +This syscall sends the passed signal to the passed PID. + +Group sending is not supported, but can easily be implemented in userland with +process information. @ref{sysconf}. + +Only processes sharing the same UID or EUID as the caller's EUID can be +signaled. The @code{MAC_CAP_SIGNALALL} capability overrides this check. + +It returns @code{0} on success and @code{-1} on failure, with the following +errno: + +@table @code +@item ESRCH +@code{pid} is not a valid target for sending. + +@item EPERM +The caller does not have permissions to signal @code{pid}. + +@item EINVAL +@code{signal} is not a valid signal. +@end table + +@node getprio/setprio +@section getprio/setprio + +@example c +#define PRIO_PROCESS 1 +#define PRIO_PGRP 2 +#define PRIO_USER 3 +#define PRIO_THREAD 4 + +#define PRIO_MIN (-20) +#define PRIO_MAX 20 + +int getprio(int which, int who); +int setprio(int which, int who, int prio); +@end example + +These syscalls get and set niceness values, @code{which} says which entity +to set the niceness to, while @code{who} the pid or id of the entity, 0 for +the current caller. + +@code{who} can be one of: + +@table @code +@item PRIO_PROCESS +Get or set the default niceness of a process. When set, this will make new +threads created by a process be created with this niceness value, and make all +exiting threads have that niceness, along with making child processes inherit +the passed niceness. + +@item PRIO_PGRP / PRIO_USER +Unimplemented, for future features. + +@item PRIO_THREAD +Get or set the niceness of the passed thread. Setting this value does not +affect the process niceness, or what will be reported when getting it, it will +just be an outliar until niceness is set again, either thread-wide or +process-wide. +@end table + +@code{getprio} returns the niceness and @code{-1} on failure, while +@code{setprio} returns @code{0} on success and @code{-1} on failure. Both +in failure feature the following errno: + +@table @code +@item EINVAL +A value is not valid. +@end table + +@node getgid/getegid +@section getgid/getegid + +@example c +gid_t getgid(void); +gid_t getegid(void); +@end example + +These syscalls fetch the GID and the effective GID of the calling process. They +never fail. + +@node setgids +@section setgids + +@example c +int setgids(gid_t gid, gid_t egid); +@end example + +This syscall sets the GID and effective GID of the calling process. If the +calling process has the @code{MAC_CAP_SETGID} capability, it will set both +the EGID and GID, else, it will only try to set EGID to values matching the +process's GID. If any of them is @code{-1}, it will not be modified. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EPERM +MAC did not allow this. +@end table + +@node getgroups/setgroups +@section getgroups/setgroups + +@example c +int getgroups(size_t size, gid_t list[]); +int setgroups(size_t size, const gid_t *list); +@end example + +This syscall gets and sets the supplementary user groups of the caller process. +The stored group IDs, along with the effective GID, will be used to check +permission for file access. among others permission checks. + +@code{getgroups} does not return the effective GID of the caller process on +the list. POSIX leaves whether the effective GID is included on this list as +an implementation detail, so portable programs should be ready for that +scenario. + +Init starts with an empty array of supplementary group IDs. + +Passing @code{0} and @code{NULL} to @code{setgroups} will empty the +supplementary group list. + +@code{getgroups} returns the number of supplementary groups or @code{-1} on +failure, @code{setgroups} returns @code{0} on success and @code{-1} on failure, +both with the following errno: + +@table @code +@item EINVAL +@code{getgroups} size is less than the number of supplementary group IDs. +@end table + +@node ttyname +@section ttyname + +@example c +int ttyname(int fd, char *buffer, size_t size); +@end example + +This syscall fetches the name of the filesystem entity backing a TTY and writes +it to @code{buffer} with a NULL terminator. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EINVAL +@code{size} is less than needed and/or @code{fd} is not a TTY. + +@item EBADF +@code{fd} is not opened to anything. + +@item EFAULT +@code{buffer} points to invalid memory. +@end table + +@node fadvise +@section fadvise + +@example c +#define POSIX_FADV_NORMAL 1 +#define POSIX_FADV_SEQUENTIAL 2 +#define POSIX_FADV_NOREUSE 3 +#define POSIX_FADV_DONTNEED 4 +#define POSIX_FADV_WILLNEED 5 +#define POSIX_FADV_RANDOM 6 + +int fadvise(int fd, off_t offset, off_t len, int advice); +@end example + +This syscall is used for advising the kernel on how access will be done for +the passed file for the passed range, in order to prepare caches ahead of time +to optimize system resource use and performance. This can only be used with +filesystem inodes. + +Advising for a file does not make any operation illegal or behave weirdly, they +are just used in order to cater to the passed information. + +Advice is indicated on @code{advice}, and can take the following values: + +@table @code +@item POSIX_FADV_NORMAL +Indicates that the application has no advice to give about its access pattern +for the specified data. If no advice is given for an open file, this is the +default assumption. + +@item POSIX_FADV_SEQUENTIAL +Specifies that the application has no advice to give on its behavior with +respect to the specified data. It is the default characteristic if no advice is +given for an open file. + +@item POSIX_FADV_NOREUSE +Specifies that the application expects to access the specified data once and +then not reuse it thereafter. + +@item POSIX_FADV_DONTNEED +Specifies that the application expects that it will not access the specified +data in the near future. + +@item POSIX_FADV_WILLNEED +Specifies that the application expects to access the specified data in the near +future. + +@item POSIX_FADV_RANDOM +Specifies that the application expects to access the specified data in a random +order. +@end table + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EINVAL +@code{advice} is not valid. + +@item EBADF +@code{fd} is not opened to anything. + +@item ESPIPE +The passed file is not a VFS inode. +@end table + +@node shmat +@section shmat + +@example c +void *shmat(int shmid, const void *shmaddr, int shmflg); +@end example + +This syscall attaches the shared memory segment identified by @code{shmid} to +the address space of the calling process. + +If shmaddr is @code{NULL}, the system chooses a suitable (unused) address at +which to attach the segment. If it is not @code{NULL}, that address will be +used for attaching. + +If @code{SHM_RDONLY} is specified in shmflg, the segment is attached fo +reading and the process must have read permission for the segment. Otherwise +the segment is attached for read and write and the process must have read and +write permission for the segment. There is no notion of a write-only shared +memory segment. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EACCES +The caller does not have enough permissions for attaching. + +@item EIDRM +@code{shmid} points to a removed identifier. + +@item EINVAL +Invalid @code{shmid} or invalid @code{shmaddr}. + +@item ENOMEM +Not enough memory. +@end table + +@node shmctl +@section shmctl + +@example c +struct ipc_perms @{ + uint32_t __key; + uint32_t uid; + uint32_t gid; + uint32_t cuid; + uint32_t cgid; + uint32_t mode; + uint32_t __seq; +@} + +struct shmid_ds @{ + struct ipc_perms shm_perm; + uint64_t shm_segsz; + uint64_t shm_atime; + uint64_t shm_dtime; + uint64_t shm_ctime; + uint32_t shm_cpid; + uint32_t shm_lpid; + uint64_t shm_nattch; +@} + +#define IPC_RMID 0 +#define IPC_SET 1 +#define IPC_STAT 2 + +int shmctl(int shmid, int cmd, struct shmid_ds *buf); +@end example + +This syscall performs the control operation specified by @code{cmd} on the +shared memory segment whose identifier is given in @code{shmid}. + +@code{cmd} can be one of: + +@table @code +@item IPC_RMID +The passed @code{shmid} is set to be deleted when the attached count of the +segment goes to @code{0}. Otherwise, it will linger forever. @code{buf} is +ignored. + +@item IPC_SET +Information passed on the structure pointed to by @code{buf} is used to modify +the permission fields of the passed segment, namely @code{shm_perm.uid}, +@code{shm_perm.gid}, and @code{shm_perm.mode}. + +@item IPC_STAT +Get the associated information of the passed segment id and write it to the +structure pointed to by @code{buf}. +@end table + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EINVAL +@code{size} is less than needed and/or @code{fd} is not a TTY. + +@item EBADF +@code{fd} is not opened to anything. + +@item EFAULT +@code{buffer} points to invalid memory. +@end table + +@node shmdl +@section shmdl + +@example c +int shmdt(const void *shmaddr); +@end example + +This syscall detaches the shared memory segment located at @code{shmaddr} from +the calling process. + +The syscall returns @code{0} on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EINVAL +The passed @code{shmaddr} is not valid. +@end table + +@node shmget +@section shmget + +@example c +#define IPC_PRIVATE 0 + +int shmget(key_t key, size_t size, int shmflg); +@end example + +This syscall fetches or creates a shared memory segment associated with +@code{key}. + +If @code{key} is equal to @code{IPC_PRIVATE}, a segment will be created with +no associated key, and will need to be accessed by other processes only by +the returned @code{shmid}. + +The syscall returns a valid ID on success or @code{-1} on failure, with the +following errno: + +@table @code +@item EACCES +MAC did not allow this. + +@item EEXISTS +An attempt to create a public segment with an already registered key happened. + +@item ENOENT +The fetched segment is not present. +@end table + +@node getsockopt/setsockopt +@section getsockopt/setsockopt + +@example c +#define SOL_SOCKET 1 + +#define SO_ACCEPTCONN 1 +#define SO_ERROR 5 +#define SO_SNDBUF 13 +#define SO_TYPE 16 + +int getsockopt(int fd, int level, int name, void *val, socklen_t *len); +int setsockopt(int fd, int level, int name, void *val, socklen_t len); +@end example + +This syscall gets or sets the option passed on @code{name} for the socket level +passed on @code{level}, and writes or fetches data from @code{val} with the +length passed on @code{len}. + +Right now, @code{SOL_SOCKET} is the only supported socket level. + +@code{name} can be one of: + +@table @code +@item SO_ACCEPTCONN +@code{val} will point to an @code{uint32_t}. @code{1} will be written there if +the passed socket is listening, and @code{0} if it is not/cannot listen due to +protocol. @code{getsockopt} only. + +@item SO_ERROR +@code{val} will point to an @code{uint32_t}. The value will be written with the +present socket error if any, or @code{0} if none are present. @code{getsockopt} +only. + +@item SO_SNDBUF +@code{val} will point to an @code{uint32_t}. If getting the value, the current +send-buffer size will be returned, else, it setting it, the passed size will +be used for the same buffer. + +@item SO_TYPE +@code{val} will point to an @code{uint32_t}. The type of socket will be +returned in that variable in the same format as @pxref{socket}. +@code{getsockopt} only. +@end table + +The syscall returns 0 on success or @code{-1} on failure, with the errno: + +@table @code +@item EBADFD +@code{fd} was not open, or is not a socket. + +@item EACCES +@code{val} did not point to valid memory. + +@item EINVAL +The passed @code{name} or @code{level} were not valid. +@end table + +@node gettidid/settidid +@section gettidid/settidid + +@example c +int gettidid(int tid, char *id, size_t size); +int settidid(int tid, char *id, size_t size); +@end example + +This syscall gets or sets the passed thread's ID. An ID is an array associated +with a thread for debug purposes. A thread is given no ID at creation, and +fetching it will fail. The ID is a C-style string. + +These syscalls returns 0 on success or @code{-1} on failure, with the errno: + +@table @code +@item EINVAL +The passed buffers were either too big for setting, or to small for fetching +the ID, or the passed thread is not valid. + +@item EFAULT +The passed buffers were pointing to invalid memory. +@end table + +@node failure_policy +@section failure_policy + +@example c +#define MEM_FAIL_PANIC 1 +#define MEM_FAIL_SOFT_KILL 2 +#define MEM_FAIL_HARD_KILL 3 +#define OOM_ALLOW_PROC_KILL 1 +struct fail_modes @{ + uint64_t mem_policy; + uint64_t oom_policy; +@}; + +int failure_policy(struct fail_modes *old, struct fail_modes *new); +@end example + +This syscall fetches and customized kernel behaviour on a series of failure +conditions. @code{old}, if not null, can be used for fetching the values +used at the time of calling, while @code{new}, if not @code{null}, will be used +to set new values. + +The valid values for @code{mem_policy} are: + +@table @code +@item MEM_FAIL_PANIC +When set to this value, a hardware memory failure will cause the kernel to +panic. This is the default. + +@item MEM_FAIL_SOFT_KILL +When set to this value, hardware failures will result in no immediate action, +when a process steps on the faulty memory, an exception will be raised on +the spot. + +@item MEM_FAIL_HARD_KILL +When set to this value, hardware failures will result on the processes holding +the faulty memory to be eagerly terminated. +@end table + +The valid values for @code{oom_policy} are: + +@table @code +@item OOM_ALLOW_PROC_KILL +When set, this value will make the kernel able to kill processes if deemed +necessary for the prolonged function of the system, if not set, the kernel +will not kill user processes at any cost. +@end table + +This syscall returns 0 on success or @code{-1} on failure, with the errno: + +@table @code +@item EINVAL +When setting new values with @code{new}, the passed values were not valid. + +@item EFAULT +The passed buffers were pointing to invalid memory. + +@item EACCES +When setting new values with @code{new}, the calling process did not have the +capability @code{MAC_CAP_SYSMAC}. +@end table + +@node Filesystem support and interfaces +@chapter Filesystem support and interfaces + +Support for several filesystems is provided, with filesystem-specific quirks at +times, and exposes interfaces with @code{ioctl} calls. This section of the +manual focuses on documenting said quirks, details, and additional features. + +@node Extended FileSystem +@section Extended FileSystem + +Ironclad supports EXT-series filesystems read-only and read-write. + +While a user may be used to the ext2/3/4 distinction, EXT internally works as +an independent set of features, with the version numbers specifying a +widely understood, assumed, and inconsistent set of features. + +Ironclad supports the feature list: @code{sparse_super}, @code{large_file}, +@code{filetype}, @code{resize_inode}, @code{dir_index}, @code{ext_attr}. + +Those features should translate to ext2 read-write support, and ext3 read-only +support. + +Some @code{ioctl} calls exist for files inside EXT-series FSs, which can help +manage specialized FS-specific inode flags and permissions, they are: + +@example c +EXT_GETFLAGS = 0x5600 +EXT_SETFLAGS = 0x5601 + +ioctl(fd, EXT_GETFLAGS, pointer_to_u32); // Get EXT's flags inode field. +ioctl(fd, EXT_SETFLAGS, pointer_to_u32); // Set EXT's flags inode field. +@end example + +@node File Allocation Table +@section File Allocation Table + +Ironclad's FAT support is really rough. Only read-only FAT32 is supported. +No special @code{ioctl} calls are provided. Long filenames are not supported. + +@node Networking +@chapter Networking + +This chapter gives all the details on how Ironclad handles networking. + +@node Layering +@section Layering + +The OSI model, as per the X.200 recommendation, defines 7 layers: + +@example +| No. | Layer Name | Example technologies | +| +++ | ++++++++++++ | ++++++++++++++++++++++++++++++++++++ | +| 7 | Application | WebSocket, HL7 | +| 6 | Presentation | Idk I do embedded, weird stuff here | +| 5 | Session | Sockets, Named pipes, NetBIOS (eek!) | +| 4 | Transport | TCP, UDP, NBF | +| 3 | Network | IP, IPSec, ICMP | +| 2 | Data link | ARP, NDP, MAC | +| 1 | Physical | Ethernet, WiFi, Bluetooth | +@end example + +Ironclad aims to provide all the way to the @strong{session} layer, no more! +(and no less). The main interface for networking used to interface with that +layer will be the socket. For learning about sockets, @ref{socket}. + +@node Interface handling +@section Interface handling + +Ironclad registers one interface per valid device plus one for a loopback +device. New addresses cannot be added manually, they may only be added and +removde by the kernel. Some parameters are available for user control though, +including per-interface configuration and enabling and disabling. + +All interfaces but @code{loopback} will be disabled by default, that is, they +will be setup and ready to go, but will refuse connectivity via kernel block, +as a security measure to avoid unexpected connectivity. They will need manual +enabling. + +@node Loopback +@section Loopback + +The loopback device is a special, virtual network interface meant to be used +mainly for diagnostics and troubleshooting, along for enabling connecting to +servers running on the local machine. + +It works fundamentally by returning the packets sent to it (loopback!), in such +a way that services can talk with themselves. This device implements no +physical layer of the network stack, packets are passed without that layer. + +Loopback will always have the static IP addresses @code{127.0.0.1/8} and +@code{::1/128}. These addresses can be changed in runtime. +@ref{config_netinter}. + +@node Devices and their properties +@chapter Devices and their properties + +Ironclad exposes a number of physical and virtual devices to userland. All +of them are exposed under the @code{/dev} location, and support a series of +standard operations, like being manipulated by the usual file-related +syscalls like @code{read} or @code{write}, while sporting device-specific +interfaces in the form of device-specific @code{ioctl} requests. + +When quering device-specific information, Ironclad exposes information a bit +different than other kernels like Linux. Here is a quick list of the most +notable differences: + +@itemize @bullet +@item +The @code{BLKGETSIZE}/@code{BLKGETSIZE64} @code{ioctl} calls are not available, +instead, the block count and block size values of @code{stat} are used. +@end itemize + +All devices in Ironclad have the @code{ioctl} call @code{DEV_UUID} implemented, +with the signature: + +@example c +#define DEV_UUID 0x9821 + +ioctl(fd, DEV_UUID, &pointer_to_uuid); -- uuids being uint8_t[16]; +@end example + +This call will write the UUID of the device pointed to by @code{fd}, which, if +all zeros, will mean that the device has no associated UUID. + +@node Common devices +@section Common devices + +These are devices exposed in Ironclad regardless of target system when +present, with standardized interfaces. + +@subsection console + +@code{/dev/console} wraps architecture-specific debug output channels for use +with file operations. For x86-based targets, this is COM1, for other targets, +this may be UART. + +If the target implements reading from the debug channels, read will be +supported as well. If not implemented, the device will be read-only. + +The kernel also uses the debug channels for output, so keep in mind the +contentions that can cause. If you are doing a lot of spaced writes, do not +be surprised if the kernel pops in the middle! In the other hand, the kernel +does not read from the debug channels. + +@subsection loopback + +@code{/dev/loopback} is the network loopback device, explained on +@ref{Loopback}. + +@subsection ramdev + +The devices starting by @code{ramdev} are virtual devices representing the +RAM driver passed by some boot protocols, an FS can be mounted to them, or be +otherwise used like any other block device. These RAM devices are read/write, +but they cannot grow in size, so changes are constrained to the area the +RAM device already has allocated. + +@subsection random/urandom/hwrng + +The device @code{random} is equivalent to the one featured in other UNIX-like +kernels, and can be read to get a stream of cryptographically secure +pseudo-random bytes. + +Ironclad has limited sources of entropy, so the quality of this random numbers +may be limited as well. To mitigate this, one may write to the @code{random} +device. The written data will be used as additional entropy. + +@code{/dev/urandom} does the same as @code{/dev/random}, and is only provided +for compatibility. + +@code{getrandom} is provided as well for avoiding the file interface when +interfacing with @code{/dev/random}, as that may avoid certain kinds of DoS +attacks related to opened file limits. + +When present, CPU random number generators may be exposed as @code{/dev/hwrng}. +This device behaves the same as @code{/dev/random} apart from the fact that +it does not allow writing to it. It is recommended that, unless necessary, you +use @code{/dev/random} instead. If you are to use @code{hwrng}, be sure you +trust your hardware to not be backdoored, else, those backdoors might be +rendered useless by the kernel's own CSPRNG processing. + +@subsection null/zero + +@code{null} returns @code{EOF} whenever read, and all the write operations are +discarded. + +@code{zero} returns exclusively a stream of zeros when read, and all write +operations are discarded. + +@node riscv64-limine devices +@section riscv64-limine devices + +To be determined. + +@node x86_64-limine devices +@section x86_64-limine devices + +@subsection ata + +The devices starting by @code{sata} represent several ATA IDE block devices. +These ATA drives have internal caching at the driver level, so they must be +@code{sync}'d for data integrity when wanting to ensure data coherency. + +No special @code{ioctl} calls are supported. + +@subsection fb0 + +The @code{fb0} device exposes the framebuffer passed as part of the boot +protocol, when present. The device uses Linux's @url{https://docs.kernel.org/fb/api.html, fbdev} interface. + +@subsection i6300esb + +@code{i6300esb} is a hardware watchdog featured in a lot of intel hardware, it +can be reset by using @code{write} and can be configured using +@code{ioctl} like: + +@example c +WDOG_START = 1 // Start the count. +WDOG_STOP = 2 // Stop the count. +WDOG_HEARTBEAT = 3 // Reset and set a new heartbeat period in seconds. + +ioctl(wdog, WDOG_START, ignored); // Enable 2:1 scaling. +ioctl(wdog, WDOG_STOP, ignored); // Enable 1:1 scaling. +ioctl(wdog, WDOG_HEARTBEAT, pointer_to_uint32_t); +@end example + +There is no default heartbeat count, so be sure to configure it if you do not +want mayhem. Access to reset and configuration can be restricted by using +MAC. + +While this piece of hardware allows for hooking up interrupts and reboot +separately when the timer expires, Ironclad right now will only reboot when +the timer expires. + +@subsection lpt + +The devices starting by @code{lpt} represent the several character devices +representing the system's parallel ports. They support write operations, but no +TTY interface is exposed, they are raw byte streams. + +@subsection pcspeaker + +@code{pcspeaker} represents the IBM PC speaker, it is interfaced with using +@code{ioctl}, as such: + +@example c +ioctl(fd, ignored, pointer_to_uint32_t_frequency_in_hz); +@end example + +@subsection ps2keyboard/ps2mouse + +The devices @code{ps2keyboard} and @code{ps2mouse} exposes x86's native PS2 +interfaces, @code{ps2keyboard} is a normal character device that returns +scancodes as they are received. @code{ps2mouse} is a character device that +returns mouse packets following the structure: + +@example c +struct mouse_data @{ + int x_variation; + int y_variation; + int z_variation; + bool is_left_click; + bool is_right_click; + bool is_middle_clock; + bool is_4th_click; + bool is_5th_click; +@}; +@end example + +@code{ps2mouse} supports a series of @code{ioctl} calls for setting different +modes and talking directly with the PS2 controller: + +@example c +PS2MOUSE_2_1_SCALING = 1 +PS2MOUSE_1_1_SCALING = 2 +PS2MOUSE_SET_RES = 3 +PS2MOUSE_SET_SAMPLE_RATE = 4 + +ioctl(mouse, PS2MOUSE_2_1_SCALING, ignored); // Enable 2:1 scaling. +ioctl(mouse, PS2MOUSE_1_1_SCALING, ignored); // Enable 1:1 scaling. +ioctl(mouse, PS2MOUSE_SET_RES, resolution); // (0 - 3). +ioctl(mouse, PS2MOUSE_SET_SAMPLE_RATE, rate); // (0 - 200). +@end example + +Valid resolutions and sample rates are values for the PS2 controller, else +the call is ignored. For valid values and their meaning refer to +@uref{https://isdaman.com/alsos/hardware/mouse/ps2interface.htm, this website}. + +@subsection sata + +The devices starting by @code{sata} represent several SATA AHCI block devices. +For now only SATA drives are supported, support for ATAPI is not present. + +These SATA drives have internal caching at the driver level, so they must be +@code{sync}'d for data integrity when wanting to ensure data coherency. + +@subsection serial + +The devices starting by @code{serial} represent the several character devices +used for each present serial port, they support read/write operations, but no +TTY interface is exposed, they are raw byte streams. + +Baud and other settings can be set by using the @code{termios}, note that +most of the fields are not implemented as the serial devices are not ttys but +just byte streams. + +The default baud for all ports is set to be @code{115200}. + +@node GNU Free Documentation License +@appendix GNU Free Documentation License +@include fdl.texi + +@bye diff --git a/ironclad b/ironclad new file mode 100755 index 0000000000000000000000000000000000000000..22cb7e663b7f562a53ac68c58de01f8e4071961f GIT binary patch literal 855064 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 z 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 z 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 JW(3*C(SJNib};|| literal 0 HcmV?d00001 diff --git a/ironclad.gpr b/ironclad.gpr new file mode 100644 index 0000000..ea2e72c --- /dev/null +++ b/ironclad.gpr @@ -0,0 +1,99 @@ +-- ironclad.gpr.in: Project's building script. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +project Ironclad is + type Arch_Name is + ("riscv64-limine", + "x86_64-limine"); + + Arch : Arch_Name := "riscv64-limine"; + Ada_Flags := "-g -O2 -pipe -gnaty -Wall -Wextra"; + Asm_Flags := "-g -O2 -pipe -Wall"; + Linker_Flags := "-g -O2 -pipe -Wall"; + + for Source_Dirs use + ("/home/michael/capstoneProject/ironclad/source/arch/" & Arch, + "/home/michael/capstoneProject/ironclad/source/arch", + "/home/michael/capstoneProject/ironclad/source/cryptography", + "/home/michael/capstoneProject/ironclad/source/devices", + "/home/michael/capstoneProject/ironclad/source/ipc", + "/home/michael/capstoneProject/ironclad/source/lib", + "/home/michael/capstoneProject/ironclad/source/memory", + "/home/michael/capstoneProject/ironclad/source/networking", + "/home/michael/capstoneProject/ironclad/source/userland", + "/home/michael/capstoneProject/ironclad/source/vfs", + "/home/michael/capstoneProject/ironclad/source"); + for Object_Dir use "obj"; + for Exec_Dir use "."; + for Main use ("main.adb"); + for Languages use ("Ada", "Asm_Cpp"); + for Create_Missing_Dirs use "True"; + + package Builder is + for Executable ("main.adb") use "ironclad"; + end Builder; + + package Compiler is + Base_Ada_Switches := Split (Ada_Flags, " ") & + ("-fno-stack-protector", "-fno-stack-check", + "-fdata-sections", "-ffunction-sections", + "-gnateDIroncladName=""" & "Ironclad" & """", + "-gnateDVersion=""" & "g0a370c9" & """", + "-gnateDBugSite=""" & "https://ironclad.nongnu.org/usersupport.html" & """", + "-gnateDArchName=""" & Arch & """", + "-ffile-prefix-map=" & "/home/michael/capstoneProject/ironclad" & "=.", + "-gnateDALLOCONLY=" & "False"); + Base_Asm_Switches := Split (Asm_Flags, " ") & + ("-ffile-prefix-map=" & "/home/michael/capstoneProject/ironclad" & "=."); + + case Arch is + when "riscv64-limine" => + for Switches ("Ada") use Base_Ada_Switches & ( + "-fno-pie", "-fno-pic", "-mno-relax", + "-march=rv64imac_zicsr_zifencei", "-mabi=lp64" + ); + for Switches ("Asm") use Base_Ada_Switches & ( + "-fno-pie", "-fno-pic", "-mno-relax", + "-march=rv64imac_zicsr_zifencei", "-mabi=lp64" + ); + when "x86_64-limine" => + for Switches ("Ada") use Base_Ada_Switches & + ("-fno-pie", "-fno-pic", "-mgeneral-regs-only", "-mno-red-zone", + "-mcmodel=kernel", "-fcf-protection"); + for Switches ("Asm_Cpp") use Base_Asm_Switches & + ("-fno-pie", "-fno-pic", "-mno-red-zone", "-mcmodel=kernel"); + end case; + + for Local_Configuration_Pragmas use "/home/michael/capstoneProject/ironclad/source/pragmas.adc"; + end Compiler; + + package Linker is + Base_Link_Switches := Split (Linker_Flags, " ") & + ("-T/home/michael/capstoneProject/ironclad/source/arch/" & Arch & "/linker.ld", "-nostdlib", + "-Llibgnat-hack", "-Wl,-gc-sections"); + + case Arch is + when "riscv64-limine" => + for Switches ("Ada") use Base_Link_Switches & + ("-static", "-zmax-page-size=0x1000", "-Wl,-melf64lriscv", + "-Wl,--no-relax"); + when "x86_64-limine" => + for Switches ("Ada") use Base_Link_Switches & + ("-static", "-zmax-page-size=0x1000", + "-Wl,--undefined=multiboot2,-zmuldefs"); + end case; + end Linker; +end Ironclad; diff --git a/ironclad.gpr.in b/ironclad.gpr.in new file mode 100644 index 0000000..a231abf --- /dev/null +++ b/ironclad.gpr.in @@ -0,0 +1,99 @@ +-- ironclad.gpr.in: Project's building script. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +project Ironclad is + type Arch_Name is + ("riscv64-limine", + "x86_64-limine"); + + Arch : Arch_Name := "@target_cpu@-@target_vendor@"; + Ada_Flags := "@ADAFLAGS@"; + Asm_Flags := "@ASFLAGS@"; + Linker_Flags := "@LDFLAGS@"; + + for Source_Dirs use + ("@SRCDIR@/source/arch/" & Arch, + "@SRCDIR@/source/arch", + "@SRCDIR@/source/cryptography", + "@SRCDIR@/source/devices", + "@SRCDIR@/source/ipc", + "@SRCDIR@/source/lib", + "@SRCDIR@/source/memory", + "@SRCDIR@/source/networking", + "@SRCDIR@/source/userland", + "@SRCDIR@/source/vfs", + "@SRCDIR@/source"); + for Object_Dir use "obj"; + for Exec_Dir use "."; + for Main use ("main.adb"); + for Languages use ("Ada", "Asm_Cpp"); + for Create_Missing_Dirs use "True"; + + package Builder is + for Executable ("main.adb") use "ironclad"; + end Builder; + + package Compiler is + Base_Ada_Switches := Split (Ada_Flags, " ") & + ("-fno-stack-protector", "-fno-stack-check", + "-fdata-sections", "-ffunction-sections", + "-gnateDIroncladName=""" & "@PACKAGE_NAME@" & """", + "-gnateDVersion=""" & "@PACKAGE_VERSION@" & """", + "-gnateDBugSite=""" & "@PACKAGE_BUGREPORT@" & """", + "-gnateDArchName=""" & Arch & """", + "-ffile-prefix-map=" & "@SRCDIR@" & "=.", + "-gnateDALLOCONLY=" & "@MEMORY_ALLOCONLY@"); + Base_Asm_Switches := Split (Asm_Flags, " ") & + ("-ffile-prefix-map=" & "@SRCDIR@" & "=."); + + case Arch is + when "riscv64-limine" => + for Switches ("Ada") use Base_Ada_Switches & ( + "-fno-pie", "-fno-pic", "-mno-relax", + "-march=rv64imac_zicsr_zifencei", "-mabi=lp64" + ); + for Switches ("Asm") use Base_Ada_Switches & ( + "-fno-pie", "-fno-pic", "-mno-relax", + "-march=rv64imac_zicsr_zifencei", "-mabi=lp64" + ); + when "x86_64-limine" => + for Switches ("Ada") use Base_Ada_Switches & + ("-fno-pie", "-fno-pic", "-mgeneral-regs-only", "-mno-red-zone", + "-mcmodel=kernel", "-fcf-protection"); + for Switches ("Asm_Cpp") use Base_Asm_Switches & + ("-fno-pie", "-fno-pic", "-mno-red-zone", "-mcmodel=kernel"); + end case; + + for Local_Configuration_Pragmas use "@SRCDIR@/source/pragmas.adc"; + end Compiler; + + package Linker is + Base_Link_Switches := Split (Linker_Flags, " ") & + ("-T@SRCDIR@/source/arch/" & Arch & "/linker.ld", "-nostdlib", + "-Llibgnat-hack", "-Wl,-gc-sections"); + + case Arch is + when "riscv64-limine" => + for Switches ("Ada") use Base_Link_Switches & + ("-static", "-zmax-page-size=0x1000", "-Wl,-melf64lriscv", + "-Wl,--no-relax"); + when "x86_64-limine" => + for Switches ("Ada") use Base_Link_Switches & + ("-static", "-zmax-page-size=0x1000", + "-Wl,--undefined=multiboot2,-zmuldefs"); + end case; + end Linker; +end Ironclad; diff --git a/ironclad.info b/ironclad.info new file mode 100644 index 0000000..46d8fb5 --- /dev/null +++ b/ironclad.info @@ -0,0 +1,4892 @@ +This is ironclad.info, produced by makeinfo version 6.8 from +ironclad.texi. + +Copyright © 2024 streaksu + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.3 or any later version published by the Free Software + Foundation; with no Invariant Sections, no Front-Cover Texts, and + no Back-Cover Texts. A copy of the license is included in the + section entitled “GNU Free Documentation License”. + + +File: ironclad.info, Node: Top, Next: Installation and target support, Up: (dir) + +Ironclad User’s Guide +********************* + +This manual documents usage of Ironclad, interfaces and devices it +exposes to userland, and discusses kernel internals, without having to +navigate the often cryptic and scary Ada code. + + Copyright © 2024 streaksu + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.3 or any later version published by the Free Software + Foundation; with no Invariant Sections, no Front-Cover Texts, and + no Back-Cover Texts. A copy of the license is included in the + section entitled “GNU Free Documentation License”. + +* Menu: + +* Installation and target support:: Installation and hardware support. +* Boot-time command-line options:: Command-line options. +* Scheduling and RTC:: Scheduling methodology and features. +* Inter-process communication:: IPC primitives, methods, and quirks. +* Memory architecture:: Memory architecture of the kernel. +* Userland state and conditions:: Userland state and conditions. +* Security and integrity facilities:: Ironclad-specific security facilities. +* Debugging facilities:: Ironclad-specific debugging facilities. +* Syscalls:: Listings and explanation of syscalls. +* Networking:: Networking support and details. +* Filesystem support and interfaces:: VFS details and supported filesystems. +* Devices and their properties:: Devices exposed by the kernel. +* GNU Free Documentation License:: Copying and sharing this manual. + +— The Detailed Node Listing — + +Installation and target support + +* riscv64-limine support:: riscv64-limine installation and support. +* x86_64-limine support:: x86_64-limine installation and support. + +Boot-time command-line options + +* Format:: Description of the format. +* List:: List of all the available command line arguments. + +Scheduling and RTC + +* Ticks and other interruptions:: Thread interruptions to expect. +* Scheduling basics:: Scheduling model used in Ironclad. +* Thread clustering management:: Thread cluster management in Ironclad. + +Inter-process communication + +* Pipes:: FIFOs (yay!). +* Futexes:: Fast-Userspace MuTeXes. +* PTYs:: Pseudo-terminal creation and management. +* Signals:: Ironclad’s signal mechanism. +* Sockets:: Sockets in all of its glory and flavours. + +Memory architecture + +* Physical memory allocation:: How the kernel goes about allocating memory. +* Virtual memory:: Virtual memory architecture. +* Memory failures:: Memory failure policies and conditions. + +Userland state and conditions + +* Program loading:: Format of the loaded programs. +* Memory layout:: Layout of memory in userland. + +Security and integrity facilities + +* Users and groups:: UIDs, EUIDs, GIDs, and all the fuzz. +* Mandatory access control (MAC):: MAC quickguide and configuration. +* Resource limits:: Limits on resources built into MAC. +* Miscellaneous measures:: Miscelaneous security measures. + +Debugging facilities + +* Corefile and process dumping:: Format of dumped files, and settings. +* Program tracing:: Details on program tracing. + +Syscalls + +* Table and target quirks:: Syscall table and architectural ABI. +* Errno:: Error conditions and their values. +* exit:: Exit the callee process. +* arch_prctl:: Interacting with architectural thread-local data. +* open:: Opening file-system entities. +* close:: Closing file descriptors. +* read/write:: Read and write from file descriptors. +* seek:: Modify and fetch file offsets. +* mmap/mprotect/munmap:: Manage memory regions. +* getpid/getppid:: Get the PIDs of the caller. +* exec:: Launching new programs. +* clone:: Create new processes and threads. +* wait:: Waiting for execution of a child to finish. +* socket:: Create sockets. +* sethostname:: Hostname setting. +* unlink:: Queue files for deletion. +* fstat:: Fetch file information. +* chdir:: Current working directory manipulation. +* ioctl:: IO multiplexer. +* sched_yield:: Relinquish CPU time. +* delete_tcluster:: Delete thread clusters. +* pipe:: Create pipes. +* rename:: Rename a file. +* sysconf:: Fetch general system parameters and information. +* spawn:: clone+exec power incarnate. +* gettid:: Get the current thread id. +* manage_tcluster:: Manage and create thread clusters. +* fcntl:: Multiplexed operations for files. +* exit_thread:: Exit the calling thread. +* getrandom:: Bypass /dev/random for avoiding DoS attacks. +* mac_capabilities:: Get and set MAC capabilities. +* add_mac_permissions:: Configure MAC using filesystem-based filters. +* set_mac_enforcement:: Set enforcement to follow on MAC violations. +* mount/umount:: Mount and unmount partitions. +* readlink:: Read the contents of a symlink. +* getdents:: Get directory entries. +* sync:: Synchronize device caches. +* mknod:: Create several kinds of files. +* truncate:: Truncate the contents of a file to an offset. +* bind:: Bind sockets to locations. +* mkdir:: Create directories. +* symlink:: Create symbolic links. +* connect:: Connect a socket. +* openpty:: Create pseudoterminals. +* fsync:: Synchronize file-specific caches. +* link:: Create hard links. +* ptrace:: Trace and debug children processes. +* listen:: Listen for connections to a socket. +* accept:: Accept socket connections. +* getrlimit/setrlimit:: Get and set resource limits. +* access:: Check file access permissions and existance. +* ppoll:: I/O event multiplexer. +* getuid/geteuid:: Get the UID and the effective UID. +* setuids:: Set the UID and the effective UID. +* fchmod:: Change the mode of a file descriptor. +* umask:: Get and set the calling process umask. +* reboot:: Machine power management. +* fchown:: Change ownership of a file descriptor. +* pread/pwrite:: Atomic read and write from file descriptors. +* getsockname:: Get address of a bound socket. +* getpeername:: Get address of a socket’s peer. +* shutdown:: Disconnect socket from its peer. +* futex:: Fast userland mutexes. +* clock:: Clock and time operations. +* clock_nanosleep:: Sleep on a clock. +* getrusage:: Get resource usage for the process. +* recvfrom/sendto:: Socket IO support functions. +* config_netinter:: Configure network interfaces. +* utimes:: Modify timestamps for a file. +* create_tcluster:: Create a thread cluster. +* switch_tcluster:: Switch thread cluster. +* sigprogmask:: Fetch and change a process’ blocked signal. +* sigaction:: Fetch and change a signal’s action. +* send_signal:: Send a signal to a process. +* getprio/setprio:: Get / Set the niceness of some entities. +* getgid/getegid:: Get the GID and the effective GID. +* setgids:: Set the GID and the effective GID. +* getgroups/setgroups:: Get and set supplementary user groups. +* ttyname:: Get the name of a TTY file descriptor. +* fadvise:: Advise caching for file access. +* shmat:: Attach a shared memory region. +* shmctl:: Control a shared memory region. +* shmdl:: Delete a shared memory region. +* shmget:: Create or get a shared memory region by key. +* getsockopt/setsockopt:: Get and set options on sockets. +* gettidid/settidid:: Get and set TID IDs. +* failure_policy:: Get or set failure policies. + +Filesystem support and interfaces + +* Extended FileSystem:: EXT-series filesystems (ext2, ext3, ext4). +* File Allocation Table:: FAT-series filesystems. + +Networking + +* Layering:: What Ironclad provides in terms of the OSI model. +* Interface handling:: How interfaces work inside Ironclad. +* Loopback:: Loopback device use and specification. + +Devices and their properties + +* Common devices:: Devices common to all architectures and targets. +* riscv64-limine devices:: Devices specific to riscv64-limine. +* x86_64-limine devices:: Devices specific to x86_64-limine. + + + +File: ironclad.info, Node: Installation and target support, Next: Boot-time command-line options, Prev: Top, Up: Top + +1 Installation and target support +********************************* + +This chapter delves on what hardware configurations Ironclad supports +and how to get Ironclad running on those platforms. + + Ironclad hardware support is divided in targets, which are combos of +an architecture and board that are supported in tandem, along with any +accompaning hardware, some hardware is supported regardless of the +underlying target, *note Common devices::. + +* Menu: + +* riscv64-limine support:: +* x86_64-limine support:: + + +File: ironclad.info, Node: riscv64-limine support, Next: x86_64-limine support, Up: Installation and target support + +1.1 riscv64-limine support +========================== + +Ironclad supports RISC-V64 systems supporting the IMAC, ZICSR, and +ZIFENCEI extensions using the Limine boot protocol, which as of time of +writing depends on UEFI support being present, but this might change in +the future. The machines running Ironclad are required to provide a +device tree blob (DTB). + + Refer to your limine compliant bootloader for instructions on where +to put kernel images, configuration formats, and the like. + + For supported devices and how they are abstracted, *note +riscv64-limine devices:: + + +File: ironclad.info, Node: x86_64-limine support, Prev: riscv64-limine support, Up: Installation and target support + +1.2 x86_64-limine support +========================= + +x86_64 systems are supported using the limine boot protocol, any limine +compliant bootloader will be able to boot it just fine. + + Refer to your limine compliant bootloader for instructions on where +to put kernel images, configuration formats, and the like. + + For supported devices and how they are abstracted, *note +x86_64-limine devices::. + + +File: ironclad.info, Node: Boot-time command-line options, Next: Scheduling and RTC, Prev: Installation and target support, Up: Top + +2 Boot-time command-line options +******************************** + +Ironclad takes, as part of its boot protocol, a series of options and +values. The parsing of this options is architecture and platform +independent, while the ability to modify said options and values is +entirely up to the platform and bootloader. + +* Menu: + +* Format:: +* List:: + + +File: ironclad.info, Node: Format, Next: List, Up: Boot-time command-line options + +2.1 Format +========== + +The format is a list of keys with optional arguments as such: + + key1=value1 key2 key3=value3 key4="value4 value5" ... keyN=(")valueN(") + + For arguments that need spaces within, like init program arguments +and such, quotation marks are available for use, nested quotation marks +are not allowed in any shape or form, due to the primitive parsing +available within the kernel. + + +File: ironclad.info, Node: List, Prev: Format, Up: Boot-time command-line options + +2.2 List +======== + +This are the keys and values the kernel takes, and under which +circumstances: + +‘root=’ + Device to mount as root, if any. + +‘rootuuid=’ + Used instead of ‘root’. It addresses the root device with a UUID + instead of a device name. This can be used to gain some + device-independence, for example, for addressing a given partition + in a GPT drive regardless the containing device. + +‘init=’ + Path to a program that will be booted by the kernel when finished + loading. The program will be started with ‘stdin’ set to + ‘/dev/null’, and ‘stdout’ and ‘stderr’ set to ‘/dev/console’. + +‘initargs=’ + Arguments to pass to init. If environment variables are what is + desired, consider the trick of booting in typical UNIX fashion + ‘/bin/env ’. + +‘noprogaslr’ + The offset of loaded programs in virtual memory is randomized when + loading if possible, this option disables it system-wide at boot + time and hardcodes it to the lowest available value. + +‘nolocaslr’ + The same as ‘noprogaslr’ but applied to memory locations like + stacks and memory allocation. + + +File: ironclad.info, Node: Scheduling and RTC, Next: Inter-process communication, Prev: Boot-time command-line options, Up: Top + +3 Scheduling and RTC +******************** + +Ironclad is built around hard real-time work, this chapter explains how +that is accomplished along with how scheduling works, predictability of +it, and other useful related features. + +* Menu: + +* Ticks and other interruptions:: +* Scheduling basics:: +* Thread clustering management:: + + +File: ironclad.info, Node: Ticks and other interruptions, Next: Scheduling basics, Up: Scheduling and RTC + +3.1 Ticks and other interruptions +================================= + +Ironclad will not interrupt a running thread for timers or heartbeats, +if necessary, at the expense of performance by, for example, using +polling instead of interrupt-based operation for device drivers. + + A thread, however, may be interrupted for task-switching, which is +needed for scheduling to work. This will not be an issue for most +operations, but if the user desires absolutely 0 interruptions and/or +jitter, one can use + + +File: ironclad.info, Node: Scheduling basics, Next: Thread clustering management, Prev: Ticks and other interruptions, Up: Scheduling and RTC + +3.2 Scheduling basics +===================== + +Scheduling in Ironclad is based broadly on ARINC 653 partitioning +(https://en.wikipedia.org/wiki/ARINC_653) and process models. Like the +standard specifies, it employs 2 hierarchies of schedulable entities, +the thread cluster, and the thread (or partition and process in ARINC +nomenclature respectively). + + Each cluster needs to have a percentage of CPU time assigned at +creation (which can be modified later on), that the scheduler will +uphold with preemption, effectively promissing that any given cluster +will be given, at least, the specified execution time. Validy of the +cluster configuration is checked when adding, deleting, or modifying +individual clusters. + + Slack time (time not covered percent-wise by any cluster) will be +used as seen fit, while not breaking scheduler guarantees, in an +unspecified way. Thus, it shall be treated as UNDEFINED BEHAVIOUR by +system users, and it is the responsability of the user to configure the +scheduling to keep this into account. It is also why the above +paragraph mentions "at least", as unspecified time can be assigned to +other clusters. + + Ironclad supports multicore configurations, shuffling cores around +clusters, while always keeping the assigned slices for each cluster. + + +File: ironclad.info, Node: Thread clustering management, Prev: Scheduling basics, Up: Scheduling and RTC + +3.3 Thread clustering management +================================ + +Thread clusters are identified by an integer id, not unlike threads or +PIDs. Clusters rule over a group of threads, regardless of their +process of origin, and allow specifiying an algorithm and a percentage +over all the CPU time. + + The algorithm of a cluster affects how threads inside the cluster are +scheduled. The available algorithms are: + +‘SCHED_RR’ + A prioritized round robin. One can specify a quantum to use when + switching threads, while one can specify a priority using standard + POSIX niceness. *note getprio/setprio::. + + Priorities affect inter-thread quantum following the formula: + + timeout = quantum - ((quantum / 40) * niceness); + +‘SCHED_COOP’ + Cooperative scheduling, the scheduler will not attempt to preempt + unless explicitly requested by exiting or yielding. + + Additionally, by using the ‘SCHED_INTR’ flag, a cluster can be +configured to be interruptible, which makes the kernel able to interrupt +a thread and queue another during long waits, in order to increase +performance and responsiveness. This does not affect cluster-wide +scheduling guarantees. + + At startup, Ironclad will have a single interruptible cluster +assigned to 100% of execution time, configured to use a flat RR with a +reasonable quantum with cluster number ‘1’. Software is free to modify +it however it sees fit, it is just provided in order to have some +natural-ish behaviour for running software blissfully unaware of the +clusters beneath. + + Syscalls used for modifying clusters and their settings are +‘manage_tcluster’ and ‘delete_tcluster’, ‘create_tcluster’, and +‘switch_tcluster’. + + +File: ironclad.info, Node: Inter-process communication, Next: Memory architecture, Prev: Scheduling and RTC, Up: Top + +4 Inter-process communication +***************************** + +This chapter digs into the forms of IPC Ironclad supports, what they do, +and how they can help accomplish complex local or remote IPC. + +* Menu: + +* Pipes:: +* Futexes:: +* PTYs:: +* Signals:: +* Sockets:: + + +File: ironclad.info, Node: Pipes, Next: Futexes, Up: Inter-process communication + +4.1 Pipes +========= + +Ironclad features standard POSIX-like pipes, they are created using +*note pipe::. + + The standard size of pipes is 10 architectural pages. This size can +be modified using the following ‘fcntl’ calls. + + #define F_GETPIPE_SZ 7 // Get the size in bytes. + #define F_SETPIPE_SZ 8 // Set the size in bytes. + + +File: ironclad.info, Node: Futexes, Next: PTYs, Prev: Pipes, Up: Inter-process communication + +4.2 Futexes +=========== + +Standard Linux-like futexes. *note futex::. + + +File: ironclad.info, Node: PTYs, Next: Signals, Prev: Futexes, Up: Inter-process communication + +4.3 PTYs +======== + +Pseudo terminals (PTYs) are available in Ironclad, with a few quirks. +They are created using *note openpty::. + + PTYs, unlike other OSes like Linux, when created, do not populate +‘/dev’. They live exclusively as file descriptors, not unlike a pipe. +Apart of that they behave as you would expect when compared with other +UNIX-likes. + + +File: ironclad.info, Node: Signals, Next: Sockets, Prev: PTYs, Up: Inter-process communication + +4.4 Signals +=========== + +Ironclad implements standard POSIX signals. + + +File: ironclad.info, Node: Sockets, Prev: Signals, Up: Inter-process communication + +4.5 Sockets +=========== + +Standard sockets. *note socket::. + + +File: ironclad.info, Node: Memory architecture, Next: Userland state and conditions, Prev: Inter-process communication, Up: Top + +5 Memory architecture +********************* + +This section delves into details on Ironclad’s memory management. + +* Menu: + +* Physical memory allocation:: +* Virtual memory:: +* Memory failures:: + + +File: ironclad.info, Node: Physical memory allocation, Next: Virtual memory, Up: Memory architecture + +5.1 Physical memory allocation +============================== + +Ironclad features two physical memory allocator choices for use, the +chosen allocator will be used both for kernel and userland allocations, +the standard and alloconly allocators. + + The standard allocator is a general purpose allocator for your +average everyday allocator needs. Its internally implemented as a +bitmap allocator with page-sized blocks and a quick cache for small +objects, along with some quick hardening features, like checksums. + + The alloconly option features several optimizations on top of the +usual allocator in order to save memory and tune operation, for usecases +where nor userland nor the kernel are wanted to deallocate memory at +all. + + +File: ironclad.info, Node: Virtual memory, Next: Memory failures, Prev: Physical memory allocation, Up: Memory architecture + +5.2 Virtual memory +================== + +The virtual memory architecture of Ironclad is quite simple, given the +need to avoid things like complex virtual memory management which could +influence predictability with page-related interrupts, and similar +features. For the same reason, memory overcommiting is not allowed. + + +File: ironclad.info, Node: Memory failures, Prev: Virtual memory, Up: Memory architecture + +5.3 Memory failures +=================== + +Ironclad is capable of answering to out of memory conditions as well as +hardware memory errors. + + For OOM failures, Ironclad will try to free internal storage used for +cache and retry allocation until it is deemed the situation is not +recoverable, in which case it will panic. To this end, Ironclad will +kill high memory consuming processes, this behaviour is configurable in +*note failure_policy::. + + For hardware memory failures, like RAM sticks going bad, handling +will depend on the underlying architecture. Behaviour is configurable +as well under *note failure_policy::. + + +File: ironclad.info, Node: Userland state and conditions, Next: Security and integrity facilities, Prev: Memory architecture, Up: Top + +6 Userland state and conditions +******************************* + +Ironclad places several requirements on loaded userland programs, from +the format of which, to memory layout. + +* Menu: + +* Program loading:: +* Memory layout:: + + +File: ironclad.info, Node: Program loading, Next: Memory layout, Up: Userland state and conditions + +6.1 Program loading +=================== + +Loaded programs must be under the ELF64 format, other formats may be +supported in the future. Loaded programs can be static or relocatable. + + ‘ld.so’, or any other linker program detailed on the interpreter +segment of the ELF executable will be a special case, it is assumed to +be relocatable. + + +File: ironclad.info, Node: Memory layout, Prev: Program loading, Up: Userland state and conditions + +6.2 Memory layout +================= + +Loaded programs are loaded at address 0, and they are free to allocate +themselves at nearby offsets. + + ‘ld.so’ and entities like stacks, anonymous memory regions, and +others, will be randomized on load time following ASLR +(https://en.wikipedia.org/wiki/Address_space_layout_randomization), and +must not be relied upon. It is up to ‘ld.so’ to optionally place +additionally loaded libraries at random offsets. + + The stack is a fixed ‘128 KiB’ in size, and is not executable, by +default. + + +File: ironclad.info, Node: Security and integrity facilities, Next: Debugging facilities, Prev: Userland state and conditions, Up: Top + +7 Security and integrity facilities +*********************************** + +This chapter digs into the various Ironclad-specific security and +integrity features available for the user. + +* Menu: + +* Users and groups:: +* Mandatory access control (MAC):: +* Resource limits:: +* Miscellaneous measures:: + + +File: ironclad.info, Node: Users and groups, Next: Mandatory access control (MAC), Up: Security and integrity facilities + +7.1 Users and groups +==================== + +As part of the UNIX-like package, Ironclad supports the traditional +UID/EUID values per-process for basic access protection, both for files +and syscalls. + + Unlike most UNIX systems, the ‘setuid’ bit is fully ignored and not +implemented, instead, as part of the mandatory access control facilities +explained later, ‘MAC_CAP_SETUID’ is provided, with similar +functionality. + + Groups are not supported in any shape or form. + + +File: ironclad.info, Node: Mandatory access control (MAC), Next: Resource limits, Prev: Users and groups, Up: Security and integrity facilities + +7.2 Mandatory access control (MAC) +================================== + +Mandatory access control (MAC) is one of the main components of +Ironclad’s security. It does not necesarily help with preventing +breaches, but, when configured correctly, it can help mitigate +consequences to a massive degree. + + MAC in Ironclad consists on a series of settings inherited from +parent process to children, these settings come in the form of +capabilities and file filters. + + Capabilities are a set of coarse permissions that restrict a process +on what it can and cannot do, only more restrictive capability +escalations are allowed, they are configured using *note +mac_capabilities::. + + The available capability list is: + +‘MAC_CAP_SCHED’ + The process will be allowed to change its own scheduling rules, + like modifying deadlines. + +‘MAC_CAP_SPAWN’ + The process will be allowed to spawn other processes and threads. + +‘MAC_CAP_ENTROPY’ + The process will have unrestricted access to the sources of entropy + of the kernel, this does not cover the UNIX-standard + ‘random/urandom’. + +‘MAC_CAP_SYS_MEM’ + The process will be able to allocate and deallocate both private + and shared memory regions. + +‘MAC_CAP_USE_NET’ + The process will be able to use networking. + +‘MAC_CAP_SYS_NET’ + The process will be able to modify networking, for things like + hostname changing. + +‘MAC_CAP_SYS_MNT’ + The process will be able to modify, add, and remove mountpoints. + +‘MAC_CAP_SYS_PWR’ + The process will be able to modify power settings, along doing + things like shutdown and reboot. + +‘MAC_CAP_PTRACE’ + The process will be able to use ptrace on children processes. + +‘MAC_CAP_SETUID’ + The process will be able to change its effective and global UIDs + without checks. + +‘MAC_CAP_SYS_MAC’ + The process will be able to add allowed inodes to the MAC + definitions, along with modifying hard limits for system resources. + +‘MAC_CAP_CLOCK’ + The process will be able to access clocks syscalls like *note + clock:: or ‘clock_nanosleep’, as well as setting the time of clocks + that can do so. This is provided as reading clock time can + sometimes be used as a way to coordinate attacks. + +‘MAC_CAP_SIGNALALL’ + Processes by default need to share the user with another one to + either kill it or send a signal. This capability allows to send + signals to all processes, regardless of the user issuing it. + +‘MAC_CAP_SETGID’ + The process will be able to change its effective and global UIDs + without checks. + +‘MAC_CAP_IPC’ + The process will be able to bypass UID/GID and mode checks when + interacting with SystemV-style IPC objects, like the ones you can + create with *note shmget::. + + File filters consist on permissions given to specific paths and +files, that, just like capabilities, get inherited from parent to child +processes. Access to inodes and devices can be granted using *note +add_mac_permissions::. + + The action to take on MAC violations can be set with *note +set_mac_enforcement::. Possible values include denying requests, +killing the offending part outright, or denying and additionally logging +the event. + + Once booted, MAC is enabled and gives full access to all +capabilities, and offers full access to all inodes and devices. It is +up to userland to further restrict access, and for those settings to +trickle down to children processes. File access enforcement will kick +in only once the first filter is added with *note add_mac_permissions::. + + +File: ironclad.info, Node: Resource limits, Next: Miscellaneous measures, Prev: Mandatory access control (MAC), Up: Security and integrity facilities + +7.3 Resource limits +=================== + +As part of the UNIX-like package, Ironclad supports various resource +limits that, in the case of Ironclad, are built inside MAC, and are +passed down like MAC capabilities (*note Mandatory access control +(MAC)::). *Note getrlimit/setrlimit::. + + Limits mostly act as you would expect them to behave, and they are +all initialized to the maximum possible value, there are only 2 quirks: +For one, limits are only deescalatory (like MAC), you can only go down, +never up, and, since Ironclad does not support dynamically growing +stacks, the initial size is dictated (for the stacks created by the +kernel) with ‘RLIMIT_STACK’. Thus, Ironclad does not start that limit +with the maximum value, but a smaller valid size. + + A short description of the available limits and their default values +is: + +‘RLIMIT_CORE’ + Size of corefile dumps, by default 0 (disabling it). + +‘RLIMIT_CPU’ + Limit of CPU time a process can consume in seconds, by default -1 + (max value). + +‘RLIMIT_FSIZE’ + Limit of individual file size a process can write, by default -1 + (max value). + +‘RLIMIT_NOFILE’ + Limit of files a process can open on top of other system limits, by + default -1 (max value). + +‘RLIMIT_STACK’ + Limit of stack size for a process, by default 4 MiB. + +‘RLIMIT_AS’ + Limit of maximum address size space used by a process, by default + -1 (max value). + + +File: ironclad.info, Node: Miscellaneous measures, Prev: Resource limits, Up: Security and integrity facilities + +7.4 Miscellaneous measures +========================== + +7.4.1 W^X +--------- + +Ironclad does not allow mapping memory sections write and execute at the +same time, this helps mitigate several kinds of memory corruption +vulnerabilities by making it much harder to transform them into +arbitrary code execution. + + +File: ironclad.info, Node: Debugging facilities, Next: Syscalls, Prev: Security and integrity facilities, Up: Top + +8 Debugging facilities +********************** + +This chapter digs into the various Ironclad-specific debugging features +available for the user. + +* Menu: + +* Corefile and process dumping:: +* Program tracing:: + + +File: ironclad.info, Node: Corefile and process dumping, Next: Program tracing, Up: Debugging facilities + +8.1 Corefile and process dumping +================================ + +Ironclad implements corefile dumping when a process irreparably crashes, +which can be controlled and entirely disabled if wanted with the related +limits, see *note Resource limits::. + + Corefiles are generated on a path created as: + + /tmp/.core + + This path is not configurable, and will only be created and +overwritten if the file des not exist already. + + As seen in *note Resource limits::, corefiles are disabled by +default, this is done since core files can potentially contain private, +sensible information that could be exploited by an attacker. + + The format is a register dump of the process. + + +File: ironclad.info, Node: Program tracing, Prev: Corefile and process dumping, Up: Debugging facilities + +8.2 Program tracing +=================== + +Ironclad allows tracing children processes for a variety of information, +MAC willing, see *note ptrace::. + + +File: ironclad.info, Node: Syscalls, Next: Filesystem support and interfaces, Prev: Debugging facilities, Up: Top + +9 Syscalls +********** + +Syscall are the main method for userland to interface with the kernel’s +facilities, this section delves into the mechanism and how it works. + +* Menu: + +* Table and target quirks:: +* Errno:: +* exit:: +* arch_prctl:: +* open:: +* close:: +* read/write:: +* seek:: +* mmap/mprotect/munmap:: +* getpid/getppid:: +* exec:: +* clone:: +* wait:: +* socket:: +* sethostname:: +* unlink:: +* fstat:: +* chdir:: +* ioctl:: +* sched_yield:: +* delete_tcluster:: +* pipe:: +* rename:: +* sysconf:: +* spawn:: +* gettid:: +* manage_tcluster:: +* fcntl:: +* exit_thread:: +* getrandom:: +* mac_capabilities:: +* add_mac_permissions:: +* set_mac_enforcement:: +* mount/umount:: +* readlink:: +* getdents:: +* sync:: +* mknod:: +* truncate:: +* bind:: +* mkdir:: +* symlink:: +* connect:: +* openpty:: +* fsync:: +* link:: +* ptrace:: +* listen:: +* accept:: +* getrlimit/setrlimit:: +* access:: +* ppoll:: +* getuid/geteuid:: +* setuids:: +* fchmod:: +* umask:: +* reboot:: +* fchown:: +* pread/pwrite:: +* getsockname:: +* getpeername:: +* shutdown:: +* futex:: +* clock:: +* clock_nanosleep:: +* getrusage:: +* recvfrom/sendto:: +* config_netinter:: +* utimes:: +* create_tcluster:: +* switch_tcluster:: +* sigprogmask:: +* sigaction:: +* send_signal:: +* getprio/setprio:: +* getgid/getegid:: +* setgids:: +* getgroups/setgroups:: +* ttyname:: +* fadvise:: +* shmat:: +* shmctl:: +* shmdl:: +* shmget:: +* getsockopt/setsockopt:: +* gettidid/settidid:: +* failure_policy:: + + +File: ironclad.info, Node: Table and target quirks, Next: Errno, Up: Syscalls + +9.1 Table and target quirks +=========================== + +Syscalls in Ironclad have an architecture-dependent ABI, but the table +and its indexes are always the same, this is done to simplify +development. and here is a list of the supported architectures and the +ABI for each of them. Here is the table: + + 0. *note exit::. + 1. *note arch_prctl::. + 2. *note open::. + 3. *note close::. + 4. *note read: read/write. + 5. *note write: read/write. + 6. *note seek::. + 7. *note mmap: mmap/mprotect/munmap. + 8. *note munmap: mmap/mprotect/munmap. + 9. *note getpid: getpid/getppid. + 10. *note getppid: getpid/getppid. + 11. *note exec::. + 12. *note clone::. + 13. *note wait::. + 14. *note socket::. + 15. *note sethostname::. + 16. *note unlink::. + 17. *note fstat::. + 18. Empty. + 19. *note chdir::. + 20. *note ioctl::. + 21. *note sched_yield::. + 22. *note delete_tcluster::. + 23. *note pipe::. + 24. *note getuid: getuid/geteuid. + 25. *note rename::. + 26. *note sysconf::. + 27. *note spawn::. + 28. *note gettid::. + 29. *note manage_tcluster::. + 30. *note fcntl::. + 31. *note exit_thread::. + 32. *note getrandom::. + 33. *note mprotect: mmap/mprotect/munmap. + 34. *note sync::. + 35. *note set_mac_capabilities: mac_capabilities. + 36. *note get_mac_capabilities: mac_capabilities. + 37. *note add_mac_permissions::. + 38. *note set_mac_enforcement::. + 39. *note mount: mount/umount. + 40. *note umount: mount/umount. + 41. *note readlink::. + 42. *note getdents::. + 43. *note mknod::. + 44. *note truncate::. + 45. *note bind::. + 46. *note symlink::. + 47. *note connect::. + 48. *note openpty::. + 49. *note fsync::. + 50. *note link::. + 51. *note ptrace::. + 52. *note listen::. + 53. *note accept::. + 54. *note getrlimit: getrlimit/setrlimit. + 55. *note setrlimit: getrlimit/setrlimit. + 56. *note access::. + 57. *note ppoll::. + 58. *note geteuid: getuid/geteuid. + 59. *note setuids::. + 60. *note fchmod::. + 61. *note umask::. + 62. *note reboot::. + 63. *note fchown::. + 64. *note pread: pread/pwrite. + 65. *note pwrite: pread/pwrite. + 66. *note getsockname::. + 67. *note getpeername::. + 68. *note shutdown::. + 69. *note futex::. + 70. *note clock::. + 71. *note clock_nanosleep::. + 72. *note getrusage::. + 73. *note recvfrom: recvfrom/sendto. + 74. *note sendto: recvfrom/sendto. + 75. *note config_netinter::. + 76. *note utimes::. + 77. *note create_tcluster::. + 78. *note switch_tcluster::. + 79. *note sigprogmask::. + 80. *note sigaction::. + 81. *note send_signal::. + 82. *note getprio: getprio/setprio. + 83. *note setprio: getprio/setprio. + 84. *note getgid: getgid/getegid. + 85. *note getegid: getgid/getegid. + 86. *note setgids::. + 87. *note getgroups: getgroups/setgroups. + 88. *note setgroups: getgroups/setgroups. + 89. *note ttyname::. + 90. *note fadvise::. + 91. *note shmat::. + 92. *note shmctl::. + 93. *note shmdl::. + 94. *note shmget::. + 95. *note getsockopt: getsockopt/setsockopt. + 96. *note setsockopt: getsockopt/setsockopt. + 97. *note gettidid: gettidid/settidid. + 98. *note settidid: gettidid/settidid. + +9.1.1 riscv64-limine +-------------------- + +Syscalls are invoked in Ironclad by using ‘ecall’. + + The index of the syscall is passed over ‘a7’, while the return value +is returned in ‘a0’, errno is returned in ‘a1’, arguments are passed +over ‘a0’ to ‘a6’. + +9.1.2 x86_64-limine +------------------- + +Syscalls are invoked in Ironclad by using ‘syscall’. + + The index of the syscall is passed over ‘%rax’, while the return +value is returned in ‘%rax’, errno is returned on ‘%rdx’, arguments are +passed over ‘%rdi’, ‘%rsi’, ‘%rdx’, ‘%r12’, ‘%r8’, ‘%r9’, and ‘%r10’, +following the SysV ABI. + + +File: ironclad.info, Node: Errno, Next: exit, Prev: Table and target quirks, Up: Syscalls + +9.2 Errno +========= + +Errno are values returned by the kernel to detail the nature of an error +in depth. When a syscall does not error out, it returns the value 0 on +the errno field. Here is a table of all the possible errno and its +values and meaning: + +‘ERANGE (3)’ + The passed value was not big enough. + +‘EACCES (1002)’ + The passed access for a variable points to bad memory. + +‘EAGAIN (1006)’ + The requested resource is not available at the moment. + +‘EBUSY (1010)’ + The requested resource is busy and cannot handle the request. + +‘ECHILD (1012)’ + The passed value is not a child process. + +‘EFAULT (1020)’ + The passed value would make the program fault. + +‘EFBIG (1021)’ + File too large, or an attempt to surpass the limit on file size was + issued. + +‘EIDRM (1023)’ + Invalid identifier. + +‘EINVAL (1026)’ + The passed value is not valid for the called syscall. + +‘EIO (1027)’ + The requested operation failed at a device level. + +‘ELOOP (1030)’ + Too many symlinks were encountered when resolving a requested path. + +‘EMFILE (1031)’ + Too many files were opened by the process. + +‘ENAMETOOLONG (1036)’ + The passed value is too big for the syscall. + +‘ENOENT (1043)’ + No such file or directory. + +‘ENOSYS (1051)’ + The requested syscall or flag is not implemented. + +‘ENOTTY (1058)’ + The passed argument is not a TTY. + +‘ENOTSUPP (1060)’ + The passed argument is valid, but does not implement the operation. + Mostly used for sockets and other networking elements when dealing + with protocols. + +‘EPERM (1063)’ + Bad permissions. + +‘ESPIPE (1069)’ + A seek was issued to an invalid device. + +‘ESRCH (1070)’ + The passed item could not be found after a search. + +‘EBADFD (1081)’ + The passed FD is in a bad state or invalid. + + +File: ironclad.info, Node: exit, Next: arch_prctl, Prev: Errno, Up: Syscalls + +9.3 exit +======== + + void exit(uint64_t status); + + This syscall terminates the calling process "immediately". Any open +file descriptors belonging to the process to be closed, and any threads +of execution are terminated. + + This syscall does not return any value, but it sets errno on failure: + + • ‘EACCES’: MAC disallowed this, rookie mistake. + + +File: ironclad.info, Node: arch_prctl, Next: open, Prev: exit, Up: Syscalls + +9.4 arch_prctl +============== + + int arch_prctl(int code, uint64_t argument); + + This syscall interacts with architecture-specific thread-local +storage. For x86_64, these are the available codes: + +‘ARCH_SET_FS (1)’ + Sets ‘argument’ as the current thread’s FS. + +‘ARCH_GET_FS (2)’ + Stores the current thread’s FS into the variable pointed to by + ‘argument’. + +‘ARCH_SET_GS (3)’ + Sets ‘argument’ as the current thread’s FS. + +‘ARCH_GET_GS (4)’ + Stores the current thread’s GS into the variable pointed to by + ‘argument’. + + This syscall returns ‘0’ on success, and ‘-1’ on failure. errno is +to be set to the following values on failure: + + • ‘EINVAL’: ‘code’ is not valid. + + • ‘EFAULT’: ‘argument’ is outside the available address space. + + +File: ironclad.info, Node: open, Next: close, Prev: arch_prctl, Up: Syscalls + +9.5 open +======== + + int open(int dir_fd, char *path, int path_len, int flags); + + ‘open’ opens the passed file relative to ‘dir_fd’, depending on the +flags passed. It does not create the file if not existent. By default, +the file descriptor will remain open accross an ‘exec’. + + ‘flags’ can be an OR’d field of the following elements: + +‘O_RDONLY (0b000001)’ + Makes the file able to be read. + +‘O_WRONLY (0b000010)’ + Makes the file able to be written to. + +‘O_APPEND (0b000100)’ + Makes the file be opened at the end of the file, instead of the + beggining. + +‘O_CLOEXEC (0b001000)’ + Will make the file close when ‘exec’’d. + +‘O_NOFOLLOW (0b0100000000)’ + Do not follow symlinks when opening the file. + +‘O_NONBLOCK (0b1000000000)’ + Make the file not block on read or write operations when possible. + + The syscall returns the opened file descriptor or ‘-1’ on error, and +errno is set to the following: + + • ‘ENOENT’: The referenced file does not exist. + + • ‘EINVAL’: Combination of ‘flags’ is not valid. + + • ‘EMFILE’: Too many files are already owned by the process. + + • ‘EFAULT’: The passed path is outside the available address space. + + +File: ironclad.info, Node: close, Next: read/write, Prev: open, Up: Syscalls + +9.6 close +========= + + int close(int fd); + + ‘close’ closes an open file descriptor. Once no open references +exist of a file descriptor, its resources are freed, and the file +deleted if needed. + + The syscall returns 0 on success and -1 in failure, and errno is set +to: + + • ‘EBADF’: The passed file to ‘close’ is not valid. + + +File: ironclad.info, Node: read/write, Next: seek, Prev: close, Up: Syscalls + +9.7 read/write +============== + + ssize_t read(int fd, void *buffer, size_t count); + ssize_t write(int fd, void *buffer, size_t count); + + These syscalls attempts to read or write up to passed count from the +passed file descriptor. + + On files that support seeking, the operation commences at the file +offset, and the file offset is incremented by the number of bytes read +or written. If the file offset is at or past the end of file, no bytes +are read or written, and the operation returns zero. + + These syscalls returns the number of bytes operated on, or ‘-1’ on +failure. errno is to be set to: + + • ‘EBADF’: Bad file descriptor. + + • ‘EFAULT’: The passed buffer is not accessible. + + • ‘EINVAL’: The passed fd is not suitable for the operation. + + • ‘EFBIG’: When writing, the issued write would surpass the process + file size limit. + + • ‘EIO’: The requested operation failed at the device level. + + +File: ironclad.info, Node: seek, Next: mmap/mprotect/munmap, Prev: read/write, Up: Syscalls + +9.8 seek +======== + + off_t seek(int fd, off_t offset, int whence); + + This syscall repositions the file offset of the passed file +description to the passed offset according to the directive whence as +follows: + + • ‘SEEK_SET’ (1): Set to the passed offset. + + ‘SEEK_CUR’ (2): Set to the current offset plus the passed offset. + + ‘SEEK_END’ (4): Set to the size of the file plus the passed offset. + + This syscall returns the resulting offset, or ‘-1’ on failure. errno +is to be set to: + + • ‘EBADF’: Bad file descriptor. + + • ‘EINVAL’: The whence is malformed or the resulting offset would be + invalid. + + • ‘ESPIPE’: ‘seek’ was called on a TTY or a pipe. + + +File: ironclad.info, Node: mmap/mprotect/munmap, Next: getpid/getppid, Prev: seek, Up: Syscalls + +9.9 mmap/mprotect/munmap +======================== + + void *mmap(void *hint, size_t length, int protection, int flags, int fd, + off_t offset); + int mprotect(void *addr, size_t len, int prot); + int munmap(void *address, size_t length); + + ‘mmap’ creates a new mapping in the virtual address space of the +calling process. An address can be passed, if it is ‘null’, then the +kernel gets to choose the address, else, it is taken as a hint about +where to place the mapping. If a section of the mapping overlaps an +existing mapping, it will be ignored. + + ‘fd’ may be used to specify a device or inode in the filesystem to +back the memory region. For devices, the mmap operation has a different +meaning for each device. For framebuffer devices, for example, one can +make framebuffer windows this way. For inodes, the contents of the file +will be used to initialize the requested memory window, starting to read +from ‘offset’, filling with zeros the non-filled part, if any. This +kind of filling does not advance the reading counter of the passed +device or inode. + + ‘hint’ and ‘length’ are required to be aligned to page boundaries for +the running architecture, else it will fail. + + ‘protection’ and ‘flags’ are a bitfield of the following flags: + + • ‘PROT_READ’ (0b00001): Read permissions. + + • ‘PROT_WRITE’ (0b00010): Write permissions. + + • ‘MAP_FIXED’ (0b00100): Use hint as a hard requirement. + + • ‘MAP_ANON’ (0b01000): Mapping is not backed by any file, and ‘fd’ + is ignored. + + • ‘MAP_WC’ (0b10000): Map using write-combining when possible. + + ‘munmap’ will unmap a range for the virtual address space of the +calling process, this values must be the same as passed and returned by +‘mmap’, partial unmapping is allowed. + + ‘mprotect’ allows to change the permission of a range of memory of +the passed length pointed by ‘addr’, previously mapped by the caller. +The format of ‘prot’ is the same as ‘mmap’. + + ‘mmap’ returns a pointer to the allocated area, or ‘-1’ on failure. +‘munmap’ and ‘mprotect’ both returns ‘0’ on success and ‘-1’ on failure. +All the functions set the following errno: + + • ‘EINVAL’: Bad hints or parameters. + + • ‘ENOMEM’: The operation could not be completed due to a lack of + memory. + + • ‘EACCES’: MAC disallowed this. + + +File: ironclad.info, Node: getpid/getppid, Next: exec, Prev: mmap/mprotect/munmap, Up: Syscalls + +9.10 getpid/getppid +=================== + + int getpid(); + int getppid(); + + ‘getpid’ returns the process ID (PID) of the calling process. +‘getppid’ does the same but it returns the one of the parent, which is +the process that created the callee by a myriad of ways. + + This functions are always successful. + + +File: ironclad.info, Node: exec, Next: clone, Prev: getpid/getppid, Up: Syscalls + +9.11 exec +========= + + int exec(const char *path, int path_len, char *const argv[], int argv_len, char *const envp[], envp_len); + + This syscall executes the program passed with the passed argv and +evp, closing all the threads of the callee process and putting a single +one in place for the new program. Other process-specific elements like +file descriptors are untouched. + + This syscall only returns in failure with ‘-1’ with the following +errno: + + • ‘EINVAL’: One of the passed strings or arrays is not valid. + + • ‘ENOENT’: The file passed in path doesnt exist. + + • ‘EACCES’: The file couldn’t be launched out of a permission error. + + +File: ironclad.info, Node: clone, Next: wait, Prev: exec, Up: Syscalls + +9.12 clone +========== + + #define CLONE_PARENT 0b01 + #define CLONE_THREAD 0b10 + + pid_t clone(void *callback, uint64_t arg, void *stack, int flags, void *tls); + + This syscall creates a new thread or process depending on ‘flags’. +‘flags’ can be an OR’d combination of the following flags: + + • ‘CLONE_PARENT’ (0b01): The process or thread will be a child of the + parent of the caller process, instead of the caller process itself. + + ‘CLONE_THREAD’ (0b10): If set, a thread will be created and added + to the parent process, if not set, a process will be created + instead. The child process will only have the callee thread + cloned. The other threads, if any, are not cloned. + + This syscall returns ‘0’ on success for the child, and the children +PID or TID to the parent, in failure, the parent gets ‘-1’ with the +following errno: + + • ‘EAGAIN’: The system could not create the entity right now, try + again later. + + • ‘EINVAL’: ‘CLONE_PARENT’ is specified and the caller process has no + parent. + + • ‘EACCES’: MAC disallowed this. + + +File: ironclad.info, Node: wait, Next: socket, Prev: clone, Up: Syscalls + +9.13 wait +========= + + pid_t wait(pid_t pid, int *status, int options); + + This syscall suspends execution until the passed pid exits, to then +store the exit code in ‘status’. + + ‘wait’ allows the option ‘WNOHANG(0b000010)’ for non-blocking +waiting, if the process has not finished yet, ‘0’ will be returned. + + ‘pid’ can be a PID the callee is a parent of, or ‘-1’ to wait on all +the PIDs the callee has as children. ‘0’, which waits on all the +children of a process group, is not implemented yet. + + This syscall returns the PID waited on or ‘-1’ on failure, along with +the following errno: + + • ‘ECHILD’: The passed PID does not exist. + + • ‘EINVAL’: The passed options are not correct or the passed PID is + ‘0’ + + +File: ironclad.info, Node: socket, Next: sethostname, Prev: wait, Up: Syscalls + +9.14 socket +=========== + + #define AF_INET 1 + #define AF_INET6 2 + #define AF_UNIX 3 + + #define SOCK_DGRAM 0b000000000000000001 + #define SOCK_RAW 0b000000000000000010 + #define SOCK_STREAM 0b000000000000000100 + #define SOCK_SEQPACKET 0b000000000000001000 + #define SOCK_NONBLOCK 0b001000000000000000 + #define SOCK_CLOEXEC 0b010000000000000000 + #define SOCK_CLOFORK 0b100000000000000000 + int socket(int domain, int type); + + This syscall for creating sockets, the passed fields can be used for +selecting the type of socket to create. The available sockets type are: + + • ‘AF_INET’: Basically IPv4 socket. + + The address of a INET domain socket takes the shape of + + struct sockaddr_in { + uint32_t sin_family; + uint16_t sin_port; + char sin_addr[4]; + uint8_t pad[8]; + }; + + ‘type’ can be one of ‘SOCK_DGRAM’ or ‘SOCK_STREAM’. ‘SOCK_DGRAM’ + will be translated to ‘TCP’, while ‘SOCK_STREAM’ will be translated + to ‘UDP’. + + • ‘AF_INET6’: Basically IPv6 socket. + + The address of a INET domain socket takes the shape of + + struct sockaddr_in6 { + uint32_t sin6_family; + uint16_t sin6_port; + uint32_t sin6_flowinfo; + char sin6_addr[16]; + uint32_t sin6_scope_id; + }; + + ‘type’ can be one of ‘SOCK_DGRAM’ or ‘SOCK_STREAM’. ‘SOCK_DGRAM’ + will be translated to ‘TCP’, while ‘SOCK_STREAM’ will be translated + to ‘UDP’. + + • ‘AF_UNIX’: UNIX domain socket for local communication, this sockets + can be unnamed or bound to filesystem paths. + + The address of a UNIX domain socket takes the shape of + + struct sockaddr_un { + uint32_t sun_family; // AF_UNIX. + char path[]; // Must be null terminated. + }; + + ‘type’ can be one of: + + • ‘SOCK_DGRAM’: Unreliable, connection-less, datagram-based + interface. When used with INET protocols, it will correspond to + UDP. When connected, these sockets will just cache the address for + further reception / sending. + • ‘SOCK_STREAM’: Reliable, connection-based stream-based interface. + Connection, accepting, and listening will be necessary for a proper + handshake. + • ‘SOCK_RAW’: Raw communication directly with the domain layer. When + using these, no TCP or UDP will be done whatsoever, and the user + will be free to implement their own protocol on top, or none at all + and just use the domain datagram transport. Not supported for some + protocols, like UNIX domain sockets. + • ‘SOCK_SEQPACKET’: Sequenced-packet socket that is + connection-oriented, preserves message boundaries, and delivers + messages in the order that they were sent. + + Any socket type may have ‘type’ be OR’ed with ‘SOCK_NONBLOCK’ or +‘SOCK_CLOEXEC’ for setting the created socket nonblock or cloese on exec +respectively. + + The syscall returns the resulting FD or ‘-1’ on failure, with the +following errno: + + • ‘EINVAL’: Invalid combination of flags. + • ‘EMFILE’: No available file descriptor slots. + + +File: ironclad.info, Node: sethostname, Next: unlink, Prev: socket, Up: Syscalls + +9.15 sethostname +================ + + int sethostname(const char *buffer, size_t length); + + This syscall sets the kernel hostname to the passed string. ‘0’ is +returned on success and ‘-1’ on failure, with the following errno: + + • ‘EFAULT’: The passed buffer points to an invalid address. + + • ‘EINVAL’: The passed length is bigger than the kernel can handle or + 0. + + • ‘EACCES’: MAC did not allow this. + + +File: ironclad.info, Node: unlink, Next: fstat, Prev: sethostname, Up: Syscalls + +9.16 unlink +=========== + + int unlink(int dir_fd, const char *path, int path_len); + + The syscall queues for deletion the file pointed to by ‘path’. If +‘path’ points to a directory, it must be empty. + + The syscall returns ‘0’ or ‘-1’ on failure, with the following errno: + + • ‘ENOENT’: ‘delete’ points to a file not valid for deletion, if at + all. + + +File: ironclad.info, Node: fstat, Next: chdir, Prev: unlink, Up: Syscalls + +9.17 fstat +========== + + struct stat { + dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + off_t st_size; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + blksize_t st_blksize; + blkcnt_t st_blocks; + }; + + int fstat(int dir_fd, char *path, int len, struct stat *statbuf, + int flags); + + This syscalls return information about a file, be it an already +opened one with ‘dir_fd’ and ‘AT_EMPTY_PATH’ in ‘flags’, or by +relatively opening, either following or not following symlinks with +‘AT_SYMLINK_NOFOLLOW’. + + ‘0’ is returned on success, ‘-1’ on failure, with the following +errno: + + • ‘EBADF’: The passed path or file descriptor is not valid. + + • ‘ENOENT’: The file pointed by ‘path’ does not exist. + + • ‘EFAULT’: The passed address for the path or stat buffer is not + valid. + + +File: ironclad.info, Node: chdir, Next: ioctl, Prev: fstat, Up: Syscalls + +9.18 chdir +========== + + int chdir(int fd); + + This syscalls will set the callee’s process current working directory +to the passed FD, which must point to a directory. + + The syscall returns ‘0’ on success and ‘-1’ on failure, with the +following errno: + + • ‘EBADFD’: The passed descriptor is not a valid directory. + + +File: ironclad.info, Node: ioctl, Next: sched_yield, Prev: chdir, Up: Syscalls + +9.19 ioctl +========== + + int ioctl(int fd, unsigned long request, void *argument); + + This syscall manipulates the underlying device parameters of special +files. It allows a device-dependent API for fetching and setting +several modes. + + Despite not all ioctl calls needing a specific value for their +arguments, due to current limitations, all arguments must point to valid +memory, regardless of whether it ends up used or not. + + ‘ioctl’ returns ‘0’ on success and ‘-1’ on failure, and sets the +following errno: + + • ‘ENOTTY’: The passed file does not support the passed ioctl. + + • ‘EBADF’: The passed file does not exist for the process. + + • ‘EFAULT’: The passed argument is in non-accesible memory + + +File: ironclad.info, Node: sched_yield, Next: delete_tcluster, Prev: ioctl, Up: Syscalls + +9.20 sched_yield +================ + + int sched_yield(void); + + This syscall relinquishes execution of the caller thread. Its up for +the kernel how far in the queue of execution this thread will go. + + This syscall returns ‘0’ always, as it never fails, this is done for +compatibility with POSIX instead of having a ‘void’ return type. + + +File: ironclad.info, Node: delete_tcluster, Next: pipe, Prev: sched_yield, Up: Syscalls + +9.21 delete_tcluster +==================== + + int delete_tcluster(int cluster); + + This syscall deletes the passed thread cluster, will only succeed if +the cluster has no associated threads. + + The syscall returns ‘0’ on success and ‘-1’ on failure, with the +following errno: + + • ‘EINVAL’: The passed cluster does not exist or still has threads. + + +File: ironclad.info, Node: pipe, Next: rename, Prev: delete_tcluster, Up: Syscalls + +9.22 pipe +========= + + int pipe(int pipefd[2], int flags); + + This syscalls creates a pipe with the passed flags and returns the +registered file descriptors in ‘pipefd’. Index ‘0’ is the reader end, +‘1’ is the writing one. + + The only available flag for use is ‘O_NONBLOCK’. + + The syscall returns ‘0’ on success and ‘-1’ on failure, with the +following errno: + + • ‘EFAULT’: ‘pipefd’ points to bogus memory. + • ‘EMFILE’: No available file descriptor slots. + + +File: ironclad.info, Node: rename, Next: sysconf, Prev: pipe, Up: Syscalls + +9.23 rename +=========== + + #define RENAME_NOREPLACE 1 + int rename(int sourcedirfd, const char *sourcepath, size_t sourcelen, + int targetirfd, const char *targetpath, size_t targetlen, int flags); + + This syscalls renames a file in an atomic operation, it is only +available in between files in the same mountpoint. If ‘targetpath’ +exists, it will be replaced, ‘RENAME_NOREPLACE’ may be passed in ‘flags’ +for making the call fail in said case instead of replacing silently. + + The syscall return the new fd on success and ‘-1’ on failure. The +errno codes set on failure are: + + • ‘EFAULT’: One of the passed values is outside addressable memory. + + • ‘ENAMETOOLONG’: The passed path is too long. + + • ‘EIO’: The operation could not be done out of an internal error. + + +File: ironclad.info, Node: sysconf, Next: spawn, Prev: rename, Up: Syscalls + +9.24 sysconf +============ + + #define SC_PAGESIZE 1 // Page size of the system. + #define SC_OPEN_MAX 2 // Maximum amount of files per process. + #define SC_HOST_NAME_MAX 3 // Maximum length of hostnames. + #define SC_AVPHYS_PAGES 4 // Number of free physical pages. + #define SC_PHYS_PAGES 5 // Number of total available pages. + #define SC_NPROCESSORS_ONLN 6 // Number of processors active and used. + #define SC_TOTAL_PAGES 7 // Total amount of installed memory pages. + #define SC_LIST_PROCS 8 // List all processes of the system. + #define SC_LIST_MOUNTS 9 // List all mountpoints of the system. + #define SC_UNAME 10 // Fetch basic system information. + #define SC_CHILD_MAX 11 // Maximum number of children for the user. + #define SC_LIST_THREADS 12 // List all threads of the system. + #define SC_LIST_CLUSTERS 13 // List all thread clusters of the system. + #define SC_LIST_NETINTER 14 // List all network interfaces. + #define SC_DUMPLOGS 15 // Dump kernel logging to a buffer. + #define SC_NGROUPS_MAX 16 // Max number of supplementary groups. + #define SC_SYMLOOP_MAX 17 // Max number of symbolic loops to follow. + #define SC_LIST_FILELOCKS 18 // List all advisory file locks. + #define SC_LOADAVG 19 // Dump load averages. + #define SC_MEMINFO 20 // Dump memory information. + + long int sysconf(int request, uintptr_t addr, uintptr_t len); + + This syscalls fetches the requested information in ‘request’ and +returns it. + + Depending on the request, ‘addr’ and ‘len’ may be used for +determining the address of a buffer and its length for reporting +information that doesn’t fit on the usual return value. The options +where they have meaning are: + + • ‘SC_LIST_PROCS’: ‘addr’ points to an array of items, and ‘len’ is + the count of bytes reserved in the array. The items have the + structure: + + struct procinfo { + char id[20]; + uint16_t id_len; + uint16_t ppid; + uint16_t pid; + uint32_t uid; + uint32_t flags; + } __attribute__((packed)); + + The total number of processes is returned, even if it doesnt fit in + the passed array. + + • ‘SC_LIST_MOUNTS’: ‘addr’ points to an array of items, and ‘len’ is + the count of bytes reserved in the array. The items have the + structure: + + struct mountinfo { + uint32_t fs_type; + uint32_t flags; + char source[20]; + uint32_t source_len; + char location[20]; + uint32_t location_len; + }; + + The total number of mounts is returned, even if it doesnt fit in + the passed array. + + • ‘SC_UNAME’: ‘addr’ points to the following structure, and ‘len’ is + the length in bytes of said structure: + + struct utsname { + char sysname[65]; // Kernel name (e.g., "Ironclad") + char nodename[65]; // Hostname of the machine. + char release[65]; // Kernel release (e.g., "2.6.28") + char version[65]; // Kernel release, again. + char machine[65]; // Hardware identifier (e.g., "x86") + }; + + In success, the returned value will be ‘0’. + + • ‘SC_LIST_THREADS’: ‘addr’ points to an array of items, and ‘len’ is + the count of bytes reserved in the array. The items have the + structure: + + struct threadinfo { + uint16_t tid; + int16_t niceness; + uint16_t tcid; + uint16_t pid; + }; + + The total number of threads is returned, even if it doesnt fit in + the passed array. + + • ‘SC_LIST_CLUSTERS’: ‘addr’ points to an array of items, and ‘len’ + is the count of bytes reserved in the array. The items have the + structure: + + struct tclusterinfo { + uint16_t tcid; + uint16_t tflags; + uint16_t tquantum; + }; + + The total number of thread clusters is returned, even if it doesnt + fit in the passed array. + + • ‘SC_LIST_NETINTER’: ‘addr’ points to an array of items, and ‘len’ + is the count of bytes reserved in the array. The items have the + structure: + + struct netinterface { + char device[64]; // null terminated. + uint64_t flags; + uint8_t mac_addr[6]; + uint8_t ip4_addr[4]; + uint8_t ip4_subnet[4]; + uint8_t ip6_addr[16]; + uint8_t ip6_subnet[16]; + }; + + • ‘SC_DUMPLOGS’: ‘addr’ points to a string to store the buffer, which + is an array of 80-char long strings. ‘len’ is the length of the + buffer. The total length of the kernel buffer is returned, + regardless of whether it fits or not. + + • ‘SC_LIST_FILELOCKS’: ‘addr’ points to an array of items, and ‘len’ + is the count of bytes reserved in the array. The items have the + structure: + + struct flock_info { + uint32_t pid; + uint32_t mode; + uint64_t start; + uint64_t length; + uint64_t dev_id; + uint64_t inode; + }; + + • ‘SC_LOADAVG’: ‘addr’ points to an array of at least 3 integers, and + ‘len’ is the count of bytes reserved in the array. The array has + the structure: + + uint32_t array[3]; + + The values the number of threads in the system run queue averaged + over various periods of time. The 3 samples correspond to the + averages of 1, 5, and 15 minutes, respectively. It can be used as + a measure of relative load. The values are to be divided by 100 + before being used. + + • ‘SC_MEMINFO’: ‘len’ is ignored and ‘addr’ points to a structure as + such: + + struct mem_info { + // All data is in bytes. + uint64_t phys_total; // Total physical memory of the system. + uint64_t phys_available; // Non-reserved memory managed by the system. + uint64_t phys_free; // Free memory available to the system. + uint64_t shared_usage; // Amount of shared memory in the system. + uint64_t kernel_usage; // Amount of memory in use by the kernel. + uint64_t table_usage; // Of the kernel, amount in use for page tables. + uint64_t poison_usage; // Memory marked by the hardware as faulty. + }; + + ‘0’ is returned on success. + + The syscall return the requested information on success and ‘-1’ on +failure. If the requested value can also be ‘-1’, errno must be +checked. + + The errno codes set on failure are: + + • ‘EINVAL’: Invalid request. + + +File: ironclad.info, Node: spawn, Next: gettid, Prev: sysconf, Up: Syscalls + +9.25 spawn +========== + + pid_t spawn(const char *path, int path_len, char *const argv[], + int argv_len, char *const envp[], int envp_len, uint64_t *caps); + + This syscall spawns a child process in a way similar to what a +‘clone’+‘exec’ could be used for, but more efficiently, given it doesn’t +need to copy the address space just to overwrite it. + + File descriptors are copied and treated the same way a ‘fork’ +followed by an ‘exec’ call would. That is, ‘FD_CLOEXEC’ FDs are closed, +and ‘FD_CLOFORK’ FDs are not carried over. + + The argument ‘caps’, if not ‘NULL’, points to a capability set in the +same format as *note mac_capabilities::. This can be useful for +deescalating capabilities in the same convenient way as a call to +‘mac_capabilities’ in between ‘clone’ and ‘exec’ could. + + The syscall returns the created PID on success and ‘0’ on failure, +with the errno codes being: + + • ‘EAGAIN’: The system could not create the process right now. + + • ‘EFAULT’: One or more of the passed arguments point to invalid + memory. + + • ‘EACCES’: MAC disallowed this. + + +File: ironclad.info, Node: gettid, Next: manage_tcluster, Prev: spawn, Up: Syscalls + +9.26 gettid +=========== + + int gettid(void); + + This syscall returns the current thread id. It never fails. + + +File: ironclad.info, Node: manage_tcluster, Next: fcntl, Prev: gettid, Up: Syscalls + +9.27 manage_tcluster +==================== + + #define SCHED_RR 0b001 + #define SCHED_COOP 0b010 + #define SCHED_INTR 0b100 + + int manage_tcluster(int cluster, int flags, int quantum, int percentage); + + This syscall sets settings for the passed cluster. + + The syscall returns ‘0’ on success and ‘-1’ on failure, with the +following errno: + + • ‘EACCES’: MAC did not allow the operation. + • ‘EINVAL’: One of the passed values was not correct. + + +File: ironclad.info, Node: fcntl, Next: exit_thread, Prev: manage_tcluster, Up: Syscalls + +9.28 fcntl +========== + + #define F_DUPFD 1 + #define F_DUPFD_CLOEXEC 2 + #define F_GETFD 3 + #define F_SETFD 4 + #define F_GETFL 5 + #define F_SETFL 6 + #define F_GETPIPE_SZ 7 + #define F_SETPIPE_SZ 8 + #define F_GETLK 9 + #define F_SETLK 10 + #define F_SETLKW 11 + + #define FD_CLOEXEC 0b01 + #define FD_CLOFORK 0b10 + + #define F_RDLCK 1 + #define F_UNLCK 2 + #define F_WRLCK 3 + + struct flock { + uint16_t l_type; + uint16_t l_whence; + uint64_t l_start; + uint64_t l_len; + uint32_t l_pid; + } + + int fcntl(int fd, int cmd, void *arg); + + This syscall is a multiplexed syscall that performs the operations +described below on the open file descriptor ‘fd’. The operation is +determined by ‘cmd’ and may take an optional argument ‘arg’. + + The syscall’s return value will depend on the requested ‘cmd’, and is +detailed along the operations below. + + The valid operations are: + + • ‘F_DUPFD’: Clones ‘fd’ into a the first available file descriptor + starting by ‘arg’. Returns the resulting FD. + + • ‘F_DUPFD_CLOEXEC’: The same as ‘F_DUPFD’ but sets the close on exec + flag for the cloned FD if succesful, in order to save a subsequent + call. + + • ‘F_GETFD’: The flags used for ‘fd’ will be returned. These can be + ‘FD_CLOEXEC’, which if set, will signal that ‘fd’ will be closed + should an ‘exec’ call or similar happen, and ‘FD_CLOFORK’, which + signals that ‘fd’ will not be cloned when calling ‘clone’ or + similar. + + • ‘F_SETFD’: The flags for ‘fd’ will be set with ‘arg’ using the same + values returned by ‘F_GETFD’. The syscall will return ‘0’ on + sucess. + + • ‘F_GETFL’: Returns as the function result the file access mode and + status flags. + + • ‘F_SETFL’: What ‘F_SETFD’ is to ‘F_GETFD’ for ‘F_GETFL’. + + • ‘F_GETPIPE_SZ’: If ‘fd’ points to a FIFO or pipe, return its size. + + • ‘F_SETPIPE_SZ’: If ‘fd’ points to a FIFO or pipe, the size will be + set to the value of ‘arg’. If the operation would cause data loss, + it will fail. + + • ‘F_GETLK’: If ‘fd’ points to a filesystem inode, the data passed in + ‘arg’ will be taken as a pointer to a ‘flock’ struct, and the + possibility to add the advisory lock described there will be + checked. + + POSIX advisory locks are advisory file description-bound marks that + may be used as a filesystem semaphore. They require processes to + check them, and are not automatic nor mandatory, thus, advisory. + + If the lock could be placed, the passed struct’s ‘l_type’ will + become ‘F_UNLCK’, else, the call will fail and the fields used to + write the information regarding one of the conflicting locks. As + all IPC, this data may not be true once processed, it is merely + informative. + + POSIX advisory locks can be used for implementing PID lock files, + as to make sure only one instance of the same daemon is running. + + • ‘F_SETLK’: The same as ‘F_GETLK’, but actually sets the passed + lock. If it cannot be set, it will return failure with ‘EAGAIN’. + + • ‘F_SETLKW’: The same as ‘F_SETLK’, but instead of being + non-blocking, this call will block until the passed lock can be + set. + + On failure, the syscall returns ‘-1’. The returned ‘errno’ are: + + • ‘EINVAL’: The passed ‘cmd’ is not implemented by the kernel. + + • ‘EBADF’: The passed ‘fd’ is not open. + + +File: ironclad.info, Node: exit_thread, Next: getrandom, Prev: fcntl, Up: Syscalls + +9.29 exit_thread +================ + + void exit_thread(void); + + This syscall terminates the calling thread "immediately". Any open +file descriptors belonging to the process to be closed, and any threads +of execution are terminated. + + This syscall does not return any value, but it sets errno on failure: + + • ‘EACCES’: MAC disallowed this. + + +File: ironclad.info, Node: getrandom, Next: mac_capabilities, Prev: exit_thread, Up: Syscalls + +9.30 getrandom +============== + + ssize_t getrandom(void *buffer, size_t length); + + This syscall fills the buffer pointed to ‘buffer’ with up to ‘length’ +random bytes. These bytes can be used for cryptographic purposes. + + The operation is the same as reading from ‘/dev/random’. It is +provided instead of just reading from the device as to avoid denial of +service attacks based on exhausting the file descriptor limit of the +system, along with other vulnerabilities and inconveniences related to +the classic file interface. + + The syscall returns the count of read random data or ‘-1’ on failure, +and sets the following errno: + + • ‘EFAULT’: ‘buffer’ points to invalid memory. + • ‘EACCES’: MAC disallowed this. + + +File: ironclad.info, Node: mac_capabilities, Next: add_mac_permissions, Prev: getrandom, Up: Syscalls + +9.31 mac_capabilities +===================== + + #define MAC_CAP_SCHED 0b00000000000001 + #define MAC_CAP_SPAWN 0b00000000000010 + #define MAC_CAP_ENTROPY 0b00000000000100 + #define MAC_CAP_SYS_MEM 0b00000000001000 + #define MAC_CAP_USE_NET 0b00000000010000 + #define MAC_CAP_SYS_NET 0b00000000100000 + #define MAC_CAP_SYS_MNT 0b00000001000000 + #define MAC_CAP_SYS_PWR 0b00000010000000 + #define MAC_CAP_PTRACE 0b00000100000000 + #define MAC_CAP_SETUID 0b00001000000000 + #define MAC_CAP_SYS_MAC 0b00010000000000 + #define MAC_CAP_SIGNALALL 0b00100000000000 + #define MAC_CAP_SETGID 0b01000000000000 + #define MAC_CAP_IPC 0b10000000000000 + unsigned long get_mac_capabilities(void); + int set_mac_capabilities(unsigned long request); + + These syscalls allow to fetch and set MAC capabilities on the way +described in *note Mandatory access control (MAC)::. + + Both syscalls cannot fail, ‘get_mac_capabilities’ always returns the +capabilities of the callee process and ‘set_mac_capabilities’ always +returns ‘0’, settings will just be ignored if permission to change them +is not granted. + + +File: ironclad.info, Node: add_mac_permissions, Next: set_mac_enforcement, Prev: mac_capabilities, Up: Syscalls + +9.32 add_mac_permissions +======================== + + #define MAC_PERM_CONTENTS 0b000001 + #define MAC_PERM_READ 0b000010 + #define MAC_PERM_WRITE 0b000100 + #define MAC_PERM_EXEC 0b001000 + #define MAC_PERM_APPEND 0b010000 + #define MAC_PERM_FLOCK 0b100000 + + int add_mac_permissions(const char *path, int flags); + + This syscall adds permissions to access an inode or device as +described in *note Mandatory access control (MAC)::. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + + • ‘EPERM’: MAC did not allow this. + • ‘EFAULT’: The passed pointer does not point to valid memory. + • ‘EAGAIN’: The system has reached a limit on registered rules. + • ‘EINVAL’: The passed rule is already covered or conflicts with an + existent one. + + +File: ironclad.info, Node: set_mac_enforcement, Next: mount/umount, Prev: add_mac_permissions, Up: Syscalls + +9.33 set_mac_enforcement +======================== + + #define MAC_DENY 0b001 + #define MAC_DENY_AND_SCREAM 0b010 + #define MAC_KILL 0b100 + + int set_mac_enforcement(unsigned long request); + + This syscall sets the action to take for enforcement on MAC issues as +explained in *note Mandatory access control (MAC)::. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + + • ‘EACCES’: MAC was locked. + + +File: ironclad.info, Node: mount/umount, Next: readlink, Prev: set_mac_enforcement, Up: Syscalls + +9.34 mount/umount +================= + + #define MNT_FAT 1 + #define MNT_EXT 2 + #define MNT_DEV 3 + #define MS_RDONLY 1 + + #define MNT_FORCE 1 + + int mount(const char *source, int source_len, const char *target, + int target_len, int fs_type, unsigned long flags); + int umount(const char *target, int target_len, int flags); + + These syscalls mount and unmount filesystems. For ‘mount’, ‘source’ +is the source device while ‘target’ is where to mount in the global +virtual filesystem. For ‘umount’, ‘target’ is the path to unmount. + + For ‘mount’, ‘fs_type’ can be one of the following values to choose +the filesystem type to mount, it must be specified, detection is not +done. + + • ‘MNT_FAT’: FAT family filesystem. + • ‘MNT_EXT’: EXT family filesystem. + • ‘MNT_DEV’: DevFS filesystem, cannot be used. + + ‘flags’ may contain ‘MS_RDONLY’ to force mounting read-only mounting. + + For ‘umount’, ‘flags’ allows the following options: + + • ‘MNT_FORCE’: Unmount the filesystem even if busy, can cause data + loss. + + These syscalls returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + + • ‘EFAULT’: Incorrect addresses for the string arguments. + • ‘EACCES’: MAC forbid this operation. + • ‘EINVAL’: Wrong arguments. + • ‘EBUSY’: For ‘umount’, the mount is busy, and ‘MNT_FORCE’ was not + passed. + + +File: ironclad.info, Node: readlink, Next: getdents, Prev: mount/umount, Up: Syscalls + +9.35 readlink +============= + + ssize_t readlink(char *path, int path_len, char *buffer, size_t buffer_len); + + The syscall reads the redirected path of a symlink. + + The syscalls return the read length on success or ‘-1’ on failure, +with the following errno: + + • ‘EFAULT’: Incorrect addresses for the string arguments. + • ‘EACCES’: MAC forbid this operation. + • ‘EINVAL’: The passed file is not a symbolic link. + + +File: ironclad.info, Node: getdents, Next: sync, Prev: readlink, Up: Syscalls + +9.36 getdents +============= + + #define DT_UNKNOWN 0 + #define DT_FIFO 1 + #define DT_CHR 2 + #define DT_DIR 4 + #define DT_BLK 6 + #define DT_REG 8 + #define DT_LNK 10 + #define DT_SOCK 12 + #define DT_WHT 14 + + struct dirent { + uint64_t d_ino; + uint64_t d_off; + uint16_t d_reclen; + uint8_t d_type; // One of the DT_ values. + char d_name[61]; // Null-terminated. + }; + + ssize_t getdents(int fd, struct dirent *buffer, size_t size); + + This syscall reads the contents of the passed directory, and advances +the file position for the directory by the amount of read directory +entries. Partial reads are supported. + + The syscalls return the read length in bytes on success, or ‘0’ if no +contents or ‘-1’ on failure, with the following errno: + + • ‘EFAULT’: Incorrect addresses for the arguments. + • ‘EBADFD’: ‘fd’ does not contain a valid file. + • ‘ENOENT’: ‘fd’ is not a directory. + • ‘EINVAL’: ‘size’ is not big enough to fit all the directory + entries. + + +File: ironclad.info, Node: sync, Next: mknod, Prev: getdents, Up: Syscalls + +9.37 sync +========= + + int sync(void); + + The syscall flushes the associated caches of all FSes and the devices +that contain said FSs, ensuring that all operations are finished, this +can be used in order to ensure data coherency on power loss or program +failure. + + The syscall returns ‘0’ or ‘-1’ on failure, with a corresponding +errno: + + • ‘EIO’: Device error while flushing. + + +File: ironclad.info, Node: mknod, Next: truncate, Prev: sync, Up: Syscalls + +9.38 mknod +========== + + int mknod(int dir_fd, const char *path, int path_len, int mode, int dev); + + This syscall creates files in the passed path and dir. The type is +chosen by ‘code’, which uses the same format as ‘stat’’s mode field. + + The syscall returns ‘0’ or ‘-1’ on failure, with the following errno: + + ‘EACCES’: Bad memory addresses. + • ‘EINVAL’: The passed path length is way too big, or the mode is + invalid. + • ‘EIO’: Internal error. + + +File: ironclad.info, Node: truncate, Next: bind, Prev: mknod, Up: Syscalls + +9.39 truncate +============= + + int truncate(int fd, uint64_t new_size); + + The syscall truncates the size of ‘fd’ on disk to exactly ‘new_size’ +bytes. + + If the file was larger, the cropped contents are lost, if it was +smaller, the new data is zero’d out. No other file data is changed. + + The syscall returns ‘0’ or ‘-1’ on failure, with the following errno: + + • ‘EBADF’: The file pointed by ‘fd’ is not valid for truncation. + • ‘EINVAL’: ‘new_size’ could not be set. + + +File: ironclad.info, Node: bind, Next: mkdir, Prev: truncate, Up: Syscalls + +9.40 bind +========= + + struct sockaddr { + uint32_t sun_family; // AF values of socket(). + char data[]; + }; + + int bind(int sockfd, const struct sockaddr *addr, unsigned int addrlen); + + This syscall assigns a global address to the passed socket, the +meaning and nature of the address depends on the passed socket. + + The actual structure passed for the ‘addr’ argument will depend on +the address family, ‘sockaddr’ is a catch-all placeholder value. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + + • ‘EINVAL’: Invalid address, may be already in use. + • ‘EFAULT’: Bad memory address. + • ‘EBADFD’: The passed FD is not a socket. + + +File: ironclad.info, Node: mkdir, Next: symlink, Prev: bind, Up: Syscalls + +9.41 mkdir +========== + + int mkdir(int dir_fd, const char *path, int path_len, int mode); + + This syscall creates directories in the passed path. + + The syscall returns ‘0’ or ‘-1’ on failure, with the following errno: + + ‘EACCES’: Bad memory addresses. + • ‘EINVAL’: The passed path length is way too big. + • ‘EIO’: Internal error. + + +File: ironclad.info, Node: symlink, Next: connect, Prev: mkdir, Up: Syscalls + +9.42 symlink +============ + + int symlink(int dir_fd, const char *path, int path_len, + const char *target, int target_len, int mode); + + This syscall creates symlinks for the passed path and mode. + + The syscall returns ‘0’ or ‘-1’ on failure, with the following errno: + + ‘EACCES’: Bad memory addresses. + • ‘EINVAL’: The passed path and target lengths are way too big, or + the passed mode is invalid. + • ‘EIO’: Internal error. + + +File: ironclad.info, Node: connect, Next: openpty, Prev: symlink, Up: Syscalls + +9.43 connect +============ + + int connect(int sockfd, const struct sockaddr *addr, unsigned int addrlen); + + This syscall connects the passed socket to the passed global address. + + If the passed socket is datagram-based, then ‘addr’ is the address to +which datagrams are sent by default, and the only address from which +datagrams are received. If the socket is stream-based, the syscall +attempts to make a connection to the socket that is bound to the address +specified by ‘addr’. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + + • ‘EINVAL’: Invalid address, may not be bound. + • ‘EFAULT’: Bad memory address. + • ‘EBADFD’: The passed FD is not a socket. + + +File: ironclad.info, Node: openpty, Next: fsync, Prev: connect, Up: Syscalls + +9.44 openpty +============ + + int openty(int ptys[2]); + + This syscalls creates a pair of pseudoterminals and returns the +registered file descriptors in ‘ptys’. Index ‘0’ is the primary end +(also known as master), ‘1’ is the secondary end (also known as slave). + + The syscall returns ‘0’ on success and ‘-1’ on failure, with the +following errno: + + • ‘EFAULT’: ‘ptys’ points to bogus memory. + • ‘EMFILE’: No available file descriptor slots. + + +File: ironclad.info, Node: fsync, Next: link, Prev: openpty, Up: Syscalls + +9.45 fsync +========== + + int fsync(int fd, int flags); + + The syscall does the same as ‘sync’, just only applied to ‘fd’. If +the passed file is a device, the device will flush its internal caches. + + If the file was just created, one might considering synchronizing the +parent directory as well, as, depending on the FS and FS driver, parent +directory entries are stored separately to the file, EXT-series +filesystems come to mind. + + If ‘flags’ is not zero, only the data of the passed descriptor will +be guaranteed to be flushed, and not modified metadata, this can be used +in order to minimize disk activity even further. + + The syscall returns ‘0’ or ‘-1’ on failure, with the errno: + + • ‘EBADF’: The passed file is not open. + • ‘EINVAL’: The passed points to a non-synchronizable entity. + • ‘EIO’: FS or device error while flushing. + + +File: ironclad.info, Node: link, Next: ptrace, Prev: fsync, Up: Syscalls + +9.46 link +========= + + int link(int dir_fd, const char *path, int path_len, + const char *target, int target_len); + + This syscall creates hard links, the paths are not dereferenced in +the case of being symlinks. + + The syscall returns ‘0’ or ‘-1’ on failure, with the following errno: + + • ‘EACCES’: Bad memory addresses. + • ‘EINVAL’: The passed path and target lengths are way too big. + • ‘EIO’: Internal error. + + +File: ironclad.info, Node: ptrace, Next: listen, Prev: link, Up: Syscalls + +9.47 ptrace +=========== + + #define PTRACE_SYSCALL_PIPE 1 + + long ptrace(long request, pid_t pid, void *addr, void *data); + + This syscall can be used for tracing, debugging, execution control, +and info reporting of data owned by a child process. The operations is +indicated by ‘request’, while the PID to act upon is ‘pid’, ‘addr’ the +address in the child process to modify, and ‘data’ what to modify with. + + ‘request’ can be one of: + + • ‘PTRACE_SYSCALL_PIPE (1)’: ‘data’ will be taken as an FD in the + child process, which the kernel will use to report the state on + every syscall the child process does. The descriptor must be a + pipe, no other files are supported. Errors writing are silently + ignored. + + The syscall returns ‘0’ or ‘-1’ on failure, with the following errno: + + • ‘EACCES’: MAC did not allow this. + • ‘EPERM’: ‘pid’ is not a child or does not exist. + • ‘EINVAL’: ‘request’ is not valid. + + +File: ironclad.info, Node: listen, Next: accept, Prev: ptrace, Up: Syscalls + +9.48 listen +=========== + + int listen(int sockfd, int backlog); + + This syscall marks the passed socket as a passive socket, that is, as +a socket that will be used to accept incoming connection requests using +‘accept’. + + The passed socket must be stream based, as these are the only sockets +with a true sense of connection. + + ‘backlog’ is a recommendation as to the maximum length to which the +queue of pending connections for ‘sockfd’ may grow. If a connection +request arrives when the queue is full, depending on the protocols +involved, the client may receive an error or the connection may be +ignored so that a later reattempt at connection succeeds. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + + • ‘EINVAL’: Invalid value for backlog. + • ‘EBADFD’: The passed FD is not a socket. + • ‘ENOTSUPP’: The passed FD is a socket, but it is not a stream + socket. + + +File: ironclad.info, Node: accept, Next: getrlimit/setrlimit, Prev: listen, Up: Syscalls + +9.49 accept +=========== + + int accept(int sockfd, const struct sockaddr *addr, int *addrlen, int flags); + + This syscall takes the first connection request of ‘sockfd’ and +creates a new connected socket with the flags in ‘flags’ +(‘SOCK_NONBLOCK’ and ‘SOCK_CLOEXEC’). ‘addr’ is used for writing the +address of the connection request. ‘addrlen’ must be the length of the +available buffer, and it will be written to be the actual length copied. + + The syscall returns the added FD on success or ‘-1’ on failure, with +the following errno: + + • ‘EINVAL’: Invalid value for backlog. + • ‘EBADFD’: The passed FD is not a socket and listening. + • ‘ENOTSUPP’: The passed FD is a socket, but it is not a stream + socket. + + +File: ironclad.info, Node: getrlimit/setrlimit, Next: access, Prev: accept, Up: Syscalls + +9.50 getrlimit/setrlimit +======================== + + #define RLIMIT_CORE 1 // Size of core files, 0 for disabling. + #define RLIMIT_CPU 2 // CPU time limit in seconds. + #define RLIMIT_FSIZE 4 // Maximum file size in bytes. + #define RLIMIT_NOFILE 5 // Maximum number of open file descriptors. + #define RLIMIT_STACK 6 // Maximum stack size in bytes. + #define RLIMIT_AS 7 // Maximum memory size in bytes. + + uint64_t getrlimit(int resource); + int setrlimit(int resource, uint64_t limit); + + This syscall fetches and sets current limits for a specified +resource, limits can only be lowered, are inherited from parent to +children, and start maxed out. + + When a limit is reached, the operation that would reach or exceed it +will fail like the following: + + • ‘RLIMIT_CORE’: Core files exceeding this size will be truncated, + with 0, core files are not generated. + • ‘RLIMIT_CPU’: Once the limit is passed, the process is killed. + • ‘RLIMIT_FSIZE’: System call growing the file fails with ‘EFBIG’. + • ‘RLIMIT_NOFILE’: Adding a new file descriptor fails with ‘EMFILE’. + • ‘RLIMIT_STACK’: The value is used for the size of created stacks, + thus there is no failure condition. + • ‘RLIMIT_AS’: ‘mmap’ or other virtual memory allocation syscalls + will fail with ‘ENOMEM’. + + ‘setrlimit’ returns ‘0’ on success or ‘-1’ on failure. For +‘getrlimit’, ‘0’ is a valid return so checking errno is necessary. Both +report the following errno: + + • ‘EINVAL’: Invalid value for resource. + • ‘EPERM’: MAC did not allow the operation. + + +File: ironclad.info, Node: access, Next: ppoll, Prev: getrlimit/setrlimit, Up: Syscalls + +9.51 access +=========== + + #define F_OK 0b0001 + #define R_OK 0b0010 + #define W_OK 0b0100 + #define X_OK 0b1000 + + #define AT_EACCESS 512 + + int access(int dir_fd, char *path, int len, mode_t mode, int flags); + + This syscall whether the callee process can access the passed file +against POSIX file permissions and Ironclad’s MAC. What to check for is +specified in ‘mode’ as an ORd list, as such: + + • ‘F_OK’: When passed, only file existance will be checked. + • ‘R_OK’: When passed, read permissions will be checked. + • ‘W_OK’: When passed, write permissions will be checked. + • ‘X_OK’: When passed, execute permissions will be checked. + + Permissions are checked with the real user and group IDs, instead of +the effective ones, that behaviour can be changed by passing +‘AT_EACCESS’ in ‘flags’, which can also be used for other common AT +flags. ‘AT_EMPTY_PATH’ is not accepted because that does not make any +sense with this syscall. + + The syscall returns ‘0’ on success when the passed mode is checked +valid, or ‘-1’ on check failure, with the following errno: + + • ‘EBADF’: ‘dirfd’ is not valid. + • ‘ENOENT’: The requested file does not exist. + • ‘EACCES’: The access is not allowed. + + +File: ironclad.info, Node: ppoll, Next: getuid/geteuid, Prev: access, Up: Syscalls + +9.52 ppoll +========== + + #define POLLIN 0b00000001 + #define POLLOUT 0b00000010 + #define POLLPRI 0b00000100 + #define POLLHUP 0b00001000 + #define POLLERR 0b00010000 + #define POLLNVAL 0b01000000 + + struct pollfd { + uint32_t fd; + uint16_t events; + uint16_t revents; + }; + + int poll(struct pollfd *fds, nfds_t nfds, struct timespec *timeout, + const sigset_t *sigmask); + + This syscall allows to wait for a series of events to happen to the +passed FDs, in a manner similar to POSIX’s ‘select’. + + ‘fds’ is an array of ‘nfds’ length of ‘pollfd’ structures. Each +structure represents one FD, for which ‘events’ is a list of events to +wait for and ‘revents’ is a bitmap written by the kernel to indicate +which events of the waited ones did happen. If the FD of an structure +is negative, that is, it has the first bit set, it is ignored, and +‘revents’ is set to ‘0’. + + If passed no FDs to ppoll, that is, with ‘nfds == 0’, ‘ppoll’ will +block for ‘timeout’ time. This is used by some software as a means to +implement ‘sleep’ functionality, for those cases, *note +clock_nanosleep::. + + If ‘sigmask’ is not ‘NULL’, it will atomatically set the passed +sigmask for waiting. + + Both ‘events’ and ‘revents’ are bitmaps of the values: + +‘POLLIN’ + The passed FD has data pending for reading. + +‘POLLOUT’ + The passed FD will not block when written to. + +‘POLLPRI’ + The passed FD has prioritary data for processing, this data depends + on what is polled, some examples are a change of termios + information on a PTY, or Out-Of-Band (OOB) data for a TCP socket. + +‘POLLERR’ + Only for ‘revents’, it is set when encountering an error waiting. + This bit is also set for FDs referring to the write end of a pipe + when the read end has been closed. + +‘POLLHUP’ + Only for ‘revents’, it is set in the case of the passed FD having + lost connection, or the FD being the reader end of a broken pipe. + +‘POLLNVAL’ + Only for ‘revents’, equivalent of ‘EBADFD’, that is, the passed FD + is not valid. + + The call will block until either a file descriptor gets an event, the +call is interrupted by a signal handler, or the timeout expires. + + The syscall returns the number of FDs to have an event happen on +success or ‘-1’ on failure, with the following errno: + +‘EFAULT’ + The passed pointers are not in addressable memory. + +‘EINVAL’ + The passed values are not valid. + + +File: ironclad.info, Node: getuid/geteuid, Next: setuids, Prev: ppoll, Up: Syscalls + +9.53 getuid/geteuid +=================== + + uid_t getuid(void); + uid_t geteuid(void); + + These syscalls fetch the UID and the effective UID of the calling +process. They never fail. + + +File: ironclad.info, Node: setuids, Next: fchmod, Prev: getuid/geteuid, Up: Syscalls + +9.54 setuids +============ + + int setuids(uid_t uid, uid_t euid); + + This syscall sets the UID and effective UID of the calling process. +If the calling process has the ‘MAC_CAP_SETUID’ capability, it will set +both the EUID and UID, else, it will only try to set EUID to values +matching the process’s UID. If any of them is ‘-1’, it will not be +modified. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EPERM’ + MAC did not allow this. + + +File: ironclad.info, Node: fchmod, Next: umask, Prev: setuids, Up: Syscalls + +9.55 fchmod +=========== + + int fchmod(int dir_fd, char *path, int len, mode_t mode, int flags); + + This syscall sets the mode for the passed arguments in the same way +*note fstat:: fetches information for the passed arguments. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EINVAL’ + The passed FD or mode is not valid. + +‘EACCES’ + MAC did not allow this. + + +File: ironclad.info, Node: umask, Next: reboot, Prev: fchmod, Up: Syscalls + +9.56 umask +========== + + mode_t umask(mode_t mask); + + This syscall sets the umask of the calling process to the passed mask +AND’d with ‘777’ in octal. + + The umask is used by the kernel when creating files in the name of +the calling process. It marks permissions to be turned off from ‘mode’ +arguments passed by the user. The default value is ‘22’ in octal, and +is inherited from parent processes to children. + + This syscall never fails, it always returns the old mask before +modification. + + +File: ironclad.info, Node: reboot, Next: fchown, Prev: umask, Up: Syscalls + +9.57 reboot +=========== + + #define RB_HALT 1 + #define RB_POWEROFF 2 + #define RB_RESTART 3 + #define RB_ERROR_RET 0b1 + + int reboot(int cmd, int flags); + + This syscall does the passed action to the system’s power management, +the action is specified with ‘cmd’, it can be one of: + +‘RB_HALT’ + System activity is terminated and the system will make all needed + preparations, but power will not be cut off, instead, the user will + have to do so, say, with the power button. Data syncing is up to + the user. + +‘RB_POWEROFF’ + The same as ‘RB_HALT’ but actually cuts power. + +‘RB_RESTART’ + The same as ‘RB_HALT’ but at the end, the system will reboot. + + If the operation fails internally, for any reason, the kernel will +panic, for returning an error instead, one can use ‘RB_ERROR_RET’ in +‘flags’. + + This syscall does not return on success, it will only return in the +case of invalid value for ‘cmd’, before comitting to an operation, or by +using ‘RB_ERROR_RET’ as previously said. In error, ‘-1’ will be +returned, and errno will be set to: + +‘EINVAL’ + The passed ‘cmd’ is not valid. + +‘EACCES’ + MAC did not allow this. + +‘EIO’ + The operation failed internally. + + +File: ironclad.info, Node: fchown, Next: pread/pwrite, Prev: reboot, Up: Syscalls + +9.58 fchown +=========== + + int fchown(int dir_fd, char *path, int len, uint32_t user, uint32_t group, + int flags); + + This syscall sets the owner’s UID and GID for the passed arguments in +the same way *note fstat:: fetches information for the passed arguments. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EINVAL’ + The passed FD or the user and group were not valid. + +‘EACCES’ + MAC did not allow this. + +‘EBADF’ + The passed file is valid but it was not a physical file in a + filesystem. + + +File: ironclad.info, Node: pread/pwrite, Next: getsockname, Prev: fchown, Up: Syscalls + +9.59 pread/pwrite +================= + + ssize_t pread(int fd, void *buffer, size_t count, off_t offset); + ssize_t pwrite(int fd, void *buffer, size_t count, off_t offset); + + These syscalls do the same as ‘read’ and ‘write’ respectively, but +instead of using the description’s saved location for data access, they +use the passed ‘offset’, and do not update it at the end of the +operation. ‘fd’ must point to a seekable file. + + These syscalls are made for use in multithreaded applications, as +having more than one thread updating file locations for a shared file +description can lead to sudden catharsis. + + These syscalls return the same values and errno as the non-p +variants. *note read/write::. + + +File: ironclad.info, Node: getsockname, Next: getpeername, Prev: pread/pwrite, Up: Syscalls + +9.60 getsockname +================ + + int getsockname(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict addrlen); + + This syscall fetches the address of an already bound socket. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EINVAL’ + The passed FD was a non bound socket. + +‘EBADF’ + The passed file is valid but it was not a physical file in a + filesystem. + + +File: ironclad.info, Node: getpeername, Next: shutdown, Prev: getsockname, Up: Syscalls + +9.61 getpeername +================ + + int getpeername(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict addrlen); + + This syscall fetches the address of a socket’s peer. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EINVAL’ + The passed FD was a non bound socket. + +‘EBADF’ + The passed file is valid but it was not a physical file in a + filesystem. + + +File: ironclad.info, Node: shutdown, Next: futex, Prev: getpeername, Up: Syscalls + +9.62 shutdown +============= + + #define SHUT_RD 0b01 + #define SHUT_RDWR 0b10 + #define SHUT_WR 0b11 + + int shutdown(int sockfd, int how); + + This syscall stops transmission or reception for a socket from a +peer. + + ‘how’ signals how to stop communication, it can be the following +values: + +‘SHUT_RD’ + Further receiving will not be allowed. + +‘SHUT_WR’ + Further transmitting will not be allowed. + +‘SHUT_RDWR’ + Further receiving and transmitting will not be allowed. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EINVAL’ + The passed FD was a non bound socket. + +‘EBADF’ + The passed file is valid but it was not a physical file in a + filesystem. + + +File: ironclad.info, Node: futex, Next: clock, Prev: shutdown, Up: Syscalls + +9.63 futex +========== + + struct futex_item { + uint64_t addr; + uint32_t expected; + uint32_t flags; + }; + + #define FUTEX_WAIT 1 + #define FUTEX_WAKE 2 + + int futex(int operation, struct futex_item *futexes, size_t count, + struct timespec *time); + + This syscall helps implement fast userland mutexes (futexes!). It is +typically used as a blocking construct in the context of shared-memory +synchronization. + + When using futexes, the majority of the synchronization operations +are performed in user space by atomically testing for a 32-bit value. +User-space is to use ‘futex’ only when it is likely that the program has +to block for a longer time until the condition becomes true. Other +‘futex’ operations can be used to wake any processes or threads waiting +for an address. + + When executing a futex operation that requests to block a thread, the +kernel will block only if the futex contents has the value that the call +suplied under ‘expected’. The loading of the futex’s contents and +comparison of that value are atomic, and will be totally ordered with +respect to concurrent operations performed by other threads on the same +futex contents. Thus, the futex contents are used to connect the +synchronization in user space with the implementation of blocking by the +kernel. Analogously to an atomic compare-and-exchange operation that +potentially changes shared memory, blocking via a futex is an atomic +compare-and-block operation. When blocked, the kernel will calmly wait +for waking by ‘FUTEX_WAKE’, waking is not automatic once the values are +acquired. + + Note that no explicit initialization or destruction is necessary to +use futexes; the kernel maintains a futex only while operations such as +‘FUTEX_WAIT’ are being performed on particular futex contents. + + When compared with other implementations like Linux’s, Ironclad’s +allows for waiting and waking several futexes at once, this is done as +to ease handling several futexes at once. + + The available futex operations are: + +‘FUTEX_WAIT’ + The passed values in futexes will be waited for. + +‘FUTEX_WAKE’ + The passed values in futexes will be woken up. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EFAULT’ + The passed addresses would fault if accessed. + +‘EINVAL’ + The passed operation is not valid. + + +File: ironclad.info, Node: clock, Next: clock_nanosleep, Prev: futex, Up: Syscalls + +9.64 clock +========== + + #define CLOCK_REALTIME 0 + #define CLOCK_MONOTONIC 1 + #define CLOCK_GETRES 0 + #define CLOCK_GETTIME 1 + #define CLOCK_SETTIME 2 + + int clock(int operation, int clock_id, struct timespec *time); + + This syscall fetches or sets epoch dates for each of the supported +clocks. Clock is passed in ‘clock_id’, with the following values. + +‘CLOCK_REALTIME’ + Wall-clock, may jump forward and back thanks to time setting. + +‘CLOCK_MONOTONIC’ + Clock that only moves forward, and is unaffected by NTP or + adjustements. It starts from an unspecified, target-dependent + point in time, usually boot. + + Unlike Linux, it is still counted during suspend. + + ‘operation’ specifies what to do, as such: + +‘CLOCK_GETRES’ + Load the resolution of the passed clock on the contents of ‘time’. + +‘CLOCK_GETTIME’ + Load the epoch date of the passed clock on the contents of ‘time’. + +‘CLOCK_SETTIME’ + Set the epoch date of the passed clock to the contents of ‘time’, + not supported for ‘CLOCK_MONOTONIC’. Underlying hardware will + always be updated. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EFAULT’ + ‘time’ points to non accessible memory. + +‘EINVAL’ + One of the passed values is not valid. + + +File: ironclad.info, Node: clock_nanosleep, Next: getrusage, Prev: clock, Up: Syscalls + +9.65 clock_nanosleep +==================== + + #define TIMER_ABSTIME 1 + + int clock_nanosleep(int clock_id, int flags, struct timespec *time, + struct timespec *remaining); + + This syscall sleeps the callee thread for the passed time with the +requested clock. If interrupted by a signal or similar, it returns the +remaining time that could not be waited. + + Unlike what POSIX mandates, this syscall will always need ‘remaining’ +to be a valid structure. ‘clock_id’ takes the same value as *note +clock::. + + ‘flags’ can be one of the following: + +‘TIMER_ABSTIME’ + Instead of an increment on top of the current time, ‘time’ is taken + as an absolute time (ideally in the future!). + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EFAULT’ + ‘time’ or ‘remaining’ point to non accessible memory. + +‘EINVAL’ + One of the passed values is not valid. + +‘EPERM’ + MAC did not allow this. + + +File: ironclad.info, Node: getrusage, Next: recvfrom/sendto, Prev: clock_nanosleep, Up: Syscalls + +9.66 getrusage +============== + + #define RUSAGE_SELF 1 + #define RUSAGE_CHILDREN 2 + + struct rusage { + struct timeval ru_utime; // user CPU time used. + struct timeval ru_stime; // system CPU time used. + }; + + int getusage(int who, struct rusage *usage); + + This syscall gets the use of several resources by a process. + + Unlike what POSIX mandates, this syscall will always need ‘remaining’ +to be a valid structure. ‘clock_id’ takes the same value as *note +clock::. + + Due to implementation details, for now, system time does include +waiting time, but given this syscall’s information is merely advisory, +it may be changed later. + + ‘who’ establishes who to request the information for, it can be one +of: + +‘RUSAGE_SELF’ + Get information for the callee process. + +‘RUSAGE_CHILDREN’ + Get information for all of the children processes. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EFAULT’ + ‘usage’ point to non accessible memory. + +‘EINVAL’ + ‘who’ was not valid. + + +File: ironclad.info, Node: recvfrom/sendto, Next: config_netinter, Prev: getrusage, Up: Syscalls + +9.67 recvfrom/sendto +==================== + + ssize_t recvfrom(int socket_fd, void *restrict buffer, size_t length, + int flags, struct sockaddr *address, socklen_t *address_len); + ssize_t sendto(int socket_fd, void *restrict buffer, size_t length, + int flags, struct sockaddr *address, socklen_t address_len); + + These syscalls compliment ‘read’ and ‘write’ for socket-based IO. +They allow specifing or fetching the address of a read or write +operation when doing them, which can be vital for reading +connection-less socket protocols. + + Unlike doing ‘connect’ on a connection-less socket, the addresses +passed here will not affect future transactions. + + When used for connection-based protocols, or when passed as ‘NULL’, +‘address’ and ‘address_len’ will be ignored. + + ‘flags’ is right now a placeholder for future options. + + These syscalls return and fail in the same ways *note read/write:: +would, with the addition of only accepting sockets as their passed +‘socket_fd’. + + +File: ironclad.info, Node: config_netinter, Next: utimes, Prev: recvfrom/sendto, Up: Syscalls + +9.68 config_netinter +==================== + + #define NETINTER_SET_BLOCK 1 + #define NETINTER_SET_STATIC_IP4 2 + #define NETINTER_SET_STATIC_IP6 3 + + struct addr4_netinter { + uint32_t ip; + uint32_t sub; + }; + + struct addr6_netinter { + uint128_t ip; + uint128_t sub; + }; + + int config_netinter (int fd, int op, void *arg); + + This syscall configures networking interfaces by using the device +that implements the desired interface. + + ‘op’ dictates what the arguments and action to do are, it can be one +of: + +‘NETINTER_SET_BLOCK’ + ‘arg’ will be a pointer to a boolean value, if it evaluates to + true, the passed interface will be blocked, if it evaluates to + false, it will be unblocked. + +‘NETINTER_SET_STATIC_IP4’ + ‘arg’ will be a pointer to a ‘addr4_netinter’ structure, which + specifies an address and subnet to set as static addresses. + +‘NETINTER_SET_STATIC_IP6’ + ‘arg’ will be a pointer to a ‘addr6_netinter’ structure, which + specifies an address and subnet to set as static addresses. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EFAULT’ + ‘arg’ point to non accessible memory. + +‘EACCES’ + MAC did not allow this. + +‘EINVAL’ + An argument is not valid. + + +File: ironclad.info, Node: utimes, Next: create_tcluster, Prev: config_netinter, Up: Syscalls + +9.69 utimes +=========== + + int utimes(int dir, const char *path, struct timespec *times, int flags); + + This syscall changes the access and modification time of the passed +file to the 2 first values contained in the ‘times’ array. All the +standard options for ‘dir’ are accepted and ‘flags’ takes +‘AT_EMPTY_PATH’ and ‘AT_SYMLINK_NOFOLLOW’. + +‘EFAULT’ + ‘path’ or ‘times’ point to non accessible memory. + +‘EACCES’ + MAC did not allow this. + +‘EINVAL’ + An argument is not valid. + + +File: ironclad.info, Node: create_tcluster, Next: switch_tcluster, Prev: utimes, Up: Syscalls + +9.70 create_tcluster +==================== + + int create_tcluster(void); + + This syscall creates a thread cluster. It returns the new cluster ID +or ‘-1’ on failure, with the following errno: + +‘ENOMEM’ + A new cluster could not be made. + +‘EACCES’ + MAC did not allow this. + + +File: ironclad.info, Node: switch_tcluster, Next: sigprogmask, Prev: create_tcluster, Up: Syscalls + +9.71 switch_tcluster +==================== + + int switch_tcluster(int cluster, int tid); + + This syscall moves the thread identified by ‘tid’ to the thread +cluster identified by ‘cluster’. No checks of parenthood are done. + + It returns ‘0’ on success and ‘-1’ on failure, with the following +errno: + +‘EINVAL’ + ‘cluster’ is not a valid cluster, or ‘tid’ is not a valid tid. + +‘EACCES’ + MAC did not allow this. + + +File: ironclad.info, Node: sigprogmask, Next: sigaction, Prev: switch_tcluster, Up: Syscalls + +9.72 sigprogmask +================ + + #define SIG_BLOCK 1 + #define SIG_UNBLOCK 2 + #define SIG_SETMASK 3 + + int sigprocmask(int how, sigset_t *set, sigset_t *oldset); + + This syscall fetches and/or changes the signal mask of the calling +process. The signal mask is the set of signals whose delivery is +currently blocked. + + If not ‘NULL’, ‘set’ can be used for passing a new mask, if not +‘NULL’, ‘oldset’ can be used for getting the existing mask. + + The behaviour of the syscall will depend on the value passed to +‘how’, which can be one of: + +‘SIG_BLOCK’ + The blocked signals will be a union of the current ones and the + passed ones. + +‘SIG_UNBLOCK’ + The blocked signals will be the current ones minus the passed ones. + +‘SIG_SETMASK’ + The blocked signals will be the passed ones. + + It returns ‘0’ on success and ‘-1’ on failure, with the following +errno: + +‘EINVAL’ + ‘how’ is not valid. + +‘EFAULT’ + A non-‘NULL’ pointer points to not valid memory. + + +File: ironclad.info, Node: sigaction, Next: send_signal, Prev: sigprogmask, Up: Syscalls + +9.73 sigaction +============== + + int sigaction(int sig, struct sigaction *act, struct sigaction *oldact); + + This syscall fetches and/or changes the associated actions with the +signal ‘sig’. + + If not ‘NULL’, ‘act’ can be used for setting a new action, if not +‘NULL’, ‘oldact’ can be used for getting the existing action. + + It returns ‘0’ on success or ‘-1’ on failure, with the following +errno: + +‘EINVAL’ + ‘sig’ is not valid. + +‘EFAULT’ + A non-‘NULL’ pointer points to not valid memory. + +‘EPERM’ + The caller does not have the appropiate permissions over ‘pid’ to + actually kill. + + +File: ironclad.info, Node: send_signal, Next: getprio/setprio, Prev: sigaction, Up: Syscalls + +9.74 send_signal +================ + + int send_signal(int pid, int signal); + + This syscall sends the passed signal to the passed PID. + + Group sending is not supported, but can easily be implemented in +userland with process information. *note sysconf::. + + Only processes sharing the same UID or EUID as the caller’s EUID can +be signaled. The ‘MAC_CAP_SIGNALALL’ capability overrides this check. + + It returns ‘0’ on success and ‘-1’ on failure, with the following +errno: + +‘ESRCH’ + ‘pid’ is not a valid target for sending. + +‘EPERM’ + The caller does not have permissions to signal ‘pid’. + +‘EINVAL’ + ‘signal’ is not a valid signal. + + +File: ironclad.info, Node: getprio/setprio, Next: getgid/getegid, Prev: send_signal, Up: Syscalls + +9.75 getprio/setprio +==================== + + #define PRIO_PROCESS 1 + #define PRIO_PGRP 2 + #define PRIO_USER 3 + #define PRIO_THREAD 4 + + #define PRIO_MIN (-20) + #define PRIO_MAX 20 + + int getprio(int which, int who); + int setprio(int which, int who, int prio); + + These syscalls get and set niceness values, ‘which’ says which entity +to set the niceness to, while ‘who’ the pid or id of the entity, 0 for +the current caller. + + ‘who’ can be one of: + +‘PRIO_PROCESS’ + Get or set the default niceness of a process. When set, this will + make new threads created by a process be created with this niceness + value, and make all exiting threads have that niceness, along with + making child processes inherit the passed niceness. + +‘PRIO_PGRP / PRIO_USER’ + Unimplemented, for future features. + +‘PRIO_THREAD’ + Get or set the niceness of the passed thread. Setting this value + does not affect the process niceness, or what will be reported when + getting it, it will just be an outliar until niceness is set again, + either thread-wide or process-wide. + + ‘getprio’ returns the niceness and ‘-1’ on failure, while ‘setprio’ +returns ‘0’ on success and ‘-1’ on failure. Both in failure feature the +following errno: + +‘EINVAL’ + A value is not valid. + + +File: ironclad.info, Node: getgid/getegid, Next: setgids, Prev: getprio/setprio, Up: Syscalls + +9.76 getgid/getegid +=================== + + gid_t getgid(void); + gid_t getegid(void); + + These syscalls fetch the GID and the effective GID of the calling +process. They never fail. + + +File: ironclad.info, Node: setgids, Next: getgroups/setgroups, Prev: getgid/getegid, Up: Syscalls + +9.77 setgids +============ + + int setgids(gid_t gid, gid_t egid); + + This syscall sets the GID and effective GID of the calling process. +If the calling process has the ‘MAC_CAP_SETGID’ capability, it will set +both the EGID and GID, else, it will only try to set EGID to values +matching the process’s GID. If any of them is ‘-1’, it will not be +modified. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EPERM’ + MAC did not allow this. + + +File: ironclad.info, Node: getgroups/setgroups, Next: ttyname, Prev: setgids, Up: Syscalls + +9.78 getgroups/setgroups +======================== + + int getgroups(size_t size, gid_t list[]); + int setgroups(size_t size, const gid_t *list); + + This syscall gets and sets the supplementary user groups of the +caller process. The stored group IDs, along with the effective GID, +will be used to check permission for file access. among others +permission checks. + + ‘getgroups’ does not return the effective GID of the caller process +on the list. POSIX leaves whether the effective GID is included on this +list as an implementation detail, so portable programs should be ready +for that scenario. + + Init starts with an empty array of supplementary group IDs. + + Passing ‘0’ and ‘NULL’ to ‘setgroups’ will empty the supplementary +group list. + + ‘getgroups’ returns the number of supplementary groups or ‘-1’ on +failure, ‘setgroups’ returns ‘0’ on success and ‘-1’ on failure, both +with the following errno: + +‘EINVAL’ + ‘getgroups’ size is less than the number of supplementary group + IDs. + + +File: ironclad.info, Node: ttyname, Next: fadvise, Prev: getgroups/setgroups, Up: Syscalls + +9.79 ttyname +============ + + int ttyname(int fd, char *buffer, size_t size); + + This syscall fetches the name of the filesystem entity backing a TTY +and writes it to ‘buffer’ with a NULL terminator. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EINVAL’ + ‘size’ is less than needed and/or ‘fd’ is not a TTY. + +‘EBADF’ + ‘fd’ is not opened to anything. + +‘EFAULT’ + ‘buffer’ points to invalid memory. + + +File: ironclad.info, Node: fadvise, Next: shmat, Prev: ttyname, Up: Syscalls + +9.80 fadvise +============ + + #define POSIX_FADV_NORMAL 1 + #define POSIX_FADV_SEQUENTIAL 2 + #define POSIX_FADV_NOREUSE 3 + #define POSIX_FADV_DONTNEED 4 + #define POSIX_FADV_WILLNEED 5 + #define POSIX_FADV_RANDOM 6 + + int fadvise(int fd, off_t offset, off_t len, int advice); + + This syscall is used for advising the kernel on how access will be +done for the passed file for the passed range, in order to prepare +caches ahead of time to optimize system resource use and performance. +This can only be used with filesystem inodes. + + Advising for a file does not make any operation illegal or behave +weirdly, they are just used in order to cater to the passed information. + + Advice is indicated on ‘advice’, and can take the following values: + +‘POSIX_FADV_NORMAL’ + Indicates that the application has no advice to give about its + access pattern for the specified data. If no advice is given for + an open file, this is the default assumption. + +‘POSIX_FADV_SEQUENTIAL’ + Specifies that the application has no advice to give on its + behavior with respect to the specified data. It is the default + characteristic if no advice is given for an open file. + +‘POSIX_FADV_NOREUSE’ + Specifies that the application expects to access the specified data + once and then not reuse it thereafter. + +‘POSIX_FADV_DONTNEED’ + Specifies that the application expects that it will not access the + specified data in the near future. + +‘POSIX_FADV_WILLNEED’ + Specifies that the application expects to access the specified data + in the near future. + +‘POSIX_FADV_RANDOM’ + Specifies that the application expects to access the specified data + in a random order. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EINVAL’ + ‘advice’ is not valid. + +‘EBADF’ + ‘fd’ is not opened to anything. + +‘ESPIPE’ + The passed file is not a VFS inode. + + +File: ironclad.info, Node: shmat, Next: shmctl, Prev: fadvise, Up: Syscalls + +9.81 shmat +========== + + void *shmat(int shmid, const void *shmaddr, int shmflg); + + This syscall attaches the shared memory segment identified by ‘shmid’ +to the address space of the calling process. + + If shmaddr is ‘NULL’, the system chooses a suitable (unused) address +at which to attach the segment. If it is not ‘NULL’, that address will +be used for attaching. + + If ‘SHM_RDONLY’ is specified in shmflg, the segment is attached fo +reading and the process must have read permission for the segment. +Otherwise the segment is attached for read and write and the process +must have read and write permission for the segment. There is no notion +of a write-only shared memory segment. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EACCES’ + The caller does not have enough permissions for attaching. + +‘EIDRM’ + ‘shmid’ points to a removed identifier. + +‘EINVAL’ + Invalid ‘shmid’ or invalid ‘shmaddr’. + +‘ENOMEM’ + Not enough memory. + + +File: ironclad.info, Node: shmctl, Next: shmdl, Prev: shmat, Up: Syscalls + +9.82 shmctl +=========== + + struct ipc_perms { + uint32_t __key; + uint32_t uid; + uint32_t gid; + uint32_t cuid; + uint32_t cgid; + uint32_t mode; + uint32_t __seq; + } + + struct shmid_ds { + struct ipc_perms shm_perm; + uint64_t shm_segsz; + uint64_t shm_atime; + uint64_t shm_dtime; + uint64_t shm_ctime; + uint32_t shm_cpid; + uint32_t shm_lpid; + uint64_t shm_nattch; + } + + #define IPC_RMID 0 + #define IPC_SET 1 + #define IPC_STAT 2 + + int shmctl(int shmid, int cmd, struct shmid_ds *buf); + + This syscall performs the control operation specified by ‘cmd’ on the +shared memory segment whose identifier is given in ‘shmid’. + + ‘cmd’ can be one of: + +‘IPC_RMID’ + The passed ‘shmid’ is set to be deleted when the attached count of + the segment goes to ‘0’. Otherwise, it will linger forever. ‘buf’ + is ignored. + +‘IPC_SET’ + Information passed on the structure pointed to by ‘buf’ is used to + modify the permission fields of the passed segment, namely + ‘shm_perm.uid’, ‘shm_perm.gid’, and ‘shm_perm.mode’. + +‘IPC_STAT’ + Get the associated information of the passed segment id and write + it to the structure pointed to by ‘buf’. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EINVAL’ + ‘size’ is less than needed and/or ‘fd’ is not a TTY. + +‘EBADF’ + ‘fd’ is not opened to anything. + +‘EFAULT’ + ‘buffer’ points to invalid memory. + + +File: ironclad.info, Node: shmdl, Next: shmget, Prev: shmctl, Up: Syscalls + +9.83 shmdl +========== + + int shmdt(const void *shmaddr); + + This syscall detaches the shared memory segment located at ‘shmaddr’ +from the calling process. + + The syscall returns ‘0’ on success or ‘-1’ on failure, with the +following errno: + +‘EINVAL’ + The passed ‘shmaddr’ is not valid. + + +File: ironclad.info, Node: shmget, Next: getsockopt/setsockopt, Prev: shmdl, Up: Syscalls + +9.84 shmget +=========== + + #define IPC_PRIVATE 0 + + int shmget(key_t key, size_t size, int shmflg); + + This syscall fetches or creates a shared memory segment associated +with ‘key’. + + If ‘key’ is equal to ‘IPC_PRIVATE’, a segment will be created with no +associated key, and will need to be accessed by other processes only by +the returned ‘shmid’. + + The syscall returns a valid ID on success or ‘-1’ on failure, with +the following errno: + +‘EACCES’ + MAC did not allow this. + +‘EEXISTS’ + An attempt to create a public segment with an already registered + key happened. + +‘ENOENT’ + The fetched segment is not present. + + +File: ironclad.info, Node: getsockopt/setsockopt, Next: gettidid/settidid, Prev: shmget, Up: Syscalls + +9.85 getsockopt/setsockopt +========================== + + #define SOL_SOCKET 1 + + #define SO_ACCEPTCONN 1 + #define SO_ERROR 5 + #define SO_SNDBUF 13 + #define SO_TYPE 16 + + int getsockopt(int fd, int level, int name, void *val, socklen_t *len); + int setsockopt(int fd, int level, int name, void *val, socklen_t len); + + This syscall gets or sets the option passed on ‘name’ for the socket +level passed on ‘level’, and writes or fetches data from ‘val’ with the +length passed on ‘len’. + + Right now, ‘SOL_SOCKET’ is the only supported socket level. + + ‘name’ can be one of: + +‘SO_ACCEPTCONN’ + ‘val’ will point to an ‘uint32_t’. ‘1’ will be written there if + the passed socket is listening, and ‘0’ if it is not/cannot listen + due to protocol. ‘getsockopt’ only. + +‘SO_ERROR’ + ‘val’ will point to an ‘uint32_t’. The value will be written with + the present socket error if any, or ‘0’ if none are present. + ‘getsockopt’ only. + +‘SO_SNDBUF’ + ‘val’ will point to an ‘uint32_t’. If getting the value, the + current send-buffer size will be returned, else, it setting it, the + passed size will be used for the same buffer. + +‘SO_TYPE’ + ‘val’ will point to an ‘uint32_t’. The type of socket will be + returned in that variable in the same format as *note socket::. + ‘getsockopt’ only. + + The syscall returns 0 on success or ‘-1’ on failure, with the errno: + +‘EBADFD’ + ‘fd’ was not open, or is not a socket. + +‘EACCES’ + ‘val’ did not point to valid memory. + +‘EINVAL’ + The passed ‘name’ or ‘level’ were not valid. + + +File: ironclad.info, Node: gettidid/settidid, Next: failure_policy, Prev: getsockopt/setsockopt, Up: Syscalls + +9.86 gettidid/settidid +====================== + + int gettidid(int tid, char *id, size_t size); + int settidid(int tid, char *id, size_t size); + + This syscall gets or sets the passed thread’s ID. An ID is an array +associated with a thread for debug purposes. A thread is given no ID at +creation, and fetching it will fail. The ID is a C-style string. + + These syscalls returns 0 on success or ‘-1’ on failure, with the +errno: + +‘EINVAL’ + The passed buffers were either too big for setting, or to small for + fetching the ID, or the passed thread is not valid. + +‘EFAULT’ + The passed buffers were pointing to invalid memory. + + +File: ironclad.info, Node: failure_policy, Prev: gettidid/settidid, Up: Syscalls + +9.87 failure_policy +=================== + + #define MEM_FAIL_PANIC 1 + #define MEM_FAIL_SOFT_KILL 2 + #define MEM_FAIL_HARD_KILL 3 + #define OOM_ALLOW_PROC_KILL 1 + struct fail_modes { + uint64_t mem_policy; + uint64_t oom_policy; + }; + + int failure_policy(struct fail_modes *old, struct fail_modes *new); + + This syscall fetches and customized kernel behaviour on a series of +failure conditions. ‘old’, if not null, can be used for fetching the +values used at the time of calling, while ‘new’, if not ‘null’, will be +used to set new values. + + The valid values for ‘mem_policy’ are: + +‘MEM_FAIL_PANIC’ + When set to this value, a hardware memory failure will cause the + kernel to panic. This is the default. + +‘MEM_FAIL_SOFT_KILL’ + When set to this value, hardware failures will result in no + immediate action, when a process steps on the faulty memory, an + exception will be raised on the spot. + +‘MEM_FAIL_HARD_KILL’ + When set to this value, hardware failures will result on the + processes holding the faulty memory to be eagerly terminated. + + The valid values for ‘oom_policy’ are: + +‘OOM_ALLOW_PROC_KILL’ + When set, this value will make the kernel able to kill processes if + deemed necessary for the prolonged function of the system, if not + set, the kernel will not kill user processes at any cost. + + This syscall returns 0 on success or ‘-1’ on failure, with the errno: + +‘EINVAL’ + When setting new values with ‘new’, the passed values were not + valid. + +‘EFAULT’ + The passed buffers were pointing to invalid memory. + +‘EACCES’ + When setting new values with ‘new’, the calling process did not + have the capability ‘MAC_CAP_SYSMAC’. + + +File: ironclad.info, Node: Filesystem support and interfaces, Next: Networking, Prev: Syscalls, Up: Top + +10 Filesystem support and interfaces +************************************ + +Support for several filesystems is provided, with filesystem-specific +quirks at times, and exposes interfaces with ‘ioctl’ calls. This +section of the manual focuses on documenting said quirks, details, and +additional features. + +* Menu: + +* Extended FileSystem:: +* File Allocation Table:: + + +File: ironclad.info, Node: Extended FileSystem, Next: File Allocation Table, Up: Filesystem support and interfaces + +10.1 Extended FileSystem +======================== + +Ironclad supports EXT-series filesystems read-only and read-write. + + While a user may be used to the ext2/3/4 distinction, EXT internally +works as an independent set of features, with the version numbers +specifying a widely understood, assumed, and inconsistent set of +features. + + Ironclad supports the feature list: ‘sparse_super’, ‘large_file’, +‘filetype’, ‘resize_inode’, ‘dir_index’, ‘ext_attr’. + + Those features should translate to ext2 read-write support, and ext3 +read-only support. + + Some ‘ioctl’ calls exist for files inside EXT-series FSs, which can +help manage specialized FS-specific inode flags and permissions, they +are: + + EXT_GETFLAGS = 0x5600 + EXT_SETFLAGS = 0x5601 + + ioctl(fd, EXT_GETFLAGS, pointer_to_u32); // Get EXT's flags inode field. + ioctl(fd, EXT_SETFLAGS, pointer_to_u32); // Set EXT's flags inode field. + + +File: ironclad.info, Node: File Allocation Table, Prev: Extended FileSystem, Up: Filesystem support and interfaces + +10.2 File Allocation Table +========================== + +Ironclad’s FAT support is really rough. Only read-only FAT32 is +supported. No special ‘ioctl’ calls are provided. Long filenames are +not supported. + + +File: ironclad.info, Node: Networking, Next: Devices and their properties, Prev: Filesystem support and interfaces, Up: Top + +11 Networking +************* + +This chapter gives all the details on how Ironclad handles networking. + +* Menu: + +* Layering:: +* Interface handling:: +* Loopback:: + + +File: ironclad.info, Node: Layering, Next: Interface handling, Up: Networking + +11.1 Layering +============= + +The OSI model, as per the X.200 recommendation, defines 7 layers: + + | No. | Layer Name | Example technologies | + | +++ | ++++++++++++ | ++++++++++++++++++++++++++++++++++++ | + | 7 | Application | WebSocket, HL7 | + | 6 | Presentation | Idk I do embedded, weird stuff here | + | 5 | Session | Sockets, Named pipes, NetBIOS (eek!) | + | 4 | Transport | TCP, UDP, NBF | + | 3 | Network | IP, IPSec, ICMP | + | 2 | Data link | ARP, NDP, MAC | + | 1 | Physical | Ethernet, WiFi, Bluetooth | + + Ironclad aims to provide all the way to the *session* layer, no more! +(and no less). The main interface for networking used to interface with +that layer will be the socket. For learning about sockets, *note +socket::. + + +File: ironclad.info, Node: Interface handling, Next: Loopback, Prev: Layering, Up: Networking + +11.2 Interface handling +======================= + +Ironclad registers one interface per valid device plus one for a +loopback device. New addresses cannot be added manually, they may only +be added and removde by the kernel. Some parameters are available for +user control though, including per-interface configuration and enabling +and disabling. + + All interfaces but ‘loopback’ will be disabled by default, that is, +they will be setup and ready to go, but will refuse connectivity via +kernel block, as a security measure to avoid unexpected connectivity. +They will need manual enabling. + + +File: ironclad.info, Node: Loopback, Prev: Interface handling, Up: Networking + +11.3 Loopback +============= + +The loopback device is a special, virtual network interface meant to be +used mainly for diagnostics and troubleshooting, along for enabling +connecting to servers running on the local machine. + + It works fundamentally by returning the packets sent to it +(loopback!), in such a way that services can talk with themselves. This +device implements no physical layer of the network stack, packets are +passed without that layer. + + Loopback will always have the static IP addresses ‘127.0.0.1/8’ and +‘::1/128’. These addresses can be changed in runtime. *note +config_netinter::. + + +File: ironclad.info, Node: Devices and their properties, Next: GNU Free Documentation License, Prev: Networking, Up: Top + +12 Devices and their properties +******************************* + +Ironclad exposes a number of physical and virtual devices to userland. +All of them are exposed under the ‘/dev’ location, and support a series +of standard operations, like being manipulated by the usual file-related +syscalls like ‘read’ or ‘write’, while sporting device-specific +interfaces in the form of device-specific ‘ioctl’ requests. + + When quering device-specific information, Ironclad exposes +information a bit different than other kernels like Linux. Here is a +quick list of the most notable differences: + + • The ‘BLKGETSIZE’/‘BLKGETSIZE64’ ‘ioctl’ calls are not available, + instead, the block count and block size values of ‘stat’ are used. + + All devices in Ironclad have the ‘ioctl’ call ‘DEV_UUID’ implemented, +with the signature: + + #define DEV_UUID 0x9821 + + ioctl(fd, DEV_UUID, &pointer_to_uuid); -- uuids being uint8_t[16]; + + This call will write the UUID of the device pointed to by ‘fd’, +which, if all zeros, will mean that the device has no associated UUID. + +* Menu: + +* Common devices:: +* riscv64-limine devices:: +* x86_64-limine devices:: + + +File: ironclad.info, Node: Common devices, Next: riscv64-limine devices, Up: Devices and their properties + +12.1 Common devices +=================== + +These are devices exposed in Ironclad regardless of target system when +present, with standardized interfaces. + +12.1.1 console +-------------- + +‘/dev/console’ wraps architecture-specific debug output channels for use +with file operations. For x86-based targets, this is COM1, for other +targets, this may be UART. + + If the target implements reading from the debug channels, read will +be supported as well. If not implemented, the device will be read-only. + + The kernel also uses the debug channels for output, so keep in mind +the contentions that can cause. If you are doing a lot of spaced +writes, do not be surprised if the kernel pops in the middle! In the +other hand, the kernel does not read from the debug channels. + +12.1.2 loopback +--------------- + +‘/dev/loopback’ is the network loopback device, explained on *note +Loopback::. + +12.1.3 ramdev +------------- + +The devices starting by ‘ramdev’ are virtual devices representing the +RAM driver passed by some boot protocols, an FS can be mounted to them, +or be otherwise used like any other block device. These RAM devices are +read/write, but they cannot grow in size, so changes are constrained to +the area the RAM device already has allocated. + +12.1.4 random/urandom/hwrng +--------------------------- + +The device ‘random’ is equivalent to the one featured in other UNIX-like +kernels, and can be read to get a stream of cryptographically secure +pseudo-random bytes. + + Ironclad has limited sources of entropy, so the quality of this +random numbers may be limited as well. To mitigate this, one may write +to the ‘random’ device. The written data will be used as additional +entropy. + + ‘/dev/urandom’ does the same as ‘/dev/random’, and is only provided +for compatibility. + + ‘getrandom’ is provided as well for avoiding the file interface when +interfacing with ‘/dev/random’, as that may avoid certain kinds of DoS +attacks related to opened file limits. + + When present, CPU random number generators may be exposed as +‘/dev/hwrng’. This device behaves the same as ‘/dev/random’ apart from +the fact that it does not allow writing to it. It is recommended that, +unless necessary, you use ‘/dev/random’ instead. If you are to use +‘hwrng’, be sure you trust your hardware to not be backdoored, else, +those backdoors might be rendered useless by the kernel’s own CSPRNG +processing. + +12.1.5 null/zero +---------------- + +‘null’ returns ‘EOF’ whenever read, and all the write operations are +discarded. + + ‘zero’ returns exclusively a stream of zeros when read, and all write +operations are discarded. + + +File: ironclad.info, Node: riscv64-limine devices, Next: x86_64-limine devices, Prev: Common devices, Up: Devices and their properties + +12.2 riscv64-limine devices +=========================== + +To be determined. + + +File: ironclad.info, Node: x86_64-limine devices, Prev: riscv64-limine devices, Up: Devices and their properties + +12.3 x86_64-limine devices +========================== + +12.3.1 ata +---------- + +The devices starting by ‘sata’ represent several ATA IDE block devices. +These ATA drives have internal caching at the driver level, so they must +be ‘sync’’d for data integrity when wanting to ensure data coherency. + + No special ‘ioctl’ calls are supported. + +12.3.2 fb0 +---------- + +The ‘fb0’ device exposes the framebuffer passed as part of the boot +protocol, when present. The device uses Linux’s fbdev +(https://docs.kernel.org/fb/api.html) interface. + +12.3.3 i6300esb +--------------- + +‘i6300esb’ is a hardware watchdog featured in a lot of intel hardware, +it can be reset by using ‘write’ and can be configured using ‘ioctl’ +like: + + WDOG_START = 1 // Start the count. + WDOG_STOP = 2 // Stop the count. + WDOG_HEARTBEAT = 3 // Reset and set a new heartbeat period in seconds. + + ioctl(wdog, WDOG_START, ignored); // Enable 2:1 scaling. + ioctl(wdog, WDOG_STOP, ignored); // Enable 1:1 scaling. + ioctl(wdog, WDOG_HEARTBEAT, pointer_to_uint32_t); + + There is no default heartbeat count, so be sure to configure it if +you do not want mayhem. Access to reset and configuration can be +restricted by using MAC. + + While this piece of hardware allows for hooking up interrupts and +reboot separately when the timer expires, Ironclad right now will only +reboot when the timer expires. + +12.3.4 lpt +---------- + +The devices starting by ‘lpt’ represent the several character devices +representing the system’s parallel ports. They support write +operations, but no TTY interface is exposed, they are raw byte streams. + +12.3.5 pcspeaker +---------------- + +‘pcspeaker’ represents the IBM PC speaker, it is interfaced with using +‘ioctl’, as such: + + ioctl(fd, ignored, pointer_to_uint32_t_frequency_in_hz); + +12.3.6 ps2keyboard/ps2mouse +--------------------------- + +The devices ‘ps2keyboard’ and ‘ps2mouse’ exposes x86’s native PS2 +interfaces, ‘ps2keyboard’ is a normal character device that returns +scancodes as they are received. ‘ps2mouse’ is a character device that +returns mouse packets following the structure: + + struct mouse_data { + int x_variation; + int y_variation; + int z_variation; + bool is_left_click; + bool is_right_click; + bool is_middle_clock; + bool is_4th_click; + bool is_5th_click; + }; + + ‘ps2mouse’ supports a series of ‘ioctl’ calls for setting different +modes and talking directly with the PS2 controller: + + PS2MOUSE_2_1_SCALING = 1 + PS2MOUSE_1_1_SCALING = 2 + PS2MOUSE_SET_RES = 3 + PS2MOUSE_SET_SAMPLE_RATE = 4 + + ioctl(mouse, PS2MOUSE_2_1_SCALING, ignored); // Enable 2:1 scaling. + ioctl(mouse, PS2MOUSE_1_1_SCALING, ignored); // Enable 1:1 scaling. + ioctl(mouse, PS2MOUSE_SET_RES, resolution); // (0 - 3). + ioctl(mouse, PS2MOUSE_SET_SAMPLE_RATE, rate); // (0 - 200). + + Valid resolutions and sample rates are values for the PS2 controller, +else the call is ignored. For valid values and their meaning refer to +this website +(https://isdaman.com/alsos/hardware/mouse/ps2interface.htm). + +12.3.7 sata +----------- + +The devices starting by ‘sata’ represent several SATA AHCI block +devices. For now only SATA drives are supported, support for ATAPI is +not present. + + These SATA drives have internal caching at the driver level, so they +must be ‘sync’’d for data integrity when wanting to ensure data +coherency. + +12.3.8 serial +------------- + +The devices starting by ‘serial’ represent the several character devices +used for each present serial port, they support read/write operations, +but no TTY interface is exposed, they are raw byte streams. + + Baud and other settings can be set by using the ‘termios’, note that +most of the fields are not implemented as the serial devices are not +ttys but just byte streams. + + The default baud for all ports is set to be ‘115200’. + + +File: ironclad.info, Node: GNU Free Documentation License, Prev: Devices and their properties, Up: Top + +Appendix A GNU Free Documentation License +***************************************** + + Version 1.3, 3 November 2008 + + Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document “free” in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of “copyleft”, which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. We + recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it can + be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + “Document”, below, refers to any such manual or work. Any member + of the public is a licensee, and is addressed as “you”. You accept + the license if you copy, modify or distribute the work in a way + requiring permission under copyright law. + + A “Modified Version” of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A “Secondary Section” is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document’s overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The “Invariant Sections” are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in the + notice that says that the Document is released under this License. + If a section does not fit the above definition of Secondary then it + is not allowed to be designated as Invariant. The Document may + contain zero Invariant Sections. If the Document does not identify + any Invariant Sections then there are none. + + The “Cover Texts” are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + that says that the Document is released under this License. A + Front-Cover Text may be at most 5 words, and a Back-Cover Text may + be at most 25 words. + + A “Transparent” copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images composed + of pixels) generic paint programs or (for drawings) some widely + available drawing editor, and that is suitable for input to text + formatters or for automatic translation to a variety of formats + suitable for input to text formatters. A copy made in an otherwise + Transparent file format whose markup, or absence of markup, has + been arranged to thwart or discourage subsequent modification by + readers is not Transparent. An image format is not Transparent if + used for any substantial amount of text. A copy that is not + “Transparent” is called “Opaque”. + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and standard-conforming + simple HTML, PostScript or PDF designed for human modification. + Examples of transparent image formats include PNG, XCF and JPG. + Opaque formats include proprietary formats that can be read and + edited only by proprietary word processors, SGML or XML for which + the DTD and/or processing tools are not generally available, and + the machine-generated HTML, PostScript or PDF produced by some word + processors for output purposes only. + + The “Title Page” means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, “Title + Page” means the text near the most prominent appearance of the + work’s title, preceding the beginning of the body of the text. + + The “publisher” means any person or entity that distributes copies + of the Document to the public. + + A section “Entitled XYZ” means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) + To “Preserve the Title” of such a section when you modify the + Document means that it remains a section “Entitled XYZ” according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow the + conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document’s license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the title + equally prominent and visible. You may add other material on the + covers in addition. Copying with changes limited to the covers, as + long as they preserve the title of the Document and satisfy these + conditions, can be treated as verbatim copying in other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a machine-readable + Transparent copy along with each Opaque copy, or state in or with + each Opaque copy a computer-network location from which the general + network-using public has access to download using public-standard + network protocols a complete Transparent copy of the Document, free + of added material. If you use the latter option, you must take + reasonably prudent steps, when you begin distribution of Opaque + copies in quantity, to ensure that this Transparent copy will + remain thus accessible at the stated location until at least one + year after the last time you distribute an Opaque copy (directly or + through your agents or retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of copies, + to give them a chance to provide you with an updated version of the + Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with the + Modified Version filling the role of the Document, thus licensing + distribution and modification of the Modified Version to whoever + possesses a copy of it. In addition, you must do these things in + the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of previous + versions (which should, if there were any, be listed in the + History section of the Document). You may use the same title + as a previous version if the original publisher of that + version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document’s + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled “History”, Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on the + Title Page. If there is no section Entitled “History” in the + Document, create one stating the title, year, authors, and + publisher of the Document as given on its Title Page, then add + an item describing the Modified Version as stated in the + previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in the + “History” section. You may omit a network location for a work + that was published at least four years before the Document + itself, or if the original publisher of the version it refers + to gives permission. + + K. For any section Entitled “Acknowledgements” or “Dedications”, + Preserve the Title of the section, and preserve in the section + all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, unaltered + in their text and in their titles. Section numbers or the + equivalent are not considered part of the section titles. + + M. Delete any section Entitled “Endorsements”. Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + “Endorsements” or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option designate + some or all of these sections as invariant. To do this, add their + titles to the list of Invariant Sections in the Modified Version’s + license notice. These titles must be distinct from any other + section titles. + + You may add a section Entitled “Endorsements”, provided it contains + nothing but endorsements of your Modified Version by various + parties—for example, statements of peer review or that the text has + been approved by an organization as the authoritative definition of + a standard. + + You may add a passage of up to five words as a Front-Cover Text, + and a passage of up to 25 words as a Back-Cover Text, to the end of + the list of Cover Texts in the Modified Version. Only one passage + of Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document + already includes a cover text for the same cover, previously added + by you or by arrangement made by the same entity you are acting on + behalf of, you may not add another; but you may replace the old + one, on explicit permission from the previous publisher that added + the old one. + + The author(s) and publisher(s) of the Document do not by this + License give permission to use their names for publicity for or to + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination all + of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + by adding at the end of it, in parentheses, the name of the + original author or publisher of that section if known, or else a + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + “History” in the various original documents, forming one section + Entitled “History”; likewise combine any sections Entitled + “Acknowledgements”, and any sections Entitled “Dedications”. You + must delete all sections Entitled “Endorsements.” + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the documents + in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow this + License in all other respects regarding verbatim copying of that + document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of a + storage or distribution medium, is called an “aggregate” if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation’s users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one half + of the entire aggregate, the Document’s Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled “Acknowledgements”, + “Dedications”, or “History”, the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from you + under this License. If your rights have been terminated and not + permanently reinstated, receipt of a copy of some or all of the + same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + . + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License “or any later version” applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If the + Document does not specify a version number of this License, you may + choose any version ever published (not as a draft) by the Free + Software Foundation. If the Document specifies that a proxy can + decide which future versions of this License can be used, that + proxy’s public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A “Massive Multiauthor Collaboration” (or “MMC”) contained in the + site means any set of copyrightable works thus published on the MMC + site. + + “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + “Incorporate” means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is “eligible for relicensing” if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + +ADDENDUM: How to use this License for your documents +==================================================== + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and license +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the “with...Texts.” line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of free +software license, such as the GNU General Public License, to permit +their use in free software. + + + +Tag Table: +Node: Top509 +Node: Installation and target support9788 +Node: riscv64-limine support10421 +Node: x86_64-limine support11120 +Node: Boot-time command-line options11641 +Node: Format12126 +Node: List12617 +Node: Scheduling and RTC13933 +Node: Ticks and other interruptions14394 +Node: Scheduling basics15007 +Node: Thread clustering management16440 +Node: Inter-process communication18276 +Node: Pipes18662 +Node: Futexes19094 +Node: PTYs19265 +Node: Signals19725 +Node: Sockets19897 +Node: Memory architecture20047 +Node: Physical memory allocation20376 +Node: Virtual memory21213 +Node: Memory failures21663 +Node: Userland state and conditions22383 +Node: Program loading22748 +Node: Memory layout23196 +Node: Security and integrity facilities23841 +Node: Users and groups24279 +Node: Mandatory access control (MAC)24883 +Node: Resource limits28646 +Node: Miscellaneous measures30242 +Node: Debugging facilities30666 +Node: Corefile and process dumping30994 +Node: Program tracing31797 +Node: Syscalls32056 +Node: Table and target quirks33579 +Node: Errno37403 +Node: exit39379 +Node: arch_prctl39823 +Node: open40742 +Node: close42081 +Node: read/write42512 +Node: seek43554 +Node: mmap/mprotect/munmap44369 +Node: getpid/getppid46900 +Node: exec47328 +Node: clone48089 +Node: wait49294 +Node: socket50152 +Node: sethostname53531 +Node: unlink54063 +Node: fstat54538 +Node: chdir55663 +Node: ioctl56082 +Node: sched_yield56912 +Node: delete_tcluster57358 +Node: pipe57820 +Node: rename58418 +Node: sysconf59324 +Node: spawn66331 +Node: gettid67569 +Node: manage_tcluster67774 +Node: fcntl68346 +Node: exit_thread72171 +Node: getrandom72616 +Node: mac_capabilities73473 +Node: add_mac_permissions74766 +Node: set_mac_enforcement75735 +Node: mount/umount76331 +Node: readlink77914 +Node: getdents78453 +Node: sync79658 +Node: mknod80140 +Node: truncate80723 +Node: bind81324 +Node: mkdir82138 +Node: symlink82588 +Node: connect83156 +Node: openpty83981 +Node: fsync84552 +Node: link85524 +Node: ptrace86067 +Node: listen87156 +Node: accept88195 +Node: getrlimit/setrlimit89063 +Node: access90826 +Node: ppoll92216 +Node: getuid/geteuid94881 +Node: setuids95162 +Node: fchmod95757 +Node: umask96263 +Node: reboot96860 +Node: fchown98221 +Node: pread/pwrite98888 +Node: getsockname99712 +Node: getpeername100253 +Node: shutdown100784 +Node: futex101629 +Node: clock104135 +Node: clock_nanosleep105599 +Node: getrusage106687 +Node: recvfrom/sendto107891 +Node: config_netinter109030 +Node: utimes110491 +Node: create_tcluster111123 +Node: switch_tcluster111519 +Node: sigprogmask112079 +Node: sigaction113226 +Node: send_signal113977 +Node: getprio/setprio114767 +Node: getgid/getegid116228 +Node: setgids116519 +Node: getgroups/setgroups117127 +Node: ttyname118277 +Node: fadvise118868 +Node: shmat120954 +Node: shmctl122081 +Node: shmdl123782 +Node: shmget124179 +Node: getsockopt/setsockopt124948 +Node: gettidid/settidid126789 +Node: failure_policy127564 +Node: Filesystem support and interfaces129457 +Node: Extended FileSystem129936 +Node: File Allocation Table130992 +Node: Networking131326 +Node: Layering131617 +Node: Interface handling132624 +Node: Loopback133317 +Node: Devices and their properties134017 +Node: Common devices135335 +Node: riscv64-limine devices138115 +Node: x86_64-limine devices138333 +Node: GNU Free Documentation License142456 + +End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/ironclad.info.gz b/ironclad.info.gz new file mode 100644 index 0000000000000000000000000000000000000000..e3bf8261320dc259bbf3bbc51238109223d5a110 GIT binary patch literal 48710 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 GoB{w29 43>38 3|73b14 76l8 76t21 +43m29 Seconds{4|19M9} 3|73b29 +43m38 Nanoseconds{4|19M9} 3|73b38 +X 3 arch-clocks.adb +30m4 RT_Timestamp_Seconds{4|19M9} 20r11 +31m4 RT_Timestamp_Nanoseconds{4|19M9} 21r11 +32m4 RT_Stored_Seconds{4|19M9} 22r11 +33m4 RT_Stored_Nanoseconds{4|19M9} 23r11 +37N4 MS_Per_Sec +38N4 Nanos_Per_MS 39r35 +39m4 Mono_TSC_Freq{4|19M9} 24r34 +X 4 interfac.ads +11K9*Interfaces 2|17w6 17r22 4|120e15 +19M9*Unsigned_64 2|27r67 31r61 35r67 39r56 43r52 3|30r31 31r31 32r31 33r31 +. 39r20 46r67 53r61 59r67 66r56 73r52 + diff --git a/obj/arch-clocks.o b/obj/arch-clocks.o new file mode 100644 index 0000000000000000000000000000000000000000..49825ce93667691dfb036783babe3b4c70549364 GIT binary patch literal 11864 zcmc&)TWnlM8J^>{(%H{s zaY#cENmL||`p}0Wf{4ULv|J=qaS>F42QCk^JOHggf)_4tTqH`xtx#3v|7QN#{de|k zY$^mJ`OH7xeE;|VXU?2CbI$t1nX!=;&r`N|>MyF+vZzvcJ6YQ0+HQHIVx~f(;tXA;0T%m)`cgr4t zY^Px_Hlu6f^I$Ps*7^C7A@A{9en;8i0X2!v|-F?ONp|*Fujfk3S zhS->TgpFJB{jqNMST}R=wA&Uv>S`??I$}9(%853OJr*| zxh4$c5vjZNWCu-`4ll8~y?d>3>|Wi!*(0GNGjr~R&Uf3h#x+tqWXud8Ra=tm#$O?|YhXXf0*_+V}u~28$&Erv1q8p{$U2h1xR%;Q0MP zSRskQ?X$i9z5~6vfojk2!t8iHBA>Y^DpwArs#zzCrQ&RHAz2D%QwtUHUnrMLVU(PU z3iDO(qjZr?$S_~YUD)5>GoLTyi$RSrHg@LNnbTtr4UYKpmB5^MIiKt5DbNUn!MuNw zOn)jrIA7l1&*|m{Q&FLuI&u2wM9)O#)Y+b1l)mJ|sk1f4(uTfLS_pGNsvP>W1;3K? zrzx@?u|jN&0TZK;uh6iUgWO0AdxI>&s$&t)&=bCr;eGeI#Io zihi+VCsyOcZ#I3km!9^8iaM8>IDhW6S}5i((1oD+o-anhY!E8c;f$XP=oVWjR`RpO zU^=_MU&Y7E7xPixpU+g|y|0?P&^^YoHm_u=H1()Trugz; zSW@*fCG^65Gi9}1C@jpU%e`^u zBr!aUTGi{=`85<8n+6O(f}h`RXTt1=U6{~@ZIW82Sxd)n{SWz8zxs3)StZP-Paul( z(L2^9;U=G@^G!Z&igrv5B@u%fej~dXZt__=-|94a;QChgK-F9gf9bf%XX$*aAD@qY zJFDgb!|<1mn|zkexBBt&M?%p%L`+FESxpnloV9c@=e0rYlOWj^A83N#-vpm-f=5m8r(*Heh851_(|G?H zd|AUCZ19_!;LDrfE1JZmw>PJp)@?k+>Wg`i?NHyTht-U3Z)k{HVBDcAGhS;NX3z&U z(VU(1`Iv5Ws833e>}MDc>RyJFy2kjQoC*DD#@}-I&olnKgMWqbF$ez!;~#SHZ!`Y7 zgMXj#L0#7lFEc*w@Lyp(?cl#;yry8R-!ksb+uv)vaUFP#ac6k+OQ)jy?iMHRTbkdv zz9sY{ym7v*(0GUXk)yLt!9O6_Ib?MbsvSd-A!fW{l2 zvqu+Mo^TzqGn&g9s1 zFtsq7^{1x7;6krTjvXBzN#AX1+oaamxiPd1d7j=bxv!5s_M3X2srpUDG6zkIDF;kz zz*K2&rfn=Hr_nz$jNXxq<)k$RoskTyrIEnMFd~g)I9?iAj0_`*kqoCo-vWW@o(yN% zhnOS7S|Nj@IlFvurqt`alr8$!w!|+T^|YAJEFe^0N9CIx-jr&ea_VSKuJs>es^9Kt znkl@W*kX4Uz>ipv>h){`A7UGo-4OskD)8Ib20kqCT>?KQ@Vx>*E^vIDLxE04TjpS6 z0Ur_geQX0iA@K789~F33;3oy17x=pcz94WL3(!@8OP!|$E_KZF)0~&oc~0=9&IB!>z|RWY zJWtG*=JyEPJWrImgRpZk_#VO}e^ltp^PLd5JYQen<3j&Y#Wj;>}T;_94;BxQrS;mpi0|?0FON=9*2Q5go#gUKXzbN!&K0gq+%;zTpe@N*6 zf^p>Yu)u%AIP!TU21h=U|C-R3`TR@ZGM{A#NCn;R)s{J|VI0-_1iq1RM;4+^eEk2 zy14olclEoN4;?uU;GwwVW^vS#Z$Df?M_%895TODcIUg(z9myY}HVSm)ydBl3(Rq+< zR2GMhXZLBAf|1QQ|eYp8YwK6b3op2L9(^tWou94rof$&Z-h>R)6W`nR)<>N4BV$2GR)G8@pB z{HGar^`BuJ`p~lF8XLf%WsAjuNxn)}o+v~<{n%ECLQ~IKD+(?~Dv2MYRdT9QQAq&F z`d7o4SJgOL{hO%x32||Xc_f`n{hJ{P>>q zqbSTzEkqRkzf`c6Vy?+G0MbJ^#1zawS-PnK|AYj|9&*~Y39c+y+m_ScJN3tUb))>< zeBJhV6aQhtQQUEH{Vx+IF8(N-sVwII1>(f{+jri@{D0QOe*(d&Eav}r;>5+bdqekp z-8R1a!rv`+9e%)ZaJicZXeH+%N8lQ7U|(!A9k)@1=NIM*id~cMY!d(L9JkX6=rq+m zP5fWw33*vZs~ueb0|dn7e|DSkd5Im6KlXKQ{%4!SKL=4N@|z3VZv6Y2#NWi58~fZq zeC!k5_(7BSpW^ucL{L%O_>)cIf05%)@;D;?I{I_tKhE)cMGTnF@^#)<&v lLw|03Tqd3(#(|G>{Bn_U#1T&x%&9p4QQl;~>^L}0^=}AME@c1! literal 0 HcmV?d00001 diff --git a/obj/arch-context.adb.stderr b/obj/arch-context.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-context.adb.stdout b/obj/arch-context.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-context.ali b/obj/arch-context.ali new file mode 100644 index 0000000..65dbf75 --- /dev/null +++ b/obj/arch-context.ali @@ -0,0 +1,104 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.context%b arch-context.adb 06d70fe8 NE OO PK +W arch%s arch.ads arch.ali + +U arch.context%s arch-context.ads e4b57bc2 NE OO PK +W arch%s arch.ads arch.ali +W arch.interrupts%s arch-interrupts.ads arch-interrupts.ali +W interfaces%s interfac.ads interfac.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-context.ads 20241115151036 7bffdd51 arch.context%s +D arch-context.adb 20241115151036 7d28d2b9 arch.context%b +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [init_gp_context arch__context 33 14 none] +G c Z s b [load_gp_context arch__context 39 14 none] +G c Z s b [save_core_context arch__context 42 14 none] +G c Z s b [success_fork_result arch__context 46 14 none] +G c Z s b [init_fp_context arch__context 49 14 none] +G c Z s b [save_fp_context arch__context 50 14 none] +G c Z s b [load_fp_context arch__context 51 14 none] +G c Z s b [destroy_fp_context arch__context 52 14 none] +G c Z s s [Tfp_contextBIP arch__context 23 7 none] +X 1 arch.ads +20K9*Arch 52e9 2|18r6 20r9 22r31 70r5 3|17r14 68r5 +X 2 arch-context.ads +20K14*Context 1|20k9 2|70l10 70e17 3|17b19 68l10 68t17 +22R15*GP_Context{4|21R9} 34r25 39r37 46r48 3|19r25 29r37 42r48 +23A15*FP_Context(5|16M9) 49r44 50r47 51r40 52r47 3|47r41 52r44 57r37 +. 63r47 +24M15*Core_Context{5|19M9} 42r43 3|37r43 +33U14*Init_GP_Context 34<8 35>8 36>8 3|18b14 27l8 27t23 +34r8 Ctx{22R15} 3|19b8 26m7 +35m8 Stack{6|25M9} 3|20b8 23r28 +36m8 Start_Addr{6|25M9} 3|21b8 24r28 +39U14*Load_GP_Context 39>31 3|29b14 35l8 35t23 +39r31 Ctx{22R15} 3|29b31 30r28 +42U14*Save_Core_Context 42<33 3|37b14 40l8 40t25 +42m33 Ctx{24M15} 3|37b33 39m7 +46U14*Success_Fork_Result 46=35 3|42b14 45l8 45t27 +46r35 Ctx{22R15} 3|42b35 44m7 +49U14*Init_FP_Context 49<34 3|47b14 50l8 50t23 +49a34 Ctx{23A15} 3|47b31 49m7 +50U14*Save_FP_Context 50=34 3|52b14 55l8 55t23 +50a34 Ctx{23A15} 3|52b31 54m7 +51U14*Load_FP_Context 51>34 3|57b14 61l8 61t23 +51a34 Ctx{23A15} 3|57b31 58r28 +52U14*Destroy_FP_Context 52=34 3|63b14 67l8 67t26 +52a34 Ctx{23A15} 3|63b34 64r28 +X 4 arch-interrupts.ads +19K14*Interrupts 2|18w11 22r36 4|39e20 +21R9*Frame 2|22r47 4|38e15 +X 5 interfac.ads +11K9*Interfaces 2|17w6 17r22 5|120e15 +16M9*Unsigned_8 2|23r51 +19M9*Unsigned_64 2|24r31 +X 6 system.ads +11K9*System 2|35r21 36r21 3|20r21 21r21 6|73e11 +25M9*Address 2|35r28 36r28 3|20r28 21r28 + diff --git a/obj/arch-context.o b/obj/arch-context.o new file mode 100644 index 0000000000000000000000000000000000000000..0d6e45d451e9217665e261f7df3b5bf20d53800a GIT binary patch literal 15056 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 MlG 45r38 8|47r26 +45P9*Core_Local_Arr_Acc(44A9) 47r18 +46i4*Core_Count{positive} 8|43m7 47r47 51r10 +47p4*Core_Locals{45P9} 8|47m7 78r7 79r30 +50U14*Init_Cores 8|30b14 65l8 65t18 +54U14 Core_Bootstrap 54^30 8|59r36 67b14 74l8 74t22 +54p30 Info(10|184R9) 8|67b30 71r27 73r29 73r46 +57U14 Init_Common 57>27 57>51 8|48s7 73s7 76b14 86l8 86t19 +57i27 Core_Number{positive} 8|76b27 78r20 79r43 82r30 +57m51 Hart_ID{14|19M9} 8|76b51 83r30 +X 8 arch-cpu.adb +22r4 SMP_Request{10|155R9} 35r34 38r10 +31m7 BSP_Hart_ID{14|19M9} 44m7 48r23 57r34 +32i7 Idx{natural} 58r49 60m19 60r36 +34r7 SMPPonse{10|168R9} 43r31 44r22 53r58 54r40 +53a13 SMP_CPUs{10|201A9} 56r24 +56p17 CPU=56:24{10|199P9} 57r19 58r19 59r19 +68a7 Stp{20|55A12} 71m43 72r51 +69i7 Stp_Len{natural} 71m48 +X 10 arch-limine.ads +20K14*Limine 7|20w11 54r44 8|22r18 24r23 34r18 53r24 67r44 10|293e16 +41A9*Request_ID(14|19M9) +43a7*ID{41A9} 8|24m11 +44m7*Revision{14|19M9} 8|25m11 +45m7*Response{26|25M9} 8|26m11 35r51 38r27 +155R9*SMP_Request 8|22r25 10|158e14 +156r7*Base{42R9} 8|23m8 35r46 38r22 +157m7*Flags{14|19M9} 8|27m8 +168R9*RISCV64_SMP_Response 8|34r25 10|174e15 +171m7*BSP_Hart_ID{14|19M9} 8|44r31 +172m7*CPU_Count{14|19M9} 8|43r40 53r67 +173m7*CPUs{26|25M9} 8|54r49 +184R9*RISCV64_SMP_CPU_Info 7|54r51 8|67r51 10|190e15 +186m7*Hart_ID{14|19M9} 8|57r23 73r51 +188m7*Addr{26|25M9} 8|59m23 +189m7*Extra_Arg{14|19M9} 8|58m23 71r32 73r34 +199P9*RISCV64_CPU_Info_Acc(184R9) +201A9*RISCV64_CPU_Info_Arr(199P9)<14|19M9> 8|53r31 +242a4*SMP_ID{41A9} 8|24r30 +X 14 interfac.ads +11K9*Interfaces 7|17w6 17r22 14|120e15 +19M9*Unsigned_64 7|29r25 30r25 33r25 57r61 8|31r21 58r36 76r61 +X 19 lib.ads +19K9*Lib 8|18r6 19r6 39r10 68r17 71r7 72r7 19|35e8 +X 20 lib-messages.ads +21K13*Messages 8|18w10 68r21 71r11 72r11 20|103e17 +41U14*Put_Line 8|72s20 +55A12*Translated_String{string} 8|68r30 +74U14*Image 8|71s20 +X 21 lib-panic.ads +21K13*Panic 8|19w10 39r14 21|39e14 +32U14*Hard_Panic 8|39s20 +X 25 scheduler.ads +25K9*Scheduler 7|19w6 34r25 8|84r30 25|183e14 +27I9*TID 7|34r35 +29i4*Error_TID{27I9} 8|84r40 +X 26 system.ads +11K9*System 8|17w6 17r18 26r23 38r38 26|73e11 +25M9*Address +26m4*Null_Address{25M9} 8|26r30 38r45 +32V14*"="{boolean} 8|38r36 +X 29 userland.ads +17K9*Userland 7|18r6 35r25 8|85r30 29|23e13 +X 32 userland-process.ads +28K18*Process 7|18w15 35r34 8|85r39 32|677e21 +33I9*PID 7|35r42 +34i4*Error_PID{33I9} 8|85r47 + diff --git a/obj/arch-cpu.o b/obj/arch-cpu.o new file mode 100644 index 0000000000000000000000000000000000000000..29303777e20a3680ad554d22d34d25a0f7bf4450 GIT binary patch literal 28672 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 =KlTlDE1t(y{?YQ{a|YVA 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 G{r>@l7~_xt literal 0 HcmV?d00001 diff --git a/obj/arch-debug.adb.stderr b/obj/arch-debug.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-debug.adb.stdout b/obj/arch-debug.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-debug.ali b/obj/arch-debug.ali new file mode 100644 index 0000000..2618b6c --- /dev/null +++ b/obj/arch-debug.ali @@ -0,0 +1,98 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.debug%b arch-debug.adb 8b8a9c51 NE OO PK +W arch%s arch.ads arch.ali +W devices%s devices.adb devices.ali +W devices.uart%s devices-uart.adb devices-uart.ali +Z system%s system.ads system.ali + +U arch.debug%s arch-debug.ads f201567a NE OO PK +W arch%s arch.ads arch.ali +W devices%s devices.adb devices.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-debug.ads 20241115151036 7987b5ed arch.debug%s +D arch-debug.adb 20241115151036 e7be1437 arch.debug%b +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices-uart.ads 20241115151036 15b33d8b devices.uart%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [read arch__debug 28 14 none] +G c Z s b [print arch__debug 32 14 none] +G c Z s b [print arch__debug 36 14 none] +G c Z s b [print arch__debug 40 14 none] +G r c none [print arch__debug 32 14 none] [write_uart0 devices__uart 26 14 none] +G r c none [print arch__debug 36 14 none] [write_uart0 devices__uart 29 14 none] +G r c none [print arch__debug 40 14 none] [write_uart0 devices__uart 29 14 none] +X 1 arch.ads +20K9*Arch 52e9 2|19r9 49r5 3|19r14 40r5 +X 2 arch-debug.ads +19K14*Debug 1|20k9 2|45E7 49l10 49e15 3|19b19 40l10 40t15 +24b4*Supports_Read{boolean} 45c7 +28U14*Read 28<20 3|20b14 23l8 23t12 +28a20 Message{5|29A9} 3|20b20 +32U14*Print 32>21 3|25b14 28l8 28t13 +32e21 Message{character} 3|25b21 27r33 +36U14*Print 36>21 3|30b14 33l8 33t13 +36a21 Message{string} 3|30b21 32r33 +40U14*Print 40>21 3|35b14 39l8 39t13 +40a21 Message{5|29A9} 3|35b21 36r24 36r64 +X 3 arch-debug.adb +36a7 S{string} 38r33 +X 5 devices.ads +22K9*Devices 2|17w6 28r34 40r31 3|17r6 20r34 27r7 32r7 35r31 38r7 5|279e12 +29A9*Operation_Data(7|16M9) 2|28r42 40r39 3|20r42 35r39 +X 6 devices-uart.ads +21K17*UART 3|17w14 27r15 32r15 38r15 6|37e17 +26U14*Write_UART0 3|27s20 +29U14*Write_UART0 3|32s20 38s20 +X 7 interfac.ads +16M9*Unsigned_8 + diff --git a/obj/arch-debug.o b/obj/arch-debug.o new file mode 100644 index 0000000000000000000000000000000000000000..810be10b89328ef079fb2e412573e12c0f84519f GIT binary patch literal 12600 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 literal 0 HcmV?d00001 diff --git a/obj/arch-dtb.adb.stderr b/obj/arch-dtb.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-dtb.adb.stdout b/obj/arch-dtb.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-dtb.ali b/obj/arch-dtb.ali new file mode 100644 index 0000000..ca5f2d3 --- /dev/null +++ b/obj/arch-dtb.ali @@ -0,0 +1,104 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.dtb%b arch-dtb.adb 1fe12bc3 NE OO PK +W arch%s arch.ads arch.ali +W system%s system.ads system.ali + +U arch.dtb%s arch-dtb.ads 32431cfe NE OO PK +W arch%s arch.ads arch.ali +W arch.limine%s arch-limine.adb arch-limine.ali +W interfaces%s interfac.ads interfac.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-dtb.ads 20241115151036 3bdb8188 arch.dtb%s +D arch-dtb.adb 20241115151036 e59d4584 arch.dtb%b +D arch-limine.ads 20241115151036 8eb8e49c arch.limine%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [init arch__dtb 21 13 none] +G c Z s s [fdt_headerIP arch__dtb 34 9 none] +X 1 arch.ads +20K9*Arch 52e9 2|18r6 20r9 25r18 26r20 46r5 3|19r14 21r18 34r5 +X 2 arch-dtb.ads +20K14*DTB 1|20k9 2|25E4 46l10 46e13 3|19b19 34l10 34t13 +21V13*Init{boolean} 3|20b13 33l8 33t12 +25r4 DTB_Request{4|42R9} 3|22r34 24r10 +32N4 FDT_Magic 3|31r32 +34R9 FDT_Header 45e15 3|29r19 +35m7*Magic{5|18M9} 3|31r24 +36m7*Size{5|18M9} +37m7*Offset_DT_Struct{5|18M9} +38m7*Offset_DT_Strings{5|18M9} +39m7*Offset_Reserved_Flag{5|18M9} +40m7*Version{5|18M9} +41m7*Last_Compatible_Vers{5|18M9} +42m7*Boot_CPU_Physical_ID{5|18M9} +43m7*Size_DT_Stings{5|18M9} +44m7*Size_DT_Struct{5|18M9} +X 3 arch-dtb.adb +21r7 DTBPonse{4|216R9} 29r54 +29r10 Header{2|34R9} 31r17 +X 4 arch-limine.ads +20K14*Limine 2|18w11 25r23 26r25 3|21r23 4|293e16 +41A9*Request_ID(5|19M9) +42R9*Request 2|25r30 4|46e15 +43a7*ID{41A9} 2|26m8 +44m7*Revision{5|19M9} 2|27m8 +45m7*Response{6|25M9} 2|28m8 3|22r46 24r22 +216R9*DTB_Response 3|21r30 4|219e15 +218m7*DTB_Addr{6|25M9} 3|29r63 +250a4*DTB_ID{41A9} 2|26r32 +X 5 interfac.ads +11K9*Interfaces 2|17w6 17r22 5|120e15 +18M9*Unsigned_32 2|35r30 36r30 37r30 38r30 39r30 40r30 41r30 42r30 43r30 +. 44r30 +19M9*Unsigned_64 +X 6 system.ads +11K9*System 2|28r20 3|17w6 17r18 24r33 6|73e11 +25M9*Address +26m4*Null_Address{25M9} 2|28r27 3|24r40 +32V14*"="{boolean} 3|24r31 + diff --git a/obj/arch-dtb.o b/obj/arch-dtb.o new file mode 100644 index 0000000000000000000000000000000000000000..dfab1dfd530c189a0d1dc1671c570568e84e9916 GIT binary patch literal 9968 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 +44R9*Boot_Information 51e14 11|30r18 +45a7*Cmdline{string} 11|65r36 +46i7*Cmdline_Len{integer} 11|65r55 +47a7*Memmap{34A9} 11|47r21 56r44 57r34 +48i7*Memmap_Len{integer} 11|47r39 56r62 57r52 +X 8 arch-cpu.ads +22K14*CPU 58e13 11|26w11 62r12 +50U14*Init_Cores 11|62s16 +X 9 arch-dtb.ads +20K14*DTB 46e13 11|25w11 41r19 +21V13*Init{boolean} 11|41s23 +X 10 arch-entrypoint.ads +17K14*Entrypoint 5|20k9 10|20l10 20e20 11|28b19 67l10 67t20 +18U14*Bootstrap_Main 11|29b14 66l8 66t22 +X 11 arch-entrypoint.adb +30r7 Info=30:50{5|44R9} 47r16 47r34 56r39 56r57 57r29 57r47 65r31 65r50 +31a7 St1{26|55A12} 48m53 50r33 +31a12 St2{26|55A12} 49m41 50r47 +32i7 Stp_Len{natural} 48m58 49m46 +47r11 E=47:11{5|29R9} 48r42 49r30 51r37 +X 13 arch-limine.ads +20K14*Limine 11|20w11 30r43 38r7 13|293e16 +22r4*Global_Info{5|44R9} 11|30r50 +36U14*Translate_Proto 11|38s14 +X 14 arch-mmu.ads +22K14*MMU 11|23w11 57r19 14|250e13 +63V13*Init{boolean} 11|57s23 +X 15 devices.ads +22K9*Devices 11|19r6 35r7 15|279e12 +X 17 devices-uart.ads +21K17*UART 11|19w14 35r15 17|37e17 +23U14*Init_UART0 11|35s20 +X 18 interfac.ads +11K9*Interfaces 11|17w6 17r22 18|120e15 +19M9*Unsigned_64 11|48r17 49r17 +X 24 kernel_main.ads +17K9*Kernel_Main 11|18w6 65r7 24|26e16 +25U14*Entrypoint 11|65s19 +X 25 lib.ads +19K9*Lib 11|21r6 21r24 24r6 31r18 42r10 46r7 50r10 55r7 58r10 25|35e8 +X 26 lib-messages.ads +21K13*Messages 11|21w10 21r28 31r22 46r11 50r14 55r11 26|103e17 +41U14*Put_Line 11|46s20 50s23 55s20 +55A12*Translated_String{string} 11|31r31 +74U14*Image 11|48s10 49s10 +X 27 lib-panic.ads +21K13*Panic 11|24w10 42r14 58r14 27|39e14 +32U14*Hard_Panic 11|42s20 58s20 +X 29 memory.ads +19K9*Memory 11|22r6 56r7 29|36e11 +X 30 memory-physical.ads +20K16*Physical 11|22w13 56r14 30|60e20 +23U14*Init_Allocator 11|56s23 +X 33 system.ads +25M9*Address +X 34 s-stoele.ads +12I9*Storage_Offset +16I12*Storage_Count{12I9} +49M9*Integer_Address +56V13*To_Integer{49M9} 11|48s30 + diff --git a/obj/arch-entrypoint.o b/obj/arch-entrypoint.o new file mode 100644 index 0000000000000000000000000000000000000000..636fafcf6150ef56a40170da20ab28ff6eae2e48 GIT binary patch literal 22216 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 22>41 3|23b13 28l8 28t18 +22i25 Code{natural} 3|23b25 24r28 +22m41 Arg{4|25M9} 3|23b41 25r28 +26U14*Panic_SMP_Hook 3|30b14 33l8 33t22 +29V13*Get_Active_Core_Count{positive} 3|35b13 38l8 38t29 +32U14*Register_RAM_Files 3|40b14 43l8 43t26 +X 4 system.ads +11K9*System 2|22r47 3|23r47 4|73e11 +25M9*Address 2|22r54 3|23r54 + diff --git a/obj/arch-hooks.o b/obj/arch-hooks.o new file mode 100644 index 0000000000000000000000000000000000000000..a4e230aca080eabca6e3c54bf930e3e65dea57ff GIT binary patch literal 9576 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 Ht1A8r5AQ|F literal 0 HcmV?d00001 diff --git a/obj/arch-interrupts.ads.stderr b/obj/arch-interrupts.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-interrupts.ads.stdout b/obj/arch-interrupts.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-interrupts.ali b/obj/arch-interrupts.ali new file mode 100644 index 0000000..14ac387 --- /dev/null +++ b/obj/arch-interrupts.ali @@ -0,0 +1,79 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.interrupts%s arch-interrupts.ads 9f4aa693 NE OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [frameIP arch__interrupts 21 9 none] +X 1 arch.ads +20K9*Arch 52e9 2|19r9 39r5 +X 2 arch-interrupts.ads +19K14*Interrupts 1|20k9 2|39l10 39e20 +21R9*Frame 38e15 +22m7*R15{3|18M9} +23m7*R14{3|18M9} +24m7*R13{3|18M9} +25m7*R12{3|18M9} +26m7*R11{3|18M9} +27m7*R10{3|18M9} +28m7*R9{3|18M9} +29m7*R8{3|18M9} +30m7*R7{3|18M9} +31m7*R6{3|18M9} +32m7*R5{3|18M9} +33m7*R4{3|18M9} +34m7*R3{3|18M9} +35m7*R2{3|18M9} +36m7*R1{3|18M9} +37m7*R0{3|18M9} +X 3 interfac.ads +11K9*Interfaces 2|17w6 17r22 3|120e15 +18M9*Unsigned_32 2|22r14 23r14 24r14 25r14 26r14 27r14 28r14 29r14 30r14 +. 31r14 32r14 33r14 34r14 35r14 36r14 37r14 + diff --git a/obj/arch-interrupts.o b/obj/arch-interrupts.o new file mode 100644 index 0000000000000000000000000000000000000000..c585df6c3e168a3ac3996a704debe6cad13fa0a3 GIT binary patch literal 3960 zcmbtWOK%)S5bp8V;NaMC5)vLkc(XF#NbJn++9XP(jl6MU$7o}l*dT#~hThrU-HCS| znwd=;gcQW%#vx}o=7Pk913!QR7jB#oKOtAd1&Kqb>c@DtcZ{M?(sWgSRn=A9UEMto zZnV}X41*{#$Y12Jr%*!vJ|<+;t#WadoF!+-7oV4*H${wT1i9xdSIcH%@_8;9Cyh7e zPS2PN=N9H)B4lEb%*yXgd{cwY6qzO$fE$MK&)h6B3YIbO;wqn(-YN@haFI9R0P47{`o25$k z_TFy8?uS0Jeb4PvHn3e9C21J2ojAP1+|>5sFmMO7W5;RI@nRc%h5LPQ55h{4Qg^=+ z#bFB8VGN)^+&**n8$k#_ho-cWfZ7X#1p3`!z~vlwugc9yjjgh4MDT4CI?hY9!(qbQ71tDpLV%)1%8 zeGxMD68G-KmCC^Ly?`AWv|8J1+gq&<8|!qCFfsASb4wK;Rv=~rdH^DAdyPSKaYd%< zHtf`o?2WDFUS;pbt({60sc!Av+Bvj%x}{ITVeB$HifPZMiA6gQnXi~%7-Lz)@Vx|< zJz{R7UaeiO)oaU`B+RuD!yG-Iy3VJbo5av|S>Q5{Sa#UH1FejQw)W_f*oakl#l^!Y z#axo7a3e)-WMggZN@)qo^n$EWsB56(@I3)CiSd~+J3(IL=y=n-2^de07*|1@oS)(o zt4B4*uSZpfqU55)=P3j+RWAGfa8Qe?<0FqEc*-WppHD_n(Ssa|U}DN+t}9K@6p;xL zbUMR3`}w&la(Oy zpCy+RAi2UDN8le7;`16x$Zd{{&$rF-mHW>F3d~+2+@@g8>pvPdyoD0^3a)A_-h_J)^Zs_|gfRqCG&#>Uh z5dR$`gYa4b1mAFrrfKZ8hbaX5zjO`;z&#jQJLs>%S47!4lgjhJ(Oia({}w3l6X>0<&!9$^FY zj$m1<+dcqIQT)CPbW?g_e0+WM__)3}rn+Z9 +38m7*Start{11|25M9} 6|78m20 +39i7*Length{12|16I12} 6|79m20 +41A9*Boot_RAM_Files(37R9) +44R9*Boot_Information 51e14 5|22r18 +45a7*Cmdline{string} 6|63m19 +46i7*Cmdline_Len{integer} 6|64m19 +47a7*Memmap{34A9} 6|104m22 111r25 112r37 113r25 115r44 116m25 117r28 118m25 +. 119r28 +48i7*Memmap_Len{integer} 6|103m22 103r48 104r42 110r33 +49a7*RAM_Files{41A9} 6|77m28 +50i7*RAM_Files_Len{integer} 6|67m19 76m28 76r57 77r51 +X 5 arch-limine.ads +20K14*Limine 3|20k9 5|260E4 293l10 293e16 6|21b19 22r19 123l10 123t16 +22r4*Global_Info{3|44R9} 6|63m7 64m7 67m7 76m16 76r45 77m16 77r39 103m10 +. 103r36 104m10 104r30 110r21 111r13 112r25 113r13 115r32 116m13 117r16 118m13 +. 119r16 +28N4*Max_Sub_1MiB_Size 6|113r45 117r47 119r48 +29m4*Sub_1MiB_Region{11|25M9} 6|115m13 +32V13*Get_Physical_Address{11|25M9} 6|28b13 33l8 33t28 +36U14*Translate_Proto 6|35b14 122l8 122t23 +38N4*Limine_Common_Magic_1 223r8 227r8 231r8 235r8 239r8 243r8 247r8 251r8 +39N4*Limine_Common_Magic_2 223r31 227r31 231r31 235r31 239r31 243r31 247r31 +. 251r31 +41A9*Request_ID(7|19M9) 43r18 222r30 226r25 230r30 234r33 238r34 +. 242r22 246r26 250r22 +42R9*Request 46e15 156r15 260r30 267r26 274r21 281r22 288r22 +43a7*ID{41A9} 261m8 268m8 275m8 282m8 289m8 +44m7*Revision{7|19M9} 262m8 269m8 276m8 283m8 290m8 +45m7*Response{11|25M9} 263m8 270m8 277m8 284m8 291m8 6|30r50 37r54 43r58 +. 52r49 68r26 71r56 +48R9*Response 50e15 97r22 103r17 115r21 120r17 144r14 149r19 161r22 169r22 +. 205r22 211r19 217r18 +49m7*Revision{7|19M9} +52R9*Base_Revision 56e15 6|22r26 +53m7*ID_1{7|19M9} 6|23m8 +54m7*ID_2{7|19M9} 6|24m8 +55m7*Revision{7|19M9} 6|25m8 59r23 +58R9*Video_Mode 70e15 71r55 +59m7*Pitch{7|19M9} +60m7*Width{7|19M9} +61m7*Height{7|19M9} +62m7*BPP{7|17M9} +63m7*Memory_Model{7|16M9} +64m7*Red_Mask_Size{7|16M9} +65m7*Red_Mask_Shift{7|16M9} +66m7*Green_Mask_Size{7|16M9} +67m7*Green_Mask_Shift{7|16M9} +68m7*Blue_Mask_Size{7|16M9} +69m7*Blue_Mask_Shift{7|16M9} +71A9*Video_Mode_Arr(58R9) +73A9*Framebuffer_Padding(7|16M9) 87r26 +74R9*Framebuffer 92e15 93r39 94r60 +75m7*Address{11|25M9} +76m7*Width{7|19M9} +77m7*Height{7|19M9} +78m7*Pitch{7|19M9} +79m7*BPP{7|17M9} +80m7*Memory_Model{7|16M9} +81m7*Red_Mask_Size{7|16M9} +82m7*Red_Mask_Shift{7|16M9} +83m7*Green_Mask_Size{7|16M9} +84m7*Green_Mask_Shift{7|16M9} +85m7*Blue_Mask_Size{7|16M9} +86m7*Blue_Mask_Shift{7|16M9} +87a7*Unused{73A9} +88m7*EDID_Size{7|19M9} +89m7*EDID{11|25M9} +90m7*Mode_Count{7|19M9} +91m7*Modes{11|25M9} +93P9*Framebuffer_Acc(74R9) +94A9*Framebuffer_Arr(74R9)<7|19M9> +96R9*Framebuffer_Response 100e15 +97r7*Base{48R9} +98m7*Count{7|19M9} +99m7*Framebuffers{11|25M9} +102R9*Limine_File 108e15 110r39 +103r7*Base{48R9} +104m7*Address{11|25M9} 6|78r35 +105m7*Size{7|19M9} 6|79r50 +106m7*Path{11|25M9} +107m7*Cmdline{11|25M9} 6|38r70 +110P9*Limine_File_Acc(102R9) 111r60 116r21 +111A9*Limine_File_Arr(110P9)<7|19M9> 6|72r35 +114R9*Kernel_File_Response 117e15 6|36r18 +115r7*Base{48R9} +116p7*Kernel_File{110P9} 6|38r58 +119R9*Memmap_Response 123e15 6|51r18 +120r7*Base{48R9} +121m7*Count{7|19M9} 6|53r61 +122m7*Entries{11|25M9} 6|54r43 +125N4*LIMINE_MEMMAP_USABLE 6|87r18 +126N4*LIMINE_MEMMAP_RESERVED 6|89r18 +127N4*LIMINE_MEMMAP_ACPI_RECLAIMABLE 6|92r18 +128N4*LIMINE_MEMMAP_ACPI_NVS 6|94r18 +129N4*LIMINE_MEMMAP_BAD_MEMORY 6|90r18 +130N4*LIMINE_MEMMAP_BOOTLOADER_RECL 6|90r45 +131N4*LIMINE_MEMMAP_KERNEL_AND_MODS 6|96r18 +132N4*LIMINE_MEMMAP_FRAMEBUFFER 6|89r45 +134R9*Memmap_Entry 138e15 140r40 +135m7*Base{7|19M9} 6|105r58 +136m7*Length{7|19M9} 6|106r44 +137m7*EntryType{7|19M9} 6|86r19 +140P9*Memmap_Entry_Acc(134R9) 141r61 +141A9*Memmap_Entry_Arr(140P9)<7|19M9> 6|53r29 +143R9*RSDP_Response 146e15 +144r7*Base{48R9} +145m7*Addr{11|25M9} +148R9*Kernel_Address_Response 152e15 6|29r19 +149r7*Base{48R9} +150m7*Phys_Addr{11|25M9} 6|32r24 +151m7*Virt_Addr{11|25M9} +154N4*SMP_ENABLE_X2APIC +155R9*SMP_Request 158e14 +156r7*Base{42R9} +157m7*Flags{7|19M9} +160R9*SMP_Response 166e15 +161r7*Base{48R9} +162m7*Flags{7|18M9} +163m7*BSP_LAPIC_ID{7|18M9} +164m7*CPU_Count{7|19M9} +165m7*CPUs{11|25M9} +168R9*RISCV64_SMP_Response 174e15 +169r7*Base{48R9} +170m7*Flags{7|19M9} +171m7*BSP_Hart_ID{7|19M9} +172m7*CPU_Count{7|19M9} +173m7*CPUs{11|25M9} +176R9*SMP_CPU_Info 182e15 193r42 197r36 +177m7*Processor_ID{7|18M9} +178m7*LAPIC_ID{7|18M9} +179m7*Reserved{7|19M9} +180m7*Addr{11|25M9} +181m7*Extra_Arg{7|19M9} +184R9*RISCV64_SMP_CPU_Info 190e15 195r42 200r21 +185m7*Processor_ID{7|19M9} +186m7*Hart_ID{7|19M9} +187m7*Reserved{7|19M9} +188m7*Addr{11|25M9} +189m7*Extra_Arg{7|19M9} +192P9*Limine_SMP_Entrypoint 193^28 +193p28 Info(176R9) +194P9*Limine_RISCV64_SMP_Entrypoint 195^28 +195p28 Info(184R9) +197P9*CPU_Info_Acc(176R9) 198r57 +198A9*CPU_Info_Arr(197P9)<7|19M9> +199P9*RISCV64_CPU_Info_Acc(184R9) 202r42 +201A9*RISCV64_CPU_Info_Arr(199P9)<7|19M9> +204R9*Bootloader_Info_Response 208e15 6|42r19 +205r7*Base{48R9} +206m7*Name_Addr{11|25M9} 6|44r56 +207m7*Version_Addr{11|25M9} 6|47r56 +210R9*Modules_Response 214e15 6|70r24 +211r7*Base{48R9} +212m7*Mod_Count{7|19M9} 6|72r66 +213m7*Modules{11|25M9} 6|73r49 +216R9*DTB_Response 219e15 +217r7*Base{48R9} +218m7*DTB_Addr{11|25M9} +222a4*Framebuffer_ID{41A9} +226a4*Memmap_ID{41A9} 275r20 +230a4*Kernel_File_ID{41A9} 268r20 +234a4*Kernel_Address_ID{41A9} 282r20 +238a4*Bootloader_Info_ID{41A9} 261r20 +242a4*SMP_ID{41A9} +246a4*Modules_ID{41A9} 289r20 +250a4*DTB_ID{41A9} +260r4 Bootloader_Info_Request{42R9} 6|43r34 +267r4 Kernel_File_Request{42R9} 6|37r34 +274r4 Memmap_Request{42R9} 6|52r34 +281r4 Address_Request{42R9} 6|30r34 +288r4 Modules_Request{42R9} 6|68r10 71r40 +X 6 arch-limine.adb +22r4 Base_Request{5|52R9} 59r10 +29r7 PhysPonse{5|148R9} 32r14 +36r7 CmdPonse{5|114R9} 38r49 +38m7 Cmdline_Addr{11|25M9} 39r63 40r67 +39i7 Cmdline_Len{natural} 40r30 63r33 64r34 +40a7 Cmdline{string} 63r49 +42r7 InfoPonse{5|204R9} 44r46 47r46 +44m7 Name_Addr{11|25M9} 45r67 46r66 +45i7 Name_Len{natural} 46r32 +46a7 Boot_Name{string} 57r45 +47m7 Vers_Addr{11|25M9} 48r67 49r66 +48i7 Vers_Len{natural} 49r32 +49a7 Boot_Vers{string} 57r63 +51r7 MemPonse{5|119R9} 53r52 54r34 +53a7 Inner_MMap{5|141A9} 85r18 +55e7 Type_Entry{3|22E9} 88m16 91m16 93m16 95m16 97m16 100m16 107r25 +70r13 ModPonse{5|210R9} 72r57 73r40 +72a13 Inner_Mods{5|111A9} 75r24 +75p17 Ent=75:24{5|110P9} 78r31 79r46 +85p11 Ent=85:18{5|140P9} 86r15 105r54 106r40 +110i11 I{integer} 111r33 112r45 113r33 115r52 116r33 117r36 118r33 119r36 +X 7 interfac.ads +11K9*Interfaces 5|18w6 18r22 7|120e15 +16M9*Unsigned_8 5|63r26 64r26 65r26 66r26 67r26 68r26 69r26 73r50 80r26 81r26 +. 82r26 83r26 84r26 85r26 86r26 +17M9*Unsigned_16 5|62r26 79r26 +18M9*Unsigned_32 5|162r22 163r22 177r22 178r22 +19M9*Unsigned_64 5|41r41 44r18 49r18 53r18 54r18 55r18 59r26 60r26 61r26 +. 76r26 77r26 78r26 88r26 90r26 94r35 98r22 105r17 111r35 121r17 135r19 136r19 +. 137r19 141r36 157r15 164r22 170r22 171r22 172r22 179r22 181r22 185r22 186r22 +. 187r22 189r22 198r32 202r17 212r19 +X 8 lib.ads +19K9*Lib 6|18w6 19r6 39r42 45r46 48r46 57r7 60r10 99r16 8|35e8 +23V13*C_String_Length{natural} 6|39s46 45s50 48s50 +X 9 lib-messages.ads +21K13*Messages 6|19w10 57r11 60r14 99r20 9|103e17 +41U14*Put_Line 6|57s20 60s23 99s29 +X 11 system.ads +11K9*System 5|17w6 29r22 32r41 45r18 75r26 89r26 91r26 99r22 104r17 106r17 +. 107r17 122r17 145r14 150r19 151r19 165r22 173r22 180r22 188r22 206r22 207r22 +. 213r19 218r18 263r20 270r20 277r20 284r20 291r20 6|17w6 17r18 28r41 38r31 +. 44r28 47r28 68r38 11|73e11 +25M9*Address 5|29r29 32r48 45r25 75r33 89r33 91r33 99r29 104r24 106r24 107r24 +. 122r24 145r21 150r26 151r26 165r29 173r29 180r29 188r29 206r29 207r29 213r26 +. 218r25 6|28r48 38r38 44r35 47r35 +26m4*Null_Address{25M9} 5|263r27 270r27 277r27 284r27 291r27 6|68r45 +32V14*"="{boolean} 6|68r35 +X 12 s-stoele.ads +12I9*Storage_Offset +16I12*Storage_Count{12I9} 6|79r31 106r25 +23V14*"+"{11|25M9} 6|117s45 +49M9*Integer_Address 6|105r37 +51V13*To_Address{11|25M9} 6|105s25 +56V13*To_Integer{49M9} 6|112s13 + diff --git a/obj/arch-limine.o b/obj/arch-limine.o new file mode 100644 index 0000000000000000000000000000000000000000..c827315cfd18935ce5baee9fee4b355aec449c25 GIT binary patch literal 58136 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 literal 0 HcmV?d00001 diff --git a/obj/arch-local.adb.stderr b/obj/arch-local.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-local.adb.stdout b/obj/arch-local.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-local.ali b/obj/arch-local.ali new file mode 100644 index 0000000..7ec575f --- /dev/null +++ b/obj/arch-local.ali @@ -0,0 +1,127 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.local%b arch-local.adb cd96d2d5 NE OO PK +W arch%s arch.ads arch.ali + +U arch.local%s arch-local.ads 24ce8638 NE OO PK +W arch%s arch.ads arch.ali +W arch.context%s arch-context.adb arch-context.ali +W scheduler%s scheduler.adb scheduler.ali +W userland%s userland.ads userland.ali +W userland.process%s userland-process.adb userland-process.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-context.ads 20241115151036 7bffdd51 arch.context%s +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D arch-local.ads 20241115151036 e5953d14 arch.local%s +D arch-local.adb 20241115151036 2803efc1 arch.local%b +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices-termios.ads 20241115151036 06aea761 devices.termios%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D ipc.ads 20241115151036 03976a1a ipc%s +D ipc-fifo.ads 20241115151036 9141c09a ipc.fifo%s +D ipc-pty.ads 20241115151036 66e20305 ipc.pty%s +D ipc-socket.ads 20241115151036 ab61e49d ipc.socket%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D networking.ads 20241115151036 70ea6e55 networking%s +D scheduler.ads 20241115151036 61f570e7 scheduler%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D s-unstyp.ads 20241115151050 34cdeecb system.unsigned_types%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-elf.ads 20241115151036 416b8b0c userland.elf%s +D userland-mac.ads 20241115151036 eff2fe62 userland.mac%s +D userland-process.ads 20241115151036 a4893a04 userland.process%s +D vfs.ads 20241115151036 63b4365d vfs%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [reschedule_in arch__local 23 14 none] +G c Z s b [reschedule_asap arch__local 24 14 none] +G c Z s b [fetch_tcb arch__local 27 13 none] +G c Z s b [load_tcb arch__local 28 14 none] +G c Z s b [set_stacks arch__local 31 14 none] +G c Z s b [get_current_thread arch__local 36 13 none] +G c Z s b [get_current_process arch__local 37 13 none] +G c Z s b [set_current_thread arch__local 38 14 none] +G c Z s b [set_current_process arch__local 39 14 none] +X 1 arch.ads +20K9*Arch 52e9 4|19r6 21r9 40r5 5|17r14 66r5 +X 2 arch-context.ads +20K14*Context 70e17 4|19w11 32r15 5|39r15 +24M15*Core_Context{9|19M9} 4|32r23 5|39r23 +X 4 arch-local.ads +21K14*Local 1|20k9 4|40l10 40e15 5|17b19 66l10 66t15 +23U14*Reschedule_In 23>29 5|18b14 21l8 21t21 +23i29 Microseconds{natural} 5|18b29 +24U14*Reschedule_ASAP 5|23b14 26l8 26t23 +27V13*Fetch_TCB{19|25M9} 5|28b13 31l8 31t17 +28U14*Load_TCB 28>24 5|33b14 36l8 36t16 +28m24 TCB{19|25M9} 5|33b24 +31U14*Set_Stacks 32>8 33>8 5|38b14 44l8 44t18 +32m8 Core{2|24M15} 5|39b8 +33m8 Kernel_Stack{19|25M9} 5|40b8 +36V13*Get_Current_Thread{18|27I9} 5|47b13 50l8 50t26 +37V13*Get_Current_Process{25|33I9} 5|52b13 55l8 55t27 +38U14*Set_Current_Thread 38>34 5|57b14 60l8 60t26 +38i34 Thread{18|27I9} 5|57b34 +39U14*Set_Current_Process 39>35 5|62b14 65l8 65t27 +39i35 Proc{25|33I9} 5|62b35 +X 9 interfac.ads +19M9*Unsigned_64 +X 18 scheduler.ads +25K9*Scheduler 4|17w6 17r21 36r39 38r43 5|47r39 49r14 57r43 18|183e14 +27I9*TID 4|36r49 38r53 5|47r49 57r53 +29i4*Error_TID{27I9} 5|49r24 +X 19 system.ads +11K9*System 4|27r30 28r30 33r23 5|28r30 30r14 33r30 40r23 19|73e11 +25M9*Address 4|27r37 28r37 33r30 5|28r37 33r37 40r30 +26m4*Null_Address{25M9} 5|30r21 +X 22 userland.ads +17K9*Userland 4|18r6 37r40 39r42 5|52r40 54r14 62r42 22|23e13 +X 25 userland-process.ads +28K18*Process 4|18w15 37r49 39r51 5|52r49 54r23 62r51 25|677e21 +33I9*PID 4|37r57 39r59 5|52r57 62r59 +34i4*Error_PID{33I9} 5|54r31 + diff --git a/obj/arch-local.o b/obj/arch-local.o new file mode 100644 index 0000000000000000000000000000000000000000..901e5eca89be547d6b1009ed40210f2cf3445ffc GIT binary patch literal 13584 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 RmRyqj-@eRf^}UDxe*p1Blv@A* literal 0 HcmV?d00001 diff --git a/obj/arch-mmu.adb.stderr b/obj/arch-mmu.adb.stderr new file mode 100644 index 0000000..7dcc7d2 --- /dev/null +++ b/obj/arch-mmu.adb.stderr @@ -0,0 +1,4 @@ +arch-mmu.adb:70:08: warning: formal parameter "Caching" is not referenced [-gnatwf] +arch-mmu.adb:88:08: warning: formal parameter "Caching" is not referenced [-gnatwf] +arch-mmu.adb:104:08: warning: formal parameter "Caching" is not referenced [-gnatwf] +arch-mmu.ads:20:09: warning: unit "Lib.Synchronization" is not referenced [-gnatwu] diff --git a/obj/arch-mmu.adb.stdout b/obj/arch-mmu.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-mmu.ali b/obj/arch-mmu.ali new file mode 100644 index 0000000..bf641f8 --- /dev/null +++ b/obj/arch-mmu.ali @@ -0,0 +1,187 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RV NO_IMPLICIT_LOOPS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.mmu%b arch-mmu.adb 13f79c7a NE OO PK +W arch%s arch.ads arch.ali + +U arch.mmu%s arch-mmu.ads f31120a6 NE OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D arch-mmu.adb 20241115151036 093ed671 arch.mmu%b +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [init arch__mmu 63 13 none] +G c Z s b [fork_table arch__mmu 70 13 none] +G c Z s b [destroy_table arch__mmu 75 14 none] +G c Z s b [make_active arch__mmu 81 13 none] +G c Z s b [translate_address arch__mmu 96 14 none] +G c Z s b [map_range arch__mmu 117 13 none] +G c Z s b [map_allocated_range arch__mmu 139 14 none] +G c Z s b [remap_range arch__mmu 159 13 none] +G c Z s b [unmap_range arch__mmu 175 13 none] +G c Z s b [get_user_mapped_size arch__mmu 187 13 none] +G c Z s b [get_statistics arch__mmu 198 14 none] +G c Z s s [page_permissionsIP arch__mmu 26 9 none] +G c Z s s [Tpage_levelBIP arch__mmu 203 7 none] +G c Z s s [page_tableIP arch__mmu 205 12 none] +G c Z s s [virtual_statisticsIP arch__mmu 191 9 none] +X 1 arch.ads +20K9*Arch 52e9 2|22r9 63r28 250r5 3|17r14 18r28 136r5 +34A9*Boot_Memory_Map(29R9) 2|63r33 3|18r33 +X 2 arch-mmu.ads +22K14*MMU 1|20k9 2|203E12 250l10 250e13 3|17b19 136l10 136t13 +26R9*Page_Permissions 32e14 122r25 144r25 163r24 3|69r25 86r25 103r24 +27b7*Is_User_Accesible{boolean} +28b7*Can_Read{boolean} +29b7*Can_Write{boolean} 129r27 151r27 169r27 +30b7*Can_Execute{boolean} 129r53 151r53 169r53 +31b7*Is_Global{boolean} +35E9*Caching_Model 39e20 123r25 146r25 164r24 3|70r25 88r25 104r24 +36n8*Write_Back{35E9} 123r42 146r42 164r41 3|70r42 88r42 104r41 +37n8*Write_Through{35E9} +38n8*Write_Combining{35E9} +39n8*Uncacheable{35E9} +42R9*Page_Table 43r34 205c12 208e17 +43P9*Page_Table_Acc(42R9) 58r19 70r31 70r54 75r42 81r32 97r29 118r25 140r25 +. 160r24 176r24 187r41 3|24r31 24r54 30r42 35r32 42r29 65r25 82r25 100r24 +. 115r24 126r41 +49N7*Page_Size 108r23 109r23 126r30 127r30 128r30 149r30 150r30 152r38 167r30 +. 168r30 181r30 182r30 +58p4*Kernel_Table{43P9} 64r41 +63V13*Init{boolean} 63>19 64r25 3|18b13 22l8 22t12 +63a19 Memmap{1|34A9} 3|18b19 19r28 +70V13*Fork_Table{43P9} 70>25 3|24b13 28l8 28t18 +70p25 Map{43P9} 71r19 3|24b25 25r28 +75U14*Destroy_Table 75=29 3|30b14 33l8 33t21 +75p29 Map{43P9} 76r19 76r40 3|30b29 32m7 +81V13*Make_Active{boolean} 81>26 3|35b13 39l8 39t19 +81p26 Map{43P9} 82r19 3|35b26 36r28 +96U14*Translate_Address 97>8 98>8 99>8 100<8 101<8 102<8 103<8 104<8 105<8 +. 3|41b14 62l8 62t25 +97p8 Map{43P9} 107r11 3|42b8 52r28 +98m8 Virtual{8|25M9} 108r11 3|43b8 53r28 +99i8 Length{9|16I12} 109r11 3|44b8 54r28 +100m8 Physical{8|25M9} 3|45b8 56m7 +101b8 Is_Mapped{boolean} 3|46b8 57m7 +102b8 Is_User_Accessible{boolean} 3|47b8 58m7 +103b8 Is_Readable{boolean} 3|48b8 59m7 +104b8 Is_Writeable{boolean} 3|49b8 60m7 +105b8 Is_Executable{boolean} 3|50b8 61m7 +117V13*Map_Range{boolean} 118>8 119>8 120>8 121>8 122>8 123>8 3|64b13 79l8 +. 79t17 +118p8 Map{43P9} 125r11 3|65b8 72r28 +119m8 Physical_Start{8|25M9} 126r11 3|66b8 73r28 +120m8 Virtual_Start{8|25M9} 127r11 3|67b8 74r28 +121i8 Length{9|16I12} 128r11 3|68b8 75r28 +122r8 Permissions{26R9} 129r15 129r41 3|69b8 76r28 +123e8 Caching{35E9} 3|70b8 +139U14*Map_Allocated_Range 140>8 141<8 142>8 143>8 144>8 145<8 146>8 3|81b14 +. 97l8 97t27 +140p8 Map{43P9} 148r11 3|82b8 90r28 +141m8 Physical_Start{8|25M9} 152r19 3|83b8 95m7 +142m8 Virtual_Start{8|25M9} 149r11 3|84b8 91r28 +143i8 Length{9|16I12} 150r11 3|85b8 92r28 +144r8 Permissions{26R9} 151r15 151r41 3|86b8 93r28 +145b8 Success{boolean} 3|87b8 96m7 +146e8 Caching{35E9} 3|88b8 +159V13*Remap_Range{boolean} 160>8 161>8 162>8 163>8 164>8 3|99b13 112l8 112t19 +160p8 Map{43P9} 166r11 3|100b8 106r28 +161m8 Virtual_Start{8|25M9} 167r11 3|101b8 107r28 +162i8 Length{9|16I12} 168r11 3|102b8 108r28 +163r8 Permissions{26R9} 169r15 169r41 3|103b8 109r28 +164e8 Caching{35E9} 3|104b8 +175V13*Unmap_Range{boolean} 176>8 177>8 178>8 3|114b13 124l8 124t19 +176p8 Map{43P9} 180r11 3|115b8 119r28 +177m8 Virtual_Start{8|25M9} 181r11 3|116b8 120r28 +178i8 Length{9|16I12} 182r11 3|117b8 121r28 +187V13*Get_User_Mapped_Size{4|19M9} 187>35 3|126b13 130l8 130t28 +187p35 Map{43P9} 188r19 3|126b35 127r28 +191R9*Virtual_Statistics 195e14 198r42 3|132r42 +192m7*Kernel_Usage{7|20M9} +193m7*Table_Usage{7|20M9} +194m7*Poison_Usage{7|20M9} +198U14*Get_Statistics 198<30 3|132b14 135l8 135t22 +198r30 Stats{191R9} 3|132b30 134m7 +203A12 Page_Level(4|19M9) 204r37 206r18 207r18 +204P12 Page_Level_Acc(203A12) +206a10*TTBR0{203A12} +207a10*TTBR1{203A12} +X 4 interfac.ads +11K9*Interfaces 2|17w6 17r22 4|120e15 +19M9*Unsigned_64 2|187r64 203r46 3|126r64 +X 5 lib.ads +19K9*Lib 2|20r6 5|35e8 +X 6 lib-synchronization.ads +20K13*Synchronization 2|20w10 6|66e24 +X 7 memory.ads +19K9*Memory 2|19w6 19r22 192r22 193r22 194r22 7|36e11 +20M9*Size 2|192r29 193r29 194r29 +X 8 system.ads +11K9*System 2|18w6 18r22 98r29 100r33 119r25 120r25 141r29 142r25 161r24 +. 177r24 3|43r29 45r33 56r20 66r25 67r25 83r29 84r25 95r25 101r24 116r24 +. 8|73e11 +25M9*Address 2|98r36 100r40 119r32 120r32 141r36 142r32 161r31 177r31 3|43r36 +. 45r40 66r32 67r32 83r36 84r32 101r31 116r31 +26m4*Null_Address{25M9} 3|56r27 95r32 +X 9 s-stoele.ads +12I9*Storage_Offset +16I12*Storage_Count{12I9} 2|99r29 121r25 143r25 162r24 178r24 3|44r29 68r25 +. 85r25 102r24 117r24 +43V14*"mod"{12I9} 2|108s19 126s26 127s26 149s26 152s34 167s26 181s26 + diff --git a/obj/arch-mmu.o b/obj/arch-mmu.o new file mode 100644 index 0000000000000000000000000000000000000000..3e35d9b9be701c09697d3b1f613aec8ee6e53b77 GIT binary patch literal 25720 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 literal 0 HcmV?d00001 diff --git a/obj/arch-power.adb.stderr b/obj/arch-power.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-power.adb.stdout b/obj/arch-power.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-power.ali b/obj/arch-power.ali new file mode 100644 index 0000000..c419851 --- /dev/null +++ b/obj/arch-power.ali @@ -0,0 +1,68 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.power%b arch-power.adb d9f41aa6 NE OO PK +W arch%s arch.ads arch.ali + +U arch.power%s arch-power.ads 7aae2981 NE OO PK +W arch%s arch.ads arch.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-power.ads 20241115151036 0576051f arch.power%s +D arch-power.adb 20241115151036 dc821fb9 arch.power%b +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [halt arch__power 22 13 none] +G c Z s b [reboot arch__power 25 13 none] +G c Z s b [poweroff arch__power 28 13 none] +X 1 arch.ads +20K9*Arch 52e9 2|17r9 29r5 3|17r14 32r5 +X 2 arch-power.ads +17K14*Power 1|20k9 2|29l10 29e15 3|17b19 32l10 32t15 +19E9*Power_Status 19e49 22r25 25r27 28r29 3|18r25 23r27 28r29 +19n26*Not_Supported{19E9} +19n41*Failure{19E9} 3|20r14 25r14 30r14 +22V13*Halt{19E9} 3|18b13 21l8 21t12 +25V13*Reboot{19E9} 3|23b13 26l8 26t14 +28V13*Poweroff{19E9} 3|28b13 31l8 31t16 + diff --git a/obj/arch-power.o b/obj/arch-power.o new file mode 100644 index 0000000000000000000000000000000000000000..a4be981ac7b41b57be5ad32645aed6b7a6336d24 GIT binary patch literal 7152 zcmb`LO>7&-6@X{8q-2J!` z&8^+q&ffO+*1g@zt@X8y>fXJ|BWTGA>nIx7csY)jw30!1#G05tRsltgM_w&4flcSW z4Hv1ML@kTVn#-VWP2R_vQLJ}_bxGLM=cd5V5ig#$rj=AN(lqfFnO+5HS=N81kE6h>!4H%LnR1RXVJ%FYkc9FI4HMan zIHpDqHONW!sBIquXZS&cWb0F@^ej;~^bTsZUhujfvWQ|g?nffg(r{bte&{Em^a>h{ zBt3B3vADgtms{I+bEPGx>=bkPt#U5k?7H#mu99oHeB<8k&Pw4R==g$@274Z&y@4-qp z0I=`IZa#wMR?v;0-spFwt}z^!e`|yK+H^bq$_1`nQ2qJ0zUPM#gjl)IEV_$Vi{7rxkkkd8)vcRbo7MX(>ux*p)s6RBUM}B(41|8$Jp|RQw^rJ{D@!z7Z>11-dWGAY zYrFZ~%H8dJ5lh+Gy}LcMc(T+-K|l2TLN9ci9XE2^edt+ctdrWuqUxj5iXiPh-&-jc zOV>)}(jpEL?sX-Edu(-FulA_rMIl@pe%JF`$vM;w;u@vP-%mD$emw|c;S_@Ut8k^^ zVdz3Kg9T)HIY(jC^(XL1hLhcD{zkY&H4@_X&6~@)OEB-Bqe)K-`0F6QfMN^l4eR)X zpzWDjhvLifwL9P|?^syZLCwr$Wopa4Qms?&6>BbP9%?evN>Ry{dZ*KGmwLtF2+}p& zbu!|gU!=9dJ*8ndGX|SeqTN=fNrGX;h91l^Bf*n%b(%f7J;xvQ!12g~DlsHwKgw0V zqkNn_^Ynfv6MbSu*^hG7??+Wq2zPoCBtK1*5`#evmOvP%!Rto>5(V=P#UVc(0zU(E2GcxSH#~k zwvM-npV5PW{toei!QUhPz7gkl#4CpV?`3^-Rs4~-+43jJN9X@vBp=-eJ|S+#`K#n+ zmWB9~xM`2r9&>uwV)VHy`%^NSe)&68=Cs+v{d_L@aQw`V!xlfM%?9RA1D_SceS`UR z$%il1gL5r$V8U@+E#|~ChhOc?a;p1&z2B_4^?K;PR)k<{JL^}JpjruP)q7Q}Dcd%@ zRZ-hjWm#5YQHdobE-Udoi1iz2v0lNeiqYye0*tYKqa;N|i5n$l2mv1j+$Gk0&jzXV5IgRsNMSG5k&HPM}b4=u% z6XZ`Lpn~tlSdimAbGbtbj(@m|3Gp&C#P}yDCJN>lU$?(SHfH=g#Buzyq@&<{1LO0(>m1|j_QHuC zc48L}tSAnZJYX&M58+D`|6&kMJ&J^bz)5WG@(4)b{24pyF*pvKC=4)mGN8WsZwlve zCOcpP{}DLD^9u&7ot=qhH*~vAAMQhQ3A@d9D~gj4&r*&9$zT<6P1e1j)A75I9Qcy= z9r!9%|J5WSH$wQU1qlA{;ka=ew(9*DdjJ2Fvk(U7ggzHB@+w|Z3eFR~oQDef%fH^V zhE+}1RkYO$uDzr1`>Ou9ZvNN!GkRyBo8!lIk>=0q<#GN$8spFF>T&*$$ln|nuRqft zbETKxLIuZf`tv@luU+&r{XZgqY|~4dDnHgC=;rhLGcX+ED*W`4qfPjL98ND_fvEHp93>v zqRYDk`TY(V7Ss0Mz|#6ZoRQ|@juHa<$CR4=PeVX6Cc1n~@RwN8ifMZcKwAGFQvbgp z2kak_+5Z`6N0Xw~2dXd8g#5smm=ta>=8I$ePtYgUuZ_5-|K&0M?~=cMhGQtxAHTzx z>0SMS{B@@LGv68G{{i{)I%Ip!AJ;d*KP~?+&nb%>4G!~<-yH1E>*p0{hrP4M@mS8# zhQ7goB!wGLtQ(I=w!K3BEYASNZx6G7T+`;>jR8KSmyi2KhelPtL!|j1(t`^P2cs(f E3mSZ?@c;k- literal 0 HcmV?d00001 diff --git a/obj/arch-snippets.adb.stderr b/obj/arch-snippets.adb.stderr new file mode 100644 index 0000000..80d9fcc --- /dev/null +++ b/obj/arch-snippets.adb.stderr @@ -0,0 +1 @@ +arch-snippets.ads:18:06: warning: no entities of "Memory" are referenced [-gnatwu] diff --git a/obj/arch-snippets.adb.stdout b/obj/arch-snippets.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch-snippets.ali b/obj/arch-snippets.ali new file mode 100644 index 0000000..6800fe2 --- /dev/null +++ b/obj/arch-snippets.ali @@ -0,0 +1,100 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.snippets%b arch-snippets.adb 3bc13f87 NE OO PK +W arch%s arch.ads arch.ali +W system%s system.ads system.ali +W system.machine_code%s s-maccod.ads s-maccod.ali + +U arch.snippets%s arch-snippets.ads 82659f09 BN NE OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali +W memory%s memory.ads memory.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-snippets.ads 20241115151036 3613a65c arch.snippets%s +D arch-snippets.adb 20241115151036 5baa226e arch.snippets%b +D interfac.ads 20241115151050 f8f85574 interfaces%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-maccod.ads 20241115151050 5678bbb5 system.machine_code%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [hcf arch__snippets 26 14 none] +G c Z s b [enable_interrupts arch__snippets 29 14 none] +G c Z s b [disable_interrupts arch__snippets 30 14 none] +G c Z s b [wait_for_interrupt arch__snippets 33 14 none] +G c Z s b [pause arch__snippets 37 14 none] +G c Z s b [read_sstatus arch__snippets 46 16 none] +G c Z s b [write_sstatus arch__snippets 47 17 none] +X 1 arch.ads +20K9*Arch 52e9 2|20r9 81r5 3|19r14 65r5 +X 2 arch-snippets.ads +20K14*Snippets 1|20k9 2|81l10 81e18 3|19b19 65l10 65t18 +26U14*HCF 3|20b14 26l8 26t11 +29U14*Enable_Interrupts 3|28b14 31l8 31t25 +30U14*Disable_Interrupts 3|23s10 33b14 36l8 36t26 +33U14*Wait_For_Interrupt 3|24s10 38b14 41l8 41t26 +37U14*Pause 3|43b14 46l8 46t13 +46V16*Read_SStatus{4|19M9} 3|30s22 35s22 48b13 56l8 56t20 +47U17*Write_SStatus 47>32 3|30s7 35s7 58b14 64l8 64t21 +47m32 Value{4|19M9} 3|58b29 61r52 +X 3 arch-snippets.adb +49m7 Value{4|19M9} 52m54 52r54 55r14 +X 4 interfac.ads +11K9*Interfaces 2|17w6 17r22 4|120e15 +19M9*Unsigned_64 2|46r36 47r40 3|48r33 49r15 52r24 58r37 61r24 +X 5 memory.ads +19K9*Memory 2|18w6 18r22 5|36e11 +X 6 system.ads +11K9*System 3|17r6 17r31 6|73e11 +X 7 s-maccod.ads +11K16*Machine_Code 3|17w13 17r38 7|93e24 +16I9*Asm_Input_Operand +17I9*Asm_Output_Operand +48U14*Asm 3|40s7 51s7 60s7 +50i8 Outputs{17I9} 3|52r12 +51i8 Inputs{16I9} 3|61r12 +52a8 Clobber{string} 3|53r12 62r12 +53b8 Volatile{boolean} 3|40r19 54r12 63r12 + diff --git a/obj/arch-snippets.o b/obj/arch-snippets.o new file mode 100644 index 0000000000000000000000000000000000000000..5363f64518871b7b6b4502612983a58e1ac78680 GIT binary patch literal 14264 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 I0p6wg7Z|-pdjJ3c literal 0 HcmV?d00001 diff --git a/obj/arch.ads.stderr b/obj/arch.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch.ads.stdout b/obj/arch.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/arch.ali b/obj/arch.ali new file mode 100644 index 0000000..bdbcd70 --- /dev/null +++ b/obj/arch.ali @@ -0,0 +1,89 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RV NO_IMPLICIT_LOOPS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch%s arch.ads 7315e4a7 NE OO PK +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.adb s-stoele.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [boot_memory_regionIP arch 29 9 none] +G c Z s s [boot_memory_mapIP arch 34 9 none] +G c Z s s [boot_ram_fileIP arch 37 9 none] +G c Z s s [boot_ram_filesIP arch 41 9 none] +G c Z s s [boot_informationIP arch 44 9 none] +X 1 arch.ads +20K9*Arch 52l5 52e9 +22E9*Boot_Memory_Type 27e24 32r17 +23n8*Memory_Free{22E9} +24n8*Memory_Reserved{22E9} +25n8*Memory_Kernel{22E9} +26n8*Memory_ACPI_Reclaimable{22E9} +27n8*Memory_ACPI_NVS{22E9} +29R9*Boot_Memory_Region 33e14 34r56 +30m7*Start{2|25M9} +31i7*Length{3|16I12} +32e7*MemType{22E9} +34A9*Boot_Memory_Map(29R9) 47r23 +37R9*Boot_RAM_File 40e14 41r55 +38m7*Start{2|25M9} +39i7*Length{3|16I12} +41A9*Boot_RAM_Files(37R9) 49r23 +44R9*Boot_Information 51e14 +45a7*Cmdline{string} +46i7*Cmdline_Len{integer} +47a7*Memmap{34A9} +48i7*Memmap_Len{integer} +49a7*RAM_Files{41A9} +50i7*RAM_Files_Len{integer} +X 2 system.ads +11K9*System 1|17w6 18r6 18r35 30r17 38r16 2|73e11 +25M9*Address 1|30r24 38r23 +X 3 s-stoele.ads +11K16*Storage_Elements 1|18w13 18r42 3|60e28 +12I9*Storage_Offset +16I12*Storage_Count{12I9} 1|31r17 39r16 + diff --git a/obj/arch.o b/obj/arch.o new file mode 100644 index 0000000000000000000000000000000000000000..f0e62648a863bd30cdd8655fd56c8fc2fbe40d86 GIT binary patch literal 7648 zcmb_hZ)_Y#6`#Ge9fvfIosc+SN-l1ixTv>xK0AM$aN*AO*^aQ!mVHF2gmhi6_s-Ye z-W|K^HbFp|7B{Vcs3>YuWHqKL5>dZ2N<tZwh&jG#?!_0#no+ON5?ku%B7z?KYGdd@r913Uhg1J{k)y16CFgEy1Dw>$ieYr z9dAW`^y1p@-p`C&89KjHUCaMHbE9LI+J5=o^|jt!@`LrY%LmA})^DDFKfQWs^-AC6 zUF6_;U+)33bN$$+chg4OS4exVys^cnSTeZ)_qPrDE~o`NxX~*Kch4 zAkx3|_T?_WOkf&KbxJ;Wv5vuGd6dkFrOWp&YYOZj81bE56+!j zI1IMiiPDKKJU?5hGkRA#HzA{Twj)v6D526s*+;f)Ile{h0?i)f{;nNc)IEKBx_d#M zj|_hd)II?hor32DEw!{k=(Uqh@&HgpQU2Mr6$w@cT)^yM^9L)yZ^Hqi7|Xh?8?I>+ z=Zxc;R-vFTE!n2ykaE>EOMp-2J{Qd_>CwSqEvY4iIhRe081O4Jk)#C*W<1)ujFkd;{GE@D$*H8VK<0nnq z0TZeIQbHd(oG?ZjBcm&&g|Z7e%dT5@j>a2NYt>q{R9(?(b}7E%fc{FoUb9_o*|jPS z?Tl?KQbN=@h$$D|XlmyKx5f(+PZML!L!zF1CG z>W79|xJD}OTJ`v3E|ZVtvomwC1h%A>pP6e)++FIO+KO$M@w%;-EZx!cCGhNJ%nI}| zM15Fg2hv_QjZ`u*I5L*l;hJRl_VdDhUbzT$u&4Vp?X^ zbqa+%hib*5W4fb6i?g86U>t7{mIH8Y@sY+|5Frf_GC4MOG&%s)`2Z_TtY>WZz;y?j zN|Y}tTO(wjhx%_*UESl)M4oMn{PNAwUyOEW?i-7%{pww zaRu-Dv zZx`0#Tg+SsYzfqZ@xz}EY9ZHK$}iP$-dJcZueZQ)!c$*S~dGj!97zq^MhKF_`sw#=mRIU1kt9G za1FsV4A+vmxKb+Ui;K4T7>;EYCJs`w23Y-)fh!#Nd5G7~}dQEfXYO$8^CR-@T zaZLr_wpoJX?uog8Axp2f;9kica!p z2sFWXd@q{SLddXyH>-t^afV~1i}F(fF3Qg{9Q_V49?2_=m+@;1j{)T|AatGK7^k>v z(Di|MZ=Q(r`i1f(2bnGszJnlsNWgi15XYaFyzOEP;zu|Ll&>R*j|li)#v^`Izy}2U zn1IIx{L=!?V?#SB0p}+i#PQt9TR&qE*Ek4tzkqXJ2=V8R@|;JUpT7|o_Y%Hh<2u4) zK=~-%pzVW;=N9`>yg|cxi}Kti&QILsIetIj{Mi9ZcuwSa(l`hW<7uu=giLuTji-n4 zNH~u1i1K+RBild4aI`P({tq)8=PT|?97p@2e1*x&_UjBs`{JH=n&D_)++{e9_C@)x zGkMwma|}oO;;!@p!_mHYw%|D07v;ahM2C*yLhT!D zU9L5|hSSjG9mLzjoRGmhZhKnjDDISv(cpaKAZ65X@c05tDcw0SWJtHLi?$5Ir>kno z=U5}g4r$NwN; zZE&UG65B0y)Vs|<{2hRD7%R5jl#p4VLH-BWL}h<+zaFChsk_v_5TgGe(-+Sg7_#gi z&ly4SAG%BbZ-nR{xl8?bnZ6uXn(24LxY&69ITisq6qWVoLj246(GdMpcd36oME_x? zFZ+}Gg%JH^rr-EI!6q#0f0gO;d~o_brZ1kQaE!rR%==vvRR3?YL%`ci66+tI1^3VE z|G5zVx0$1Xh9}C%{$CE!-_0Iq^uOp|0sWx(ud%}6abo;XSK z^$`DWGXGPk1P%S;c}VvEQ|3Q`LPE2c|FcqIbN`(FIz<03m=tK@85{dtkJCSf=c3)25H)5kHfjWB%?L!SHP_`gE*(@g*ST#!+oKMsEY`a#dXn;mZJEPt4P-0QeL zuZztv4tr0X+vD^f%>M}vFe=B7ed!T-l2dF$z0D||=| "b__main.ads"); +pragma Source_File_Name (ada_main, Body_File_Name => "b__main.adb"); +pragma Suppress (Overflow_Check); + +package body ada_main is + + + + procedure adainit is + begin + null; + + end adainit; + + procedure Ada_Main_Program; + pragma Import (Ada, Ada_Main_Program, "_ada_main"); + + procedure main is + Ensure_Reference : aliased System.Address := Ada_Main_Program_Name'Address; + pragma Volatile (Ensure_Reference); + + begin + adainit; + Ada_Main_Program; + end; + +-- BEGIN Object file/option list + -- /home/michael/capstoneProject/ironclad/obj/lib.o + -- /home/michael/capstoneProject/ironclad/obj/lib-alignment.o + -- /home/michael/capstoneProject/ironclad/obj/arch.o + -- /home/michael/capstoneProject/ironclad/obj/arch-clocks.o + -- /home/michael/capstoneProject/ironclad/obj/arch-hooks.o + -- /home/michael/capstoneProject/ironclad/obj/arch-interrupts.o + -- /home/michael/capstoneProject/ironclad/obj/arch-context.o + -- /home/michael/capstoneProject/ironclad/obj/arch-power.o + -- /home/michael/capstoneProject/ironclad/obj/config.o + -- /home/michael/capstoneProject/ironclad/obj/cryptography.o + -- /home/michael/capstoneProject/ironclad/obj/cryptography-chacha20.o + -- /home/michael/capstoneProject/ironclad/obj/cryptography-md5.o + -- /home/michael/capstoneProject/ironclad/obj/ipc.o + -- /home/michael/capstoneProject/ironclad/obj/lib-atomic.o + -- /home/michael/capstoneProject/ironclad/obj/lib-cmdline.o + -- /home/michael/capstoneProject/ironclad/obj/lib-time.o + -- /home/michael/capstoneProject/ironclad/obj/memory.o + -- /home/michael/capstoneProject/ironclad/obj/arch-snippets.o + -- /home/michael/capstoneProject/ironclad/obj/lib-synchronization.o + -- /home/michael/capstoneProject/ironclad/obj/arch-mmu.o + -- /home/michael/capstoneProject/ironclad/obj/networking.o + -- /home/michael/capstoneProject/ironclad/obj/networking-arp.o + -- /home/michael/capstoneProject/ironclad/obj/networking-ipv4.o + -- /home/michael/capstoneProject/ironclad/obj/networking-ipv6.o + -- /home/michael/capstoneProject/ironclad/obj/userland.o + -- /home/michael/capstoneProject/ironclad/obj/userland-memory_locations.o + -- /home/michael/capstoneProject/ironclad/obj/devices-console.o + -- /home/michael/capstoneProject/ironclad/obj/devices-netinter.o + -- /home/michael/capstoneProject/ironclad/obj/devices-streams.o + -- /home/michael/capstoneProject/ironclad/obj/devices-termios.o + -- /home/michael/capstoneProject/ironclad/obj/devices-uart.o + -- /home/michael/capstoneProject/ironclad/obj/arch-debug.o + -- /home/michael/capstoneProject/ironclad/obj/lib-messages.o + -- /home/michael/capstoneProject/ironclad/obj/lib-panic.o + -- /home/michael/capstoneProject/ironclad/obj/devices.o + -- /home/michael/capstoneProject/ironclad/obj/cryptography-random.o + -- /home/michael/capstoneProject/ironclad/obj/ipc-shm.o + -- /home/michael/capstoneProject/ironclad/obj/networking-interfaces.o + -- /home/michael/capstoneProject/ironclad/obj/userland-memory_failure.o + -- /home/michael/capstoneProject/ironclad/obj/memory-physical.o + -- /home/michael/capstoneProject/ironclad/obj/devices-loopback.o + -- /home/michael/capstoneProject/ironclad/obj/ipc-fifo.o + -- /home/michael/capstoneProject/ironclad/obj/ipc-futex.o + -- /home/michael/capstoneProject/ironclad/obj/ipc-pty.o + -- /home/michael/capstoneProject/ironclad/obj/ipc-socket.o + -- /home/michael/capstoneProject/ironclad/obj/userland-mac.o + -- /home/michael/capstoneProject/ironclad/obj/arch-local.o + -- /home/michael/capstoneProject/ironclad/obj/ipc-filelock.o + -- /home/michael/capstoneProject/ironclad/obj/scheduler.o + -- /home/michael/capstoneProject/ironclad/obj/userland-loader.o + -- /home/michael/capstoneProject/ironclad/obj/userland-process.o + -- /home/michael/capstoneProject/ironclad/obj/userland-syscall.o + -- /home/michael/capstoneProject/ironclad/obj/userland-elf.o + -- /home/michael/capstoneProject/ironclad/obj/userland-oom_failure.o + -- /home/michael/capstoneProject/ironclad/obj/vfs-dev.o + -- /home/michael/capstoneProject/ironclad/obj/vfs-ext.o + -- /home/michael/capstoneProject/ironclad/obj/vfs-fat.o + -- /home/michael/capstoneProject/ironclad/obj/vfs.o + -- /home/michael/capstoneProject/ironclad/obj/arch-limine.o + -- /home/michael/capstoneProject/ironclad/obj/arch-cpu.o + -- /home/michael/capstoneProject/ironclad/obj/arch-dtb.o + -- /home/michael/capstoneProject/ironclad/obj/lib-runtime.o + -- /home/michael/capstoneProject/ironclad/obj/kernel_main.o + -- /home/michael/capstoneProject/ironclad/obj/arch-entrypoint.o + -- /home/michael/capstoneProject/ironclad/obj/main.o + -- -L/home/michael/capstoneProject/ironclad/obj/ + -- -L/home/michael/capstoneProject/ironclad/obj/ + -- -L/home/michael/capstoneProject/ironclad/rtsdir/adalib/ + -- -static + -- -lgnat +-- END Object file/option list + +end ada_main; diff --git a/obj/b__main.ads b/obj/b__main.ads new file mode 100644 index 0000000..64607f0 --- /dev/null +++ b/obj/b__main.ads @@ -0,0 +1,155 @@ +pragma Warnings (Off); +pragma Ada_95; +pragma Restrictions (No_Exception_Propagation); +with System; +package ada_main is + + + GNAT_Version : constant String := + "GNAT Version: 14.2.0" & ASCII.NUL; + pragma Export (C, GNAT_Version, "__gnat_version"); + + GNAT_Version_Address : constant System.Address := GNAT_Version'Address; + pragma Export (C, GNAT_Version_Address, "__gnat_version_address"); + + Ada_Main_Program_Name : constant String := "_ada_main" & ASCII.NUL; + pragma Export (C, Ada_Main_Program_Name, "__gnat_ada_main_program_name"); + + procedure adainit; + pragma Export (C, adainit, "adainit"); + + procedure main; + pragma Export (C, main, "main"); + + -- BEGIN ELABORATION ORDER + -- ada%s + -- ada.characters%s + -- ada.characters.latin_1%s + -- interfaces%s + -- interfaces.c%s + -- system%s + -- system.machine_code%s + -- system.storage_elements%s + -- system.storage_elements%b + -- system.unsigned_types%s + -- lib%s + -- lib%b + -- lib.alignment%s + -- lib.alignment%b + -- arch%s + -- arch.clocks%s + -- arch.clocks%b + -- arch.hooks%s + -- arch.hooks%b + -- arch.interrupts%s + -- arch.context%s + -- arch.context%b + -- arch.power%s + -- arch.power%b + -- config%s + -- cryptography%s + -- cryptography.chacha20%s + -- cryptography.chacha20%b + -- cryptography.md5%s + -- cryptography.md5%b + -- ipc%s + -- lib.atomic%s + -- lib.cmdline%s + -- lib.cmdline%b + -- lib.time%s + -- lib.time%b + -- memory%s + -- arch.snippets%s + -- arch.snippets%b + -- lib.synchronization%s + -- lib.synchronization%b + -- arch.mmu%s + -- arch.mmu%b + -- networking%s + -- networking%b + -- networking.arp%s + -- networking.arp%b + -- networking.ipv4%s + -- networking.ipv4%b + -- networking.ipv6%s + -- networking.ipv6%b + -- userland%s + -- userland.memory_locations%s + -- cryptography.random%s + -- devices%s + -- arch.debug%s + -- devices.console%s + -- devices.console%b + -- devices.loopback%s + -- devices.netinter%s + -- devices.streams%s + -- devices.streams%b + -- devices.termios%s + -- devices.uart%s + -- devices.uart%b + -- arch.debug%b + -- ipc.fifo%s + -- ipc.futex%s + -- ipc.pty%s + -- ipc.shm%s + -- ipc.socket%s + -- lib.messages%s + -- lib.messages%b + -- lib.panic%s + -- lib.panic%b + -- devices%b + -- memory.physical%s + -- cryptography.random%b + -- ipc.shm%b + -- networking.interfaces%s + -- networking.interfaces%b + -- userland.memory_failure%s + -- userland.memory_failure%b + -- userland.oom_failure%s + -- memory.physical%b + -- vfs%s + -- userland.elf%s + -- scheduler%s + -- devices.loopback%b + -- ipc.fifo%b + -- ipc.futex%b + -- ipc.pty%b + -- ipc.socket%b + -- userland.mac%s + -- userland.mac%b + -- userland.process%s + -- arch.local%s + -- arch.local%b + -- ipc.filelock%s + -- ipc.filelock%b + -- scheduler%b + -- userland.loader%s + -- userland.loader%b + -- userland.process%b + -- userland.syscall%s + -- userland.syscall%b + -- userland.elf%b + -- userland.oom_failure%b + -- vfs.dev%s + -- vfs.dev%b + -- vfs.ext%s + -- vfs.ext%b + -- vfs.fat%s + -- vfs.fat%b + -- vfs%b + -- arch.limine%s + -- arch.limine%b + -- arch.cpu%s + -- arch.cpu%b + -- arch.dtb%s + -- arch.dtb%b + -- lib.runtime%s + -- lib.runtime%b + -- kernel_main%s + -- kernel_main%b + -- arch.entrypoint%s + -- arch.entrypoint%b + -- main%b + -- END ELABORATION ORDER + +end ada_main; diff --git a/obj/b__main.ali b/obj/b__main.ali new file mode 100644 index 0000000..42f5f1e --- /dev/null +++ b/obj/b__main.ali @@ -0,0 +1,56 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -gnatA +A -gnatWb +A -gnatiw +A -gnatws +A -g +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_EXCEPTION_PROPAGATION +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RV NO_OBSOLESCENT_FEATURES + +U ada_main%b b__main.adb 0a142c13 NE OO PK IL +Z system%s system.ads system.ali + +U ada_main%s b__main.ads 2e7f78c5 EE NE OO PK IL +W system%s system.ads system.ali + +D b__main.ads 20241115153949 efd8970a ada_main%s +D b__main.adb 20241115153949 e5ccbb19 ada_main%b +D system.ads 20241115151050 c1a7efcf system%s +G a e +G c Z s b [adainit ada_main 18 14 none] +G c Z s b [main ada_main 21 14 none] +X 1 b__main.ads +5K9*ada_main 155l5 155e13 2|7b14 102l5 102t13 +8a4*GNAT_Version{string} 10r22 12r54 +12m4*GNAT_Version_Address{3|25M9} 13r22 +15a4*Ada_Main_Program_Name{string} 16r22 2|21r52 +18U14*adainit 19i22 2|11b14 15l8 15t15 25s7 +21U14*main 22i22 2|20b14 27t7 +X 2 b__main.adb +17U14 Ada_Main_Program 18b24 26s7 +21m7 Ensure_Reference{3|25M9} 22r24 +X 3 system.ads +11K9*System 1|4w6 12r36 2|21r34 3|73e11 +25M9*Address 1|12r43 2|21r41 + diff --git a/obj/b__main.o b/obj/b__main.o new file mode 100644 index 0000000000000000000000000000000000000000..a142750b05d0ea0c04b86c2371ff48d2edc94171 GIT binary patch literal 8344 zcmbtYUu+yl8K1rN#ZDaCahyL5AqKp90%OABxxFf;IemK+t>Q` zu6t)EtqQ3s2oPHq}}hE-~7Jso1LAVnVsvW=VmgVr$jt;N3~0WD)qbjjE%aYHj8Svx?jEW@-KRo znjXIStzLEfgK2NOuhgRQRVkPcO0}RG8Mowq=G^qf+@&yXR_oExTwyXlksn88fdXfh z*9UtYZUeZb2_;bK^K>1jtLGHmwyNv_QeID%?#eSkygq7|QoUcKTjKIO6|~C+mHi6Y z8M>6tiD2tB50J(;!g`yoHs05_{zpKqyPw`Z>}}dk-F1lSs7r<@Fg+QV zN^Qui6FVq+KLziP29J?zf8J|D!`|lJ;(agfK$eZV9h!M|1T7etRbTU7@pfFN%E8V+ zIZ82y-XJw zyLE?Wyxp0hWI#|QB-^9bo3>HG-{58Y{GRpXL>GB>){c1DULQ4t``5MRvcC=`gBj0K zX)y{~$v0DK#P!8EsFk9i7OFGnp3Y6r2mG<*MxUI>je>qPFnT&Sx^VvDg{iTndMzBQ zRVzzDxI9(~8qHQc3ZIJW&xV!OST(LkmE~Z5EN(UDtMORki%`#$O|g2FLpMoN*r-0* zYz39)MyWw9ic*gWG)QGBtUNar)d`pnTES?Os_C01$AyKJNZU3>ks8%XZnQ>594-gf z$PCKWspZDuNiwTViqHrvQxoHbBZY~=K~%?;rKx!J@MN_XR7x*aE6teh3t?0VtEQPx z=E@~K$>i&bo;nUHtuR(H^KhrGn#qPbcRmiAO{+Q~c64_&YK4mwMo(S|#k?Sng&5VS z+OlF@)Gv_hFQ|LTts^vFXtu&yDQR68HCN)W6o(68j3>2IB#p7#>*lg%-h|&ZuvC7m zUVc_d?*;Sa6vVD=+fAj;oH}(h_b?61{p|@H6WYflzVcr31~O_3mDA+YX&_-UgPUeC z?@iCrEv_~ztIE?8{HClP0uzlwsW#CVF9onFu=I#9h8YyvuGLnS3k|)dtdUB?_{MwG z-#<>{&@-gLw2UO*en-7;7MKnU1)nmwVrKe#$2aQ$_s*C2X)X0>UUbFq?;SVoxp%(A zcb`CTz1CZe`d_$SI8*p~%}l|!S(uo&4bwD#9naeSp0_6{xzzFFi`aJQ9);+vH{ zg|GJ#Dfn;~2EbRemZpeLJE1i3Ra!3~4sYr#C)5AilzGqX3c+0u!S}YQ+7jIT5Dnhb z^(7fR+tpHo(~iRtYyf$u)KT*#UD~R!3$UfE3){@z(yFL3Zb8~?==-qQs9BX)wcXwS z-_-b4^-E{!c#ZMb9Q-EZryTtIjQ`8Qf5`Yw=flSS6g%MWIsBh6KIQO#&iE4!{~gAE zfy*4Bz#$48xB&jlNuV>Qr4FGk>Gq(poUMR#Gba&e<}~i6t<`9uKAvnX z@A^xSZ0Oe7Xm;*D+ndPK{JIkLDYCwhl=$D9${2ArF6%31zB!98Cf@fsDUg=&Lc>Ds zw{SC`)9(*q2P|CH8{nU{a2dbAKWE`+Hw5^ow#;oG+raY{E-``Q$4_L24dC`#^@N2N zgiQLPg-=-cS1tUYg`4%lv~$wJU$XdzEc^!BZhyXR@ef=4w=Db-3;zMzh$GJe=*NuX zc^_pP>St^NKf*SYSr^P7xji0!#T@XDvJLev+rS@V8|po_f#VNfO>4{CwpjQ{3%`F2`~k)hA7@b_2N*~D z9~Y3c;Ap?iU&kD{*&nIQ&2D_zhq>_ucjMAWyc@qIEcTIZ77)o5nuK)HjWrJzlcf_%-QzeSrH(~BwaRN<(n_mS^=G} zG+VLJOJcRcYb}+>>6yxx>0~MoATMW2c^s1&h)&$%)=DFf>enhxQj#gLvwx8Bg=XmPpPY;}UznMoY#5HSIl zbh%Qm)xwB6D59gsJe@X~qsWfP3v@_IQS^CHK4`V#YI&ta+5dmR{s&{!9$Sc7#4SZI zu58&u1^D|mNOsXFOA%aK@GbSx^-2Bl9o((`ZhPG_*3dNnlY~RI8I{~!f9wf*=qe@* zV|>Ju*(~EY55(UJo)seVzl34`^7E)nmF)x0o|BLcZc)eM8Oi5 zi~Vg{{wth+6URY*bcvfE`(4D8c1o%n{NA5uf59cc=>2Q>{{tU8$uXmnyZDL5c?E1Y z|3RLR`8BTTf0F$Z0vj{#gwD9+75+18_|LNctPojC{|S7a{L}is!4v0)Oho_V)JOc~ z`gtBX6a8Jze^vn2Zu?PoUXf=0k^Nuh&F?Nk5zEbwy{y Qm`?TQAB9!N!6~Z$0?=i?=l}o! literal 0 HcmV?d00001 diff --git a/obj/config.ads.stderr b/obj/config.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/config.ads.stdout b/obj/config.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/config.ali b/obj/config.ali new file mode 100644 index 0000000..e44d75e --- /dev/null +++ b/obj/config.ali @@ -0,0 +1,55 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U config%s config.ads e56314eb NE OO PK + +D config.ads 20241115151036 e56314eb config%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 config.ads +17K9*Config 29l5 29e11 +22a4*Name{string} +23a4*Version{string} +24a4*Arch_Name{string} +25a4*Bug_Site{string} +28b4*Support_Alloc_Only{boolean} + diff --git a/obj/config.o b/obj/config.o new file mode 100644 index 0000000000000000000000000000000000000000..a00beebedca0c060ebbc14a70b5c13600b822d0b GIT binary patch literal 5360 zcmb_f&2Jl35PzGs`$5`}5a>6=32kXhz5b}1HUZOwHZ76TG-?b84w&_3V{hx-wRYE` zL4v{oi31?0gx~`I02j)I3m1eqa6#o#i3=w_BoG3Ggpd$|nfK^TA^LsP% zK6c*h`0Cuk*#S*sk~H=!>u3^X?B^jNZ9V z!w>4Yc4!A-yVdf8$Y?}v6WszQwALm|*{0(>G)rh z14AtJd~)DDIdGJv-U6AgXa`Q$SrNx}Vr&K5g<%zJH%9DWOe-;cXnI_GU~pw z1j6rwAKx<^M=zQLFb!h{a81+x7}|~uw*fy8#)LEI10dhdHNHvB^1W53Uaiu5uA0rJ zZ&iJ-xz6NJ#WP)dnOO}pFs;ZAIs;~4HL5g9aVl$&Gmh^qvvZ4&W@cB+Orc~HjeI71 zp_s|mJu`a76nr+5UAzhqlcoR_&E3Rj#U2fo66 z9o#)X8%CyeIok^S2(0}8K!I2d+qzu#d;nI=$jpW?49f~ZUu}C_PGGn$`;5%tMc8k7 zLTVFYKKsmLVrS(Ene*|;!|nRA6M@gaxlOV6ES#d4a^vOd7%VJYIDKJp;feBDvl-fA z<1NR^WL-Fcz;2pXKs0Mkx!Ia5(Q>VFE^=GBbBnW;Y-R5JQZ|oNG%DwpIu^Hf^r7Dl zEIZc<%(`oahPeVW^AmG>&QTI`xK0Si-mV}$`c zS8dO-oj9-Jw2F~RtzEB%aKw;?lxUP^%<&?-o=8ee$Jj`^v6}BUZPQ~$&aYj9Cv8at zgB^v+2u0u{2_tsy^y%r$AxQ1Rl-F$b5x7TFm+gsQWVJ~-CgjU;9qVS6^hOyZe7_~AZyNx{WR zy7xQI?S|QtioJ+C()9*J9(C{Q1o!VgpE-)Jgl7wce;0o_gvB!9dld(iMh@{;m@LIl@0v@Rta`uHdf{{)&RXN%&0#e~07!^79Tpsy=jf zrwTD_5=IjD>nK@##PQDkl9~EB$9V(AE#-IrD~@;Wm&AYIxYVevLC-|>G8Xa~W-P4O zSQgD%EwI<}pwBL!EtCY8YHZbnCXc`=VNw+AxM0TwBlk(6oe=D#Uo6!9GiT)tVvp%IHo+8_>nT}-kr zAPy~EOk*S=E^QE!_W{!_ivZDa;%J||W2X{0c7u{+T|oQ0B?#Ok8S#4(_-X=|YeVR2 z0?&|)>}`@U&N#`)u9J-T1j)!SpOJ81GRIN>6dyone=nEB;|9rSe}4l1l4P{spTNH+ z8SUj6BJ?BSXn%lYWWSS)_Q_f-Zx-4gBpYNCBqN@zqS6L&nHy*->aEyU@~e@2j~l9i z5w5$DSz|^R1%fxE6xmlIW?;L@j9LgSN#LVm$SjY$8Fip@L5xuGkvFAlfM1y|w8z~s zu)#Ds7Zp~RC?K%N&M^Ez@ai@$yn|r{kuI=NDI#3uy5+mB?ZL)9=-~}$twc``LGZ7p zVMbBl)Y=h*{XYor6uv|G{$4t$vcO-ta~UU&B3pie~XW@u1-nyulDhOf&5i_Rlm~5|K(fsf31)I>*TMVx2k_g z{$w7rH>AJfps4Hvu){8ShU_IfM6KH}y%_w)VAmk`FTWL^0H(&o7}p4_ppqcf_9l#} z7@B`eU0skUFhSg-Y;qz|E7C$4`R{M7Y-511MgAhwD2J&j6&RNHT0tk?WYH2>4& zi}Pc*s?Pr#U>H-@T@X3V(EL9Um$;li<{_VfHC5EDc~OR zm+>Wkk^H4Dx%8L%5dffe$m=R$CjIAQLdFyu!y7dJ622TD>~rvYsh&UPv|76W cVwv0U33;GQsHps#+ROiadjAh94vNbD2Eig}Z2$lO literal 0 HcmV?d00001 diff --git a/obj/cryptography-chacha20.adb.stderr b/obj/cryptography-chacha20.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/cryptography-chacha20.adb.stdout b/obj/cryptography-chacha20.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/cryptography-chacha20.ali b/obj/cryptography-chacha20.ali new file mode 100644 index 0000000..84637d2 --- /dev/null +++ b/obj/cryptography-chacha20.ali @@ -0,0 +1,106 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U cryptography.chacha20%b cryptography-chacha20.adb a311b42f NE OO PK +W cryptography%s cryptography.ads cryptography.ali + +U cryptography.chacha20%s cryptography-chacha20.ads d09a2a0b NE OO PK +W cryptography%s cryptography.ads cryptography.ali +W interfaces%s interfac.ads interfac.ali + +D cryptography.ads 20241115151036 8132c7fc cryptography%s +D cryptography-chacha20.ads 20241115151036 a950b883 cryptography.chacha20%s +D cryptography-chacha20.adb 20241115151036 0a410cac cryptography.chacha20%b +D interfac.ads 20241115151050 f8f85574 interfaces%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [gen_key cryptography__chacha20 35 13 none] +G c Z s b [quarter_round cryptography__chacha20 39 14 none] +G c Z s s [TblockBIP cryptography__chacha20 28 4 none] +G c Z s s [keyIP cryptography__chacha20 29 9 none] +X 1 cryptography.ads +17K9*Cryptography 18e17 2|19r9 40r5 3|17r14 65r5 +X 2 cryptography-chacha20.ads +19K22*Chacha20 1|17k9 2|39E14 40l18 40e26 3|17b27 65l18 65t26 +28A9*Block(4|18M9) 35r69 3|21r69 27r32 34r11 +29R9*Key 32e15 35r26 3|21r26 +30m7*Value1{4|18M9} 3|30r20 +30m15*Value2{4|18M9} 3|30r38 +30m23*Value3{4|18M9} 3|30r56 +30m31*Value4{4|18M9} 3|30r73 +31m7*Value5{4|18M9} 3|31r20 +31m15*Value6{4|18M9} 3|31r38 +31m23*Value7{4|18M9} 3|31r56 +31m31*Value8{4|18M9} 3|31r73 +35V13*Gen_Key{28A9} 35>22 35>31 35>38 3|21b13 56l8 56t15 +35r22 K{29R9} 3|21b22 30r18 30r36 30r54 30r71 31r18 31r36 31r54 31r71 +35m31 Nonce{4|19M9} 3|21b31 24r49 25r49 +35m38 Block_ID{4|19M9} 3|21b38 22r49 23r49 +39U14 Quarter_Round 39=29 39=32 39=35 39=38 3|39s10 40s10 41s10 42s10 45s10 +. 46s10 47s10 48s10 58b14 64l8 64t21 +39m29 A{4|18M9} 3|58b29 60m7 60r12 60r30 62m7 62r12 62r30 +39m32 B{4|18M9} 3|58b32 60r16 61m19 61r24 61m33 61r51 62r16 63m19 63r24 63m33 +. 63r51 +39m35 C{4|18M9} 3|58b35 61m7 61r12 61r30 63m7 63r12 63r30 +39m38 D{4|18M9} 3|58b38 60m19 60r24 60m33 60r51 61r16 62m19 62r24 62m33 62r51 +. 63r16 +X 3 cryptography-chacha20.adb +22m7 UB{4|19M9} 32r23 +23m7 LB{4|19M9} 32r41 +24m7 UN{4|19M9} 32r59 +25m7 LN{4|19M9} 32r77 +27a7 Initial_Block{2|28A9} 34r20 53r27 +34a7 B{2|28A9} 39m25 39r25 39m32 39r32 39m39 39r39 39m47 39r47 40m25 40r25 +. 40m32 40r32 40m39 40r39 40m47 40r47 41m25 41r25 41m32 41r32 41m39 41r39 +. 41m47 41r47 42m25 42r25 42m32 42r32 42m39 42r39 42m47 42r47 45m25 45r25 +. 45m32 45r32 45m39 45r39 45m47 45r47 46m25 46r25 46m32 46r32 46m39 46r39 +. 46m47 46r47 47m25 47r25 47m32 47r32 47m39 47r39 47m47 47r47 48m25 48r25 +. 48m32 48r32 48m39 48r39 48m47 48r47 52r16 53m10 53r19 55r14 +37i11 I{integer} +52i11 I{integer} 53r13 53r22 53r42 +X 4 interfac.ads +11K9*Interfaces 2|17w6 17r22 4|120e15 +18M9*Unsigned_32 2|28r37 30r40 31r40 39r49 3|32r10 32r28 32r46 32r64 58r49 +19M9*Unsigned_64 2|35r49 3|21r49 22r21 23r21 24r21 25r21 +86V13*Rotate_Left{18M9} 3|60s38 61s38 62s38 63s38 +101V13*Shift_Right{19M9} 3|22s36 23s36 24s36 25s36 + diff --git a/obj/cryptography-chacha20.o b/obj/cryptography-chacha20.o new file mode 100644 index 0000000000000000000000000000000000000000..ba58d00384e6cca4fe4f2fd6b4b55a1b5d207711 GIT binary patch literal 23096 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 27r47 30r31 3|50r47 96r31 100r18 +22A9*MD5_Block(4|18M9)<4|18M9> 23r51 +23A9*MD5_Blocks(22A9) 27r28 3|50r28 +27V13*Digest{21A9} 27>21 3|50b13 94l8 94t14 +27a21 Data{23A9} 3|50b21 58r20 +29A12*MD5_String{string} 30r48 3|96r48 101r18 +30V13*To_String{29A12} 30>24 3|96b13 118l8 118t17 +30a24 Hash{21A9} 3|96b24 106r31 +34V13 BSwap32{4|18M9} 34>22 35b30 3|106s22 +34m22 V{4|18M9} +X 3 cryptography-md5.adb +26a4 S(natural) 84r50 +32a4 K(4|18M9) 64r19 80r32 +51m7 Total_A{4|18M9} 59r21 87m10 87r21 93r15 +52m7 Total_B{4|18M9} 60r21 88m10 88r21 93r24 +53m7 Total_C{4|18M9} 61r21 89m10 89r21 93r33 +54m7 Total_D{4|18M9} 62r21 90m10 90r21 93r42 +55m7 Round_A{4|18M9} 59m10 80r22 81m13 87r31 +55m16 Round_B{4|18M9} 60m10 66r22 66r52 69r34 72r21 75r34 83r24 84m13 84r24 +. 88r31 +55m25 Round_C{4|18M9} 61m10 66r34 69r65 72r33 75r21 82r24 83m13 89r31 +55m34 Round_D{4|18M9} 62m10 66r65 69r22 69r52 72r45 75r50 81r24 82m13 90r31 +56m7 F{4|18M9} 66m16 69m16 72m16 75m16 80m13 80r18 84r47 +56m10 G{4|18M9} 67m16 70m16 73m16 76m16 78r36 80r47 +58a11 Block=58:20{2|22A9} 80r40 +64m14 I{4|18M9} 65r16 67r21 68r19 70r26 71r19 73r26 76r26 80r35 84r53 +97a7 Hex_Chars(character) 112r34 +100a7 Item{2|21A9} 105r16 106m10 109r27 110r18 +101a7 Result{2|29A12} 103r32 103r52 103r67 111r27 112m13 117r14 +102m7 Temp{4|18M9} 110m10 112r54 114m13 114r34 +103i7 Position{integer} 111r16 112r21 113m13 113r34 +105i11 I{integer} 106r16 106r37 +109i11 Part{integer} 110r24 111r46 +X 4 interfac.ads +11K9*Interfaces 2|17w6 17r22 4|120e15 +18M9*Unsigned_32 2|21r41 22r30 22r60 34r26 34r46 3|26r24 32r24 32r54 51r17 +. 52r17 53r17 54r17 55r44 56r14 102r18 +86V13*Rotate_Left{18M9} 3|84s34 + diff --git a/obj/cryptography-md5.o b/obj/cryptography-md5.o new file mode 100644 index 0000000000000000000000000000000000000000..f27d410bfbae6bc9e26b842810260c2b58b038bf GIT binary patch literal 24976 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 aAiZq1zZAg&cduCSb#s(rgk^Bn@&6yPg%FAW literal 0 HcmV?d00001 diff --git a/obj/cryptography-random.adb.stderr b/obj/cryptography-random.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/cryptography-random.adb.stdout b/obj/cryptography-random.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/cryptography-random.ali b/obj/cryptography-random.ali new file mode 100644 index 0000000..03c9255 --- /dev/null +++ b/obj/cryptography-random.ali @@ -0,0 +1,206 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_UNCHECKED_CONVERSION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U cryptography.random%b cryptography-random.adb fd0b9616 NE OO PK +W ada%s ada.ads ada.ali +W ada.unchecked_conversion%s +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W cryptography%s cryptography.ads cryptography.ali +W cryptography.chacha20%s cryptography-chacha20.adb cryptography-chacha20.ali +W cryptography.md5%s cryptography-md5.adb cryptography-md5.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W memory.physical%s memory-physical.adb memory-physical.ali + +U cryptography.random%s cryptography-random.ads 86ab8d2e NE OO PK +W cryptography%s cryptography.ads cryptography.ali +W interfaces%s interfac.ads interfac.ali +N A35:4 gnatprove false_positive "postcondition might fail" "Counterexample works, could be a gnatprove bug?" + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-unccon.ads 20241115151050 13b8aaf3 ada.unchecked_conversion%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-clocks.ads 20241115151036 f76b002b arch.clocks%s +D cryptography.ads 20241115151036 8132c7fc cryptography%s +D cryptography-chacha20.ads 20241115151036 a950b883 cryptography.chacha20%s +D cryptography-md5.ads 20241115151036 c7dbe3c0 cryptography.md5%s +D cryptography-random.ads 20241115151036 ff611fa6 cryptography.random%s +D cryptography-random.adb 20241115151036 d5415301 cryptography.random%b +D interfac.ads 20241115151050 f8f85574 interfaces%s +D i-c.ads 20241115151050 aa7a7c0b interfaces.c%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D memory-physical.ads 20241115151036 f22cd7a2 memory.physical%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [fill_data cryptography__random 22 14 none] +G c Z s b [feed_entropy cryptography__random 25 14 none] +G c Z s b [get_integer cryptography__random 28 14 none] +G c Z s b [get_integer cryptography__random 32 14 none] +G c Z s b [entropy_adjust cryptography__random 39 14 none] +G c Z s s [crypto_dataIP cryptography__random 21 9 none] +G r c none [fill_data cryptography__random 22 14 none] [seize lib__synchronization 27 14 none] +G r c none [fill_data cryptography__random 22 14 none] [digest cryptography__md5 27 13 none] +G r c none [fill_data cryptography__random 22 14 none] [get_statistics memory__physical 55 14 none] +G r c none [fill_data cryptography__random 22 14 none] [get_real_time arch__clocks 39 14 none] +G r c none [fill_data cryptography__random 22 14 none] [get_monotonic_time arch__clocks 31 14 none] +G r c none [fill_data cryptography__random 22 14 none] [gen_key cryptography__chacha20 35 13 none] +G r c none [fill_data cryptography__random 22 14 none] [release lib__synchronization 31 14 none] +G r c none [feed_entropy cryptography__random 25 14 none] [seize lib__synchronization 27 14 none] +G r c none [feed_entropy cryptography__random 25 14 none] [release lib__synchronization 31 14 none] +G r c none [get_integer cryptography__random 28 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_integer cryptography__random 28 14 none] [digest cryptography__md5 27 13 none] +G r c none [get_integer cryptography__random 28 14 none] [get_statistics memory__physical 55 14 none] +G r c none [get_integer cryptography__random 28 14 none] [get_real_time arch__clocks 39 14 none] +G r c none [get_integer cryptography__random 28 14 none] [get_monotonic_time arch__clocks 31 14 none] +G r c none [get_integer cryptography__random 28 14 none] [gen_key cryptography__chacha20 35 13 none] +G r c none [get_integer cryptography__random 28 14 none] [release lib__synchronization 31 14 none] +G r c none [get_integer cryptography__random 32 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_integer cryptography__random 32 14 none] [digest cryptography__md5 27 13 none] +G r c none [get_integer cryptography__random 32 14 none] [get_statistics memory__physical 55 14 none] +G r c none [get_integer cryptography__random 32 14 none] [get_real_time arch__clocks 39 14 none] +G r c none [get_integer cryptography__random 32 14 none] [get_monotonic_time arch__clocks 31 14 none] +G r c none [get_integer cryptography__random 32 14 none] [gen_key cryptography__chacha20 35 13 none] +G r c none [get_integer cryptography__random 32 14 none] [release lib__synchronization 31 14 none] +G r c none [entropy_adjust cryptography__random 39 14 none] [digest cryptography__md5 27 13 none] +G r c none [entropy_adjust cryptography__random 39 14 none] [get_statistics memory__physical 55 14 none] +G r c none [entropy_adjust cryptography__random 39 14 none] [get_real_time arch__clocks 39 14 none] +G r c none [entropy_adjust cryptography__random 39 14 none] [get_monotonic_time arch__clocks 31 14 none] +X 1 ada.ads +11K9*Ada 12e8 9|17r6 42r31 +X 2 a-unccon.ads +14v14*Unchecked_Conversion 9|17w10 42r35 +X 3 arch.ads +20K9*Arch 52e9 9|19r6 57r7 119r7 120r7 +X 4 arch-clocks.ads +19K14*Clocks 45e16 9|19w11 57r12 119r12 120r12 +31U14*Get_Monotonic_Time 9|57s19 120s19 +39U14*Get_Real_Time 9|119s19 +X 5 cryptography.ads +17K9*Cryptography 18e17 8|19r9 40r5 9|21r6 22r6 25r14 143r5 +X 6 cryptography-chacha20.ads +19K22*Chacha20 40e26 9|21w19 42r63 46r21 62r28 +28A9*Block(10|18M9) 9|46r30 +29R9*Key 32e15 9|42r72 +35V13*Gen_Key{28A9} 9|62s37 +X 7 cryptography-md5.ads +19K22*MD5 36e21 9|22w19 34r26 38r25 56r25 116r25 116r41 +21A9*MD5_Hash(10|18M9) 9|38r29 116r29 +22A9*MD5_Block(10|18M9)<10|18M9> +23A9*MD5_Blocks(22A9) 9|34r30 +27V13*Digest{21A9} 9|56s29 116s45 +X 8 cryptography-random.ads +19K22*Random 5|17k9 8|39E14 40l18 40e24 9|25b27 143l18 143t24 +21A9*Crypto_Data(10|16M9) 22r36 9|36r36 94r14 +22U14*Fill_Data 22<25 9|36b14 84l8 84t17 96s7 +22a25 Data{21A9} 9|36b25 60m20 60r20 +25U14*Feed_Entropy 25>28 9|86b14 91l8 91t20 +25m28 Data{10|18M9} 9|86b28 89r70 +28U14*Get_Integer 28<27 9|93b14 105l8 105t19 109s7 +28m27 Result{10|19M9} 9|93b27 97m7 +32U14*Get_Integer 32>27 32>32 32<51 9|107b14 111l8 111t19 +32m27 Min{10|19M9} 33r27 34r20 9|107b27 110r40 110r48 +32m32 Max{10|19M9} 33r20 33r35 34r48 9|107b32 110r30 +32m51 Result{10|19M9} 34r27 34r38 9|107b51 109m20 110m7 110r18 +39U14 Entropy_Adjust 9|54s7 113b14 142l8 142t22 +X 9 cryptography-random.adb +33r4 Accumulator_Mutex{13|22R9} 52m14 52r14 83m16 83r16 88m14 88r14 90m16 +. 90r16 +34a4 Entropy_Accumulator{7|23A9} 56r37 89m7 89r38 116r53 125m7 +37R12 Seed 41e18 42r57 44r21 +38a10 Entropy_Hash{7|21A9} 56m9 +39m10 Mono_Sec{10|19M9} 57m41 +40m10 Mono_NSec{10|19M9} 57m53 58r18 +42V16 To_Seed[2|14]{6|29R9} 62s46 +44r7 S{37R12} 56m7 57m39 57r39 57m51 57r51 58r16 62r55 +45m7 Nonce{10|19M9} 58m7 62r59 +46a7 Cha_Block{6|28A9} 47r36 61r21 62m13 63r28 68r44 69r44 70r44 71r44 +47i7 Index{natural} 61r13 63m13 68r55 69r55 70r55 71r55 78m13 78r27 +48i7 Mini_Index{natural} 67r15 76m10 76r24 77r13 79m13 +49m7 Block_Index{10|19M9} 62r66 64m13 64r28 +50m7 Temp{10|18M9} 68m23 69m23 70m23 71m23 74r31 +60m11 Value=60:20{10|16M9} 74r10 +94a7 Data{8|21A9} 96m18 97r42 98r42 99r42 100r42 101r42 102r42 103r42 104r42 +114m7 RSec{10|19M9} 119m34 130r43 131r30 +114m13 RNSec{10|19M9} 119m40 132r43 133r30 +114m20 MSec{10|19M9} 120m39 126r43 127r30 +114m26 MNSec{10|19M9} 120m45 140r30 +114m33 Avail{10|19M9} 122m7 128r43 129r30 +114m40 Free{10|19M9} 123m7 138r43 139r30 +115r7 S{15|47R9} 118m23 122r29 123r29 +116a7 Hashed{7|21A9} 134r17 135r17 136r17 137r17 +X 10 interfac.ads +11K9*Interfaces 8|17w6 17r22 10|120e15 +16M9*Unsigned_8 8|21r52 9|74r19 +18M9*Unsigned_32 8|25r35 9|50r21 86r35 126r17 127r17 128r17 129r17 130r17 +. 131r17 132r17 133r17 138r17 139r17 140r17 +19M9*Unsigned_64 8|28r40 32r38 32r64 33r42 9|39r25 40r25 45r21 49r21 93r40 +. 97r29 98r29 99r29 100r29 101r29 102r29 103r29 104r29 107r38 107r64 114r47 +. 122r16 123r16 +76V13*Shift_Right{18M9} 9|68s31 69s31 70s31 71s31 +96V13*Shift_Left{19M9} 9|97s17 98s17 99s17 100s17 101s17 102s17 103s17 104s17 +101V13*Shift_Right{19M9} 9|126s30 128s30 130s30 132s30 138s30 +X 12 lib.ads +19K9*Lib 9|23r6 23r31 12|35e8 +X 13 lib-synchronization.ads +20K13*Synchronization 9|23w10 23r35 13|66e24 +22R9*Binary_Semaphore 9|33r34 13|57e14 +23r4*Unlocked_Semaphore{22R9} 9|33r54 +27U14*Seize 9|52s7 88s7 +31U14*Release 9|83s7 90s7 +X 14 memory.ads +19K9*Memory 9|18r6 18r27 20w6 20r18 115r16 14|36e11 +20M9*Size +X 15 memory-physical.ads +20K16*Physical 9|18w13 18r34 115r23 15|60e20 +47R9*Statistics 9|115r32 15|51e14 +49m7*Available{14|20M9} 9|122r31 +50m7*Free{14|20M9} 9|123r31 +55U14*Get_Statistics 9|118s7 + diff --git a/obj/cryptography-random.o b/obj/cryptography-random.o new file mode 100644 index 0000000000000000000000000000000000000000..4b2efe03e9e0d2fab5f8c126185a8c0510cc873b GIT binary patch literal 33256 zcmcJY3w)H-ng7o_Gr4mK1mq40AW{km2_b+5gb~8U6j?w-RKg?~NF=vT5(Mf6DdPQ# z6;xD~x~;lu?bX(Gt=86RYj?F;s@2-oqHC?X+O@8BZM)C!oadQ&a%SFk?f>&XA7;)u z-}5`ab9v8unRng^7cOn6j|72{5SafmnVe8#rtWZQlr6H!Mdk!E#q8M~44HE5ftWE9 zU!S(O?BbZofAav9|Hp1)9w;zo|0MfY z2l9-WL-ot@VrKuvd1l|SDIcx;Ks@fgr0n#($o`{wk*S4sKV0~|6Cba9Ldqn*Z|}6r zBpo^T$hk*a>ea@$lCDSJ5%%qvaqLXT4(X*Z}eSY0b`7N*X#&;$Xdv>4pnKkduDK=)) zt9M^fmRD@{y?W%=O}~EQgUTzT_vV?%JCXMyA4ERd^Q%3__Po9)JqOaSIW$U)v@9>r zj#BuvUsWEHbaYCCiB2A1D&L&;dh^nK`HPoL`P0e|SN&oATN{7-+DC7{S9!(xwGUnu zthi|9MN9S%2qKrQXr?)CzOuHU`LUY{pLuHkh!f0f2cmZsn9G)oIpZ=@w&TOWUn{s{ z@yiGDVqe%@5ZqD_Grt+}{zq^0uH1R|&Nt3kx$U*{zIZ;yB0aco^PraEU3YIQZm&PT zjmCU*-^P8HU%cgFDMt@4E)JIc=3woI+}aB#n5&kcr8B;B)w1T#zZYTt|#sqecr8a%yXJFC|ItM2zhdGeUK#PZ z`bW(R*F1SmblEfJ$nfaWUz;Ca6FKgc&Cgu(O8!r;i5I+Z&BVO3ugasI2SX;lKIK^D z-n;kaU77!8UQ9+XtMB5-E1TmjQ$ByB1-e=*JXr1V=fsyq`QX-42} zAl`C?!Wiu)R6dQ~3JYDj4(Y(A2cfVuI=qh}yJJR5i<-a&?^5JBN*9`uD=4zH;*_|R zUZe1qe_&E!{tdB0M3Z7S#7tp~dS{HaE{v3-a%n?+rg;!_wD}7K>w?Oqr*T2d48DW% zMbHGXIYsXwMkY450L^jB7)BBCF-Vxft~=0}TFe~2PN{U}5u}EqWE)!XLvW~`+A8a4>oj8)aA8?T zVuvZ0oE=%Te3sNsJENj=K3mGPdvNF;61du9$B1GaBf__b+m-OcsH}!Jz{r zwXGaC3i~*MU3ulf@dHxS11vZbOex0J;>-!f7_eL9!Bm?WX(m929qMwbRKAzqhA*Hu zL)(2i64C4Kzrd}d8R>OJ12Cqt0J~iDx~I9gs=yuxsKm)DU;RRy=RgKobl!(LpDce5zz#$%?YM zw4@@n3Pk7}5VfEpaFWPKS|KY;WaI^u$XjmC4=yaDu2q_oM$I49IY_){IR`;>(2BBv zN((2Ol9GibQ95uJl@To|aSfuZxWcR`tD>_^No8=-D5`E7s)!8o05t`l$O$%3Qw$veyU>lyow?>tRXZCVi-k5!HO~rV`%>t zSCr{C%kspd95aK77)FTt7v+f{GQ3opJkE8IPMSl4;|GVX8J&7cg43w}czEv#Mq#2SRN7gsrOC#0 zl;_#$sDKc86R}Iop1w2dB}N-#W2|6P&_pL&4rc{tXu${)jF=pp5t}?U_Jv^M?fuKn zjEw+3vmd78L@ZXEzsu}26K{_dmj)YkrAYpTW|yhBJr>FDUqHH8X=Sh>RyjYbrPBP3 z`wP$9Ul=PLUAXlfO42Jf`pqDJ>;A%4O1>8yjc{7GH8nUhHnla_61y~bBM7$WqV17I zx5u_041!IuJAwxh9SvR!0ACB<4k9yekG&n-7$JNp@-2$`SEbVJ*9J5xcLet#IvV^L z(VocONMzRSvAvOl5y~El+!le+ZIQc?y)SZqBvO5Q?0y*bo8#?JZU1@@B*}>ili96Z z9Ry9W8-n{0SxuAH6b{*8E;ohclMBnIjJ?E6oD|$1+k9R&H0@Xkc0;GPw`}+SFY#7# z&EvI|KBmP?Bvx1#n>#<&`E-yu)WuA3Y(PA=WVJitp+EEOsSl}p+{Gi3M@AA&Vd{7QMj6VfjhXz?R3OI4cHugkfBnpz93hCUDoLN6)ohi*+APyF^{ky z+Gkzul=B9d>_(Ya9L=+3Zk)FDJeiTPyzz!d3#{MR=uR7#x;oUK6zA=XrSk>R5tbKn z`;(*R*!(D-Q@81hqcKY-@TfAaxn7j=HZ0~=C$L_0BVDh!jne36t=rhB9ZBBsXraxE z%W$4c&Qn>|R(i><@BRy`fIBzDHN%a~;|UlNJr9j=ncXAY^m13{x$?Y0Jds0qvhAW} z%^>dZ5N@fEy$3~i*Z~Yl>ug(j>_MJxz(d@Ukv%Nez}}#NO<{Z4V4p zoZ8vl+qE^7=x*KF*x1oB+r70WdRk3KS7%paXHT-(^j9^vCg@+y%*MuT$(?3-+qya%8&k>lWTGd`LQS1n zw(7L<#Vv{Q>e|Yh%9-UePOT}Qv6aSgZo+EP_i*Hzz1)jPXp^zdjGqZVKx+LDWb!}TO)oJbR?e00TD&6bK&aTd_oqd&EsjXFgJygH1ySppZTiM#% z(VnioIMv+hnoPCzG;gn~ozdP#AB2+`K|{l-C!e~i;fw|KiT0kP8+dnHbNP%8ngQA( zi5-+oG_@^g@2;!m?lv!|>h0*RTDEHOx*6-1etPwcnFuwN>ps0Yqxio~eNR_ksySKJ zol0!&Nc2=DTBv0^V;wo$nC05&XzQVA?@l%^sF_(kuezps7CK2|U67(Nwsj<$8+Wxe z_oV23OR}>$+2$=^S(aOp$(BZ5o2IR^H<{X!XioMtHuiP)v~BIA!dW$j=Bur-t+OS$ z!*j_T9Nd18*q&%>Pc*eB4Q-m{q)Fj;Vxej4X~eEV2Zx-k%r&bUPpj^nrl(D;kuM9nK!zdXpX9hI-rR`f1;JM5$y?Uwf}R z{@LzkHJ?f*+Fi@CpVRTPr>&W2Bkd2pZ9Tm-)!x*|1WPy60mt-q_0rL%BgfHJYAJPN zM_(^Z{FYQQ8FJKUYU@nU(WfWbK?nA(RM-SzCNcM0lc~nW8rlrlo*mgoeCdPIhm1{4 zd2g4Sb#5S}r#;E=1EgxMv2h&^D{D>4PLVz7%yI|fTCXda6}UCoX-`qB8yBxxv-phk zF*&oX(1O}tIoDxbt*NZ)YC4DBdB@bJ!z!Jb;U6B<8Iz7Yf zy*6)_oqY0%t>JJQEby4Kf z*uh~pkBpoHkNw4;A9Q2sO~>6bIx`Qr`s=H@~bT5tZ2{UHi{Yx6C z1Z`WD%Os=xSw2HtD(XJ8`k1Kw2-}a-Jthj-+}-)j=Auu3`c-bx%!m0jb^7#Y|1@|0 z**r`y-0#tPatusq+E->OOfTHO{~^3M?c@@|v7hN6Jkzo(6>h&nP!+=X1*8e+I~oa# zI3fDcQsD84A$)QOpYky|zJk(0`s43E!uoB9nVv6`4ID{n;DB_l59FL-^$( z{K^o1bqK#cgx?Ut4~FpE>%Yj{8KU?13)x=xh3LN;!XFCZ4~OvYhVZ9C`12o=9}CgH z7Q){P;qEbvOrgwAv0UJAk#P68NVeX6sh-V`3-K8p!pDa2i6MMy2(Jv`H6gqd6I zv$SsB#+%&x_4ttecf85Hp2wROuLbeow;j2Q}`Tn|N7(w z%ZFs1{yLIEPBgdJ2p1z9pcX|DH*M;NEtNH!?7qI?T&u0nq&i-=Kz`WV> zSe5$G^(F+{PKR2brJX@$WMCKNtLv`D{=B6Xqv-^Y(M*XL$No zm@oF`{|)Asdi?jy6Q2JcnLp&|@mwW6kZEr4cro)$9v{kli}lOQ&uGiN#ZSfM%>Co% z6!!Uy*Uw7JhiBcNna%pIc-w0M>&r7;v8g4jFZ1*b%&+#wwT}6AuRmuoZ}R+GEH5w< zJ$?@Jg&yx_Uhnbk%>C=k^DG}{UibRB*YfP^#><)e=a*|OA8uxN?H**l!sCZ6A7_Sp z?cT}y&7S^#%LiuNAA5j(MtbxA9m}&nCw`x~f8P9&<-^SdUc1j)KFUn;_=}d0GnaVn z{)Ty*r~jShC7FlRx%~I6|C4=wGE?b~mV1+fVynx(e#p0cxcx;}#)Y2uX1)J;vn<4C zl;z{h!`g(>6_#h;Up;}je|<8;^5N!do=+|N|G-=S^O?Wp@g>a1dQ;IL-1A?@{6ufN zoW*>b=ig%aaPx-evyJtC@$@~+Ge01374ZubdY;|ndB>|gte@-oT+aGMp8h)47kT5o ziS^fc`opaMqvwAo>+kdQU$%Ty)^YEf>=XCq;bHc1=aWp~H1@dV+571V=I!46tY$vm z?v@wfi%x&z$e%{Pv;cnRS&uZ-+h2Q`s=H+)Uo__dUF!P3hrMegZf9*|OZaTu-i5 zHk>@uR5r||R}B)?_N^LOyj9mBRfE)Qq-N3E$tY+^HuY_7Of)s6lG{;b@!I-2C@AJE zR1IsKgHyNDQ<_`|N0P#hB6>s%5jsH;+n{C2Rl|qkIWC&#qB<#MvF$e0Y+TLG)og9Y zfpWH~=C-QY&yJnS?Vu5}j~y`b>{G+-)o}YY>{r8nHS9Nw$2p68PtRQ1QPjexK8{-T zOS$eW^tEB_I*~#`S(zekk$%Z(9cD=_w79+jrRy6|w!Q%+>l?TSwdg^893}Nj@s1Xx zB_7QzXu;WqJ6(&O)W-qqm*O1~Fll{KUxhKzbs$DOR>vEtc8s_q)F zm1ri>`uYavZdB& zT(4_c>#-f4<}@O?{sezU@q?TO|B2#qe;E8(#Se3OI>pZ^{y3+h|Ec0~-`ih@FR=#w z*X!^j#S?0t<#_}6A7u?9x$lSjB|lSqGS`J(`hemSnfrQo|JB(0F4|{Zh+eLbv3=dW zaJb`-h`509YA$OG#@EFI0S|;`lo~680&s=l?dvWgkJEdzm9DQ9chUF6RR1f1>z6rT?Yk zgA{*@InZFm-&cD5-Rqy3W4jDddg0hET7R6qPv-Wcp-Mkl@iN6fp}6})OJqpF-QRUS z!>(MR!9r`lmGeYTCE4}`%a07FUYn0Lp$GEh9tMb?VOesEE`JAix7{$+1e5~Tv zDn3r}+n8g#a?GTpxmW2YDE(KJzFhGKnPa>aIXK3v^-n5)-JfR_pQwDESM5$x{4K@x z@#Mc1munS_%iTA1#}lnDi=ou5hvSvMyKn0BQxtdiO^yAXlKu`RmxwFcb?+z zyK&nMvrzF*sCG|Le464L6#t~+NyVot-lO;o#SbX1zr#JExcjc&_47-L&s09&R2+Zw zNy4Lw%efe3k1IY)>7P+tKRbFFjiodV;JjLaE79hFS zMGM7r{}KWGQ%XOWIrcC83_zXY3zYs8#r66;P4R_F-=w%)!=N8siZ4?7^AumK_*IJQ zc5h`4Xwh)eC~t4KJScV z{bY*uc}lo{o+@WOd;;YU9Rhsx^`vmbT0awF3h>eAg}IhypGSnlN9z}{9zOc|VL5a3 zM_+FUhmY2;W<7lL_0b@L#L=97`S7+hwuhdfplo*Yj|? z;(A;O#dSX?GDlY)ZbV8qrct z!{<>>Ba;0c{JV;u%4zV&6kn(K_Y^-v@$W0XN%6-OZ&v&Vinl8MgyJbqW4p^eK%mbt z$95RZX+*-Y9kl)m)<7@&GLUfSwamCO zUO4pHM?OPAKV9jCL$7`0GX?Z=PZHIHL$7^maNwZ;y&M~n7Y@Dlk!xn?t03ec9D41u zNcqb-6jg*nuYKei4F1&+au5!^_K|BC=;auWD#D@HKJxq+^s^x3ARKz_vq|;8R>Tww zhhF<^QTo|RFC2R9)2{S#u0b{7&}*NR(#yFRdg0J(pB+j+7eWrgq1QeaDE&MUQ!E^M z?XyqmPgHv0&}*NomHtyoFC2R9bEDEPPRHY&poV< z5Im?e~Wck4c%OQ!E^M?em<{uTXm7&}*NUl>QW@ z7Y@Dlc}3|PlwLUW+UIqp|FqHzhhF=RHY&se2jtMtO5*FJKe9Q`>>>4ihDedInl^y`&g zIP}_QuIkU}N-rFG?XytnHz>Vu=(Ue~p54vo8A>l4dhO$$b9efUN-rFG?c<(*cltAx zUO4pHNAB}ue$G;Q;m~WJ&1$@7E4^^&wNI4ihD zeReB-Lg|G=zgh81mA)wlhhF zs3shG?Q_4RHY&%Y^sr_u|D zUi%zX`Yxpx4!!nyS?Rl#UO4pH=QXAOjM58-Ui-YQ^eLqm4!!n~@24gb?@@Z;&}*MR zEB{`l7Y@Dlald=#LBA0RJ5> zY2SrIuYKhEHRyLLy>RHY&vfO#OX-C}uYKhEIQV~7>4ihDeda6w^ORmV^x9{M(x0#N z!lBnb?*AZh+v`V4FC2R9vxfa6#P=wDvuby54h|o!cfaRw?Ov?(!lBnb?spzee~Hoy zhhF=*-+ws$rAjXxdhK(O>i=a*FC2R9bD7d#uJpp8*FNrdB(6VKD7|p#wa)?Nf2Gn3 zhhF>Ks`OVWy>RHY&li;bYNZzrz4p0F>90|G;m~WJuPFVsN-rFG?elG=zfS3eL$7@v zRr>3dUO4pH=Lbr^U+INIuYKI_X599=LFt71{6DYs!lBnbzfk%cm0mdX+UHfJ zKcMu&q1Qh0eKC$RHz~bv=(W!ul>g02FC2R9^CzXhMd^h@uYKrG{@Z~59CAtfE*yI8 zGf?SoReIsjYoFmtf1A<^hhF=PQ~KMLUO4pHr$XtUQhMRgYoAZDK0^EsrFXv*a_j1! za&Y)){Swvg7nNQ(^xCIE>F-o};m~WJbxMDi(hG-P`<$ipcPqVc=(SIa(*Lv43x{6& zv?~3Nm0mdX+GiMR@Uiyalzt?qG5`6BmveeD#f3TeRAO2`oi)DyOy=+}<}{+YoQ8h| zrx6KxPvSHp z;po5C%e5c+gE9%i(Vr;-DVA$9=%?l2&}*LySW`#we5DtDJTdKa18e;89%PR3F6K0% z!<@!=#S`c--YB3iTK{EB-Mz+ToJJ%Z{a>Q^L!3tc*X7{o|4PN>*aH2Q92|P>^K;f< zKF?8l;pop+#Rp(wDERXu-yvdtc0<5nB2f2Ta{@*K*V&Uk&*2{Oe=+8Y$FC6{(lH#VaXJ)zYhF0dB5M@{7tp@W17FI zPybnW^EajXrz{^wj9<0bsR@~nbeA*#O$SXe<}##0_KzAXds1C)^6hM9egQ=dt6wAX z82KlMUCr(E*ZgT)sX7VzRSx~Nwcg8!_dGSS5VfpSjv!#0|@KM*FyK^V^@#?fdIrc8EpNFvn6~ zaC=DoMQn(%>EPGDh3os{lKVZSx-zBx`gd`CPiEwK?{~52Rq*?B2Z3Dkw_&-fv}1sa zF@HnpCGE?+ej}v)6W{=?p^)!Qj9>pT0=fGC^g366HCI6YhttdN z|1Uz?AI}&0-OeWc?zjJZNc-hDFj3g8+8;rAzx{VZ+P|9H-)3DhZ+`o4hO~e9bXVt2 zu8Q%GqL<%3=GXT`l@Gc74ot2JzBZuxx#oX4A2{COg@X2RuJhZ+-?4(He14OrwqUVQ zn1X|*3evvB<3j3RiNR9P&x9f`^(3AVQvXH%Fjt03Do8zv>$tv>*yP*#!=NgZdV)>~ zss9ew-|SV8`IGwfR6p1J&*d)}cJubb{8!LR>dXF%^8+2K{AF%dk994qkcK$+x?|^) zEV9C3uD=0x$1wb&sI0??|`{9-u?Rj E3m4upVE_OC literal 0 HcmV?d00001 diff --git a/obj/cryptography.ads.stderr b/obj/cryptography.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/cryptography.ads.stdout b/obj/cryptography.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/cryptography.ali b/obj/cryptography.ali new file mode 100644 index 0000000..0ac7dd0 --- /dev/null +++ b/obj/cryptography.ali @@ -0,0 +1,50 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U cryptography%s cryptography.ads 8132c7fc NE OO PK + +D cryptography.ads 20241115151036 8132c7fc cryptography%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 cryptography.ads +17K9*Cryptography 18l5 18e17 + diff --git a/obj/cryptography.o b/obj/cryptography.o new file mode 100644 index 0000000000000000000000000000000000000000..0e859fff48ffd817d826dfeef0046fff49b86026 GIT binary patch literal 2008 zcmbtT-EPw`6n57Qh5(758w59HH-JQvHk-yaDX69UVN%ykY#<>aRj%tL+2X{q9ay=5 z*WiwK;LQ*Z0LO{FO<5x$u#}v0KA+FWK0jZ#2HSIu2C}PxexVD?q6mGPFLk}wEz~Z$ zjc%cx;oDYkf?J&x*LT}3XWwr*VT#o!T*_X{Iev3=7^IN-V zmWFBWW+L=*3H+S%Oei-}EIDWQ1c}O!B9`Ri>WY)ZEKcc#!(g!A-yaU%2irK2w0t;^ zNy}l70YMXd1}YxMLBdy8%ymiNDaO5>VeiN}+S)sC+Iso!(cZy@$KR!1X1O5L;{t~a zOBYWda*;7MGsapOgT)fk&M67}c4xigcb4@f;jMvyH^vN;(dU>*0smu~5*j1d%f=`0 zH}Qy=a+QSw^JwZ_HsA&lp`CtzqxBTJ?3rmX)O!u>SL6^iUV=J*XQ2q?^UjF*ygkBN zBU&pWmr5DD&>72<4sRDtT>H~~K97F>p5@S-IUxu&(cCO|z?(I=8LG-|6D?Gb(rlt@ zHTYr;e!T|2aTULsdRI=F!eiu0B}y4tP0=%jTs?Bg9ZLx+9p~XFfqu3+xLQ@iqrxT` zV>AV73X|+YRm;gnZc$GcD<$G_t|%1#Ki4DR>l#)w)~z|WTDixDU#(mnU&p$C_ literal 0 HcmV?d00001 diff --git a/obj/devices-console.adb.stderr b/obj/devices-console.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/devices-console.adb.stdout b/obj/devices-console.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/devices-console.ali b/obj/devices-console.ali new file mode 100644 index 0000000..90ce267 --- /dev/null +++ b/obj/devices-console.ali @@ -0,0 +1,125 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.console%b devices-console.adb d3e70226 NE OO PK +W arch%s arch.ads arch.ali +W arch.debug%s arch-debug.adb arch-debug.ali +W devices%s devices.adb devices.ali + +U devices.console%s devices-console.ads c390c2b6 NE OO PK +W devices%s devices.adb devices.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-debug.ads 20241115151036 7987b5ed arch.debug%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices-console.ads 20241115151036 37ce0dbf devices.console%s +D devices-console.adb 20241115151036 9daeba74 devices.console%b +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [init devices__console 19 14 none] +G c Z s b [read devices__console 24 14 none] +G c Z s b [write devices__console 32 14 none] +G r s resource [init devices__console 19 14 none] [resourceIP devices 39 9 none] +G r c none [init devices__console 19 14 none] [register devices 98 14 none] +G r c none [write devices__console 32 14 none] [print arch__debug 40 14 none] +X 1 arch.ads +20K9*Arch 52e9 6|17r6 51r10 52r10 73r7 +X 2 arch-debug.ads +19K14*Debug 49e15 6|17w11 51r15 52r15 73r12 +24b4*Supports_Read{boolean} 6|51r21 +28U14*Read 6|52s21 +40U14*Print 6|73s18 +X 4 devices.ads +22K9*Devices 279e12 5|17r9 39r5 6|19r14 77r5 +29A9*Operation_Data(7|16M9) 5|27r26 35r22 6|42r26 64r22 +34A9*UUID(7|16M9) +39R9*Resource 80e14 6|21r16 +40m7*Data{11|25M9} 6|24m11 +41a7*ID{34A9} 6|25m11 +42b7*Is_Block{boolean} 6|26m11 +43i7*Block_Size{natural} 6|27m11 +44m7*Block_Count{7|19M9} 6|28m11 +46p7*Read 6|29m11 +53p7*Write 6|30m11 +60p7*Sync(boolean) 6|31m11 +61p7*Sync_Range(boolean) 6|32m11 +65p7*IO_Control(boolean) 6|33m11 +69p7*Mmap(boolean) 6|34m11 +75p7*Poll 6|35m11 +98U14*Register 6|36s7 +X 5 devices-console.ads +17K17*Console 4|22k9 5|24E14 39l13 39e20 6|19b22 77l13 77t20 +19U14*Init 19<20 6|20b14 37l8 37t12 +19b20 Success{boolean} 6|20b20 36m36 +24U14 Read 25>8 26>8 27<8 28<8 29<8 30>8 6|29r26 39b14 59l8 59t12 +25m8 Key{11|25M9} 6|40b8 47r28 +26m8 Offset{7|19M9} 6|41b8 48r28 +27a8 Data{4|29A9} 6|42b8 52m27 53r23 +28i8 Ret_Count{natural} 6|43b8 53m10 56m10 +29b8 Success{boolean} 6|44b8 54m10 57m10 +30b8 Is_Blocking{boolean} 6|45b8 49r28 +32U14 Write 33>8 34>8 35>8 36<8 37<8 38>8 6|30r26 61b14 76l8 76t13 +33m8 Key{11|25M9} 6|62b8 69r28 +34m8 Offset{7|19M9} 6|63b8 70r28 +35a8 Data{4|29A9} 6|64b8 73r25 74r20 +36i8 Ret_Count{natural} 6|65b8 74m7 +37b8 Success{boolean} 6|66b8 75m7 +38b8 Is_Blocking{boolean} 6|67b8 71r28 +X 6 devices-console.adb +21r7 Device{4|39R9} 23m7 36r17 +X 7 interfac.ads +16M9*Unsigned_8 +19M9*Unsigned_64 5|26r22 34r22 6|41r22 63r22 +X 11 system.ads +11K9*System 5|25r22 33r22 6|24r26 40r22 62r22 11|73e11 +25M9*Address 5|25r29 33r29 6|40r29 62r29 +26m4*Null_Address{25M9} 6|24r33 + diff --git a/obj/devices-console.o b/obj/devices-console.o new file mode 100644 index 0000000000000000000000000000000000000000..c7448733c1492b99aed150023c8d86a1d3041068 GIT binary patch literal 16464 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 6|24r31 35r26 43r22 7|59r26 89r22 +34A9*UUID(9|16M9) +39R9*Resource 80e14 7|23r16 +40m7*Data{17|25M9} 7|30m11 +41a7*ID{34A9} 7|31m11 +42b7*Is_Block{boolean} 7|32m11 +43i7*Block_Size{natural} 7|33m11 +44m7*Block_Count{9|19M9} 7|34m11 +46p7*Read 7|35m11 +53p7*Write 7|36m11 +60p7*Sync(boolean) 7|37m11 +61p7*Sync_Range(boolean) 7|38m11 +65p7*IO_Control(boolean) 7|39m11 +69p7*Mmap(boolean) 7|40m11 +75p7*Poll 7|41m11 +83I9*Device_Handle 7|24r16 +98U14*Register 7|42s7 +105V13*Fetch{83I9} 7|44s17 +X 6 devices-loopback.ads +17K17*Loopback 5|22k9 6|24E12 52l13 52e21 7|21b22 133l13 133t21 +19U14*Init 19<20 7|22b14 54l8 54t12 +19b20 Success{boolean} 7|22b20 42m37 43r10 51m29 52m51 +24A12 Loopback_Buffer{5|29A9} 25r39 7|26r23 +25P9 Loopback_Buffer_Acc(24A12) 27r14 +26R9 Loopback_Data 29e14 30r37 7|25r50 66r13 96r13 +27p7*Data{25P9} 7|26m11 74r17 78r22 102r29 103r14 +28i7*Len{natural} 7|27m11 68r17 72r28 73r47 74r32 75r27 76m14 80m14 80r25 +. 98r17 104m14 +30P9 Loopback_Data_Acc(26R9) 7|25r25 +32U14 Read 33>8 34>8 35<8 36<8 37<8 38>8 7|35r26 56b14 84l8 84t12 +33m8 Key{17|25M9} 7|57b8 66r51 +34m8 Offset{9|19M9} 7|58b8 64r28 +35a8 Data{5|29A9} 7|59b8 72r10 73m10 73r16 73r30 78m10 78r33 79r23 80r31 +36i8 Ret_Count{natural} 7|60b8 75m10 79m10 +37b8 Success{boolean} 7|61b8 83m7 +38b8 Is_Blocking{boolean} 7|62b8 65r28 +40U14 Write 41>8 42>8 43>8 44<8 45<8 46>8 7|36r26 86b14 111l8 111t13 +41m8 Key{17|25M9} 7|87b8 96r51 +42m8 Offset{9|19M9} 7|88b8 94r28 +43a8 Data{5|29A9} 7|89b8 102r10 103r25 103r41 104r21 105r23 +44i8 Ret_Count{natural} 7|90b8 105m10 108m10 +45b8 Success{boolean} 7|91b8 106m10 109m10 +46b8 Is_Blocking{boolean} 7|92b8 95r28 +48V13 IO_Control{boolean} 49>8 50>8 51>8 7|39r26 113b13 132l8 132t18 +49m8 Data{17|25M9} 7|114b8 118r28 +50m8 Request{9|19M9} 7|115b8 120r12 +51m8 Argument{17|25M9} 7|116b8 123r70 +X 7 devices-loopback.adb +23r7 Device{5|39R9} 29m7 42r17 +24i7 Dev{5|83I9} 44m10 46r29 52r39 +25p7 Data{6|30P9} 30r26 +66r7 Dev{6|26R9} 68r13 72r24 73r43 74r13 74r28 75r23 76m10 78r18 80m10 80r21 +96r7 Dev{6|26R9} 98r13 102r25 103m10 103r10 104m10 +123a16 Addr{13|22A9} 125m16 +X 8 devices-netinter.ads +17K17*NetInter 7|19w14 121r15 8|20e21 +19N4*NET_GETMAC 7|121r24 +X 9 interfac.ads +16M9*Unsigned_8 +19M9*Unsigned_64 6|34r22 42r22 50r19 7|58r22 88r22 115r19 +X 13 networking.ads +20K9*Networking 7|17r6 45r10 52r10 123r23 13|55e15 +22A9*MAC_Address(9|16M9) 7|123r34 +23A9*IPv4_Address(9|16M9) +24A9*IPv6_Address(9|16M9) +X 15 networking-interfaces.ads +20K20*Interfaces 7|17w17 45r21 52r21 15|107e26 +33U14*Register_Interface 7|45s32 +34i8 Interfaced{5|83I9} 7|46r14 +35a8 IPv4{13|23A9} 7|47r14 +36a8 IPv4_Subnet{13|23A9} 7|48r14 +37a8 IPv6{13|24A9} 7|49r14 +38a8 IPv6_Subnet{13|24A9} 7|50r14 +39b8 Success{boolean} 7|51r14 +56U14*Block 7|52s32 +X 16 scheduler.ads +25K9*Scheduler 7|18w6 69r10 99r10 16|183e14 +74U14*Yield_If_Able 7|69s20 99s20 +X 17 system.ads +11K9*System 6|33r22 41r22 49r19 51r19 7|57r22 87r22 114r19 116r19 17|73e11 +25M9*Address 6|33r29 41r29 49r26 51r26 7|57r29 87r29 114r26 116r26 + diff --git a/obj/devices-loopback.o b/obj/devices-loopback.o new file mode 100644 index 0000000000000000000000000000000000000000..8a6a3b15b3cfa95ba4e179efb6907812e8bd40e2 GIT binary patch literal 36232 zcmb`Q3wTu3x&GH&G8sq+fpAZN5D)<+kc6v>h5+FrB1Oat$}pJ>5Y5fWMA2$RK-5~T zinpq*9<{Ai+gjVIRa~@_w3nQ&R({

{V2_f^o$>)R`vtqYPV_UOLHk4X@uK#QJ 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 aQit{i?0+eM!=zaG%{!gqb+5r**8DFFvC~8V literal 0 HcmV?d00001 diff --git a/obj/devices-netinter.ads.stderr b/obj/devices-netinter.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/devices-netinter.ads.stdout b/obj/devices-netinter.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/devices-netinter.ali b/obj/devices-netinter.ali new file mode 100644 index 0000000..7656917 --- /dev/null +++ b/obj/devices-netinter.ali @@ -0,0 +1,62 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.netinter%s devices-netinter.ads 557aa7c4 NE OO PK +W devices%s devices.adb devices.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices-netinter.ads 20241115151036 a12468cd devices.netinter%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 3 devices.ads +22K9*Devices 279e12 4|17r9 20r5 +X 4 devices-netinter.ads +17K17*NetInter 3|22k9 4|20l13 20e21 +19N4*NET_GETMAC + diff --git a/obj/devices-netinter.o b/obj/devices-netinter.o new file mode 100644 index 0000000000000000000000000000000000000000..2690ba96284935c9fc0fa7029a5c9c956f3d5a0c GIT binary patch literal 3504 zcmbtWTW=dh6rPO}E^?Zt4VRWy#6-}7V0UdNgeJ(vCT&85>qI0)AR(FYdSY+ty=ZqF z8hGFb@XAl%q0c<<%x~ZciT{8=Jn{hN%w;{^tObH2dCr;dTz4*K{Pq3z?wn;2O&0ls zOlBG-PHk`Ust=I?kiaiJ^|AI>1s@NwV9UnE^VH7Yo@Vy~rBiEyG z%A=4SCebPLxa%iT=#6OKO?cY(6Bm4?`#HFWk)3ktJ+k8@;$R&m07}FgGVf6%i~#6U zPVE%beiWuKKN*KYHZZJ<-P>2WIy7L7H9cFC`PjXW;rk#&V{K5S>+e*(txWU&cyQ!% z@ELL*r`v8;wG&3+ARIeUGH}N!_>bc_O1LxR!6@@?CEie`O#IY4+uX26e&B~}V$g0M z>>PC3pEh>sC}r})W8bUT0jxm6M)Wa=wC6WQ@#cmq*K4>uh~2$T>)1ZN|KQNBBGsMa z2Zs}jf4B5$G)_F`#t9t+G<9enGK&=p3UjQ>9D$$0vd7G8)T_0vTD`W8MZ&i>68J_R z4o&w<-%Ar1Pgv+NpEz#RJB3l@QwPpf+}7s~3P@+zl0w@;knHX3Y*$`~Q~HKFqNMc! zoO7`U#JUUO{PKb*wI0{HK|QW^DM}tnqH-z7;)NUp<54ZH;&mw|yl3;|_rHp?rNYhv z7hT=wyiW-sT%V4LFPJerRQSsVhT>;pK5M_G9*fMg zL@sA?CKMiVr(LZOr`>10@t{k4y@Z`rVct60txKk6wajP)ZAXFY(qtpk`Qb^V*G<1I zc%GNDA_&nHBYwreuPPaFEh8lNRlGg$UQXyGC8GUv6PT@A;+;V|eUGjwya7BP6IJI*|4;c3XZU}w{40uUme2JeD2nR; zQPr>O#QG7+*WU*$9}^(*6AnPzl4WDwwhNk~{6DMwpDRzykKH$)KL!kAR^eyTqDs`u z9XOp|^RK|E$UjsEDlmg8TZFX#H%iXu|3&$mJq?WgU&0|88N z8Ky}4?@ytVx;2dPa!VvscW_gHVx`31jy*cR{ 7|159r58 +22U14*Fill_Data 7|159s27 +25U14*Feed_Entropy 7|177s30 +X 5 devices.ads +22K9*Devices 279e12 6|17r9 71r5 7|19r14 186r5 +29A9*Operation_Data(8|16M9) 6|27r26 35r22 43r26 51r22 59r26 67r22 +. 7|83r26 101r22 117r26 134r22 150r26 167r22 +34A9*UUID(8|16M9) +40m7*Data{12|25M9} 7|26m12 39m12 52m12 65m12 +41a7*ID{34A9} 7|27m12 40m12 53m12 66m12 +42b7*Is_Block{boolean} 7|28m12 41m12 54m12 67m12 +43i7*Block_Size{natural} 7|29m12 42m12 55m12 68m12 +44m7*Block_Count{8|19M9} 7|30m12 43m12 56m12 69m12 +46p7*Read 7|31m12 44m12 57m12 70m12 +53p7*Write 7|32m12 45m12 58m12 71m12 +60p7*Sync(boolean) 7|33m12 46m12 59m12 72m12 +61p7*Sync_Range(boolean) 7|34m12 47m12 60m12 73m12 +65p7*IO_Control(boolean) 7|35m12 48m12 61m12 74m12 +69p7*Mmap(boolean) 7|36m12 49m12 62m12 75m12 +75p7*Poll 7|37m12 50m12 63m12 76m12 +98U14*Register 7|25s7 38s7 51s7 64s7 +X 6 devices-streams.ads +17K17*Streams 5|22k9 6|24E14 71l13 71e20 7|19b22 186l13 186t20 +19U14*Init 19<20 7|22b14 78l8 78t12 +19b20 Success{boolean} 7|22b20 77m7 +24U14 Null_Read 25>8 26>8 27<8 28<8 29<8 30>8 7|31r27 80b14 96l8 96t17 +25m8 Key{12|25M9} 7|81b8 88r28 +26m8 Offset{8|19M9} 7|82b8 89r28 +27a8 Data{5|29A9} 7|83b8 90r28 93m7 +28i8 Ret_Count{natural} 7|84b8 94m7 +29b8 Success{boolean} 7|85b8 95m7 +30b8 Is_Blocking{boolean} 7|86b8 91r28 +32U14 Null_Write 33>8 34>8 35>8 36<8 37<8 38>8 7|32r27 98b14 112l8 112t18 +33m8 Key{12|25M9} 7|99b8 106r28 +34m8 Offset{8|19M9} 7|100b8 107r28 +35a8 Data{5|29A9} 7|101b8 110r20 +36i8 Ret_Count{natural} 7|102b8 110m7 +37b8 Success{boolean} 7|103b8 111m7 +38b8 Is_Blocking{boolean} 7|104b8 108r28 +40U14 Zero_Read 41>8 42>8 43<8 44<8 45<8 46>8 7|44r27 114b14 129l8 129t17 +41m8 Key{12|25M9} 7|115b8 122r28 +42m8 Offset{8|19M9} 7|116b8 123r28 +43a8 Data{5|29A9} 7|117b8 126m7 127r20 +44i8 Ret_Count{natural} 7|118b8 127m7 +45b8 Success{boolean} 7|119b8 128m7 +46b8 Is_Blocking{boolean} 7|120b8 124r28 +48U14 Zero_Write 49>8 50>8 51>8 52<8 53<8 54>8 7|45r27 131b14 145l8 145t18 +49m8 Key{12|25M9} 7|132b8 139r28 +50m8 Offset{8|19M9} 7|133b8 140r28 +51a8 Data{5|29A9} 7|134b8 143r20 +52i8 Ret_Count{natural} 7|135b8 143m7 +53b8 Success{boolean} 7|136b8 144m7 +54b8 Is_Blocking{boolean} 7|137b8 141r28 +56U14 Random_Read 57>8 58>8 59<8 60<8 61<8 62>8 7|57r27 70r27 147b14 162l8 +. 162t19 +57m8 Key{12|25M9} 7|148b8 155r28 +58m8 Offset{8|19M9} 7|149b8 156r28 +59a8 Data{5|29A9} 7|150b8 159m71 159r71 160r20 +60i8 Ret_Count{natural} 7|151b8 160m7 +61b8 Success{boolean} 7|152b8 161m7 +62b8 Is_Blocking{boolean} 7|153b8 157r28 +64U14 Random_Write 65>8 66>8 67>8 68<8 69<8 70>8 7|58r27 71r27 164b14 185l8 +. 185t20 +65m8 Key{12|25M9} 7|165b8 172r28 +66m8 Offset{8|19M9} 7|166b8 173r28 +67a8 Data{5|29A9} 7|167b8 176r10 178r39 178r45 179r39 179r45 180r39 180r45 +. 181r39 181r45 183r20 +68i8 Ret_Count{natural} 7|168b8 183m7 +69b8 Success{boolean} 7|169b8 184m7 +70b8 Is_Blocking{boolean} 7|170b8 174r28 +X 7 devices-streams.adb +23b7 Success_1{boolean} 37m42 77r18 +23b18 Success_2{boolean} 50m42 77r32 +23b29 Success_3{boolean} 63m44 77r46 +23b40 Success_4{boolean} 76m45 77r60 +X 8 interfac.ads +16M9*Unsigned_8 +18M9*Unsigned_32 7|178r26 179r26 180r26 181r26 +19M9*Unsigned_64 6|26r22 34r22 42r22 50r22 58r22 66r22 7|82r22 100r22 116r22 +. 133r22 149r22 166r22 +71V13*Shift_Left{18M9} 7|178s14 179s14 180s14 181s14 +X 12 system.ads +11K9*System 6|25r22 33r22 41r22 49r22 57r22 65r22 7|26r27 39r27 52r27 65r27 +. 81r22 99r22 115r22 132r22 148r22 165r22 12|73e11 +25M9*Address 6|25r29 33r29 41r29 49r29 57r29 65r29 7|81r29 99r29 115r29 132r29 +. 148r29 165r29 +26m4*Null_Address{25M9} 7|26r34 39r34 52r34 65r34 + diff --git a/obj/devices-streams.o b/obj/devices-streams.o new file mode 100644 index 0000000000000000000000000000000000000000..d2f8e6ee24aae7c6cd3695c984ef604a62cc2266 GIT binary patch literal 29048 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 49r23 +20R9*Local_Modes 31e15 32r8 48r23 +21b7*Echo_Input{boolean} 33r7 +22b7*Do_Erase{boolean} 34r7 +23b7*Do_Kill{boolean} 35r7 +24b7*Echo_Newline{boolean} 36r7 +25b7*Canonical_Mode{boolean} 37r7 +26b7*Do_Implementation{boolean} 38r7 +27b7*Generate_Signals{boolean} 39r7 +28b7*No_Flushing_Signal{boolean} 40r7 +29b7*Send_Stop{boolean} 41r7 +30b7*Print_As_Erased{boolean} 42r7 +44R9*Main_Data 52e15 +45m7*Input_Modes{5|18M9} +46m7*Output_Modes{5|18M9} +47m7*Control_Modes{5|18M9} +48r7*Local_Mode{20R9} +49a7*Special_Chars{19A9} +50m7*Input_Baud{5|18M9} +51m7*Output_Baud{5|18M9} +54R9*Win_Size 59e14 +55m7*Rows{5|17M9} +56m7*Columns{5|17M9} +57m7*X_Pixels{5|17M9} +58m7*Y_Pixels{5|17M9} +62N4*TCIFLUSH +63N4*TCOFLUSH +64N4*TCIOFLUSH +67N4*TCOOFF +68N4*TCOON +69N4*TCIOFF +70N4*TCION +73N4*TCGETS +74N4*TCSETS +75N4*TCSETSW +76N4*TCSETSF +77N4*TCXONC +78N4*TCFLSH +79N4*TIOCGWINSZ +80N4*TIOCSWINSZ +X 5 interfac.ads +17M9*Unsigned_16 4|55r18 56r18 57r18 58r18 +18M9*Unsigned_32 4|19r50 45r23 46r23 47r23 50r23 51r23 + diff --git a/obj/devices-termios.o b/obj/devices-termios.o new file mode 100644 index 0000000000000000000000000000000000000000..9b2689e284c818e08780043afb10a682e2aa651a GIT binary patch literal 7016 zcmb_hQEVJX8J_i?Lx~&PsY~0C(p*g1q|n>DJv&bA>Jr{=2!k zy#Q55^8EjN^ZoxnGdugw?D=!+)r~R3U{nnDPu6b{%GjCr2_5^Exw_1bv8ULa_>Pkm*ZVIV~n@PIB24N{%cqtn&$n+I_U3C z#hqXH3i{*f@~fbZarNRCKxJHA`)rS}ez!;1NU@&}bu&W34%a_&6B$DPsD~7xS8srx z6Z(};f__-&Td#mVA@r*s1ARv5+f~pX-(kjcY;$J*82CKR%*myb#!C~6Cv%%K7mhs* zt6>g-6A9nSQel;4t*9# z!!X{SJc0rrHT;2cLKs7P4D>19!d_-HyxYF(CAC`W#epB8;zm)(GH^d~lRJKx+{@~8 z{ixZ@>Hw?OXsg6a6Xu5yyy@^^bi>4Ng#eZ&ktwfQFMgg#^0&C`_Q;?1o%dFdUb+wkcz6Ie}N1 zrPi#7=dHcs#R<5m%(hC-+_{pw*y~yCwyygr*zBfhCs``?Ms0;r*b2K=6t{}q1nj$= zP86rsZW^?E)+@2QD?-M8;@)1EFSPx@54}F2TD^Ml>Q?m=l?|tzcw*um-^~{SSb^AU zJA0ryb-&W?EX>Q{x|L!Ybc&a@R(1+I>sPi5B`jrY=gM}U@xLv75_MzOD|TY16*!6I zG$1lxu^=BGi>-pI`X|9~L zFWqK4+0E>Lo!st@=)?VbC(|k#vH#tNc-w=Wnd!`b_y{szG`EHCQaAK(!!B{!HGHdD zUd-17WyTu~FKx)`QPlRFkXgm3eiLf>tR%fCWkKc#cy`GMDn%HeW|^}~7cVa5&%o>b zynMGI6Fmxl51^RL_>6I6j6II&DWm+qIHu05vN}1v25FbAT!xCjHq1B=YHoU*@2+yk zt_9^zspg>OqQ*CyP{e-YdJuHmcBhmTL&Y%N=GfmKs2J%mXHo~GDU<#H2n|!5b~+4b zZU_^{{xJT2&K$;x-#alBkEXa0C zpI=l4VhH{)F8mMU#Lqg2%@N15$qo<1q=w1h4v7t|}&*R+~NDWRLZ9 zQpEVD*@p>`l5l$jzB&TOOOaZHpBWY6`ZZn;uS1>VQ|z0X1zye=%u9d5pO!cmO0~!J zfy*jKzQpS(_NKNW@G8k*J^#orj=aIEZ}57GjcFV7b%}qmPvzRTC4Qj!`JTjot>HhE z_?CwMMB)#$asEu=XEpvC66Zpx-Xy+)q52z%|3&ljdx`&8!{3tlEiU`j-z0uq~(ZzJZDqZ(T@O*XtgvB#9zMm2f? z{6D7TRT}Qg9Pj5h+Adv=_jfJvzs~V~KIx4(>x8tbr93;e_s$L?tJ?7D-B!)1*JJN? ziCNW^>lcIUBzf_s+U1#IWBf`WTZ<)jLr zy&L5?IKe%j?rrqDj8#U#eW8|<&_H|b8Z^=#xoW}O{s{cNQ+s?5A2xn{ym}jd2+guz z1sqFGh+eJRe;#_W>^G!^&ez-D9btc2+T+@&MYsPYbYgtHP(E1FI<+Rd4~96$Wz9iH zev*A$2E=n6$3o+wJo;O}bf4(z%M!%(Rg2F3D|G4@^8X~kJT{b~bN>u|S>wMiugEk` z96x@Q>f^`Yx=#!@F6XVDS%~Z0w*kwF{|6cW1{y)Z_;{Dn<3B3n)473MEEi<_!`cR< z_#~ekVZSL~Xz{%%d}2*@Bu|g9|Be=+85WLA97EJ{E=LipER2UNGaX*P;ARb)x%Kvs_1xiKi2>N literal 0 HcmV?d00001 diff --git a/obj/devices-uart.adb.stderr b/obj/devices-uart.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/devices-uart.adb.stdout b/obj/devices-uart.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/devices-uart.ali b/obj/devices-uart.ali new file mode 100644 index 0000000..bdfbf5d --- /dev/null +++ b/obj/devices-uart.ali @@ -0,0 +1,94 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.uart%b devices-uart.adb 882298b2 NE OO PK +W devices%s devices.adb devices.ali +Z system%s system.ads system.ali + +U devices.uart%s devices-uart.ads de767a04 NE OO PK +W devices%s devices.adb devices.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.adb s-stoele.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices-uart.ads 20241115151036 15b33d8b devices.uart%s +D devices-uart.adb 20241115151036 9d91a539 devices.uart%b +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [init_uart0 devices__uart 23 14 none] +G c Z s b [write_uart0 devices__uart 26 14 none] +G c Z s b [write_uart0 devices__uart 29 14 none] +X 3 devices.ads +22K9*Devices 279e12 4|21r9 37r5 5|17r14 35r5 +X 4 devices-uart.ads +21K17*UART 3|22k9 4|33E4 37l13 37e17 5|17b22 35l13 35t17 +23U14*Init_UART0 5|18b14 21l8 21t18 +26U14*Write_UART0 26>27 5|23b14 27l8 27t19 32s10 +26e27 Message{character} 5|23b27 24r49 +29U14*Write_UART0 29>27 5|29b14 34l8 34t19 +29a27 Message{string} 5|29b27 31r16 +33N4 UART_Base 36r46 +35m4 UART0_TX{6|16M9} 5|26m7 +X 5 devices-uart.adb +24m7 Data{6|16M9} 26r19 +31e11 C=31:16{character} 32r23 +X 6 interfac.ads +16M9*Unsigned_8 4|35r15 5|24r14 +X 9 memory.ads +19K9*Memory 4|19w6 19r18 9|36e11 +29N4*Memory_Offset 4|36r30 +X 10 system.ads +11K9*System 4|17r6 17r35 18w6 10|73e11 +25M9*Address +X 11 s-stoele.ads +11K16*Storage_Elements 4|17w13 17r42 11|60e28 +51V13*To_Address{10|25M9} 4|36s18 + diff --git a/obj/devices-uart.o b/obj/devices-uart.o new file mode 100644 index 0000000000000000000000000000000000000000..953d84e86090010f460ca9bc732ca07b6bc12298 GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/obj/devices.adb.stderr b/obj/devices.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/devices.adb.stdout b/obj/devices.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/devices.ali b/obj/devices.ali new file mode 100644 index 0000000..d491e6e --- /dev/null +++ b/obj/devices.ali @@ -0,0 +1,346 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RV NO_ACCESS_SUBPROGRAMS +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RV NO_IMPLICIT_LOOPS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices%b devices.adb ec24ada9 NE OO PK +W arch%s arch.ads arch.ali +W arch.hooks%s arch-hooks.adb arch-hooks.ali +W devices%s devices.adb devices.ali +W devices.console%s devices-console.adb devices-console.ali +W devices.loopback%s devices-loopback.adb devices-loopback.ali +W devices.streams%s devices-streams.adb devices-streams.ali +W lib%s lib.adb lib.ali +W lib.panic%s lib-panic.adb lib-panic.ali + +U devices%s devices.ads e49e7f06 NE OO PK +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W interfaces%s interfac.ads interfac.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D a-chlat1.ads 20241115151050 8791f8e7 ada.characters.latin_1%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-clocks.ads 20241115151036 f76b002b arch.clocks%s +D arch-hooks.ads 20241115151036 2bd12b55 arch.hooks%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices.adb 20241115151036 49df614b devices%b +D devices-console.ads 20241115151036 37ce0dbf devices.console%s +D devices-loopback.ads 20241115151036 39340044 devices.loopback%s +D devices-streams.ads 20241115151036 bef258ed devices.streams%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-messages.ads 20241115151036 4282fa77 lib.messages%s +D lib-panic.ads 20241115151036 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [TuuidBIP devices 34 4 none] +G c Z s b [init devices 92 14 none] +G c Z s b [register devices 98 14 none] +G c Z s b [fetch devices 105 13 none] +G c Z s b [fetch devices 111 13 none] +G c Z s b [fetch_uuid devices 117 13 none] +G c Z s b [fetch devices 123 13 none] +G c Z s b [fetch_name devices 130 14 none] +G c Z s b [list devices 141 14 none] +G c Z s s [is_initialized devices 145 13 none] +G c Z s b [is_block_device devices 150 13 none] +G c Z s b [get_block_count devices 152 13 none] +G c Z s b [get_block_size devices 154 13 none] +G c Z s b [is_read_only devices 156 13 none] +G c Z s b [get_unique_id devices 161 13 none] +G c Z s b [from_unique_id devices 165 13 none] +G c Z s b [synchronize devices 171 13 none] +G c Z s b [synchronize devices 179 13 none] +G c Z s b [read devices 193 14 none] +G c Z s b [write devices 210 14 none] +G c Z s b [io_control devices 224 13 none] +G c Z s b [mmap devices 236 13 none] +G c Z s b [poll devices 249 14 none] +G c Z s b [to_integer devices 276 13 none] +G c Z s b [convert_le devices 277 14 none] +G c Z s b [convert_be devices 278 14 none] +G c Z s s [operation_dataIP devices 29 9 none] +G c Z s s [resourceIP devices 39 9 none] +G c Z s s [device_listIP devices 84 9 none] +G c Z s s [deviceIP devices 261 9 none] +G c Z s s [Tdevice_arrBIP devices 267 4 none] +G c Z s s [uuid_fragmentIP devices 274 9 none] +G r c none [init devices 92 14 none] [init devices__console 19 14 none] +G r c none [init devices 92 14 none] [init devices__loopback 19 14 none] +G r c none [init devices 92 14 none] [init devices__streams 19 14 none] +G r c none [init devices 92 14 none] [devices_hook arch__hooks 19 13 none] +G r c none [init devices 92 14 none] [hard_panic lib__panic 32 14 none] +X 4 arch.ads +20K9*Arch 52e9 8|20r6 71r21 74r21 238r18 241r18 9|21r6 42r34 304r18 307r18 +X 6 arch-hooks.ads +17K14*Hooks 33e15 9|21w11 42r39 +19V13*Devices_Hook{boolean} 9|42s45 +X 7 arch-mmu.ads +22K14*MMU 250e13 8|20w11 71r26 74r26 238r23 241r23 9|304r23 307r23 +26R9*Page_Permissions 32e14 8|74r30 241r27 9|307r27 +43P9*Page_Table_Acc(42R9) 8|71r30 238r27 9|304r27 +X 8 devices.ads +22K9*Devices 258E9 279l5 279e12 9|17r6 18r6 19r6 23b14 383l5 383t12 +28I12*Operation_Count{natural} 29r38 +29A9*Operation_Data(13|16M9) 30r38 49r29 56r25 196r26 213r22 9|244r26 +. 268r22 +30P9*Operation_Data_Acc(29A9) +34A9*UUID(13|16M9) 36r25 41r21 111r25 123r48 9|87r25 102r18 146r48 +35A12*UUID_String{string} 117r30 9|101r30 +36a4*Zero_UUID{34A9} 9|89r16 102r26 +39R9*Resource 80e14 98r30 265r20 9|52r30 +40m7*Data{19|25M9} 9|219r45 233r45 236r45 252r58 276r58 296r45 312r45 327r45 +41a7*ID{34A9} 9|92r42 148r42 +42b7*Is_Block{boolean} 9|185r45 +43i7*Block_Size{natural} 9|195r45 +44m7*Block_Count{13|19M9} 9|190r45 +46p7*Read 9|250r41 251r41 +47m11 Key{19|25M9} 9|252r14 +48m11 Offset{13|19M9} 9|253r14 +49a11 Data{29A9} 9|254r14 +50i11 Ret_Count{natural} 9|255r14 +51b11 Success{boolean} 9|256r14 +52b11 Is_Blocking{boolean} 9|257r14 +53p7*Write 9|211r45 274r41 275r41 +54m11 Key{19|25M9} 9|276r14 +55m11 Offset{13|19M9} 9|277r14 +56a11 Data{29A9} 9|278r14 +57i11 Ret_Count{natural} 9|279r14 +58b11 Success{boolean} 9|280r14 +59b11 Is_Blocking{boolean} 9|281r14 +60p7*Sync(boolean) 9|217r41 218r52 234r44 235r52 +60m31 Key{19|25M9} +61p7*Sync_Range(boolean) 9|231r41 232r52 +62m11 Key{19|25M9} +63m11 Offset{13|19M9} +64m11 Count{13|19M9} +65p7*IO_Control(boolean) 9|294r41 295r48 +66m11 Key{19|25M9} +67m11 Request{13|19M9} +68m11 Argument{19|25M9} +69p7*Mmap(boolean) 9|310r41 311r48 +70m11 Key{19|25M9} +71p11 Map{7|43P9} +72m11 Address{18|35M12} +73m11 Length{13|19M9} +74r11 Flags{7|26R9} +75p7*Poll 9|325r41 326r41 +76m11 Handle{19|25M9} +77b11 Can_Read{boolean} +78b11 Can_Write{boolean} +79b11 Is_Error{boolean} +83I9*Device_Handle 84r54 85r28 105r42 111r38 117r50 123r26 131r17 +. 150r39 152r39 154r39 156r36 161r37 165r50 171r35 180r17 194r22 211r22 225r19 +. 237r18 250r20 258c9 259r31 267r34 9|75r42 87r38 101r50 103r18 146r26 152r17 +. 183r39 188r39 193r38 198r37 204r50 206r14 209r36 214r35 225r17 242r22 266r22 +. 289r19 303r18 319r20 +84A9*Device_List(83I9) 141r33 9|161r33 +85i4*Error_Handle{83I9} 134r60 151r59 153r59 155r59 157r59 162r59 172r59 +. 183r59 200r59 217r59 228r59 242r59 254r59 259c4 9|84r14 98r14 114r26 121r26 +. 133r22 165r28 179r43 +88i4*Max_Name_Length{natural} 99r63 106r63 135r36 136r47 260c4 263r33 264r39 +92U14*Init 9|27b14 50l8 50t12 +98U14*Register 98>24 98>40 98<55 9|52b14 73l8 73t16 +98r24 Dev{39R9} 9|52b24 68r57 +98a40 Name{string} 99r48 9|52b40 57r62 66r41 66r57 67r57 +98b55 Success{boolean} 9|52b55 55m7 69m13 +105V13*Fetch{83I9} 105>20 9|75b13 85l8 85t13 +105a20 Name{string} 106r48 9|75b20 79r70 +111V13*Fetch{83I9} 111>20 9|87b13 99l8 99t13 132s19 143s14 +111a20 ID{34A9} 9|87b20 89r10 92r47 +117V13*Fetch_UUID{83I9} 117>25 9|101b13 144l8 144t18 +117a25 ID{35A12} 9|101b25 110r16 113r19 117r24 118r24 119r24 127r53 128r53 +. 129r53 130r53 131r54 138r53 139r53 140r53 141r53 142r54 +123V13*Fetch{34A9} 123>20 9|146b13 149l8 149t13 +123i20 Dev{83I9} 9|146b20 148r28 +130U14*Fetch_Name 131>8 132<8 133<8 9|151b14 159l8 159t18 +131i8 Handle{83I9} 134r50 9|152b8 157r31 158r31 +132a8 Name{string} 135r22 9|153b8 157m7 +133i8 Length{natural} 136r21 136r37 9|154b8 158m7 +141U14*List 141<20 141<46 9|161b14 181l8 181t12 +141a20 Buffer{84A9} 9|161b20 165m7 171r29 172m16 172r24 178r29 179m10 179r18 +141i46 Total{natural} 9|161b46 164m7 168r33 170m13 170r22 178r16 +150V13*Is_Block_Device{boolean} 150>30 9|183b13 186l8 186t23 +150i30 Handle{83I9} 151r49 9|183b30 185r28 +152V13*Get_Block_Count{13|19M9} 152>30 9|188b13 191l8 191t23 +152i30 Handle{83I9} 153r49 9|188b30 190r28 +154V13*Get_Block_Size{natural} 154>30 9|193b13 196l8 196t22 +154i30 Handle{83I9} 155r49 9|193b29 195r28 +156V13*Is_Read_Only{boolean} 156>27 9|209b13 212l8 212t20 +156i27 Handle{83I9} 157r49 9|209b27 211r28 +161V13*Get_Unique_ID{natural} 161>28 9|198b13 202l8 202t21 +161i28 Handle{83I9} 162r49 9|198b28 201r23 +165V13*From_Unique_ID{83I9} 165>29 9|204b13 207l8 207t22 +165i29 ID{natural} 9|204b29 206r29 +171V13*Synchronize{boolean} 171>26 9|214b13 222l8 222t19 +171i26 Handle{83I9} 172r49 9|214b26 217r24 218r35 219r28 +179V13*Synchronize{boolean} 180>8 181>8 182>8 9|224b13 239l8 239t19 +180i8 Handle{83I9} 183r49 9|225b8 231r24 232r35 233r28 234r27 235r35 236r28 +181m8 Offset{13|19M9} 9|226b8 233r51 +182m8 Count{13|19M9} 9|227b8 233r59 +193U14*Read 194>8 195>8 196<8 197<8 198<8 199>8 9|241b14 263l8 263t12 +194i8 Handle{83I9} 200r49 9|242b8 250r24 251r24 252r41 +195m8 Offset{13|19M9} 9|243b8 253r27 +196a8 Data{29A9} 9|244b8 254m27 259m10 +197i8 Ret_Count{natural} 9|245b8 255m27 260m10 +198b8 Success{boolean} 9|246b8 256m27 261m10 +199b8 Is_Blocking{boolean} 9|247b8 257r29 +210U14*Write 211>8 212>8 213>8 214<8 215<8 216>8 9|265b14 286l8 286t13 +211i8 Handle{83I9} 217r49 9|266b8 274r24 275r24 276r41 +212m8 Offset{13|19M9} 9|267b8 277r27 +213a8 Data{29A9} 9|268b8 278r27 +214i8 Ret_Count{natural} 9|269b8 279m27 283m10 +215b8 Success{boolean} 9|270b8 280m27 284m10 +216b8 Is_Blocking{boolean} 9|271b8 281r29 +224V13*IO_Control{boolean} 225>8 226>8 227>8 9|288b13 300l8 300t18 +225i8 Handle{83I9} 228r49 9|289b8 294r24 295r31 296r28 +226m8 Request{13|19M9} 9|290b8 296r51 +227m8 Argument{19|25M9} 9|291b8 296r60 +236V13*Mmap{boolean} 237>8 238>8 239>8 240>8 241>8 9|302b13 316l8 316t12 +237i8 Handle{83I9} 242r49 9|303b8 310r24 311r31 312r28 +238p8 Map{7|43P9} 9|304b8 312r51 +239m8 Address{18|35M12} 9|305b8 312r56 +240m8 Length{13|19M9} 9|306b8 312r65 +241r8 Flags{7|26R9} 9|307b8 312r73 +249U14*Poll 250>8 251<8 252<8 253<8 9|318b14 334l8 334t12 +250i8 Handle{83I9} 254r49 9|319b8 325r24 326r24 327r28 +251b8 Can_Read{boolean} 9|320b8 327m51 330m10 +252b8 Can_Write{boolean} 9|321b8 327m61 331m10 +253b8 Is_Error{boolean} 9|322b8 328m14 332m10 +261R9 Device 266e14 267r66 +262b7*Is_Present{boolean} 9|33m14 57r15 64r34 65m30 78r30 91r33 169r30 +263a7*Name{string} 9|57r37 66m30 79r30 157r39 +264i7*Name_Len{integer} 9|57r50 67m30 79r58 158r39 +265r7*Contents{39R9} 9|68m30 92r33 148r33 185r36 190r36 195r36 211r36 217r32 +. 218r43 219r36 231r32 232r43 233r36 234r35 235r43 236r36 250r32 251r32 252r49 +. 274r32 275r32 276r49 294r32 295r39 296r36 310r32 311r39 312r36 325r32 326r32 +. 327r36 +267A9 Device_Arr(261R9)<83I9> 268r34 9|31r27 +268P9 Device_Arr_Acc(267A9) 270r19 +270p4 Devices_Data{268P9} 272r47 9|31m7 32r18 56r16 63r16 64r17 65r13 66r13 +. 67r13 68r13 77r16 78r13 79r13 79r41 90r19 91r16 92r16 148r14 157r17 158r17 +. 167r16 168r42 169r13 185r14 190r14 195r14 211r14 217r10 218r21 219r14 231r10 +. 232r21 233r14 234r13 235r21 236r14 250r10 251r10 252r27 274r10 275r10 276r27 +. 294r10 295r17 296r14 310r10 311r17 312r14 325r10 326r10 327r14 +274A9 UUID_Fragment(13|16M9) 277r37 278r37 9|127r19 128r19 129r19 +. 130r19 131r19 138r19 139r19 140r19 141r19 142r19 349r37 367r37 +276V13 To_Integer{13|16M9} 276>25 9|336b13 347l8 347t18 355s17 373s17 +276e25 C{character} 9|336b25 339r10 340r35 341r13 342r35 344r35 +277U14 Convert_LE 277<26 277>52 9|127s7 128s7 129s7 349b14 365l8 365t18 +277a26 Frag{274A9} 9|349b26 353m7 358m13 358r19 360m13 360r19 360r40 360r46 +277a52 Val{string} 9|349b52 354r24 355r29 357r18 +278U14 Convert_BE 278<26 278>52 9|130s7 131s7 138s7 139s7 140s7 141s7 142s7 +. 367b14 382l8 382t18 +278a26 Frag{274A9} 9|367b26 371m7 376m13 376r19 376r40 376r46 379m13 379r19 +278a52 Val{string} 9|367b52 372r16 373r29 375r18 +X 9 devices.adb +29b7 Success{boolean} 37m21 38r14 39m22 40r14 41m21 42r14 +32r11 Dev=32:11{8|261R9} 33r10 +48L6 Panic_Error 38r32 40r32 43r15 +56r11 E=56:11{8|261R9} 57r13 57r35 57r48 +63i11 I 64r31 65r27 66r27 67r27 68r27 +77i11 I 78r27 79r27 79r55 81r20 +90i14 I 91r30 92r30 94r23 +102a7 Result{8|34A9} 127m34 127r34 128m34 128r34 129m34 129r34 130m34 130r34 +. 131m34 131r34 132r26 138m34 138r34 139m34 139r34 140m34 140r34 141m34 141r34 +. 142m34 142r34 143r21 +103i7 Returned{8|83I9} 132m7 133r10 134r17 +110i11 I{integer} 111r15 113r23 117r28 118r28 119r28 +162i7 Curr_Index{natural} 171r16 172r39 173m16 173r30 +167i11 I 169r27 172r55 +178i11 I{integer} 179r33 +215b7 Success{boolean} 218m10 221r14 +229b7 Success{boolean} 232m10 235m10 238r14 +337i7 Result{natural} 340m10 342m10 344m10 346r26 +350m7 Res{13|16M9} 355m10 358r40 361r52 +351i7 Idx{natural} 358r32 360r32 360r59 362m13 362r20 +354i11 I{integer} 355r34 357r14 +368m7 Res{13|16M9} 373m10 376r67 379r52 +369i7 Idx{natural} 376r32 376r59 377m13 377r20 379r32 +372i11 I{integer} 373r34 375r14 +X 10 devices-console.ads +17K17*Console 9|17w14 37r7 10|39e20 +19U14*Init 9|37s15 +X 11 devices-loopback.ads +17K17*Loopback 9|18w14 39r7 11|52e21 +19U14*Init 9|39s16 +X 12 devices-streams.ads +17K17*Streams 9|19w14 41r7 12|71e20 +19U14*Init 9|41s15 +X 13 interfac.ads +11K9*Interfaces 8|18w6 18r22 13|120e15 +16M9*Unsigned_8 8|29r67 34r36 274r54 276r47 9|336r47 346r14 350r13 368r13 +19M9*Unsigned_64 8|44r21 48r25 55r25 63r20 64r20 67r22 73r21 152r61 181r17 +. 182r17 195r22 212r22 226r19 240r18 9|188r61 226r17 227r17 243r22 267r22 +. 290r19 306r18 +21V13*Shift_Left{16M9} 9|361s40 379s40 +X 14 lib.ads +19K9*Lib 9|20r6 49r7 14|35e8 +X 16 lib-panic.ads +21K13*Panic 9|20w10 49r11 16|39e14 +32U14*Hard_Panic 9|49s17 +X 18 memory.ads +19K9*Memory 8|19w6 72r21 239r18 9|305r18 18|36e11 +35M12*Virtual_Address{20|49M9} 8|72r28 239r25 9|305r25 +X 19 system.ads +11K9*System 8|17w6 40r21 47r25 54r25 60r37 62r20 66r22 68r22 70r21 76r23 +. 227r19 9|291r19 19|73e11 +25M9*Address 8|40r28 47r32 54r32 60r44 62r27 66r29 68r29 70r28 76r30 227r26 +. 9|291r26 +X 20 s-stoele.ads +49M9*Integer_Address + diff --git a/obj/devices.o b/obj/devices.o new file mode 100644 index 0000000000000000000000000000000000000000..f1136aa7dcfb75ad6baca42408c7c5269ca01a6d GIT binary patch literal 100888 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 C{>yU! literal 0 HcmV?d00001 diff --git a/obj/ipc-fifo.adb.stderr b/obj/ipc-fifo.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc-fifo.adb.stdout b/obj/ipc-fifo.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc-fifo.ali b/obj/ipc-fifo.ali new file mode 100644 index 0000000..d2aff75 --- /dev/null +++ b/obj/ipc-fifo.ali @@ -0,0 +1,259 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RV NO_IMPLICIT_CONDITIONALS +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.fifo%b ipc-fifo.adb 1ef978d3 NE OO PK IU +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s +W ipc%s ipc.ads ipc.ali +W scheduler%s scheduler.adb scheduler.ali +N A267:7 gnatprove false_positive "memory leak" "Cannot verify that the pipes have only 1 reference, but they do" + +U ipc.fifo%s ipc-fifo.ads e04893b5 BN NE OO PK IU +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W devices%s devices.adb devices.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-uncdea.ads 20241115151050 f341340f ada.unchecked_deallocation%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-context.ads 20241115151036 7bffdd51 arch.context%s +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D ipc.ads 20241115151036 03976a1a ipc%s +D ipc-fifo.ads 20241115151036 9141c09a ipc.fifo%s +D ipc-fifo.adb 20241115151036 1d0cfca1 ipc.fifo%b +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D scheduler.ads 20241115151036 61f570e7 scheduler%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-elf.ads 20241115151036 416b8b0c userland.elf%s +D vfs.ads 20241115151036 63b4365d vfs%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [create ipc__fifo 47 13 none] +G c Z s b [is_read_blocking ipc__fifo 51 13 none] +G c Z s b [is_write_blocking ipc__fifo 53 13 none] +G c Z s b [set_read_blocking ipc__fifo 55 14 none] +G c Z s b [set_write_blocking ipc__fifo 57 14 none] +G c Z s b [poll_reader ipc__fifo 61 14 none] +G c Z s b [poll_writer ipc__fifo 70 14 none] +G c Z s b [is_empty ipc__fifo 79 13 none] +G c Z s b [close_reader ipc__fifo 82 14 none] +G c Z s b [close_writer ipc__fifo 84 14 none] +G c Z s b [close ipc__fifo 88 14 none] +G c Z s b [get_size ipc__fifo 94 14 none] +G c Z s b [set_size ipc__fifo 102 14 none] +G c Z s b [read ipc__fifo 113 14 none] +G c Z s b [write ipc__fifo 125 14 none] +G c Z s s [is_valid ipc__fifo 133 13 none] +G c Z s s [innerIP ipc__fifo 138 9 none] +G c Z s b [common_close ipc__fifo 154 14 none] +G c Z b b [free ipc__fifo 23 14 none] +G c Z b b [free ipc__fifo 24 14 none] +G r c none [set_read_blocking ipc__fifo 55 14 none] [seize lib__synchronization 27 14 none] +G r c none [set_read_blocking ipc__fifo 55 14 none] [release lib__synchronization 31 14 none] +G r c none [set_write_blocking ipc__fifo 57 14 none] [seize lib__synchronization 27 14 none] +G r c none [set_write_blocking ipc__fifo 57 14 none] [release lib__synchronization 31 14 none] +G r c none [close_reader ipc__fifo 82 14 none] [seize lib__synchronization 27 14 none] +G r c none [close_reader ipc__fifo 82 14 none] [release lib__synchronization 31 14 none] +G r c none [close_writer ipc__fifo 84 14 none] [seize lib__synchronization 27 14 none] +G r c none [close_writer ipc__fifo 84 14 none] [release lib__synchronization 31 14 none] +G r c none [close ipc__fifo 88 14 none] [seize lib__synchronization 27 14 none] +G r c none [close ipc__fifo 88 14 none] [release lib__synchronization 31 14 none] +G r c none [get_size ipc__fifo 94 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_size ipc__fifo 94 14 none] [release lib__synchronization 31 14 none] +G r c none [set_size ipc__fifo 102 14 none] [seize lib__synchronization 27 14 none] +G r c none [set_size ipc__fifo 102 14 none] [release lib__synchronization 31 14 none] +G r c none [read ipc__fifo 113 14 none] [seize lib__synchronization 27 14 none] +G r c none [read ipc__fifo 113 14 none] [release lib__synchronization 31 14 none] +G r c none [read ipc__fifo 113 14 none] [yield_if_able scheduler 74 14 none] +G r c none [write ipc__fifo 125 14 none] [seize lib__synchronization 27 14 none] +G r c none [write ipc__fifo 125 14 none] [release lib__synchronization 31 14 none] +G r c none [write ipc__fifo 125 14 none] [yield_if_able scheduler 74 14 none] +G r c none [common_close ipc__fifo 154 14 none] [release lib__synchronization 31 14 none] +X 1 ada.ads +11K9*Ada 12e8 11|17r6 23r26 24r26 +X 2 a-uncdea.ads +14u15*Unchecked_Deallocation 11|17w10 23r30 24r30 +X 3 arch.ads +20K9*Arch 52e9 10|19r6 137r46 +X 6 arch-mmu.ads +22K14*MMU 250e13 10|19w11 137r51 +49N7*Page_Size 10|137r55 +X 7 devices.ads +22K9*Devices 279e12 10|18w6 18r19 115r24 127r20 145r27 11|25r8 25r32 28r14 +. 30r19 128r20 132r28 145r24 209r20 +29A9*Operation_Data(8|16M9) 10|115r32 127r28 11|25r16 30r27 132r36 +. 145r32 209r28 +30P9*Operation_Data_Acc(29A9) 10|145r35 11|25r40 28r22 128r28 +X 8 interfac.ads +16M9*Unsigned_8 +X 9 ipc.ads +17K9*IPC 18e8 10|21r9 156r5 11|20r14 281r5 +X 10 ipc-fifo.ads +21K13*FIFO 9|17k9 10|137E4 156l9 156e13 11|20b18 281l9 281t13 +38R9*Inner 39r29 138c9 146e14 11|23r54 31r18 +39P9*Inner_Acc(38R9) 47r59 51r35 53r36 55r37 57r38 62r20 71r20 79r27 82r46 +. 84r46 88r39 94r28 102r28 114r20 126r20 133r27 148r27 154r46 11|23r61 27r59 +. 41r35 46r36 51r37 58r38 66r20 80r20 93r27 98r46 105r46 112r39 120r28 127r28 +. 144r20 208r20 266r46 +43i4*Default_Data_Length{natural} 137c4 11|30r48 +47V13*Create{39P9} 47>21 48r30 11|27b13 39l8 39t14 +47b21 Is_Blocking{boolean} 11|27b21 35r32 36r32 +51V13*Is_Read_Blocking{boolean} 51>31 11|41b13 44l8 44t24 +51p31 P{39P9} 52r37 11|41b31 43r14 +53V13*Is_Write_Blocking{boolean} 53>32 11|46b13 49l8 49t25 +53p32 P{39P9} 54r37 11|46b32 48r14 +55U14*Set_Read_Blocking 55>33 55>48 11|51b14 56l8 56t25 +55p33 P{39P9} 56r37 11|51b33 53r34 54r7 55r36 +55b48 B{boolean} 11|51b48 54r29 +57U14*Set_Write_Blocking 57>34 57>49 11|58b14 63l8 63t26 +57p34 P{39P9} 58r37 11|58b34 60r34 61r7 62r36 +57b49 B{boolean} 11|58b49 61r30 +61U14*Poll_Reader 62>8 63<8 64<8 65<8 66<8 11|65b14 77l8 77t19 +62p8 P{39P9} 67r29 67r51 11|66b8 73r34 76r20 76r39 +63b8 Can_Read{boolean} 11|67b8 73m7 +64b8 Can_Write{boolean} 11|68b8 74m7 +65b8 Is_Error{boolean} 11|69b8 75m7 +66b8 Is_Broken{boolean} 11|70b8 76m7 +70U14*Poll_Writer 71>8 72<8 73<8 74<8 75<8 11|79b14 91l8 91t19 +71p8 P{39P9} 76r29 11|80b8 88r20 88r36 +72b8 Can_Read{boolean} 11|81b8 87m7 +73b8 Can_Write{boolean} 11|82b8 88m7 +74b8 Is_Error{boolean} 11|83b8 89m7 +75b8 Is_Broken{boolean} 11|84b8 90m7 +79V13*Is_Empty{boolean} 79>23 11|73s24 93b13 96l8 96t16 +79p23 P{39P9} 79r75 11|93b23 95r14 +82U14*Close_Reader 82=28 11|98b14 103l8 103t20 +82p28 To_Close{39P9} 83r29 83r48 11|98b28 100r34 101r7 102m21 +84U14*Close_Writer 84=28 11|105b14 110l8 110t20 +84p28 To_Close{39P9} 85r29 85r48 11|105b28 107r34 108r7 109m21 +88U14*Close 88=21 11|112b14 118l8 118t13 +88p21 To_Close{39P9} 89r29 89r48 11|112b21 114r34 115r7 116r7 117m21 +94U14*Get_Size 94>24 94<39 11|120b14 125l8 125t16 +94p24 P{39P9} 95r29 11|120b24 122r34 123r15 124r36 +94i39 Size{natural} 11|120b39 123m7 +102U14*Set_Size 102>24 102>39 102<55 11|127b14 141l8 141t16 +102p24 P{39P9} 103r30 11|127b24 130r34 131r18 133r27 133r44 133r57 134r16 +. 135r10 140r36 +102i39 Size{natural} 103r37 11|127b39 131r10 132r57 +102b55 Success{boolean} 11|127b55 136m10 138m10 +106E9*Pipe_Status 106e75 117r24 129r24 11|147r24 211r24 +106n25*Pipe_Success{106E9} 11|161r29 173r27 204r20 257r23 +106n39*Broken_Failure{106E9} 11|218r23 +106n55*Would_Block_Failure{106E9} 11|175r27 233r26 260r23 +113U14*Read 114>8 115<8 116<8 117<8 11|143b14 205l8 205t12 +114p8 To_Read{39P9} 118r29 11|144b8 153r10 155r40 156r16 157r26 159r16 162r45 +. 165r42 169r37 170r13 172r16 177r42 182r22 183r23 190r10 192r19 192r41 193r13 +. 193r33 195r13 196r13 196r35 202r36 +115a8 Data{7|29A9} 11|145b8 149r30 151m7 185r10 186r38 189m7 189r13 189r27 +116i8 Ret_Count{natural} 11|146b8 160m16 171m13 203m7 +117e8 Success{106E9} 11|147b8 161m16 173m16 175m16 204m7 +125U14*Write 126>8 127>8 128<8 129<8 11|207b14 264l8 264t13 +126p8 To_Write{39P9} 130r29 11|208b8 216r10 222r10 224r40 225r23 225r46 226r42 +. 230r37 231r13 231r35 234r42 239r16 240r16 240r39 242r19 243r19 243r42 245r19 +. 249r19 252r10 253r10 253r25 255r10 263r36 +127a8 Data{7|29A9} 11|209b8 213r26 247r10 248r34 254r13 254r19 254r33 +128i8 Ret_Count{natural} 11|210b8 217m10 232m13 256m10 259m10 +129e8 Success{106E9} 11|211b8 218m10 233m13 257m10 260m10 +139r7*Mutex{13|22R9} 11|34m11 53m36 55m38 60m36 62m38 100m43 107m43 114m43 +. 122m36 124m38 130m36 140m38 155m48 162m53 165m50 169m45 177m50 202m44 224m49 +. 226m51 230m46 234m51 263m45 277m48 +140b7*Reader_Closed{boolean} 11|32m11 76r41 101m16 115m16 216r19 273r19 +141b7*Writer_Closed{boolean} 11|33m11 76r22 108m16 116m16 159r24 172r24 273r46 +142b7*Is_Read_Blocking{boolean} 11|35m11 43r16 54m9 153r18 +143b7*Is_Write_Blocking{boolean} 11|36m11 48r16 61m9 222r19 +144i7*Data_Count{natural} 151r10 11|37m11 88r22 95r16 131r20 133r29 133r59 +. 156r24 157r34 170r21 182r30 183r31 195r21 196m21 196r43 225r32 231r22 240r48 +. 243r51 245r28 249r28 252r19 253r34 255m19 +145p7*Data{7|30P9} 150r10 151r26 152r10 11|38m11 88r38 123r17 133r46 134m18 +. 135m12 190r18 192r27 192r49 193r21 193r41 225r55 231r44 239r25 240r25 242r28 +. 243r28 253r19 274m25 +154U14 Common_Close 154=28 11|102s7 109s7 117s7 266b14 280l8 280t20 +154p28 To_Close{39P9} 155r19 155r45 11|266b28 273r10 273r37 274r16 275m16 +. 277r39 279m7 +X 11 ipc-fifo.adb +23U14 Free[2|14] 275s10 +24U14 Free[2|14] 134s10 274s10 +28p7 Data{7|30P9} 30m7 38r32 +128p7 New_Buffer{7|30P9} 132m10 133r10 135r21 +149i7 Final_Len{natural} 182r10 183m10 185r38 186m10 189r40 190r29 191r21 +. 203r20 +191i11 I{integer} +192i14 J{integer} 193r27 193r47 +213i7 Len{natural} 239r10 240r10 243m10 245r41 247r38 248m10 249r41 254r46 +. 256r23 +214i7 Final{natural} 242m10 245m10 249m10 253r52 255r33 +X 12 lib.ads +19K9*Lib 10|17r6 139r35 11|34r32 53r7 55r7 60r7 62r7 100r7 107r7 114r7 122r7 +. 124r7 130r7 140r7 155r13 162r16 165r13 169r10 177r13 202r7 224r13 226r13 +. 230r10 234r13 263r7 277r10 12|35e8 +X 13 lib-synchronization.ads +20K13*Synchronization 10|17w10 139r39 11|34r36 53r11 55r11 60r11 62r11 100r11 +. 107r11 114r11 122r11 124r11 130r11 140r11 155r17 162r20 165r17 169r14 177r17 +. 202r11 224r17 226r17 230r14 234r17 263r11 277r14 13|66e24 +22R9*Binary_Semaphore 10|139r55 13|57e14 +23r4*Unlocked_Semaphore{22R9} 11|34r52 +27U14*Seize 11|53s27 60s27 100s27 107s27 114s27 122s27 130s27 155s33 169s30 +. 224s33 230s30 +31U14*Release 11|55s27 62s27 124s27 140s27 162s36 165s33 177s33 202s27 226s33 +. 234s33 263s27 277s30 +X 15 scheduler.ads +25K9*Scheduler 11|18w6 166r13 227r13 15|183e14 +74U14*Yield_If_Able 11|166s23 227s23 + diff --git a/obj/ipc-fifo.o b/obj/ipc-fifo.o new file mode 100644 index 0000000000000000000000000000000000000000..0b39285d05d40d28f4ffa56908b8fce5777c2713 GIT binary patch literal 66992 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 35>8 36=8 37=8 38=8 39=8 40<8 11|35b14 57l8 +. 57t26 +34i8 Acquired_FS{26|74I9} 11|36b8 48r11 +35m8 Acquired_Ino{26|28M9} 11|37b8 48r24 +36m8 Start{7|19M9} 11|38b8 48r38 51m10 +37m8 Length{7|19M9} 11|39b8 48r45 52m10 +38i8 Acquirer{25|33I9} 11|40b8 53m10 +39b8 Is_Write{boolean} 11|41b8 48r53 54m10 +40b8 Success{boolean} 11|42b8 49m24 50r14 +51U14*Acquire_Lock 52>8 53>8 54>8 55>8 56>8 57>8 58>8 59<8 11|59b14 95l8 +. 95t20 +52i8 Acquired_FS{26|74I9} 11|60b8 74r14 80r33 +53m8 Acquired_Ino{26|28M9} 11|61b8 74r27 81r33 +54m8 Start{7|19M9} 11|62b8 74r41 82r33 +55m8 Length{7|19M9} 11|63b8 74r48 83r33 +56i8 Acquirer{25|33I9} 11|64b8 84r33 +57b8 Is_Write{boolean} 11|65b8 74r56 85r33 +58b8 Is_Blocking{boolean} 11|66b8 92r24 +59b8 Success{boolean} 11|67b8 75m27 76r13 77m13 86m19 92r39 +68U14*Release_Lock 69>8 70>8 71>8 72>8 73>8 74<8 11|97b14 110l8 110t20 +69i8 Acquired_FS{26|74I9} 11|98b8 109r21 +70m8 Acquired_Ino{26|28M9} 11|99b8 109r34 +71m8 Start{7|19M9} 11|100b8 105r28 +72m8 Length{7|19M9} 11|101b8 106r28 +73i8 Acquirer{25|33I9} 11|102b8 107r28 +74b8 Success{boolean} 11|103b8 109m48 +80U14*Release_Lock 81>8 82>8 83<8 11|109s7 112b14 131l8 131t20 +81i8 Acquired_FS{26|74I9} 11|113b8 122r20 +82m8 Acquired_Ino{26|28M9} 11|114b8 123r21 +83b8 Success{boolean} 11|115b8 119m7 126m13 +86R9*Lock_Info 93e14 94r49 +87i7*Acquirer{25|33I9} 11|145m20 +88b7*Is_Writing{boolean} 11|146m20 +89m7*Start{7|19M9} 11|147m20 +90m7*Length{7|19M9} 11|148m20 +91i7*FS{26|74I9} 11|149m20 +92m7*Ino{26|28M9} 11|150m20 +94A9*Lock_Arr(86R9) 99r37 11|133r37 +99U14*List_All 99<24 99<47 11|133b14 156l8 156t16 +99a24 Buffer{94A9} 11|133b24 136m7 143r29 144m16 144r24 +99i47 Length{natural} 11|133b47 137m7 142m13 142r23 +103U14 Inner_Could_Acquire 104>8 105>8 106>8 107>8 108>8 109<8 110<8 11|47s7 +. 73s10 158b14 184l8 184t27 +104i8 Acquired_FS{26|74I9} 11|159b8 172r32 +105m8 Acquired_Ino{26|28M9} 11|160b8 173r32 +106m8 Start{7|19M9} 11|161b8 176r39 +107m8 Length{7|19M9} 11|162b8 176r72 +108b8 Is_Write{boolean} 11|163b8 175r41 +109i8 Conflicting{natural} 11|164b8 169m7 178m16 +110b8 Success{boolean} 11|165b8 168m7 179m16 +X 11 ipc-filelock.adb +21R9 Lock_Inner 28e14 29r46 +22i7*FS{26|74I9} 80m21 122r15 149r47 172r26 +23m7*Ino{26|28M9} 81m21 123r15 150r47 173r26 +24m7*Start{7|19M9} 51r45 82m21 147r47 176r30 +25m7*Length{7|19M9} 52r45 83m21 148r47 176r62 +26i7*Acquirer{25|33I9} 53r45 79r21 84m21 121r15 125m15 141r26 145r47 171r26 +27b7*Is_Write{boolean} 54r45 85m21 146r47 175r29 +29A9 Lock_Inner_Arr(21R9) 32r32 +31r4 Registry_Mutex{15|22R9} 46m34 46r34 56m36 56r36 72m37 72r37 91m39 91r39 +. 118m34 118r34 130m36 130r36 139m34 139r34 155m36 155r36 +32a4 Registry{29A9} 51r22 52r22 53r22 54r22 78m22 78r22 120m16 120r16 140r16 +. 141r13 145r34 146r34 147r34 148r34 149r34 150r34 170r16 171r13 172r13 173r13 +. 175r16 176r17 176r49 +44i7 Conflicting{natural} 49m11 51r32 52r32 53r32 54r32 +69i7 Conflicting{natural} 75m14 +78r17 L=78:22{21R9} 79r19 80r19 81r19 82r19 83r19 84r19 85r19 +120r11 L=120:16{21R9} 121r13 122r13 123r13 125r13 +134i7 Curr_Index{natural} 143r16 144r39 151m16 151r30 +140i11 I{integer} 141r23 145r44 146r44 147r44 148r44 149r44 150r44 +170i11 I{integer} 171r23 172r23 173r23 175r26 176r27 176r59 178r31 +X 14 lib.ads +19K9*Lib 11|17r6 17r31 46r7 56r7 72r10 91r10 118r7 130r7 139r7 155r7 14|35e8 +X 15 lib-synchronization.ads +20K13*Synchronization 11|17w10 17r35 46r11 56r11 72r14 91r14 118r11 130r11 +. 139r11 155r11 15|66e24 +22R9*Binary_Semaphore 11|31r29 15|57e14 +23r4*Unlocked_Semaphore{22R9} 11|31r49 +27U14*Seize 11|46s27 72s30 118s27 139s27 +31U14*Release 11|56s27 91s30 130s27 155s27 +X 18 scheduler.ads +25K9*Scheduler 11|18w6 93r10 18|183e14 +74U14*Yield_If_Able 11|93s20 +X 22 userland.ads +17K9*Userland 10|19r6 19r28 38r30 56r23 73r23 11|26r18 40r30 64r23 102r23 +. 22|23e13 +X 25 userland-process.ads +28K18*Process 10|19w15 19r37 38r39 56r32 73r32 11|26r27 40r39 64r32 102r32 +. 25|677e21 +33I9*PID 10|38r47 56r40 73r40 87r20 11|26r35 40r47 64r40 102r40 +34i4*Error_PID{33I9} 11|33r46 79r32 121r27 125r27 136r29 141r38 171r38 +X 26 vfs.ads +24K9*VFS 10|18w6 18r28 34r23 35r23 52r23 53r23 69r23 70r23 81r23 82r23 91r20 +. 92r20 104r23 105r23 11|22r18 23r18 33r19 36r23 37r23 60r23 61r23 98r23 +. 99r23 113r23 114r23 136r53 159r23 160r23 26|674e8 +28M9*File_Inode_Number<7|19M9> 10|35r27 53r27 70r27 82r27 92r24 105r27 11|23r22 +. 37r27 61r27 99r27 114r27 160r27 +74I9*FS_Handle 10|34r27 52r27 69r27 81r27 91r24 104r27 11|22r22 +. 36r27 60r27 98r27 113r27 159r27 +75i4*Error_Handle{74I9} 11|33r23 136r57 + diff --git a/obj/ipc-filelock.o b/obj/ipc-filelock.o new file mode 100644 index 0000000000000000000000000000000000000000..40c4c50f0b465f08cdd883ff572c655ce02b8be0 GIT binary patch literal 39936 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 literal 0 HcmV?d00001 diff --git a/obj/ipc-futex.adb.stderr b/obj/ipc-futex.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc-futex.adb.stdout b/obj/ipc-futex.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc-futex.ali b/obj/ipc-futex.ali new file mode 100644 index 0000000..771fa72 --- /dev/null +++ b/obj/ipc-futex.ali @@ -0,0 +1,156 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RV NO_IMPLICIT_LOOPS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.futex%b ipc-futex.adb 1529e641 NE OO PK IU +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W lib.time%s lib-time.adb lib-time.ali +W scheduler%s scheduler.adb scheduler.ali + +U ipc.futex%s ipc-futex.ads 1c7695dc NE OO PK IU +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-clocks.ads 20241115151036 f76b002b arch.clocks%s +D arch-context.ads 20241115151036 7bffdd51 arch.context%s +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D ipc.ads 20241115151036 03976a1a ipc%s +D ipc-futex.ads 20241115151036 e719aab2 ipc.futex%s +D ipc-futex.adb 20241115151036 c8a21bed ipc.futex%b +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D lib-time.ads 20241115151036 30059be5 lib.time%s +D memory.ads 20241115151036 335640bf memory%s +D scheduler.ads 20241115151036 61f570e7 scheduler%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-elf.ads 20241115151036 416b8b0c userland.elf%s +D vfs.ads 20241115151036 63b4365d vfs%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [wait ipc__futex 39 13 none] +G c Z s b [wake ipc__futex 46 14 none] +G c Z s s [elementIP ipc__futex 28 9 none] +G c Z s s [element_arrIP ipc__futex 32 9 none] +G c Z b b [futex_innerIP ipc__futex 23 9 none] +G c Z b b [Tfutex_arrBIP ipc__futex 28 4 none] +G r c none [wait ipc__futex 39 13 none] [seize lib__synchronization 27 14 none] +G r c none [wait ipc__futex 39 13 none] [release lib__synchronization 31 14 none] +G r c none [wait ipc__futex 39 13 none] [get_monotonic_time arch__clocks 31 14 none] +G r c none [wait ipc__futex 39 13 none] [increment lib__time 37 14 none] +G r c none [wait ipc__futex 39 13 none] [is_greater_equal lib__time 63 13 none] +G r c none [wait ipc__futex 39 13 none] [yield_if_able scheduler 74 14 none] +G r c none [wake ipc__futex 46 14 none] [seize lib__synchronization 27 14 none] +G r c none [wake ipc__futex 46 14 none] [release lib__synchronization 31 14 none] +X 1 arch.ads +20K9*Arch 52e9 10|19r6 72r7 87r10 +X 2 arch-clocks.ads +19K14*Clocks 45e16 10|19w11 72r12 87r15 +31U14*Get_Monotonic_Time 10|72s19 87s22 +X 7 interfac.ads +11K9*Interfaces 120e15 9|17w6 17r22 +18M9*Unsigned_32 9|29r25 30r18 10|24r28 26r21 +19M9*Unsigned_64 9|41r22 42r22 10|35r22 36r22 38r52 +X 8 ipc.ads +17K9*IPC 18e8 9|19r9 47r5 10|22r14 109r5 +X 9 ipc-futex.ads +19K13*Futex 8|17k9 9|47l9 47e14 10|22b18 109l9 109t14 +28R9*Element 31e14 32r52 +29p7*Key(7|18M9) 10|43r22 49r44 58r53 102r37 +30m7*Expected{7|18M9} 10|43r42 +32A9*Element_Arr(28R9) 40r22 46r27 10|34r22 97r27 +39V13*Wait{boolean} 40>8 41>8 42>8 10|33b13 95l8 95t12 +40a8 Keys{32A9} 10|34b8 39r25 42r16 43r13 43r33 49r35 58r44 +41m8 Max_Seconds{7|19M9} 10|35b8 73r50 +42m8 Max_Nanos{7|19M9} 10|36b8 73r63 +46U14*Wake 46>20 10|97b14 108l8 108t12 +46a20 Keys{32A9} 10|97b20 99r16 +X 10 ipc-futex.adb +23R9 Futex_Inner 27e14 28r41 +24p7*Key(7|18M9) 49r29 56r29 58m29 80m29 102r29 +25b7*Wakey_Wakey{boolean} 59m29 77r26 103m29 +26m7*Waiters{7|18M9} 51m29 51r53 60m29 78m26 78r50 79r29 +28A9 Futex_Arr(23R9) 31r36 +30r4 Registry_Mutex{12|22R9} 47m37 47r37 65m39 65r39 68m39 68r39 76m37 76r37 +. 82m42 82r42 85m39 85r39 100m37 100r37 106m39 106r39 +31a4 Registry{28A9} 48r19 49r16 51m16 51r40 55r19 56r16 58m16 59m16 60m16 +. 77r13 78m13 78r37 79r16 80m16 101r19 102r16 103m16 +38m7 Curr_Sec{7|19M9} 87m42 89r14 +38m17 Curr_NSec{7|19M9} 87m52 89r24 +38m28 Final_Sec{7|19M9} 72m39 73m27 73r27 89r35 +38m39 Final_NSec{7|19M9} 72m50 73m38 73r38 89r46 +39a7 Idx(natural) 50m16 57m16 75r16 +42i11 I{integer} 43r19 43r39 49r41 50r21 57r21 58r50 +48i14 J{integer} 49r26 50r27 51r26 51r50 +55i14 J{integer} 56r26 57r27 58r26 59r26 60r26 +67L9 End_Of_Iter 52r21 61r21 +75i11 I=75:16{natural} 77r23 78r23 78r47 79r26 80r26 +99r11 K=99:16{9|28R9} 102r35 +101i14 I{integer} 102r26 103r26 +X 11 lib.ads +19K9*Lib 10|18r6 18r31 20r6 47r10 65r10 68r10 73r7 76r10 82r13 85r10 88r20 +. 100r10 106r10 11|35e8 +X 12 lib-synchronization.ads +20K13*Synchronization 10|18w10 18r35 47r14 65r14 68r14 76r14 82r17 85r14 +. 100r14 106r14 12|66e24 +22R9*Binary_Semaphore 10|30r29 12|57e14 +23r4*Unlocked_Semaphore{22R9} 10|30r49 +27U14*Seize 10|47s30 76s30 100s30 +31U14*Release 10|65s30 68s30 82s33 85s30 106s30 +X 13 lib-time.ads +19K13*Time 10|20w10 73r11 88r24 13|77e13 +37U14*Increment 10|73s16 +63V13*Is_Greater_Equal{boolean} 10|88s29 +X 15 scheduler.ads +25K9*Scheduler 10|17w6 91r10 15|183e14 +74U14*Yield_If_Able 10|91s20 + diff --git a/obj/ipc-futex.o b/obj/ipc-futex.o new file mode 100644 index 0000000000000000000000000000000000000000..c8cdc6c44c8597b5cf61794f85d7eaf308436d27 GIT binary patch literal 30472 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 literal 0 HcmV?d00001 diff --git a/obj/ipc-pty.adb.stderr b/obj/ipc-pty.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc-pty.adb.stdout b/obj/ipc-pty.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc-pty.ali b/obj/ipc-pty.ali new file mode 100644 index 0000000..a7a59c1 --- /dev/null +++ b/obj/ipc-pty.ali @@ -0,0 +1,395 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RV NO_IMPLICIT_CONDITIONALS +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.pty%b ipc-pty.adb 68bc24b3 NE OO PK IU +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W scheduler%s scheduler.adb scheduler.ali + +U ipc.pty%s ipc-pty.ads e51b3842 NE OO PK IU +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W devices%s devices.adb devices.ali +W devices.termios%s devices-termios.ads devices-termios.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-uncdea.ads 20241115151050 f341340f ada.unchecked_deallocation%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-clocks.ads 20241115151036 f76b002b arch.clocks%s +D arch-context.ads 20241115151036 7bffdd51 arch.context%s +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices-termios.ads 20241115151036 06aea761 devices.termios%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D ipc.ads 20241115151036 03976a1a ipc%s +D ipc-pty.ads 20241115151036 66e20305 ipc.pty%s +D ipc-pty.adb 20241115151036 2690cc5d ipc.pty%b +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-messages.ads 20241115151036 4282fa77 lib.messages%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D scheduler.ads 20241115151036 61f570e7 scheduler%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-elf.ads 20241115151036 416b8b0c userland.elf%s +D vfs.ads 20241115151036 63b4365d vfs%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [create ipc__pty 43 13 none] +G c Z s b [close ipc__pty 47 14 none] +G c Z s b [read_primary ipc__pty 50 14 none] +G c Z s b [write_primary ipc__pty 58 14 none] +G c Z s b [read_secondary ipc__pty 66 14 none] +G c Z s b [write_secondary ipc__pty 74 14 none] +G c Z s b [poll_primary ipc__pty 82 14 none] +G c Z s b [poll_secondary ipc__pty 90 14 none] +G c Z s b [is_primary_blocking ipc__pty 97 14 none] +G c Z s b [set_primary_blocking ipc__pty 101 14 none] +G c Z s b [is_secondary_blocking ipc__pty 105 14 none] +G c Z s b [set_secondary_blocking ipc__pty 109 14 none] +G c Z s b [get_termios ipc__pty 113 14 none] +G c Z s b [set_termios ipc__pty 117 14 none] +G c Z s b [get_winsize ipc__pty 121 14 none] +G c Z s b [set_winsize ipc__pty 125 14 none] +G c Z s b [get_name ipc__pty 129 14 none] +G c Z s b [flush_primary ipc__pty 133 14 none] +G c Z s b [flush_secondary ipc__pty 137 14 none] +G c Z s b [start_primary ipc__pty 141 14 none] +G c Z s b [start_secondary ipc__pty 145 14 none] +G c Z s b [stop_primary ipc__pty 149 14 none] +G c Z s b [stop_secondary ipc__pty 153 14 none] +G c Z s s [is_valid ipc__pty 157 13 none] +G c Z s b [read_from_end ipc__pty 186 14 none] +G c Z s b [write_to_end ipc__pty 195 14 none] +G c Z s s [innerIP ipc__pty 163 9 none] +G c Z b b [free ipc__pty 25 14 none] +G r c none [create ipc__pty 43 13 none] [seize lib__synchronization 27 14 none] +G r c none [create ipc__pty 43 13 none] [release lib__synchronization 31 14 none] +G r c none [close ipc__pty 47 14 none] [seize lib__synchronization 27 14 none] +G r c none [close ipc__pty 47 14 none] [release lib__synchronization 31 14 none] +G r c none [read_primary ipc__pty 50 14 none] [seize lib__synchronization 27 14 none] +G r c none [read_primary ipc__pty 50 14 none] [release lib__synchronization 31 14 none] +G r c none [read_primary ipc__pty 50 14 none] [yield_if_able scheduler 74 14 none] +G r c none [write_primary ipc__pty 58 14 none] [seize lib__synchronization 27 14 none] +G r c none [write_primary ipc__pty 58 14 none] [release lib__synchronization 31 14 none] +G r c none [write_primary ipc__pty 58 14 none] [yield_if_able scheduler 74 14 none] +G r c none [read_secondary ipc__pty 66 14 none] [seize lib__synchronization 27 14 none] +G r c none [read_secondary ipc__pty 66 14 none] [release lib__synchronization 31 14 none] +G r c none [read_secondary ipc__pty 66 14 none] [yield_if_able scheduler 74 14 none] +G r c none [write_secondary ipc__pty 74 14 none] [seize lib__synchronization 27 14 none] +G r c none [write_secondary ipc__pty 74 14 none] [release lib__synchronization 31 14 none] +G r c none [write_secondary ipc__pty 74 14 none] [yield_if_able scheduler 74 14 none] +G r c none [poll_primary ipc__pty 82 14 none] [seize lib__synchronization 27 14 none] +G r c none [poll_primary ipc__pty 82 14 none] [release lib__synchronization 31 14 none] +G r c none [poll_secondary ipc__pty 90 14 none] [seize lib__synchronization 27 14 none] +G r c none [poll_secondary ipc__pty 90 14 none] [release lib__synchronization 31 14 none] +G r c none [is_primary_blocking ipc__pty 97 14 none] [seize lib__synchronization 27 14 none] +G r c none [is_primary_blocking ipc__pty 97 14 none] [release lib__synchronization 31 14 none] +G r c none [set_primary_blocking ipc__pty 101 14 none] [seize lib__synchronization 27 14 none] +G r c none [set_primary_blocking ipc__pty 101 14 none] [release lib__synchronization 31 14 none] +G r c none [is_secondary_blocking ipc__pty 105 14 none] [seize lib__synchronization 27 14 none] +G r c none [is_secondary_blocking ipc__pty 105 14 none] [release lib__synchronization 31 14 none] +G r c none [set_secondary_blocking ipc__pty 109 14 none] [seize lib__synchronization 27 14 none] +G r c none [set_secondary_blocking ipc__pty 109 14 none] [release lib__synchronization 31 14 none] +G r c none [get_termios ipc__pty 113 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_termios ipc__pty 113 14 none] [release lib__synchronization 31 14 none] +G r c none [set_termios ipc__pty 117 14 none] [seize lib__synchronization 27 14 none] +G r c none [set_termios ipc__pty 117 14 none] [release lib__synchronization 31 14 none] +G r c none [get_winsize ipc__pty 121 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_winsize ipc__pty 121 14 none] [release lib__synchronization 31 14 none] +G r c none [set_winsize ipc__pty 125 14 none] [seize lib__synchronization 27 14 none] +G r c none [set_winsize ipc__pty 125 14 none] [release lib__synchronization 31 14 none] +G r c none [get_name ipc__pty 129 14 none] [image lib__messages 63 14 none] +G r c none [flush_primary ipc__pty 133 14 none] [seize lib__synchronization 27 14 none] +G r c none [flush_primary ipc__pty 133 14 none] [release lib__synchronization 31 14 none] +G r c none [flush_secondary ipc__pty 137 14 none] [seize lib__synchronization 27 14 none] +G r c none [flush_secondary ipc__pty 137 14 none] [release lib__synchronization 31 14 none] +G r c none [start_primary ipc__pty 141 14 none] [seize lib__synchronization 27 14 none] +G r c none [start_primary ipc__pty 141 14 none] [release lib__synchronization 31 14 none] +G r c none [start_secondary ipc__pty 145 14 none] [seize lib__synchronization 27 14 none] +G r c none [start_secondary ipc__pty 145 14 none] [release lib__synchronization 31 14 none] +G r c none [stop_primary ipc__pty 149 14 none] [seize lib__synchronization 27 14 none] +G r c none [stop_primary ipc__pty 149 14 none] [release lib__synchronization 31 14 none] +G r c none [stop_secondary ipc__pty 153 14 none] [seize lib__synchronization 27 14 none] +G r c none [stop_secondary ipc__pty 153 14 none] [release lib__synchronization 31 14 none] +G r c none [read_from_end ipc__pty 186 14 none] [seize lib__synchronization 27 14 none] +G r c none [read_from_end ipc__pty 186 14 none] [release lib__synchronization 31 14 none] +G r c none [read_from_end ipc__pty 186 14 none] [yield_if_able scheduler 74 14 none] +G r c none [write_to_end ipc__pty 195 14 none] [seize lib__synchronization 27 14 none] +G r c none [write_to_end ipc__pty 195 14 none] [release lib__synchronization 31 14 none] +G r c none [write_to_end ipc__pty 195 14 none] [yield_if_able scheduler 74 14 none] +X 1 ada.ads +11K9*Ada 12e8 13|17r6 25r26 +X 2 a-uncdea.ads +14u15*Unchecked_Deallocation 13|17w10 25r30 +X 3 arch.ads +20K9*Arch 52e9 12|19r6 161r46 162r56 +X 7 arch-mmu.ads +22K14*MMU 250e13 12|19w11 161r51 162r61 +49N7*Page_Size 12|161r55 162r65 +X 8 devices.ads +22K9*Devices 279e12 12|17r6 52r24 60r20 68r24 76r20 113r50 117r46 121r50 +. 125r46 162r27 174r28 175r28 192r26 201r22 13|33r24 78r24 92r20 106r24 120r20 +. 190r50 197r46 205r50 212r46 320r26 379r22 +29A9*Operation_Data(10|16M9) 12|52r32 60r28 68r32 76r28 162r35 192r34 +. 201r30 13|78r32 92r28 106r32 120r28 320r34 379r30 +X 9 devices-termios.ads +17K17*TermIOs 81e20 12|17w14 113r58 117r54 121r58 125r54 174r36 175r36 13|33r32 +. 190r58 197r54 205r58 212r54 +20R9*Local_Modes 31e15 13|33r40 +44R9*Main_Data 52e15 12|113r66 117r62 174r44 13|190r66 197r62 +54R9*Win_Size 59e14 12|121r66 125r62 175r44 13|205r66 212r62 +X 10 interfac.ads +11K9*Interfaces 120e15 13|20w6 20r22 +16M9*Unsigned_8 +18M9*Unsigned_32 13|225r27 +X 11 ipc.ads +17K9*IPC 18e8 12|21r9 203r5 13|22r14 426r5 +X 12 ipc-pty.ads +21K13*PTY 11|17k9 12|161E12 203l9 203e12 13|22b18 426l9 426t12 +36R9*Inner 37r29 163c9 182e14 13|25r54 40r18 +37P9*Inner_Acc(36R9) 43r27 47r37 51r20 59r20 67r20 75r20 83r20 91r20 97r39 +. 101r40 105r41 109r42 113r31 117r31 121r31 125r31 129r28 133r33 137r35 141r33 +. 145r35 149r32 153r34 157r27 184r27 13|25r61 31r27 61r37 77r20 91r20 105r20 +. 119r20 133r20 151r20 162r39 169r40 176r41 183r42 190r31 197r31 205r31 212r31 +. 220r28 234r33 250r35 266r33 278r35 290r32 302r34 +40E9*Status 40e49 54r24 62r24 70r24 78r24 13|80r24 94r24 108r24 122r24 +40n20*PTY_Success{40E9} 13|87r18 101r18 115r18 129r18 +40n33*PTY_Would_Block{40E9} +43V13*Create{37P9} 13|31b13 59l8 59t14 +47U14*Close 47=21 13|61b14 74l8 74t13 +47p21 Closed{37P9} 47r70 13|61b21 63r34 64r34 65r34 66r10 67m16 69r10 70r39 +. 71r39 72r39 +50U14*Read_Primary 51>8 52<8 53<8 54<8 13|76b14 88l8 88t20 +51p8 To_Read{37P9} 55r29 13|77b8 84r11 84r41 85r11 85r40 86r11 +52a8 Data{8|29A9} 13|78b8 86m33 +53i8 Ret_Count{natural} 13|79b8 86m39 +54e8 Success{40E9} 13|80b8 87m7 +58U14*Write_Primary 59>8 60>8 61<8 62<8 13|90b14 102l8 102t21 +59p8 To_Write{37P9} 63r29 13|91b8 98r11 98r44 99r11 99r43 100r11 +60a8 Data{8|29A9} 13|92b8 100r38 +61i8 Ret_Count{natural} 13|93b8 100m44 +62e8 Success{40E9} 13|94b8 101m7 +66U14*Read_Secondary 67>8 68<8 69<8 70<8 13|104b14 116l8 116t22 +67p8 To_Read{37P9} 71r29 13|105b8 112r11 112r43 113r11 113r42 114r11 +68a8 Data{8|29A9} 13|106b8 114m35 +69i8 Ret_Count{natural} 13|107b8 114m41 +70e8 Success{40E9} 13|108b8 115m7 +74U14*Write_Secondary 75>8 76>8 77<8 78<8 13|118b14 130l8 130t23 +75p8 To_Write{37P9} 79r29 13|119b8 126r11 126r42 127r11 127r41 128r11 +76a8 Data{8|29A9} 13|120b8 128r40 +77i8 Ret_Count{natural} 13|121b8 128m46 +78e8 Success{40E9} 13|122b8 129m7 +82U14*Poll_Primary 83>8 84<8 85<8 86<8 13|132b14 148l8 148t20 +83p8 P{37P9} 87r29 13|133b8 139r34 140r19 141r7 142r36 144r34 145r20 146r20 +. 146r40 147r36 +84b8 Can_Read{boolean} 13|134b8 145m7 +85b8 Can_Write{boolean} 13|135b8 146m7 +86b8 Can_Prio{boolean} 13|136b8 140m7 +90U14*Poll_Secondary 91>8 92<8 93<8 13|150b14 160l8 160t22 +91p8 P{37P9} 94r29 13|151b8 156r34 157r20 158r20 158r42 159r36 +92b8 Can_Read{boolean} 13|152b8 157m7 +93b8 Can_Write{boolean} 13|153b8 158m7 +97U14*Is_Primary_Blocking 97>35 97<50 13|162b14 167l8 167t27 +97p35 P{37P9} 98r29 13|162b35 164r34 165r19 166r36 +97b50 Blocking{boolean} 13|162b50 165m7 +101U14*Set_Primary_Blocking 101>36 101>51 13|169b14 174l8 174t28 +101p36 P{37P9} 102r29 13|169b36 171r34 172r7 173r36 +101b51 Blocking{boolean} 13|169b51 172r26 +105U14*Is_Secondary_Blocking 105>37 105<52 13|176b14 181l8 181t29 +105p37 P{37P9} 106r29 13|176b37 178r34 179r19 180r36 +105b52 Blocking{boolean} 13|176b52 179m7 +109U14*Set_Secondary_Blocking 109>38 109>53 13|183b14 188l8 188t30 +109p38 P{37P9} 110r29 13|183b38 185r34 186r7 187r36 +109b53 Blocking{boolean} 13|183b53 186r28 +113U14*Get_TermIOs 113>27 113<42 13|190b14 195l8 195t19 +113p27 P{37P9} 114r29 13|190b27 192r34 193r12 194r36 +113r42 T{9|44R9} 13|190b42 193m7 +117U14*Set_TermIOs 117>27 117>42 13|197b14 203l8 203t19 +117p27 P{37P9} 118r29 13|197b27 199r34 200r7 201r7 202r36 +117r42 T{9|44R9} 13|197b42 200r22 +121U14*Get_WinSize 121>27 121<42 13|205b14 210l8 210t19 +121p27 P{37P9} 122r29 13|205b27 207r34 208r12 209r36 +121r42 W{9|54R9} 13|205b42 208m7 +125U14*Set_WinSize 125>27 125>42 13|212b14 218l8 218t19 +125p27 P{37P9} 126r29 13|212b27 214r34 215r7 216r7 217r36 +125r42 W{9|54R9} 13|212b42 215r22 +129U14*Get_Name 129>24 129<39 129<57 13|220b14 232l8 232t16 +129p24 P{37P9} 130r29 13|220b24 225r40 +129a39 Str{string} 13|220b39 227r10 228m10 228r15 228r28 229m10 229r15 229r47 +129i57 Len{natural} 13|220b57 226m7 227r24 229r59 +133U14*Flush_Primary 133>29 133>44 133>53 13|234b14 248l8 248t21 +133p29 P{37P9} 134r29 13|234b29 237r37 238r10 239r10 240r39 243r37 244r10 +. 245r10 246r39 +133b44 To_Read{boolean} 13|234b44 236r10 +133b53 To_Transmit{boolean} 13|234b53 242r10 +137U14*Flush_Secondary 137>31 137>46 137>55 13|250b14 264l8 264t23 +137p31 P{37P9} 138r29 13|250b31 253r37 254r10 255r10 256r39 259r37 260r10 +. 261r10 262r39 +137b46 To_Read{boolean} 13|250b46 252r10 +137b55 To_Transmit{boolean} 13|250b55 258r10 +141U14*Start_Primary 141>29 141>44 141>53 13|266b14 276l8 276t21 +141p29 P{37P9} 142r29 13|266b29 268r34 270r10 273r10 275r36 +141b44 To_Read{boolean} 13|266b44 269r10 +141b53 To_Transmit{boolean} 13|266b53 272r10 +145U14*Start_Secondary 145>31 145>46 145>55 13|278b14 288l8 288t23 +145p31 P{37P9} 146r29 13|278b31 280r34 282r10 285r10 287r36 +145b46 To_Read{boolean} 13|278b46 281r10 +145b55 To_Transmit{boolean} 13|278b55 284r10 +149U14*Stop_Primary 149>28 149>43 149>52 13|290b14 300l8 300t20 +149p28 P{37P9} 150r29 13|290b28 292r34 294r10 297r10 299r36 +149b43 To_Read{boolean} 13|290b43 293r10 +149b52 To_Transmit{boolean} 13|290b52 296r10 +153U14*Stop_Secondary 153>30 153>45 153>54 13|302b14 312l8 312t22 +153p30 P{37P9} 154r29 13|302b30 304r34 306r10 309r10 311r36 +153b45 To_Read{boolean} 13|302b45 305r10 +153b54 To_Transmit{boolean} 13|302b54 308r10 +161I12 Data_Length{natural} 178r36 179r36 188r29 197r29 13|316r29 375r29 +162A12 TTY_Data{8|29A9} 180r36 181r36 189r29 198r29 13|317r29 376r29 +164r7*Primary_Mutex{16|22R9} 13|41m11 63m41 70m46 84m19 126m20 144m36 147m38 +. 164m36 166m38 171m36 173m38 237m39 240m41 259m39 262m41 +165r7*Secondary_Mutex{16|22R9} 13|42m11 64m41 71m46 98m20 112m19 156m36 159m38 +. 178m36 180m38 185m36 187m38 243m39 246m41 253m39 256m41 +166r7*Global_Data_Mutex{16|22R9} 13|43m11 65m41 72m46 139m36 142m38 192m36 +. 194m38 199m36 202m38 207m36 209m38 214m36 217m38 268m36 275m38 280m36 287m38 +. 292m36 299m38 304m36 311m38 +167b7*Primary_Block{boolean} 13|44m11 85r48 99r52 165r21 172m9 +168b7*Secondary_Block{boolean} 13|45m11 113r50 127r50 179r21 186m9 +169b7*Primary_Read{boolean} 13|46m11 86r19 270m12 294m12 +170b7*Primary_Transmit{boolean} 13|47m11 100r20 273m12 297m12 +171b7*Secondary_Read{boolean} 13|48m11 114r19 282m12 306m12 +172b7*Secondary_Transmit{boolean} 13|49m11 128r20 285m12 309m12 +173i7*Name_Index{natural} 13|50m11 225r42 +174r7*Term_Info{9|44R9} 13|51m11 193r14 200m9 +175r7*Term_Size{9|54R9} 13|52m11 208r14 215m9 +176b7*Was_Closed{boolean} 13|53m11 66r17 69m17 +177b7*Termios_Changed{boolean} 13|54m11 140r21 141m9 201m9 216m9 +178i7*Primary_Length{161I12} 13|55m11 84m49 126m51 145r22 146r22 239m12 261m12 +179i7*Secondary_Length{161I12} 13|56m11 98m53 112m51 157r22 158r22 245m12 +. 255m12 +180a7*Primary_Data{162A12} 13|57m11 85m19 127m20 146r42 238m12 260m12 +181a7*Secondary_Data{162A12} 13|58m11 99m20 113m19 158r44 244m12 254m12 +186U14 Read_From_End 187^8 188^8 189^8 190>8 191>8 192<8 193<8 13|83s7 111s7 +. 314b14 371l8 371t21 +187p8 End_Mutex(16|22R9) 13|315b8 333r43 335r45 340r37 343r42 370r36 +188p8 Inner_Len(161I12) 13|316b8 332r16 334r26 341r13 348r24 349r23 363r13 +. 364r13 364r30 +189p8 Inner_Data(162A12) 13|317b8 358r10 360r19 360r39 361r13 361r31 +190b8 Is_Blocking{boolean} 13|318b8 330r10 +191b8 Is_Able_To{boolean} 13|319b8 325r14 +192a8 Data{8|29A9} 13|320b8 324m7 348r10 351r23 353r10 354r38 357m7 357r13 +. 357r27 +193i8 Ret_Count{natural} 13|321b8 326m10 342m13 349m10 351m10 353r38 354m10 +. 357r40 358r27 359r21 +195U14 Write_To_End 196^8 197^8 198^8 199>8 200>8 201>8 202<8 13|97s7 125s7 +. 373b14 425l8 425t20 +196p8 End_Mutex(16|22R9) 13|374b8 392r43 394r45 399r37 402r42 424r36 +197p8 Inner_Len(161I12) 13|375b8 391r16 393r26 400r13 408r44 411r43 413r19 +. 418r19 421r19 423r7 +198p8 Inner_Data(162A12) 13|376b8 391r33 393r43 407r24 408r24 410r19 411r23 +. 421r7 +199b8 Is_Blocking{boolean} 13|377b8 389r10 +200b8 Is_Able_To{boolean} 13|378b8 384r14 +201a8 Data{8|29A9} 13|379b8 400r29 407r10 408r10 413r35 414r23 416r10 417r38 +. 422r10 422r16 422r30 +202i8 Ret_Count{natural} 13|380b8 385m10 401m13 411m10 414m10 416r38 417m10 +. 418r35 422r43 +X 13 ipc-pty.adb +25U14 Free[2|14] 67s10 +27r4 Tracked_Lock{16|22R9} 35m34 35r34 38m36 38r36 +29i4 Tracked_Name{natural} 36r21 37m7 37r23 +32i7 Name_Index{natural} 36m7 50r33 +33r7 Modes{9|20R9} 51r43 +221a7 Root_Name{string} 226r14 228r40 228r65 229r27 +222a7 Buffer{15|55A12} 225m55 230r13 230r21 230r53 +223i7 Buffer_Len{natural} 225m63 226r33 230r35 +359i11 I{integer} +360i14 J{integer} 361r25 361r43 +382i7 Final{natural} 410m10 413m10 418m10 421r40 423r24 +X 14 lib.ads +19K9*Lib 12|18r6 164r36 165r36 166r36 187r29 196r29 13|19r6 27r27 28r7 35r7 +. 38r7 41r33 42r33 43r33 63r7 64r7 65r7 70r10 71r10 72r10 139r7 142r7 144r7 +. 147r7 156r7 159r7 164r7 166r7 171r7 173r7 178r7 180r7 185r7 187r7 192r7 +. 194r7 199r7 202r7 207r7 209r7 214r7 217r7 222r20 225r7 237r10 240r10 243r10 +. 246r10 253r10 256r10 259r10 262r10 268r7 275r7 280r7 287r7 292r7 299r7 +. 304r7 311r7 315r29 333r16 335r16 340r10 343r13 370r7 374r29 392r16 394r16 +. 399r10 402r13 424r7 14|35e8 +X 15 lib-messages.ads +21K13*Messages 13|19w10 222r24 225r11 15|103e17 +55A12*Translated_String{string} 13|222r33 +63U14*Image 13|225s20 +X 16 lib-synchronization.ads +20K13*Synchronization 12|18w10 164r40 165r40 166r40 187r33 196r33 13|27r31 +. 28r11 35r11 38r11 41r37 42r37 43r37 63r11 64r11 65r11 70r14 71r14 72r14 +. 139r11 142r11 144r11 147r11 156r11 159r11 164r11 166r11 171r11 173r11 178r11 +. 180r11 185r11 187r11 192r11 194r11 199r11 202r11 207r11 209r11 214r11 217r11 +. 237r14 240r14 243r14 246r14 253r14 256r14 259r14 262r14 268r11 275r11 280r11 +. 287r11 292r11 299r11 304r11 311r11 315r33 333r20 335r20 340r14 343r17 370r11 +. 374r33 392r20 394r20 399r14 402r17 424r11 16|66e24 +22R9*Binary_Semaphore 12|164r56 165r56 166r56 187r49 196r49 13|27r47 315r49 +. 374r49 16|57e14 +23r4*Unlocked_Semaphore{22R9} 13|28r27 41r53 42r53 43r53 +27U14*Seize 13|35s27 63s27 64s27 65s27 139s27 144s27 156s27 164s27 171s27 +. 178s27 185s27 192s27 199s27 207s27 214s27 237s30 243s30 253s30 259s30 268s27 +. 280s27 292s27 304s27 333s36 340s30 392s36 399s30 +31U14*Release 13|38s27 70s30 71s30 72s30 142s27 147s27 159s27 166s27 173s27 +. 180s27 187s27 194s27 202s27 209s27 217s27 240s30 246s30 256s30 262s30 275s27 +. 287s27 299s27 311s27 335s36 343s33 370s27 394s36 402s33 424s27 +X 18 scheduler.ads +25K9*Scheduler 13|18w6 337r13 396r13 18|183e14 +74U14*Yield_If_Able 13|337s23 396s23 + diff --git a/obj/ipc-pty.o b/obj/ipc-pty.o new file mode 100644 index 0000000000000000000000000000000000000000..6665e17384dd72c585fd2d55598def89b3f5a47b GIT binary patch literal 103144 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≶U#PjBHDczmGnpLyI}e^1T0 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 O{rbz<+0OoR$Nv}n1+ioR literal 0 HcmV?d00001 diff --git a/obj/ipc-shm.adb.stderr b/obj/ipc-shm.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc-shm.adb.stdout b/obj/ipc-shm.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc-shm.ali b/obj/ipc-shm.ali new file mode 100644 index 0000000..764b44f --- /dev/null +++ b/obj/ipc-shm.ali @@ -0,0 +1,253 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.shm%b ipc-shm.adb d37d4d2d NE OO PK IU +W interfaces%s interfac.ads interfac.ali +W interfaces.c%s i-c.ads i-c.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W memory.physical%s memory-physical.adb memory-physical.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.adb s-stoele.ali + +U ipc.shm%s ipc-shm.ads 1dd438e2 NE OO PK IU +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D i-c.ads 20241115151050 aa7a7c0b interfaces.c%s +D ipc.ads 20241115151036 03976a1a ipc%s +D ipc-shm.ads 20241115151036 e6bb078c ipc.shm%s +D ipc-shm.adb 20241115151036 0fa53a76 ipc.shm%b +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D memory-physical.ads 20241115151036 f22cd7a2 memory.physical%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [create_segment ipc__shm 29 13 none] +G c Z s b [create_unkeyed_segment ipc__shm 38 13 none] +G c Z s b [get_segment ipc__shm 45 13 none] +G c Z s b [get_segment_and_size ipc__shm 48 14 none] +G c Z s b [get_address ipc__shm 54 14 none] +G c Z s b [check_permissions ipc__shm 59 13 none] +G c Z s b [mark_refcounted ipc__shm 64 14 none] +G c Z s b [modify_attachment ipc__shm 68 14 none] +G c Z s b [modify_permissions ipc__shm 70 14 none] +G c Z s b [fetch_information ipc__shm 87 14 none] +G c Z s b [get_total_size ipc__shm 93 14 none] +G c Z s b [check_and_maybe_free ipc__shm 97 14 none] +G c Z s s [segment_informationIP ipc__shm 76 9 none] +G c Z b b [segment_innerIP ipc__shm 24 9 none] +G c Z b b [Tsegment_arrBIP ipc__shm 37 4 none] +G r c none [create_segment ipc__shm 29 13 none] [seize lib__synchronization 27 14 none] +G r c none [create_segment ipc__shm 29 13 none] [alloc memory__physical 34 13 none] +G r c none [create_segment ipc__shm 29 13 none] [release lib__synchronization 31 14 none] +G r c none [create_unkeyed_segment ipc__shm 38 13 none] [seize lib__synchronization 27 14 none] +G r c none [create_unkeyed_segment ipc__shm 38 13 none] [alloc memory__physical 34 13 none] +G r c none [create_unkeyed_segment ipc__shm 38 13 none] [release lib__synchronization 31 14 none] +G r c none [get_segment ipc__shm 45 13 none] [seize lib__synchronization 27 14 none] +G r c none [get_segment ipc__shm 45 13 none] [release lib__synchronization 31 14 none] +G r c none [get_segment_and_size ipc__shm 48 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_segment_and_size ipc__shm 48 14 none] [release lib__synchronization 31 14 none] +G r c none [get_address ipc__shm 54 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_address ipc__shm 54 14 none] [release lib__synchronization 31 14 none] +G r c none [check_permissions ipc__shm 59 13 none] [seize lib__synchronization 27 14 none] +G r c none [check_permissions ipc__shm 59 13 none] [release lib__synchronization 31 14 none] +G r c none [mark_refcounted ipc__shm 64 14 none] [seize lib__synchronization 27 14 none] +G r c none [mark_refcounted ipc__shm 64 14 none] [free memory__physical 40 14 none] +G r c none [mark_refcounted ipc__shm 64 14 none] [release lib__synchronization 31 14 none] +G r c none [modify_attachment ipc__shm 68 14 none] [seize lib__synchronization 27 14 none] +G r c none [modify_attachment ipc__shm 68 14 none] [free memory__physical 40 14 none] +G r c none [modify_attachment ipc__shm 68 14 none] [release lib__synchronization 31 14 none] +G r c none [modify_permissions ipc__shm 70 14 none] [seize lib__synchronization 27 14 none] +G r c none [modify_permissions ipc__shm 70 14 none] [release lib__synchronization 31 14 none] +G r c none [fetch_information ipc__shm 87 14 none] [seize lib__synchronization 27 14 none] +G r c none [fetch_information ipc__shm 87 14 none] [release lib__synchronization 31 14 none] +G r c none [get_total_size ipc__shm 93 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_total_size ipc__shm 93 14 none] [release lib__synchronization 31 14 none] +G r c none [check_and_maybe_free ipc__shm 97 14 none] [free memory__physical 40 14 none] +X 2 interfac.ads +11K9*Interfaces 120e15 5|17w6 17r22 6|20r6 20r24 +18M9*Unsigned_32 5|25r26 30r22 32r22 33r22 40r22 41r22 45r32 61r14 62r14 +. 72r15 73r15 77r21 79r21 80r21 81r21 82r21 6|26r26 27r26 28r26 29r26 30r26 +. 44r22 46r22 47r22 82r22 83r22 112r32 167r14 168r14 207r15 208r15 +19M9*Unsigned_64 5|31r22 34r22 39r22 42r22 49r18 50r22 56r22 57r22 74r15 +. 78r21 83r21 93r41 6|31r26 45r22 48r22 81r22 84r22 127r18 128r22 140r21 +. 150r22 151r22 156r21 157r18 209r15 231r29 245r41 251r28 +X 3 i-c.ads +11K20*C 41e17 6|20w17 20r35 +31M9*size_t 6|70r17 99r23 261r16 +X 4 ipc.ads +17K9*IPC 18e8 5|19r9 98r5 6|23r14 264r5 +X 5 ipc-shm.ads +19K13*SHM 4|17k9 5|97E14 98l9 98e12 6|23b18 264l9 264t12 +25M12*Segment_ID{2|18M9} 26r24 34r42 42r42 45r52 51r22 55r18 60r14 64r36 +. 68r38 71r15 88r16 97r41 6|37r31 48r42 50r18 84r42 86r18 112r52 113r18 129r22 +. 149r18 166r14 184r36 194r38 206r15 222r16 257r41 +26m4*Error_ID{25M12} 6|50r32 57r56 86r32 113r32 133r15 +29V13*Create_Segment{25M12} 30>8 31>8 32>8 33>8 34>8 6|43b13 78l8 78t22 +30m8 Wanted_Key{2|18M9} 35r19 6|44b8 54r60 63r34 +31m8 Wanted_Size{2|19M9} 6|45b8 70r25 71r48 +32m8 Creator_UID{2|18M9} 6|46b8 64r40 66r42 +33m8 Creator_GID{2|18M9} 6|47b8 65r40 67r42 +34m8 Mode{2|19M9} 6|48b8 68r35 +38V13*Create_Unkeyed_Segment{25M12} 39>8 40>8 41>8 42>8 6|80b13 110l8 110t30 +39m8 Wanted_Size{2|19M9} 6|81b8 99r31 100r47 +40m8 Creator_UID{2|18M9} 6|82b8 93r39 95r41 +41m8 Creator_GID{2|18M9} 6|83b8 94r39 96r41 +42m8 Mode{2|19M9} 6|84b8 97r34 +45V13*Get_Segment{25M12} 45>26 6|112b13 124l8 124t19 +45m26 Key{2|18M9} 6|112b26 117r60 +48U14*Get_Segment_And_Size 49>8 50<8 51<8 6|126b14 146l8 146t28 +49m8 Address{2|19M9} 6|127b8 138r70 +50m8 Size{2|19M9} 6|128b8 132m7 140m13 +51m8 ID{25M12} 6|129b8 133m7 141m13 +54U14*Get_Address 55>8 56<8 57<8 6|148b14 163l8 163t19 +55m8 ID{25M12} 6|149b8 155r20 156r44 157r41 +56m8 Address{2|19M9} 6|150b8 156m10 159m10 +57m8 Size{2|19M9} 6|151b8 157m10 160m10 +59V13*Check_Permissions{boolean} 60>8 61>8 62>8 6|165b13 182l8 182t25 +60m8 ID{25M12} 6|166b8 173r20 174r36 175r30 176r24 +61m8 UID{2|18M9} 6|167b8 174r20 +62m8 GID{2|18M9} 6|168b8 175r14 +64U14*Mark_Refcounted 64>31 6|184b14 192l8 192t23 +64m31 ID{25M12} 6|184b31 187r20 188r20 189r32 +68U14*Modify_Attachment 68>33 68>50 6|194b14 203l8 203t25 +68m33 ID{25M12} 6|194b33 197r20 198r20 199r23 200r32 +68b50 Increment{boolean} 6|194b50 199r42 +70U14*Modify_Permissions 71>8 72>8 73>8 74>8 6|205b14 219l8 219t26 +71m8 ID{25M12} 6|206b8 213r20 214r20 215r20 216r20 +72m8 UID{2|18M9} 6|207b8 214r37 +73m8 GID{2|18M9} 6|208b8 215r37 +74m8 Mode{2|19M9} 6|209b8 216r32 +76R9*Segment_Information 85e14 89r20 6|223r20 +77m7*Key{2|18M9} 6|230m14 +78m7*Size{2|19M9} 6|231m14 +79m7*Owner_UID{2|18M9} 6|232m14 +80m7*Owner_GID{2|18M9} 6|233m14 +81m7*Creator_UID{2|18M9} 6|234m14 +82m7*Creator_GID{2|18M9} 6|235m14 +83m7*Mode{2|19M9} 6|236m14 +84i7*Refcount{natural} 6|237m14 +87U14*Fetch_Information 88>8 89<8 90<8 6|221b14 243l8 243t25 +88m8 ID{25M12} 6|222b8 228r20 230r39 231r52 232r39 233r39 234r39 235r39 236r39 +. 237r39 +89r8 Info{76R9} 6|223b8 229m10 +90b8 Found{boolean} 6|224b8 238m10 240m10 +93U14*Get_Total_Size 93<30 6|245b14 255l8 255t22 +93m30 Size{2|19M9} 6|245b30 247m7 251m13 251r21 +97U14 Check_And_Maybe_Free 97>36 6|189s10 200s10 257b14 263l8 263t28 +97m36 ID{25M12} 6|257b36 259r20 259r51 260r20 261r34 +X 6 ipc-shm.adb +24R9 Segment_Inner 36e14 37r60 +25b7*Is_Present{boolean} 54r26 57r30 62m27 90r30 91m26 117r26 137r26 155r24 +. 173r24 187r24 197r24 213r24 228r24 250r17 260m24 +26m7*Key{2|18M9} 54r54 63m27 92m26 117r54 230r43 +27m7*Owner_UID{2|18M9} 64m27 93m26 174r40 214m24 232r43 +28m7*Owner_GID{2|18M9} 65m27 94m26 175r34 215m24 233r43 +29m7*Creator_UID{2|18M9} 66m27 95m26 234r43 +30m7*Creator_GID{2|18M9} 67m27 96m26 235r43 +31m7*Mode{2|19M9} 68m27 97m26 176r28 216m24 236r43 +32m7*Physical_Address{9|34M12} 69m27 98m26 138r26 156r48 261r38 +33m7*Size{9|20M9} 71m27 100m26 140r47 157r45 231r56 251r45 +34i7*Refcount{natural} 72m27 101m26 198m24 199r27 237r43 259r24 +35b7*Is_Refcounted{boolean} 73m27 102m26 188m24 259r55 +37A9 Segment_Arr(24R9)<2|18M9> 40r15 +39r4 Registry_Mutex{8|22R9} 52m34 52r34 76m36 76r36 88m34 88r34 108m36 108r36 +. 115m34 115r34 122m36 122r36 135m34 135r34 145m36 145r36 154m34 154r34 162m36 +. 162r36 172m34 172r34 180m36 180r36 186m34 186r34 191m36 191r36 196m34 196r34 +. 202m36 202r36 212m34 212r34 218m36 218r36 227m34 227r34 242m36 242r36 248m34 +. 248r34 254m36 254r36 +40a4 Registry{37A9} 53r16 54r13 54r41 57r17 62m7 63m7 64m7 65m7 66m7 67m7 +. 68m7 69m7 71m7 72m7 73m7 89r16 90r17 91m13 92m13 93m13 94m13 95m13 96m13 +. 97m13 98m13 100m13 101m13 102m13 116r16 117r13 117r41 136r16 137r13 138r13 +. 140r34 155r10 156r34 157r31 173r10 174r26 175r20 176r14 187r10 188m10 197r10 +. 198m10 199r13 213r10 214m10 215m10 216m10 228r10 230r29 231r42 232r29 233r29 +. 234r29 235r29 236r29 237r29 249r18 259r10 259r41 260m10 261r24 +50m7 Returned{5|25M12} 57r45 58m13 62r17 63r17 64r17 65r17 66r17 67r17 68r17 +. 69r17 71r17 72r17 73r17 77r14 +53m11 I{2|18M9} 54r23 54r51 57r27 58r25 +75L6 Cleanup 55r18 +86m7 Returned{5|25M12} 103m13 109r14 +89m11 I{2|18M9} 90r27 91r23 92r23 93r23 94r23 95r23 96r23 97r23 98r23 100r23 +. 101r23 102r23 103r25 +113m7 Returned{5|25M12} 118m13 123r14 +116m11 I{2|18M9} 117r23 117r51 118r25 +136m11 I{2|18M9} 137r23 138r23 140r44 141r21 +170b7 Result{boolean} 174m10 178m10 181r14 +249r11 Reg=249:18{24R9} 250r13 251r41 +X 7 lib.ads +19K9*Lib 6|17r6 17r31 52r7 76r7 88r7 108r7 115r7 122r7 135r7 145r7 154r7 +. 162r7 172r7 180r7 186r7 191r7 196r7 202r7 212r7 218r7 227r7 242r7 248r7 +. 254r7 7|35e8 +X 8 lib-synchronization.ads +20K13*Synchronization 6|17w10 17r35 52r11 76r11 88r11 108r11 115r11 122r11 +. 135r11 145r11 154r11 162r11 172r11 180r11 186r11 191r11 196r11 202r11 212r11 +. 218r11 227r11 242r11 248r11 254r11 8|66e24 +22R9*Binary_Semaphore 6|39r29 8|57e14 +23r4*Unlocked_Semaphore{22R9} 6|39r49 +27U14*Seize 6|52s27 88s27 115s27 135s27 154s27 172s27 186s27 196s27 212s27 +. 227s27 248s27 +31U14*Release 6|76s27 108s27 122s27 145s27 162s27 180s27 191s27 202s27 218s27 +. 242s27 254s27 +X 9 memory.ads +19K9*Memory 6|18w6 19r6 19r27 32r26 33r26 70r41 71r35 99r47 100r34 138r45 +. 9|36e11 +20M9*Size 6|33r33 71r42 100r41 +29N4*Memory_Offset 6|70r48 99r54 +34M12*Physical_Address{12|49M9} 6|32r33 138r52 +X 10 memory-physical.ads +20K16*Physical 6|19w13 19r34 10|60e20 +34V13*Alloc{9|35M12} 6|70s10 99s16 +40U14*Free 6|261s10 +X 11 system.ads +11K9*System 6|21r6 21r35 11|73e11 +X 12 s-stoele.ads +11K16*Storage_Elements 6|21w13 21r42 12|60e28 +49M9*Integer_Address + diff --git a/obj/ipc-shm.o b/obj/ipc-shm.o new file mode 100644 index 0000000000000000000000000000000000000000..f75cca678e09dbea20e7416fee7c38037a68603d GIT binary patch literal 64272 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 j3=)6-xdocb z)$BI>`k#uZf5KL$e?`h8|GmvWzy3c))Za%se*3!{5LW+>r2Yn&n+5I1bDdxRi4pbN$mMIc|Aebu zsW+(pVuSqpFO>TI=Rf`3;>B_vXbf6j_b-hoKd6&aNcAdD)vo~G7lp>GGM1rI-mBi` znuQNVlpikTWtA%8$N#vLPYGnBQVKqgNt+hGJ>N9t!}`C^wXV<%d7?xA4>A9=etrIX zKB9hog5=*&hNEBquOiBi?FY5F2TDlHQMMSNUq6PI*F@_zx7}IJKEn9JHBngkt-o{Suk;T3@&6wl*-g{{ literal 0 HcmV?d00001 diff --git a/obj/ipc-socket.adb.stderr b/obj/ipc-socket.adb.stderr new file mode 100644 index 0000000..5d22c1d --- /dev/null +++ b/obj/ipc-socket.adb.stderr @@ -0,0 +1,2 @@ +ipc-socket.adb:359:37: warning: overlay changes scalar storage order [enabled by default] +ipc-socket.adb:518:37: warning: overlay changes scalar storage order [enabled by default] diff --git a/obj/ipc-socket.adb.stdout b/obj/ipc-socket.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc-socket.ali b/obj/ipc-socket.ali new file mode 100644 index 0000000..01a26a2 --- /dev/null +++ b/obj/ipc-socket.ali @@ -0,0 +1,657 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RV NO_IMPLICIT_CONDITIONALS +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.socket%b ipc-socket.adb a3ce410c NE OO PK IU +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s +W ipc%s ipc.ads ipc.ali +W networking%s networking.adb networking.ali +W networking.interfaces%s networking-interfaces.adb networking-interfaces.ali +W networking.ipv4%s networking-ipv4.adb networking-ipv4.ali +W networking.ipv6%s networking-ipv6.adb networking-ipv6.ali +W scheduler%s scheduler.adb scheduler.ali +Z system%s system.ads system.ali + +U ipc.socket%s ipc-socket.ads b04b93ec NE OO PK IU +W devices%s devices.adb devices.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W networking%s networking.adb networking.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-uncdea.ads 20241115151050 f341340f ada.unchecked_deallocation%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-context.ads 20241115151036 7bffdd51 arch.context%s +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D ipc.ads 20241115151036 03976a1a ipc%s +D ipc-socket.ads 20241115151036 ab61e49d ipc.socket%s +D ipc-socket.adb 20241115151036 7b5a2e7d ipc.socket%b +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D networking.ads 20241115151036 70ea6e55 networking%s +D networking-arp.ads 20241115151036 eec21925 networking.arp%s +D networking-interfaces.ads 20241115151036 9c034257 networking.interfaces%s +D networking-ipv4.ads 20241115151036 1c38e59d networking.ipv4%s +D networking-ipv6.ads 20241115151036 617a68ce networking.ipv6%s +D scheduler.ads 20241115151036 61f570e7 scheduler%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-elf.ads 20241115151036 416b8b0c userland.elf%s +D vfs.ads 20241115151036 63b4365d vfs%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [create ipc__socket 55 13 none] +G c Z s b [get_domain ipc__socket 63 13 none] +G c Z s b [get_type ipc__socket 70 13 none] +G c Z s b [close ipc__socket 75 14 none] +G c Z s b [is_blocking ipc__socket 81 13 none] +G c Z s b [set_blocking ipc__socket 87 14 none] +G c Z s b [poll ipc__socket 96 14 none] +G c Z s b [read ipc__socket 109 14 none] +G c Z s b [write ipc__socket 121 14 none] +G c Z s b [shutdown ipc__socket 136 13 none] +G c Z s b [is_listening ipc__socket 144 13 none] +G c Z s b [listen ipc__socket 152 13 none] +G c Z s b [accept_connection ipc__socket 159 14 none] +G c Z s b [get_bound ipc__socket 173 14 none] +G c Z s b [get_peer ipc__socket 185 14 none] +G c Z s b [bind ipc__socket 197 13 none] +G c Z s b [connect ipc__socket 210 13 none] +G c Z s b [accept_connection ipc__socket 222 14 none] +G c Z s b [read ipc__socket 239 14 none] +G c Z s b [write ipc__socket 257 14 none] +G c Z s b [get_bound ipc__socket 276 14 none] +G c Z s b [get_peer ipc__socket 288 14 none] +G c Z s b [bind ipc__socket 300 13 none] +G c Z s b [connect ipc__socket 313 13 none] +G c Z s b [accept_connection ipc__socket 326 14 none] +G c Z s b [read ipc__socket 343 14 none] +G c Z s b [write ipc__socket 361 14 none] +G c Z s b [get_bound ipc__socket 381 14 none] +G c Z s b [get_peer ipc__socket 393 14 none] +G c Z s b [bind ipc__socket 405 13 none] +G c Z s b [connect ipc__socket 415 13 none] +G c Z s b [accept_connection ipc__socket 425 14 none] +G c Z s b [read ipc__socket 441 14 none] +G c Z s b [write ipc__socket 457 14 none] +G c Z s b [inner_ipv4_read ipc__socket 508 14 none] +G c Z s b [inner_ipv4_write ipc__socket 514 14 none] +G c Z s b [inner_ipv6_read ipc__socket 521 14 none] +G c Z s b [inner_ipv6_write ipc__socket 527 14 none] +G c Z s s [bound_socketIP ipc__socket 535 9 none] +G c Z s b [get_bound ipc__socket 546 13 none] +G c Z s b [inner_unix_close ipc__socket 548 14 none] +G c Z s b [inner_unix_read ipc__socket 550 14 none] +G c Z s b [inner_unix_write ipc__socket 556 14 none] +G c Z s b [inner_unix_poll ipc__socket 562 14 none] +G c Z s b [inner_unix_shutdown ipc__socket 569 13 none] +G c Z s s [socketIP ipc__socket 471 9 none] +G c Z b b [free ipc__socket 24 14 none] +G c Z b b [free ipc__socket 25 14 none] +G r c none [close ipc__socket 75 14 none] [seize lib__synchronization 27 14 none] +G r c none [close ipc__socket 75 14 none] [release lib__synchronization 31 14 none] +G r c none [is_blocking ipc__socket 81 13 none] [seize lib__synchronization 27 14 none] +G r c none [is_blocking ipc__socket 81 13 none] [release lib__synchronization 31 14 none] +G r c none [set_blocking ipc__socket 87 14 none] [seize lib__synchronization 27 14 none] +G r c none [set_blocking ipc__socket 87 14 none] [release lib__synchronization 31 14 none] +G r c none [poll ipc__socket 96 14 none] [seize lib__synchronization 27 14 none] +G r c none [poll ipc__socket 96 14 none] [release lib__synchronization 31 14 none] +G r c none [read ipc__socket 109 14 none] [get_suitable_interface networking__interfaces 62 14 none] +G r c none [read ipc__socket 109 14 none] [get_interface_address networking__interfaces 42 14 none] +G r c none [read ipc__socket 109 14 none] [read devices 193 14 none] +G r c none [read ipc__socket 109 14 none] [get_suitable_interface networking__interfaces 67 14 none] +G r c none [read ipc__socket 109 14 none] [get_interface_address networking__interfaces 47 14 none] +G r c none [read ipc__socket 109 14 none] [seize lib__synchronization 27 14 none] +G r c none [read ipc__socket 109 14 none] [release lib__synchronization 31 14 none] +G r c none [read ipc__socket 109 14 none] [yield_if_able scheduler 74 14 none] +G r c none [write ipc__socket 121 14 none] [get_suitable_interface networking__interfaces 62 14 none] +G r c none [write ipc__socket 121 14 none] [get_interface_address networking__interfaces 42 14 none] +G r c none [write ipc__socket 121 14 none] [generate_header networking__ipv4 62 13 none] +G r c none [write ipc__socket 121 14 none] [write devices 210 14 none] +G r c none [write ipc__socket 121 14 none] [get_suitable_interface networking__interfaces 67 14 none] +G r c none [write ipc__socket 121 14 none] [get_interface_address networking__interfaces 47 14 none] +G r c none [write ipc__socket 121 14 none] [generate_header networking__ipv6 49 13 none] +G r c none [write ipc__socket 121 14 none] [seize lib__synchronization 27 14 none] +G r c none [write ipc__socket 121 14 none] [release lib__synchronization 31 14 none] +G r c none [write ipc__socket 121 14 none] [yield_if_able scheduler 74 14 none] +G r c none [shutdown ipc__socket 136 13 none] [seize lib__synchronization 27 14 none] +G r c none [shutdown ipc__socket 136 13 none] [release lib__synchronization 31 14 none] +G r c none [is_listening ipc__socket 144 13 none] [seize lib__synchronization 27 14 none] +G r c none [is_listening ipc__socket 144 13 none] [release lib__synchronization 31 14 none] +G r c none [listen ipc__socket 152 13 none] [seize lib__synchronization 27 14 none] +G r c none [listen ipc__socket 152 13 none] [release lib__synchronization 31 14 none] +G r c none [accept_connection ipc__socket 159 14 none] [seize lib__synchronization 27 14 none] +G r c none [accept_connection ipc__socket 159 14 none] [yield_if_able scheduler 74 14 none] +G r c none [accept_connection ipc__socket 159 14 none] [release lib__synchronization 31 14 none] +G r c none [read ipc__socket 239 14 none] [get_suitable_interface networking__interfaces 62 14 none] +G r c none [read ipc__socket 239 14 none] [get_interface_address networking__interfaces 42 14 none] +G r c none [read ipc__socket 239 14 none] [read devices 193 14 none] +G r c none [write ipc__socket 257 14 none] [get_suitable_interface networking__interfaces 62 14 none] +G r c none [write ipc__socket 257 14 none] [get_interface_address networking__interfaces 42 14 none] +G r c none [write ipc__socket 257 14 none] [generate_header networking__ipv4 62 13 none] +G r c none [write ipc__socket 257 14 none] [write devices 210 14 none] +G r c none [read ipc__socket 343 14 none] [get_suitable_interface networking__interfaces 67 14 none] +G r c none [read ipc__socket 343 14 none] [get_interface_address networking__interfaces 47 14 none] +G r c none [read ipc__socket 343 14 none] [read devices 193 14 none] +G r c none [write ipc__socket 361 14 none] [get_suitable_interface networking__interfaces 67 14 none] +G r c none [write ipc__socket 361 14 none] [get_interface_address networking__interfaces 47 14 none] +G r c none [write ipc__socket 361 14 none] [generate_header networking__ipv6 49 13 none] +G r c none [write ipc__socket 361 14 none] [write devices 210 14 none] +G r c none [get_bound ipc__socket 381 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_bound ipc__socket 381 14 none] [release lib__synchronization 31 14 none] +G r c none [get_peer ipc__socket 393 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_peer ipc__socket 393 14 none] [release lib__synchronization 31 14 none] +G r c none [bind ipc__socket 405 13 none] [seize lib__synchronization 27 14 none] +G r c none [bind ipc__socket 405 13 none] [release lib__synchronization 31 14 none] +G r c none [connect ipc__socket 415 13 none] [seize lib__synchronization 27 14 none] +G r c none [connect ipc__socket 415 13 none] [yield_if_able scheduler 74 14 none] +G r c none [connect ipc__socket 415 13 none] [release lib__synchronization 31 14 none] +G r c none [accept_connection ipc__socket 425 14 none] [seize lib__synchronization 27 14 none] +G r c none [accept_connection ipc__socket 425 14 none] [yield_if_able scheduler 74 14 none] +G r c none [accept_connection ipc__socket 425 14 none] [release lib__synchronization 31 14 none] +G r c none [read ipc__socket 441 14 none] [seize lib__synchronization 27 14 none] +G r c none [read ipc__socket 441 14 none] [yield_if_able scheduler 74 14 none] +G r c none [read ipc__socket 441 14 none] [release lib__synchronization 31 14 none] +G r c none [write ipc__socket 457 14 none] [seize lib__synchronization 27 14 none] +G r c none [write ipc__socket 457 14 none] [yield_if_able scheduler 74 14 none] +G r c none [write ipc__socket 457 14 none] [release lib__synchronization 31 14 none] +G r c none [inner_ipv4_read ipc__socket 508 14 none] [get_suitable_interface networking__interfaces 62 14 none] +G r c none [inner_ipv4_read ipc__socket 508 14 none] [get_interface_address networking__interfaces 42 14 none] +G r c none [inner_ipv4_read ipc__socket 508 14 none] [read devices 193 14 none] +G r c none [inner_ipv4_write ipc__socket 514 14 none] [get_suitable_interface networking__interfaces 62 14 none] +G r c none [inner_ipv4_write ipc__socket 514 14 none] [get_interface_address networking__interfaces 42 14 none] +G r c none [inner_ipv4_write ipc__socket 514 14 none] [generate_header networking__ipv4 62 13 none] +G r c none [inner_ipv4_write ipc__socket 514 14 none] [write devices 210 14 none] +G r c none [inner_ipv6_read ipc__socket 521 14 none] [get_suitable_interface networking__interfaces 67 14 none] +G r c none [inner_ipv6_read ipc__socket 521 14 none] [get_interface_address networking__interfaces 47 14 none] +G r c none [inner_ipv6_read ipc__socket 521 14 none] [read devices 193 14 none] +G r c none [inner_ipv6_write ipc__socket 527 14 none] [get_suitable_interface networking__interfaces 67 14 none] +G r c none [inner_ipv6_write ipc__socket 527 14 none] [get_interface_address networking__interfaces 47 14 none] +G r c none [inner_ipv6_write ipc__socket 527 14 none] [generate_header networking__ipv6 49 13 none] +G r c none [inner_ipv6_write ipc__socket 527 14 none] [write devices 210 14 none] +G r c none [inner_unix_close ipc__socket 548 14 none] [seize lib__synchronization 27 14 none] +G r c none [inner_unix_close ipc__socket 548 14 none] [release lib__synchronization 31 14 none] +G r c none [inner_unix_read ipc__socket 550 14 none] [seize lib__synchronization 27 14 none] +G r c none [inner_unix_read ipc__socket 550 14 none] [release lib__synchronization 31 14 none] +G r c none [inner_unix_read ipc__socket 550 14 none] [yield_if_able scheduler 74 14 none] +G r c none [inner_unix_write ipc__socket 556 14 none] [seize lib__synchronization 27 14 none] +G r c none [inner_unix_write ipc__socket 556 14 none] [release lib__synchronization 31 14 none] +G r c none [inner_unix_write ipc__socket 556 14 none] [yield_if_able scheduler 74 14 none] +X 1 ada.ads +11K9*Ada 12e8 11|17r6 24r26 25r26 +X 2 a-uncdea.ads +14u15*Unchecked_Deallocation 11|17w10 24r30 25r30 +X 7 devices.ads +22K9*Devices 279e12 10|18w6 18r19 111r24 123r20 241r24 259r20 345r24 363r20 +. 443r24 459r20 477r27 510r24 516r20 523r24 529r20 552r24 558r20 11|151r24 +. 165r20 302r24 311r14 318r22 326r13 344r20 353r14 364r22 376r13 462r24 471r14 +. 478r22 486r13 503r20 512r14 523r22 535r13 706r24 721r20 736r24 752r20 768r24 +. 784r20 822r24 899r20 +29A9*Operation_Data(8|16M9) 10|111r32 123r28 241r32 259r28 345r32 +. 363r28 443r32 459r28 477r35 510r32 516r28 523r32 529r28 552r32 558r28 11|26r8 +. 151r32 165r28 302r32 344r28 358r18 372r29 462r32 503r28 517r18 531r29 706r32 +. 721r28 736r32 752r28 768r32 784r28 822r32 899r28 +30P9*Operation_Data_Acc(29A9) 11|26r24 354r18 513r18 +83I9*Device_Handle 11|311r22 353r22 471r22 512r22 +85i4*Error_Handle{83I9} 11|318r30 364r30 478r30 523r30 +193U14*Read 11|326s21 486s21 +210U14*Write 11|376s21 535s21 +X 8 interfac.ads +16M9*Unsigned_8 +17M9*Unsigned_16 +X 9 ipc.ads +17K9*IPC 18e8 10|21r9 573r5 11|23r14 1029r5 +X 10 ipc-socket.ads +21K13*Socket 9|17k9 10|469E4 573l9 573e15 11|23b18 1029l9 1029t15 +25E9*Domain 28e13 36r23 56r22 63r51 471r23 11|29r22 90r51 +26n8*IPv4{25E9} 178r61 190r61 201r61 214r61 229r39 247r39 265r39 281r61 488r15 +. 11|35r15 40r37 104r15 138r15 157r15 171r15 186r15 223r15 +27n8*IPv6{25E9} 293r61 304r61 317r61 333r39 351r39 369r39 448r39 464r39 496r15 +. 11|48r15 53r37 104r22 138r22 158r15 172r15 186r22 223r22 +28n8*UNIX{25E9} 386r61 398r61 406r61 416r61 432r39 476r15 11|61r15 66r39 +. 78r41 106r15 143r15 159r15 173r15 188r15 225r15 +30E9*DataType 33e12 36r37 57r22 70r49 471r37 11|30r22 95r49 +31n8*Stream{30E9} 153r59 163r59 230r37 248r38 266r38 334r37 352r38 370r38 +. 433r37 449r38 465r38 480r21 11|63r21 67r39 642r15 841r15 907r15 994r15 +32n8*Datagram{30E9} 11|75r21 79r41 +33n8*Raw{30E9} 490r21 498r21 11|37r21 41r37 50r21 54r37 84r21 276r15 316r15 +. 362r15 436r15 476r15 521r15 +36R9*Socket 36d17 36d31 37r30 471c9 505e14 11|24r54 38r30 51r30 64r30 76r30 +36e17 Dom{25E9} 471r17 475r12 11|40m21 53m21 66m21 78m21 92r19 103r21 137r17 +. 156r17 170r17 185r17 222r17 685r40 +36e31 Typ{30E9} 471r31 479r18 489r18 497r18 11|41m21 54m21 67m21 79m21 97r19 +. 275r17 315r17 361r17 435r17 475r17 520r17 641r17 686r40 840r17 906r17 993r17 +37P9*Socket_Acc(36R9) 58r46 63r32 70r30 75r39 81r33 87r35 97r20 110r20 122r20 +. 137r27 144r34 152r28 160r22 162r26 174r18 186r18 198r15 211r15 223r23 227r27 +. 240r20 258r20 277r18 289r18 301r15 314r15 327r23 331r27 344r20 362r20 382r18 +. 394r18 405r26 415r29 426r30 430r34 442r20 458r20 482r36 483r36 484r36 486r38 +. 509r20 515r20 522r20 528r20 536r18 546r46 548r43 551r20 557r20 563r20 570r27 +. 11|24r62 31r46 90r32 95r30 100r39 112r33 121r35 129r20 150r20 164r20 178r27 +. 195r34 204r28 214r22 216r26 232r18 245r18 258r15 270r15 286r23 290r27 301r20 +. 343r20 391r18 404r18 418r15 430r15 446r23 450r27 461r20 502r20 550r18 574r18 +. 601r26 630r29 631r20 667r30 671r34 673r13 705r20 712r23 720r20 727r23 735r20 +. 751r20 767r20 783r20 798r46 808r43 821r20 898r20 986r20 1016r27 +40E9*Socket_Status 43e20 113r24 125r24 245r24 263r24 349r24 367r24 446r24 +. 462r24 512r24 518r24 525r24 531r24 554r24 560r24 11|153r24 167r24 306r24 +. 348r24 466r24 507r24 709r24 724r24 738r24 754r24 770r24 786r24 824r24 901r24 +41n8*Plain_Success{40E9} 11|331r27 380r27 491r27 539r27 880r24 886r29 955r26 +. 976r29 +42n8*Is_Bad_Type{40E9} 11|338r24 386r24 497r26 545r26 845r29 910r29 +43n8*Would_Block{40E9} 11|321r29 333r27 366r29 382r27 481r29 493r27 525r29 +. 541r27 854r32 889r29 935r32 964r29 979r29 +46i4*Default_Socket_Size{natural} 469c4 477r56 478r46 11|919r22 929r50 940r22 +. 941r22 943r25 944r25 961r31 971r31 1003r54 +55V13*Create{37P9} 56>8 57>8 58>8 11|28b13 88l8 88t14 684s26 +56e8 Dom{25E9} 11|29b8 34r12 +57e8 Typ{30E9} 11|30b8 36r18 49r18 62r18 +58b8 Is_Blocking{boolean} 11|31b8 42r37 55r37 69r39 80r41 +63V13*Get_Domain{25E9} 63>25 178s41 190s41 201s41 214s41 229s19 247s19 265s19 +. 281s41 293s41 304s41 317s41 333s19 351s19 369s19 386s41 398s41 406s41 416s41 +. 432s19 448s19 464s19 11|90b13 93l8 93t18 +63p25 Sock{37P9} 64r19 11|90b25 92r14 +70V13*Get_Type{30E9} 70>23 153s41 163s41 230s19 248s19 266s19 334s19 352s19 +. 370s19 433s19 449s19 465s19 11|95b13 98l8 98t16 +70p23 Sock{37P9} 71r19 11|95b23 97r14 +75U14*Close 75=21 11|100b14 110l8 110t13 +75p21 To_Close{37P9} 76r19 76r45 11|100b21 102r34 103r12 107r31 109m13 +81V13*Is_Blocking{boolean} 81>26 11|112b13 119l8 119t19 +81p26 Sock{37P9} 82r19 11|112b26 115r34 116r17 117r36 +87U14*Set_Blocking 87>28 87>47 11|121b14 126l8 126t20 +87p28 Sock{37P9} 88r19 11|121b28 123r34 124r7 125r36 +87b47 Is_Blocking{boolean} 11|121b47 124r27 +96U14*Poll 97>8 98<8 99<8 100<8 101<8 11|128b14 147l8 147t12 +97p8 Sock{37P9} 102r19 11|129b8 136r34 137r12 144r30 146r36 +98b8 Can_Read{boolean} 11|130b8 139m13 144m36 +99b8 Can_Write{boolean} 11|131b8 140m13 144m46 +100b8 Is_Broken{boolean} 11|132b8 141m13 144m57 +101b8 Is_Error{boolean} 11|133b8 142m13 144m68 +109U14*Read 110>8 111<8 112<8 113<8 11|149b14 161l8 161t12 +110p8 Sock{37P9} 114r19 11|150b8 156r12 157r40 158r40 159r40 +111a8 Data{7|29A9} 11|151b8 157m46 158m46 159m46 +112i8 Ret_Count{natural} 11|152b8 157m52 158m52 159m52 +113e8 Success{40E9} 11|153b8 157m63 158m63 159m63 +121U14*Write 122>8 123>8 124<8 125<8 11|163b14 175l8 175t13 +122p8 Sock{37P9} 126r19 11|164b8 170r12 171r41 172r41 173r41 +123a8 Data{7|29A9} 11|165b8 171r47 172r47 173r47 +124i8 Ret_Count{natural} 11|166b8 171m53 172m53 173m53 +125e8 Success{40E9} 11|167b8 171m64 172m64 173m64 +136V13*Shutdown{boolean} 137>8 138>8 139>8 11|177b13 193l8 193t16 +137p8 Sock{37P9} 11|178b8 184r34 185r12 189r41 191r36 +138b8 Do_Receptions{boolean} 11|179b8 189r47 +139b8 Do_Transmissions{boolean} 11|180b8 189r62 +144V13*Is_Listening{boolean} 144>27 11|195b13 202l8 202t20 +144p27 Sock{37P9} 145r19 11|195b27 198r34 199r17 200r36 +152V13*Listen{boolean} 152>21 152>40 11|204b13 211l8 211t14 +152p21 Sock{37P9} 153r19 153r51 11|204b21 207r34 208r7 209r36 +152i40 Backlog{natural} 11|204b40 205r28 +159U14*Accept_Connection 160>8 161>8 162<8 11|213b14 229l8 229t25 +160p8 Sock{37P9} 163r19 163r51 11|214b8 221r34 222r12 226r32 228r36 +161b8 Is_Blocking{boolean} 11|215b8 226r38 +162p8 Result{37P9} 11|216b8 224m13 226m62 +173U14*Get_Bound 174>8 175<8 176<8 177<8 11|231b14 242l8 242t17 +174p8 Sock{37P9} 178r19 178r53 11|232b8 237r28 +175a8 Addr{15|23A9} 11|233b8 239m7 +176m8 Port{15|25M9} 11|234b8 240m7 +177b8 Success{boolean} 11|235b8 241m7 +185U14*Get_Peer 186>8 187<8 188<8 189<8 11|244b14 255l8 255t16 +186p8 Sock{37P9} 190r19 190r53 11|245b8 250r28 +187a8 Addr{15|23A9} 11|246b8 252m7 +188m8 Port{15|25M9} 11|247b8 253m7 +189b8 Success{boolean} 11|248b8 254m7 +197V13*Bind{boolean} 198>8 199>8 200>8 11|257b13 267l8 267t12 +198p8 Sock{37P9} 201r19 201r53 11|258b8 262r28 +199a8 Addr{15|23A9} 11|259b8 263r28 +200m8 Port{15|25M9} 11|260b8 264r28 +210V13*Connect{boolean} 211>8 212>8 213>8 11|269b13 283l8 283t15 +211p8 Sock{37P9} 214r19 214r53 11|270b8 275r12 277r13 278r13 +212a8 Addr{15|23A9} 11|271b8 277r41 +213m8 Port{15|25M9} 11|272b8 278r38 +222U14*Accept_Connection 223>8 224>8 225<8 226<8 227<8 11|285b14 298l8 298t25 +223p8 Sock{37P9} 228r19 229r31 230r29 11|286b8 292r28 +224b8 Is_Blocking{boolean} 11|287b8 293r28 +225a8 Peer_Address{15|23A9} 11|288b8 295m7 +226m8 Peer_Port{15|25M9} 11|289b8 296m7 +227p8 Result{37P9} 11|290b8 297m7 +239U14*Read 240>8 241<8 242<8 243>8 244>8 245<8 11|300b14 340l8 340t12 741s7 +240p8 Sock{37P9} 246r19 247r31 248r29 11|301b8 315r12 742r11 +241a8 Data{7|29A9} 11|302b8 319m16 326m35 327m13 327r19 327r33 328r16 328r22 +. 328r53 336m13 743r11 +242i8 Ret_Count{natural} 11|303b8 320m16 326m41 329m13 329r26 337m13 744r11 +243a8 Addr{15|23A9} 11|304b8 317r59 745r11 +244m8 Port{15|25M9} 11|305b8 308r28 746r11 +245e8 Success{40E9} 11|306b8 321m16 331m16 333m16 338m13 747r11 +257U14*Write 258>8 259>8 260<8 261>8 262>8 263<8 11|342b14 388l8 388t13 757s7 +258p8 Sock{37P9} 264r19 265r31 266r29 11|343b8 361r12 758r11 +259a8 Data{7|29A9} 11|344b8 371r64 372r50 374r64 759r11 +260i8 Ret_Count{natural} 11|345b8 365m16 376m50 385m13 760r11 +261a8 Addr{15|23A9} 11|346b8 363r59 371r58 761r11 +262m8 Port{15|25M9} 11|347b8 350r28 762r11 +263e8 Success{40E9} 11|348b8 366m16 380m16 382m16 386m13 763r11 +276U14*Get_Bound 277>8 278<8 279<8 280<8 11|390b14 401l8 401t17 +277p8 Sock{37P9} 281r19 281r53 11|391b8 396r28 +278a8 Addr{15|24A9} 11|392b8 398m7 +279m8 Port{15|26M9} 11|393b8 399m7 +280b8 Success{boolean} 11|394b8 400m7 +288U14*Get_Peer 289>8 290<8 291<8 292<8 11|403b14 414l8 414t16 +289p8 Sock{37P9} 293r19 293r53 11|404b8 409r28 +290a8 Addr{15|24A9} 11|405b8 411m7 +291m8 Port{15|26M9} 11|406b8 412m7 +292b8 Success{boolean} 11|407b8 413m7 +300V13*Bind{boolean} 301>8 302>8 303>8 11|417b13 427l8 427t12 +301p8 Sock{37P9} 304r19 304r53 11|418b8 422r28 +302a8 Addr{15|24A9} 11|419b8 423r28 +303m8 Port{15|26M9} 11|420b8 424r28 +313V13*Connect{boolean} 314>8 315>8 316>8 11|429b13 443l8 443t15 +314p8 Sock{37P9} 317r19 317r53 11|430b8 435r12 437r13 438r13 +315a8 Addr{15|24A9} 11|431b8 437r41 +316m8 Port{15|26M9} 11|432b8 438r38 +326U14*Accept_Connection 327>8 328>8 329<8 330<8 331<8 11|445b14 458l8 458t25 +327p8 Sock{37P9} 332r19 333r31 334r29 11|446b8 452r28 +328b8 Is_Blocking{boolean} 11|447b8 453r28 +329a8 Peer_Address{15|24A9} 11|448b8 455m7 +330m8 Peer_Port{15|26M9} 11|449b8 456m7 +331p8 Result{37P9} 11|450b8 457m7 +343U14*Read 344>8 345<8 346<8 347>8 348>8 349<8 11|460b14 499l8 499t12 773s7 +344p8 Sock{37P9} 350r19 351r31 352r29 11|461b8 475r12 774r11 +345a8 Data{7|29A9} 11|462b8 479m16 486m35 487m13 487r19 487r33 488r16 488r22 +. 488r53 775r11 +346i8 Ret_Count{natural} 11|463b8 480m16 486m41 489m13 489r26 496m13 776r11 +347a8 Addr{15|24A9} 11|464b8 477r59 777r11 +348m8 Port{15|26M9} 11|465b8 468r28 778r11 +349e8 Success{40E9} 11|466b8 481m16 491m16 493m16 497m13 779r11 +361U14*Write 362>8 363>8 364<8 365>8 366>8 367<8 11|501b14 547l8 547t13 789s7 +362p8 Sock{37P9} 368r19 369r31 370r29 11|502b8 520r12 790r11 +363a8 Data{7|29A9} 11|503b8 530r64 531r50 533r64 791r11 +364i8 Ret_Count{natural} 11|504b8 524m16 535m50 544m13 792r11 +365a8 Addr{15|24A9} 11|505b8 522r59 530r58 793r11 +366m8 Port{15|26M9} 11|506b8 509r28 794r11 +367e8 Success{40E9} 11|507b8 525m16 539m16 541m16 545m13 795r11 +381U14*Get_Bound 382>8 383<8 384<8 385<8 11|549b14 571l8 571t17 +382p8 Sock{37P9} 386r19 386r53 11|550b8 562r24 +383a8 Path{string} 11|551b8 556m7 563m13 563r19 563r33 +384i8 Length{natural} 11|552b8 557m7 565m13 +385b8 Success{boolean} 11|553b8 558m7 566m13 +393U14*Get_Peer 394>8 395<8 396<8 397<8 11|573b14 599l8 599t16 +394p8 Sock{37P9} 398r19 398r53 11|574b8 586r24 +395a8 Path{string} 11|575b8 580m7 587r16 588m16 588r22 588r36 591m16 591r39 +396i8 Length{natural} 11|576b8 581m7 593m13 +397b8 Success{boolean} 11|577b8 582m7 594m13 +405V13*Bind{boolean} 405>19 405>38 11|601b13 628l8 628t12 +405p19 Sock{37P9} 406r19 406r53 11|601b19 611r24 617r25 +405a38 Path{string} 11|601b38 604r10 604r29 618r28 618r44 619r29 +415V13*Connect{boolean} 415>22 415>41 11|630b13 664l8 664t15 714s18 729s18 +415p22 Sock{37P9} 416r19 416r53 11|630b22 641r12 643r13 646r48 652r26 656r13 +415a41 Path{string} 11|630b41 636r32 +425U14*Accept_Connection 426>8 427>8 428<8 429<8 430<8 11|226s13 666b14 702l8 +. 702t25 +426p8 Sock{37P9} 431r19 432r31 433r29 11|667b8 679r34 681r10 683r16 685r20 +. 686r20 689r23 690r38 693r16 696r27 701r36 +427b8 Is_Blocking{boolean} 11|668b8 687r20 +428a8 Peer_Address{string} 11|669b8 675m7 +429i8 Peer_Address_Length{natural} 11|670b8 676m7 +430p8 Result{37P9} 11|671b8 677m7 684m16 690r16 691r38 692r16 +441U14*Read 442>8 443<8 444<8 445>8 446<8 11|704b14 717l8 717t12 +442p8 Sock{37P9} 447r19 448r31 449r29 11|705b8 712r37 714r27 715r24 716r7 +443a8 Data{7|29A9} 11|706b8 715m30 +444i8 Ret_Count{natural} 11|707b8 715m36 +445a8 Path{string} 11|708b8 714r33 +446e8 Success{40E9} 11|709b8 715m47 +457U14*Write 458>8 459>8 460<8 461>8 462<8 11|719b14 732l8 732t13 +458p8 Sock{37P9} 463r19 464r31 465r29 11|720b8 727r37 729r27 730r25 731r7 +459a8 Data{7|29A9} 11|721b8 730r31 +460i8 Ret_Count{natural} 11|722b8 730m37 +461a8 Path{string} 11|723b8 729r33 +462e8 Success{40E9} 11|724b8 730m48 +472r7*Mutex{13|22R9} 11|39m21 52m21 65m21 77m21 102m43 115m39 117m41 123m39 +. 125m41 136m39 146m41 184m39 191m41 198m39 200m41 207m39 209m41 221m39 228m41 +. 679m39 701m41 831m45 833m47 837m42 849m53 894m41 917m66 920m68 924m63 927m45 +. 931m53 957m62 958m47 969m62 981m64 +473b7*Is_Blocking{boolean} 11|42m21 55m21 69m21 80m21 116r22 124m12 696r32 +. 829r15 848r24 915r21 930r24 +477a13*Data{7|29A9} 11|73m21 82m21 867r21 869r30 869r49 870m24 870r41 884r24 +. 949m33 973m38 +478i13*Data_Length{integer} 11|74m21 83m21 832r28 847r24 859r27 860r28 872r24 +. 873m24 873r44 882r21 883r32 884r40 885r34 918r49 929r36 941r64 944r67 946r45 +. 950r37 952m33 970r38 974m38 1001r34 1003r39 1008r31 +481b19*Is_Listener{boolean} 11|68m21 199r22 208m12 681r15 842r21 908r21 995r21 +482p19*Connected{37P9} 11|70m21 643m18 +483p19*Pending_Accept{37P9} 11|71m21 645r30 646m30 652r31 683r21 685r25 686r25 +. 689r28 691m20 692m23 693m21 842r41 908r41 917r51 918r34 920r53 924r48 929r21 +. 941r49 944r52 946r30 949r18 950r22 952r18 957r47 996r34 1002r34 1003r24 +484p19*Established{37P9} 11|72m21 586r29 690m23 1023r15 1024r15 1024m27 1025m15 +486p19*Simple_Connected{37P9} 11|81m21 656m18 712r42 716m12 727r42 731m12 +. 960r21 969r45 970r21 973r21 974r21 981r47 1009r31 +491a19*IPv4_Cached_Address{15|23A9} 11|43m21 277m18 745r29 761r29 +492m19*IPv4_Cached_Port{15|25M9} 11|44m21 278m18 746r29 762r29 +499a19*IPv6_Cached_Address{15|24A9} 11|56m21 437m18 777r29 793r29 +500m19*IPv6_Cached_Port{15|26M9} 11|57m21 438m18 778r29 794r29 +508U14 Inner_IPv4_Read 509>8 510<8 511<8 512<8 11|157s23 734b14 748l8 748t23 +509p8 Sock{37P9} 11|735b8 742r24 745r24 746r24 +510a8 Data{7|29A9} 11|736b8 743m24 +511i8 Ret_Count{natural} 11|737b8 744m24 +512e8 Success{40E9} 11|738b8 747m24 +514U14 Inner_IPv4_Write 515>8 516>8 517<8 518<8 11|171s23 750b14 764l8 764t24 +515p8 Sock{37P9} 11|751b8 758r24 761r24 762r24 +516a8 Data{7|29A9} 11|752b8 759r24 +517i8 Ret_Count{natural} 11|753b8 760m24 +518e8 Success{40E9} 11|754b8 763m24 +521U14 Inner_IPv6_Read 522>8 523<8 524<8 525<8 11|158s23 766b14 780l8 780t23 +522p8 Sock{37P9} 11|767b8 774r24 777r24 778r24 +523a8 Data{7|29A9} 11|768b8 775m24 +524i8 Ret_Count{natural} 11|769b8 776m24 +525e8 Success{40E9} 11|770b8 779m24 +527U14 Inner_IPv6_Write 528>8 529>8 530<8 531<8 11|172s23 782b14 796l8 796t24 +528p8 Sock{37P9} 11|783b8 790r24 793r24 794r24 +529a8 Data{7|29A9} 11|784b8 791r24 +530i8 Ret_Count{natural} 11|785b8 792m24 +531e8 Success{40E9} 11|786b8 795m24 +534N4 Bind_Path_Max 537r31 538r37 11|604r43 +535R9 Bound_Socket 539e14 543r44 +536p7*Sock{37P9} 544m19 11|562r17 586r17 611r17 616r17 617m17 801r17 802r24 +. 812r17 813m17 +537a7*Path{string} 544m33 11|564r20 589r23 591r28 618m17 801r43 +538i7*Path_Len{integer} 544m58 11|563r50 564r35 565r28 587r35 588r53 589r38 +. 593r28 619m17 801r58 +541r4 UNIX_Bound_Mutex{13|22R9} 11|560m34 560r34 570m36 570r36 584m34 584r34 +. 598m36 598r36 608m34 608r34 626m36 626r36 634m34 634r34 662m36 662r36 810m34 +. 810r34 817m36 817r36 +543a4 UNIX_Bound_Sockets(535R9) 11|561r18 585r18 610r18 615m18 615r18 800r18 +. 811m18 811r18 +546V13 Get_Bound{37P9} 546>24 11|636s21 798b13 806l8 806t17 +546a24 Path{string} 11|798b24 801r70 +548U14 Inner_UNIX_Close 548>32 11|107s13 808b14 818l8 818t24 +548p32 To_Close{37P9} 11|808b32 812r24 +550U14 Inner_UNIX_Read 551>8 552<8 553<8 554<8 11|159s23 715s7 820b14 895l8 +. 895t23 +551p8 Sock{37P9} 11|821b8 829r10 831r40 832r23 833r42 837r37 840r12 842r16 +. 842r36 847r19 848r19 849r48 859r22 860r23 867r16 869r25 869r44 870r19 870r36 +. 872r19 873r19 873r39 882r16 883r27 884r19 884r35 885r29 894r36 +552a8 Data{7|29A9} 11|822b8 826r24 843m16 852m19 862r16 863r38 866m13 866r19 +. 866r33 882r36 883m16 +553i8 Ret_Count{natural} 11|823b8 844m16 853m19 879m13 885m16 888m16 +554e8 Success{40E9} 11|824b8 845m16 854m19 880m13 886m16 889m16 +556U14 Inner_UNIX_Write 557>8 558>8 559<8 560<8 11|173s23 730s7 897b14 983l8 +. 983t24 +557p8 Sock{37P9} 11|898b8 906r12 908r16 908r36 915r16 917r46 918r29 920r48 +. 924r43 927r40 929r16 930r19 931r48 941r44 944r47 946r25 949r13 950r17 952r13 +. 957r42 958r42 960r16 969r40 970r16 973r16 974r16 981r42 +558a8 Data{7|29A9} 11|899b8 903r26 951r16 951r22 951r36 961r16 971r16 973r49 +. 973r65 974r53 975r29 +559i8 Ret_Count{natural} 11|900b8 909m16 934m19 954m13 963m16 975m16 978m16 +560e8 Success{40E9} 11|901b8 910m16 935m19 955m13 964m16 976m16 979m16 +562U14 Inner_UNIX_Poll 563>8 564<8 565<8 566<8 567<8 11|144s13 985b14 1013l8 +. 1013t23 +563p8 Sock{37P9} 11|986b8 993r12 995r16 996r29 1001r29 1002r29 1003r19 1008r26 +. 1009r26 +564b8 Can_Read{boolean} 11|987b8 996m16 997r29 1001m16 1008m13 +565b8 Can_Write{boolean} 11|988b8 997m16 1002m16 1009m13 +566b8 Is_Broken{boolean} 11|989b8 998m16 1004m16 1010m13 +567b8 Is_Error{boolean} 11|990b8 999m16 1005m16 1011m13 +569V13 Inner_UNIX_Shutdown{boolean} 570>8 571>8 572>8 11|189s20 1015b13 1028l8 +. 1028t27 +570p8 Sock{37P9} 11|1016b8 1023r10 1024r10 1025r10 +571b8 Do_Receptions{boolean} 11|1017b8 1020r28 +572b8 Do_Transmissions{boolean} 11|1018b8 1021r28 +X 11 ipc-socket.adb +24U14 Free[2|14] 109s7 +25U14 Free[2|14] 377s13 536s13 +113b7 Result{boolean} 116m7 118r14 +182b7 Suc{boolean} 187m13 189m13 192r14 +196b7 Result{boolean} 199m7 201r14 +218a7 Path{string} 226m51 +219i7 Len{natural} 226m57 +310b7 Succ{boolean} 326m52 330r16 +311i7 Dev{7|83I9} 317m65 318r16 324r58 326r27 +312a7 Src{15|23A9} 324m63 +313i7 Hdr_Size{natural} 327r46 328r36 329r39 +352b7 Succ{boolean} 376m61 379r16 +353i7 Dev{7|83I9} 363m65 364r16 369r58 376r28 +354p7 Tmp_Data{7|30P9} 372m13 373r13 374r13 374r46 376r36 377m19 377r19 +355a7 Src{15|23A9} 369m63 371r53 +356r7 Hdr{18|29R9} 358r39 359m34 359r34 371m13 372r65 +358a7 Hdr_Data{7|29A9} 373r28 373r48 374r23 +470b7 Succ{boolean} 486m52 490r16 +471i7 Dev{7|83I9} 477m65 478r16 484r58 486r27 +472a7 Src{15|24A9} 484m63 +473i7 Hdr_Size{natural} 487r46 488r36 489r39 +511b7 Succ{boolean} 535m61 538r16 +512i7 Dev{7|83I9} 522m65 523r16 528r58 535r28 +513p7 Tmp_Data{7|30P9} 531m13 532r13 533r13 533r46 535r36 536m19 536r19 +514a7 Src{15|24A9} 528m63 530r53 +515r7 Hdr{19|26R9} 517r39 518m34 518r34 530m13 531r65 +517a7 Hdr_Data{7|29A9} 532r28 532r48 533r23 +561r11 Ent=561:18{10|535R9} 562r13 563r46 564r16 564r31 565r24 +585r11 Ent=585:18{10|535R9} 586r13 587r31 588r49 589r19 589r34 591r24 593r24 +602b7 Success{boolean} 620m13 627r14 +610r11 Ent=610:18{10|535R9} 611r13 +615r11 Ent=615:18{10|535R9} 616r13 617r13 618r13 619r13 +625L6 Cleanup 612r18 621r18 +631p7 To_Connect{10|37P9} 636m7 637r10 643r31 645r19 646r19 656r38 +632b7 Success{boolean} 638m10 659m7 663r14 +661L6 End_Return 639r15 +673p7 Tmp{10|37P9} 689m16 691r16 692r41 +711b7 Discard{boolean} 714m7 +712p7 Temp{10|37P9} 716r32 +726b7 Discard{boolean} 729m7 +727p7 Temp{10|37P9} 731r32 +800r11 Ent=800:18{10|535R9} 801r13 801r39 801r54 802r20 +811r11 Ent=811:18{10|535R9} 812r13 813r13 +826i7 Len{natural} 859r16 860m16 862r44 863m16 866r46 867r32 868r27 879r26 +828L6 Retry 850r24 +868i17 I{integer} +869i20 J{integer} 870r30 870r47 +893L6 Cleanup 846r21 855r24 +903i7 Len{natural} 940r16 941r16 944m16 946r59 951r49 954r26 +904i7 Final{natural} 943m16 946m16 950r56 952r48 +914L12 Retry 932r24 +956L12 Cleanup 936r24 +X 12 lib.ads +19K9*Lib 10|17r6 472r29 541r33 542r7 11|39r37 52r37 65r39 77r41 102r7 115r7 +. 117r7 123r7 125r7 136r7 146r7 184r7 191r7 198r7 200r7 207r7 209r7 221r7 +. 228r7 560r7 570r7 584r7 598r7 608r7 626r7 634r7 662r7 679r7 701r7 810r7 +. 817r7 831r13 833r13 837r10 849r19 894r7 917r19 920r19 924r16 927r13 931r19 +. 957r13 958r13 969r13 981r13 12|35e8 +X 13 lib-synchronization.ads +20K13*Synchronization 10|17w10 472r33 541r37 542r11 11|39r41 52r41 65r43 +. 77r45 102r11 115r11 117r11 123r11 125r11 136r11 146r11 184r11 191r11 198r11 +. 200r11 207r11 209r11 221r11 228r11 560r11 570r11 584r11 598r11 608r11 626r11 +. 634r11 662r11 679r11 701r11 810r11 817r11 831r17 833r17 837r14 849r23 894r11 +. 917r23 920r23 924r20 927r17 931r23 957r17 958r17 969r17 981r17 13|66e24 +22R9*Binary_Semaphore 10|472r49 541r53 13|57e14 +23r4*Unlocked_Semaphore{22R9} 10|542r27 11|39r57 52r57 65r59 77r61 +27U14*Seize 11|102s27 115s27 123s27 136s27 184s27 198s27 207s27 221s27 560s27 +. 584s27 608s27 634s27 679s27 810s27 831s33 837s30 917s39 924s36 927s33 969s33 +31U14*Release 11|117s27 125s27 146s27 191s27 200s27 209s27 228s27 570s27 +. 598s27 626s27 662s27 701s27 817s27 833s33 849s39 894s27 920s39 931s39 957s33 +. 958s33 981s33 +X 15 networking.ads +20K9*Networking 10|19w6 175r22 176r22 187r22 188r22 199r15 200r15 212r15 +. 213r15 225r27 226r27 243r20 244r20 261r20 262r20 278r22 279r22 290r22 291r22 +. 302r15 303r15 315r15 316r15 329r27 330r27 347r20 348r20 365r20 366r20 491r41 +. 492r41 499r41 500r41 11|19r6 20r6 21r6 233r22 234r22 246r22 247r22 259r15 +. 260r15 271r15 272r15 288r27 289r27 304r20 305r20 312r14 313r38 317r13 324r13 +. 346r20 347r20 355r14 356r14 363r13 369r13 371r20 392r22 393r22 405r22 406r22 +. 419r15 420r15 431r15 432r15 448r27 449r27 464r20 465r20 472r14 473r38 477r13 +. 484r13 505r20 506r20 514r14 515r14 522r13 528r13 530r20 15|55e15 +23A9*IPv4_Address(8|16M9) 10|175r33 187r33 199r26 212r26 225r38 +. 243r31 261r31 491r52 11|233r33 246r33 259r26 271r26 288r38 304r31 312r25 +. 346r31 355r25 +24A9*IPv6_Address(8|16M9) 10|278r33 290r33 302r26 315r26 329r38 +. 347r31 365r31 499r52 11|392r33 405r33 419r26 431r26 448r38 464r31 472r25 +. 505r31 514r25 +25M9*IPv4_Port<8|17M9> 10|176r33 188r33 200r26 213r26 226r38 244r31 262r31 +. 492r52 11|234r33 247r33 260r26 272r26 289r38 305r31 347r31 +26M9*IPv6_Port<8|17M9> 10|279r33 291r33 303r26 316r26 330r38 348r31 366r31 +. 500r52 11|393r33 406r33 420r26 432r26 449r38 465r31 506r31 +X 17 networking-interfaces.ads +20K20*Interfaces 11|21w17 317r24 324r24 363r24 369r24 477r24 484r24 522r24 +. 528r24 17|107e26 +42U14*Get_Interface_Address 11|324s35 369s35 +47U14*Get_Interface_Address 11|484s35 528s35 +62U14*Get_Suitable_Interface 11|317s35 363s35 +67U14*Get_Suitable_Interface 11|477s35 522s35 +X 18 networking-ipv4.ads +19K20*IPv4 11|19w17 313r49 356r25 371r31 18|67e20 +29R9*IPv4_Packet_Header 11|313r54 356r30 18|43e15 +62V13*Generate_Header{29R9} 11|371s36 +X 19 networking-ipv6.ads +19K20*IPv6 11|20w17 473r49 515r25 530r31 19|54e20 +26R9*IPv6_Packet_Header 11|473r54 515r30 19|35e15 +49V13*Generate_Header{26R9} 11|530s36 +X 20 scheduler.ads +25K9*Scheduler 11|18w6 649r16 653r16 697r13 834r13 921r19 20|183e14 +74U14*Yield_If_Able 11|649s26 653s26 697s23 834s23 921s29 + diff --git a/obj/ipc-socket.o b/obj/ipc-socket.o new file mode 100644 index 0000000000000000000000000000000000000000..f130b4ce1cad6d86ef597aeea4e42da877c473f2 GIT binary patch literal 265512 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 literal 0 HcmV?d00001 diff --git a/obj/ipc.ads.stderr b/obj/ipc.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc.ads.stdout b/obj/ipc.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/ipc.ali b/obj/ipc.ali new file mode 100644 index 0000000..4a94c8b --- /dev/null +++ b/obj/ipc.ali @@ -0,0 +1,50 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc%s ipc.ads 03976a1a NE OO PK IU + +D ipc.ads 20241115151036 03976a1a ipc%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ipc.ads +17K9*IPC 18l5 18e8 + diff --git a/obj/ipc.o b/obj/ipc.o new file mode 100644 index 0000000000000000000000000000000000000000..5d4a4407400667e865947ab6fc065c0a344309f2 GIT binary patch literal 1984 zcmbtUUvJYe5O?VYLx2S01&Nok7eFFOn@xjF3To;8FsbV%R*;a8D%bT|Z*daY4s1LC zUx4qxM+EW08=Mn+t4xCsoYeU4=lk8+cfNky>TO@D)sU4M`i?Fviz4)Cq15$WyHMNc z2D*-R`Y#)uF>bV0{m^eVy#27@O%kl$;d1RXyrUO`!zh@hoCchcDW-8ia3)on&;yYk zQ=$SU(uBl#90(=HOa#C!>1RMsQco&OPP|N{3cOPRV2O|^B_~mm0x-r3dlI%;nny^gkVENOZ1 zjFE=Np#p-&_!Lw;Vo{u}t(xPKC{R2LcKV%xH`v-c@S0jef3SCO;qiB+muW5t4Kjfz z97`XMA#+hNJ~zi&nS(P4WzQ&y!e(o|6}DFNA>po(fIBjd$?!cRQo#3!CWJEN2kGb- zz9t{bNB}>`ClT7|b~hRi;7vU=4+?dj!(%HdhH6hiUAVbe1P-&-kcU}wh_yzvR^%y_ zGF72-p2w}MSv=W4eDu3sK;M4ObE(gr2!!hB(mZ#->lL^eB4@Xb79FHC>*#U?zEpu< zslc!Pj-S`umuFnz5%Q%HZUtW$p04k#Se{)EVN>gF{?CSgdzNf`HDvj3 zW^|2P`Qn`0;+ALa7!;^|W^KD#{;mbg>hiTcFV$BAE*Zi#@Y6p#d3Q`aJy~w=_0|sq Vx|8STzg5AnnZJq;I@pZ3{9o6fAd~ 20|90r40 +83I9*Device_Handle 20|42r29 +85i4*Error_Handle{83I9} 20|93r33 +88i4*Max_Name_Length{natural} 20|39r42 +92U14*Init 20|65s15 +117V13*Fetch_UUID{83I9} 20|92s30 +130U14*Fetch_Name 20|94s21 +X 13 interfac.ads +18M9*Unsigned_32 +19M9*Unsigned_64 +X 19 kernel_main.ads +17K9*Kernel_Main 26l5 26e16 20|34b14 224l5 224t16 +25U14*Entrypoint 25>26 20|35b14 223l8 223t18 +25a26 Cmdline{string} 20|35b26 77r38 81r38 89r11 100r14 112r11 121r11 179r11 +X 20 kernel_main.adb +36p7 Init_Path{34|19P9} 114m10 138r30 165r33 167r55 +37p7 Init_Args{34|22P9} 137m13 138r13 156r16 167m10 168r52 181r10 194r17 +. 194r59 198r30 +38a7 Init_Env{34|21A9} 195r17 +39a7 Value{string} 89m47 91r53 92r42 94m43 96r56 100m45 103r52 104r21 106r54 +. 112m42 114r35 121m46 130r22 141r30 142r19 143r31 149r22 150r22 157r31 165r55 +. 179m42 181r39 184r28 +40i7 Value_Len{natural} 89m61 90r20 91r65 92r54 94m50 96r68 100m59 102r20 +. 103r64 104r33 106r66 112m56 113r20 114r47 121m60 122r20 130r34 141r42 142r31 +. 143r43 149r34 165r67 179m56 180r20 181r51 184r40 +41b7 Found{boolean} 89m54 90r10 100m52 102r10 104m64 105r17 112m49 113r10 +. 121m53 122r10 172m61 173r14 179m49 180r10 +42i7 Init_Dev{11|83I9} 92m10 93r13 94r33 +43i7 Init_FS{39|74I9} 185m28 194r40 202m34 209r52 213r20 +44m7 Init_Ino{39|28M9} 186m28 194r49 203m34 209r61 213r29 +45i7 Init_PID{38|33I9} 193m13 196r16 198r20 209r42 +46e7 Success{39|234E9} 187m28 192r13 204m34 +47a7 Init_Stdin{string} 195r27 +48a7 Init_Stdout{string} 195r39 195r52 +124i13 Arg_Count{natural} 132m19 132r32 135m13 135r26 137r66 +125i13 First_Idx{natural} 140m13 143r19 148r28 157r38 159m16 +126i13 Last_Idx{natural} 141m13 142r50 148m16 149r53 150r29 153m19 153r31 +. 157r51 159r29 +127i13 Arg_Len{natural} 147m16 152m19 152r31 +128i13 List_Idx{natural} 139m13 156r27 158m16 158r29 +130e17 C=130:17{character} 131r19 +161L12 END_PARSE 144r24 +X 21 lib.ads +19K9*Lib 20|22r6 23r6 24r6 30r6 54r7 58r7 59r7 73r10 77r10 77r47 78r10 81r10 +. 81r47 83r10 88r7 89r20 91r10 96r13 99r10 100r23 103r10 106r13 111r7 112r20 +. 116r10 120r7 121r20 164r10 168r10 174r10 178r7 179r20 211r16 215r13 218r10 +. 21|35e8 +X 22 lib-cmdline.ads +17K13*Cmdline 20|22w10 77r14 77r51 81r14 81r51 88r11 89r24 99r14 100r27 111r11 +. 112r24 120r11 121r24 178r11 179r24 22|54e16 +23a4*Root_Key{string} 20|100r35 +24a4*Root_UUID_Key{string} 20|89r32 +25a4*Init_Key{string} 20|112r32 179r32 +26a4*Init_Arg_Key{string} 20|121r32 +27a4*No_Program_ASLR{string} 20|77r59 +28a4*No_Location_ASLR{string} 20|81r59 +34U14*Get_Key_Value 20|88s19 99s22 111s19 120s19 178s19 +45V13*Is_Key_Present{boolean} 20|77s22 81s22 +X 23 lib-messages.ads +21K13*Messages 20|23w10 54r11 58r11 59r11 78r14 83r14 91r14 96r17 103r14 +. 106r17 164r14 168r14 23|103e17 +31U14*Enable_Logging 20|54s20 +41U14*Put_Line 20|58s20 59s20 78s23 83s23 91s23 96s26 103s23 106s26 164s23 +. 168s23 +X 24 lib-panic.ads +21K13*Panic 20|24w10 73r14 116r14 174r14 211r20 215r17 218r14 24|39e14 +32U14*Hard_Panic 20|73s20 116s20 174s20 211s26 215s23 218s20 +X 25 lib-runtime.ads +23K13*Runtime 20|30w10 31r26 25|45e16 +X 28 networking.ads +20K9*Networking 20|29r6 64r7 28|55e15 +X 29 networking-arp.ads +17K20*ARP 20|29w17 64r18 29|86e19 +25U14*Initialize 20|64s22 +X 30 scheduler.ads +25K9*Scheduler 20|28w6 72r14 222r7 30|183e14 +33V13*Init{boolean} 20|72s24 +37U14*Idle_Core 20|222s17 +X 34 userland.ads +17K9*Userland 20|25r6 26r6 26r28 27w6 36r21 37r21 38r21 63r7 79r10 84r10 +. 137r34 167r27 193r25 197r16 209r16 34|23e13 +19P9*String_Acc(string) 20|36r30 +20A9*Argument_Arr(19P9) 20|137r43 167r36 +21A9*Environment_Arr(19P9) 20|38r30 +22P9*Argument_Arr_Acc(20A9) 20|37r30 +X 36 userland-loader.ads +20K18*Loader 20|25w15 79r19 193r34 36|65e20 +23U14*Disable_ASLR 20|79s26 +29V13*Start_Program{38|33I9} 20|193s41 +X 38 userland-process.ads +28K18*Process 20|26w15 26r37 63r16 84r19 197r25 209r25 38|677e21 +33I9*PID 20|45r21 +34i4*Error_PID{33I9} 20|196r28 +146U14*Init 20|63s24 +149U14*Disable_ASLR 20|84s27 +418U14*Set_CWD 20|209s33 +443U14*Set_Identifier 20|197s33 +X 39 vfs.ads +24K9*VFS 20|21w6 21r15 43r21 44r21 46r21 66r7 104r10 172r7 172r35 192r23 +. 39|674e8 +28M9*File_Inode_Number<13|19M9> 20|44r25 +73n23*FS_DEV{73E9} 20|172r39 +74I9*FS_Handle 20|43r25 +79U14*Init 20|66s11 +87U14*Mount 20|104s14 +104U14*Mount 20|172s11 +234E9*FS_Status 20|46r25 39|242e16 +235n8*FS_Success{234E9} 20|192r27 +359U14*Close 20|213s13 +593U14*Open 20|183s10 200s16 +594a8 Path{string} 20|184r14 201r20 +595i8 Key{74I9} 20|185r14 202r20 +596m8 Ino{28M9} 20|186r14 203r20 +597e8 Success{234E9} 20|187r14 204r20 +598m8 User{13|18M9} 20|188r14 205r20 +599b8 Want_Read{boolean} 20|189r14 206r20 +600b8 Want_Write{boolean} 20|190r14 207r20 + diff --git a/obj/kernel_main.o b/obj/kernel_main.o new file mode 100644 index 0000000000000000000000000000000000000000..1c60b429457ba7f047929d7ca11940312ca1a06b GIT binary patch literal 59072 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 literal 0 HcmV?d00001 diff --git a/obj/lib-alignment.adb.stderr b/obj/lib-alignment.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/lib-alignment.adb.stdout b/obj/lib-alignment.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/lib-alignment.ali b/obj/lib-alignment.ali new file mode 100644 index 0000000..8ef871a --- /dev/null +++ b/obj/lib-alignment.ali @@ -0,0 +1,84 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.alignment%b lib-alignment.adb 0634991c NE OO PK GE +W lib%s lib.adb lib.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.adb s-stoele.ali + +U lib.alignment%s lib-alignment.ads e57d5fee BN NE OO PU PK GE +W lib%s lib.adb lib.ali + +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-alignment.ads 20241115151036 68e8a917 lib.alignment%s +D lib-alignment.adb 20241115151036 a3b617fd lib.alignment%b +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [alignment lib 19 13 none] +X 1 lib.ads +19K9*Lib 35e8 2|19r9 43r5 3|19r14 41r5 +X 2 lib-alignment.ads +18M9 T 27r42 27r52 35r44 35r54 40r50 40r60 41r49 3|23r42 23r52 27r14 30r44 +. 30r54 34r14 37r50 37r60 +19k13*Alignment 1|19k9 2|18z9 43l9 43e18 3|19b18 41l9 41t18 +27V13*Align_Up{18M9} 27>23 27>30 29r20 3|23b13 28l8 28t16 +27*23 Value{18M9} 3|23b23 24r61 +27*30 Alignment{18M9} 28r20 28r40 28r55 29r40 3|23b30 25r61 +35V13*Align_Down{18M9} 35>25 35>32 37r20 3|30b13 35l8 35t18 +35*25 Value{18M9} 3|30b25 31r61 +35*32 Alignment{18M9} 36r20 36r40 36r55 37r42 3|30b32 32r61 +40V13*Divide_Round_Up{18M9} 40>30 40>40 42r20 3|37b13 40l8 40t23 +40*30 Dividend{18M9} 41r21 3|37b30 39r15 +40*40 Divisor{18M9} 41r33 41r62 42r47 3|37b40 39r27 39r43 +X 3 lib-alignment.adb +24m7 Value2{5|49M9} 27r18 +25m7 Align2{5|49M9} 27r27 27r48 +31m7 Value2{5|49M9} 34r17 +32m7 Align2{5|49M9} 34r33 +X 4 system.ads +11K9*System 3|17r6 17r35 4|73e11 +X 5 s-stoele.ads +11K16*Storage_Elements 3|17w13 17r42 5|60e28 +49M9*Integer_Address 3|24r25 24r44 25r25 25r44 31r25 31r44 32r25 32r44 + diff --git a/obj/lib-alignment.o b/obj/lib-alignment.o new file mode 100644 index 0000000000000000000000000000000000000000..761ff439942a6f1cd3911e67c0ef5902a39a8331 GIT binary patch literal 2008 zcmbVL-D=c86rSz2T2Vpijo{5%5EV?ao0e(|kzKbx7Pi}BS3wY#$?P;cZ6*mb6K%cF z$Ixf+?Zg}J^h`3-mUIKsf#jU?&H3icoS$!7gYCIS1KHI;ztM$dQG|ZXm%85T7HSvW zMR(B7@Lj7n!L81!>$~liv+uW@D8cG8E@iLf9K9VK2HrH~)Z>gyF^xTfGpW*q9*Fdq z66G4YU7m`ZL)s8^E!_XnF7vKsZ4Ho=eKr~ zG>MYjO-1D868L$Rr9!z=#p82!PmpODQZPwAt*tsS<1C>U4uipde}6dm5NzXE((>UM zBQ1wR1_X`qDX2JPL7c6vn(LClQ#|u_hP{z9+S)sC+Iso!Xz$>{~3q=S&>x{XdwZ~X% zL~BLFQYnKLI_G)Z$=XHp*8X&V&!b;|XE`)yP6k3vG&jo~@MaBehN-gKL<<$9G@Ix~ z4Zc`|->kuJUBzeQ-j!!u;Sjk}iBe9jrs%0cuAVjIhEjq`!#oLMNt>ZT8=bwi-NjXDZ#>AQF--(*FzoxP1mxTxo*vI)e1f`{Ava3_&V0*^#lxE zo$K7 35>7 36b30 38r35 39r35 40r35 41r35 +34m7 Ptr{4|25M9} +35i7 Model{29I12} +38V13*Atomic_Load_8[33]{1|16M9} +39V13*Atomic_Load_16[33]{1|17M9} +40V13*Atomic_Load_32[33]{1|18M9} +41V13*Atomic_Load_64[33]{1|19M9} +44M12 Atomic_Type2 47r15 48r48 +45v13*Atomic_Fetch_Add 46>7 47>7 48>7 49b30 +46m7 Ptr{4|25M9} +47*7 Val{44M12} +48i7 Model{29I12} +52M12 Atomic_Type3 55r15 56r48 +53v13*Atomic_Fetch_Sub 54>7 55>7 56>7 57b30 +54m7 Ptr{4|25M9} +55*7 Val{52M12} +56i7 Model{29I12} +59V13*Atomic_Test_And_Set{boolean} 60>7 61>7 62b30 +60m7 Pointer{4|25M9} +61i7 Model{29I12} +64U14*Atomic_Clear 65>7 66>7 67b30 +65m7 Pointer{4|25M9} +66i7 Model{29I12} +X 4 system.ads +11K9*System 3|17w6 34r15 46r15 54r15 60r17 65r17 4|73e11 +25M9*Address 3|34r22 46r22 54r22 60r24 65r24 + diff --git a/obj/lib-atomic.o b/obj/lib-atomic.o new file mode 100644 index 0000000000000000000000000000000000000000..510926724250295966db1d395db1509bb79b2ca2 GIT binary patch literal 4376 zcmbtX&2Jk;6dz|DC~}*o1o~a#MEyd-ySC$|O)8hTA1M)T5;XzJ0k-4y#NO7s>+Y^g z3ql}HR9rxS1Q!Gn9FUN>@gH#Ek3d{GA|x&x;Jx`+ug4pN;7OkM-tT?P+u517<9Dt# zS0{2gq9{jxCqqr4gxuOIWVEetafQr~C&@P;PmX!M_Cl5P z+?H+AIPhG@wms(A)VXJetVb}Q!@^95fg7@MgA@4Cz++_KyZ2cb(VnexWKO$s>bGPmX0JLdLOA(k|SUu2p20oWl7}mwEuF1L9smJQ`N}Ct+v8yk` zibIO}e5Xto&X=8~#BzDi*>You>BezCTDFp^O+WBE{=f{vjx~rNe$ej+VQh9|ua`tO zLZ>UH4Bg1NzgR2vT+j8{(4pDfxU#X{e6_wxdl3^4-glj1$%7SuH%A|UNLy~b*I%s3 za-F&rdwuKrdSkn^eeK3(sf<)Lw{L6?J^tO&N5LR;nAHzy$D@%++b}anvxw2HLRu-^Gc-DFd&**y8vEOu^D1>o``3`f5X~~)3#8~hvi9-VuMqmqC zcam}Fhx;$>r>W%nl`G4|v#=MRl^c;XUVyX9SDNH5fta73(9pzWYtmy3uw;=TI`){!Adih<2pEKS>@k}` zo*2V~KeX5kGKl<`Xf}gD`_*Wg>wC%kF8JA9@N>K1S2g@;u8%+ODUKJ&e%_sjK_xDZ z*I$!3ejw6xkt^ftv&QiPsid7j-jw*K8vcsJf7bBVC9c7QN&Iciz(2I4K>pD1Nc!K^ z@V6v>Q^Vhr_>zV{lK6KT{*lBFYxw69|53xg;yS-kXcpXuBbSWCZjk+noCw;HHk;)l zF`I4H8gy*hYK8268T7{1YGpxir6yiI=%x~^3K!{F6WTe!76m&mSVbBy2z5!KDtSff zm{8Q>`a1!11$C{!Z724=coOx*h#yEEj=&8}5aLQkdsT4k!!o`^o zfI458U*$xLCCofO+>#Q)3lI|er{8s*qXNf^l%mU0Kz~&mLK`Xkn3R!)DLj4F)IP^N zC!`Ou_oa;ZGg3zOv6K;?l`^s~q>Ok`%E(lQKzuHRtGAzv2M2Dp)e=zMEjtF?6;hSVSd7y6=l%%c}pZyb`E7v3|T&==HY& z({lnuHYB)=N{Vz}8*EwgugLjt%UGNrmsFp>4;bbw!!J#bFba0L|bA&2>C@ie$Tbxpx2Liv*N#$@BfEkD3|p3zX4U; B2gd*a literal 0 HcmV?d00001 diff --git a/obj/lib-cmdline.adb.stderr b/obj/lib-cmdline.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/lib-cmdline.adb.stdout b/obj/lib-cmdline.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/lib-cmdline.ali b/obj/lib-cmdline.ali new file mode 100644 index 0000000..942ee5a --- /dev/null +++ b/obj/lib-cmdline.ali @@ -0,0 +1,95 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.cmdline%b lib-cmdline.adb 5d6c1fd0 NE OO PK +W lib%s lib.adb lib.ali + +U lib.cmdline%s lib-cmdline.ads fc895ccf NE OO PK +W lib%s lib.adb lib.ali + +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-cmdline.ads 20241115151036 711caa36 lib.cmdline%s +D lib-cmdline.adb 20241115151036 2c70b5e6 lib.cmdline%b +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [get_key_value lib__cmdline 34 14 none] +G c Z s b [is_key_present lib__cmdline 45 13 none] +G c Z s b [find_key lib__cmdline 50 14 none] +X 1 lib.ads +19K9*Lib 35e8 2|17r9 54r5 3|17r14 115r5 +X 2 lib-cmdline.ads +17K13*Cmdline 1|19k9 2|50E14 54l9 54e16 3|17b18 115l9 115t16 +23a4*Root_Key{string} +24a4*Root_UUID_Key{string} +25a4*Init_Key{string} +26a4*Init_Arg_Key{string} +27a4*No_Program_ASLR{string} +28a4*No_Location_ASLR{string} +34U14*Get_Key_Value 35>8 35>17 36<8 37<8 38<8 3|21b14 86l8 86t21 +35a8 Cmdline{string} 3|22b8 33r17 39r10 39r44 44r10 45r29 55r13 60r13 64r16 +. 70r37 +35a17 Key{string} 39r19 3|22b17 33r26 +36a8 Returned{string} 39r39 3|23b8 29r36 31m7 56r13 70m10 +37b8 Found{boolean} 3|24b8 33m31 34r14 79m7 84m7 +38i8 Length{natural} 3|25b8 53m7 72m10 72r26 80m7 85m7 +45V13*Is_Key_Present{boolean} 45>29 45>38 3|88b13 94l8 94t22 +45a29 Cmdline{string} 46r19 3|88b29 92r17 +45a38 Key{string} 46r43 3|88b38 92r26 +50U14 Find_Key 51>8 51>17 52<8 53<8 3|33s7 92s7 96b14 114l8 114t16 +51a8 Cmdline{string} 3|97b8 103r21 104r24 105r19 +51a17 Key{string} 3|97b17 103r38 105r13 105r56 107r40 +52b8 Found{boolean} 3|98b8 106m13 112m7 +53i8 End_Index{natural} 3|99b8 107m13 113m7 +X 3 lib-cmdline.adb +27i7 Last_Index{integer} 33m38 38m7 38r21 39r25 39r53 43m7 43r21 44r25 45r38 +. 47m13 47r27 55r29 60r22 64r25 70r46 73m10 73r26 +28b7 Do_Until_Quotes{boolean} 45m10 46r13 50m10 61r20 65r16 +29i7 Returned_Idx{natural} 56r29 70r20 71m10 71r26 +78L6 Not_Found 35r15 +83L6 Found_But_No_Value 40r15 57r18 +89b7 Found{boolean} 92m31 93r14 +90i7 Discard{natural} 92m38 +101i7 Curr_Index{integer} 104m10 105r28 105r42 107r26 +103i11 I{integer} 104r41 + diff --git a/obj/lib-cmdline.o b/obj/lib-cmdline.o new file mode 100644 index 0000000000000000000000000000000000000000..44f92683e691720d999a10265c7254b38bba1ee5 GIT binary patch literal 24456 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 b?84wga{I5Qx>D_24 12|35b14 66l8 66t16 +41a24 Message{string} 42r19 12|35b24 44r20 44r44 +50U14*Dump_Logs 50<25 50<46 12|68b14 89l8 89t17 +50a25 Buffer{string} 51r41 12|68b25 73m16 73r16 78r10 78r36 83m10 83r18 83r40 +50i46 Length{natural} 12|68b46 76m7 78r26 +55A12*Translated_String{string} 65r22 76r22 12|93r22 103r22 123r17 +56I12*Translated_Length{natural} 66r22 77r22 12|94r22 104r22 +63U14*Image 64>8 65<8 66<8 67>8 12|91b14 99l8 99t13 +64m8 Value{9|18M9} 12|92b8 98r27 +65a8 Buffer{55A12} 12|93b8 98m35 +66i8 Length{56I12} 12|94b8 98m43 +67b8 Use_Hex{boolean} 12|95b8 98r51 +74U14*Image 75>8 76<8 77<8 78>8 12|98s7 101b14 120l8 120t13 128s7 +75m8 Value{9|19M9} 12|102b8 108r44 +76a8 Buffer{55A12} 12|103b8 110r44 112m7 113r44 114r44 115m10 119r17 +77i8 Length{56I12} 12|104b8 119m7 +78b8 Use_Hex{boolean} 12|105b8 109r48 +86A9 Message_Buffer(string) 87r38 93r23 12|30r30 +87P9 Message_Buffer_Acc(86A9) 95r23 +89r4 Messages_Mutex{13|22R9} 12|22r8 29m34 29r34 32m36 32r36 46m34 46r34 +. 65m36 65r36 71m34 71r34 88m36 88r36 +91i4 Curr_Entry{natural} 12|22r24 50r27 53r28 60m7 60r21 61r10 62m10 +93a4 Small_Log_Buffer{86A9} 12|22r36 31r29 31r57 52r22 53m10 +95p4 Log_Ring_Buffer{87P9} 102r47 12|22r54 30m7 31r7 48r10 49r22 50r10 76r17 +. 82r19 +98A12 Timestamp_Str{string} 99r45 12|122r45 +99U14 Get_Timestamp 99<29 12|40s7 122b14 130l8 130t21 +99a29 Timestamp{98A12} 12|122b29 129m7 +X 12 lib-messages.adb +36a7 Timestamp{string} 40m22 42r26 +37a7 Final{string} 41m7 42m7 43m7 44m7 50r42 53r43 56r25 +38i7 Last_Idx{natural} 49m10 52m10 61r23 +69i7 Idx{natural} 83r33 83r55 85m10 85r17 +73e11 C=73:16{character} 74r10 +82a11 Line=82:11{string} 84r13 +107a7 Conversion{string} 115r30 +108m7 To_Convert{9|19M9} 113r13 115r51 116m10 116r30 +109m7 Base{9|19M9} 115r66 116r43 +110i7 Current{natural} 113r33 114r33 115r18 117m10 117r30 119r33 +123a7 Stp{11|55A12} 128m19 129r20 129r31 +124i7 Stp_Len{natural} 128m24 +125m7 Sec{9|19M9} 127m39 128r14 +125m12 NSec{9|19M9} 127m44 +X 13 lib-synchronization.ads +20K13*Synchronization 11|19w10 19r35 12|29r11 32r11 46r11 65r11 71r11 88r11 +. 13|66e24 +22R9*Binary_Semaphore 11|89r31 13|57e14 +23r4*Unlocked_Semaphore{22R9} 11|89r51 +27U14*Seize 12|29s27 46s27 71s27 +31U14*Release 12|32s27 65s27 88s27 + diff --git a/obj/lib-messages.o b/obj/lib-messages.o new file mode 100644 index 0000000000000000000000000000000000000000..226a0126c223a1917db316c4f625a25629b04e06 GIT binary patch literal 50464 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±ZC^#|p_7{}e9og>ToDj;D;v`}Nmx z`MQx>omziFPYWr({WPcW+w0Fy=JMhv>0U0M+ee5?{r<%L^=#v>WSi43@9$EKzoGPB z>X+>Tzc=oCqQs|phbs5^z%cpRWg+D+!xsgb-lXMv^2=Wk5`X7DSL$9akN8K>e?R`q zLh8R@iYvd}CCN{}{iSc`Tg~-e6dTCpHfaz+$WcOQbd{0a(T^=_q9I> zDgPjsm*cPaNdL+Fi&Q?__B)p^{+03$4E>K?f|Qr-7uy%@`#Z%?()Z@L+&lrC`tf6) zEHb9Ka~+y8#-(E^xr4-h{n$PE#~zf}&JkS_vi_mLgxyoN^6MY9i~0BLT^^r){QnI? C$OaMs literal 0 HcmV?d00001 diff --git a/obj/lib-panic.adb.stderr b/obj/lib-panic.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/lib-panic.adb.stdout b/obj/lib-panic.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/lib-panic.ali b/obj/lib-panic.ali new file mode 100644 index 0000000..234157b --- /dev/null +++ b/obj/lib-panic.ali @@ -0,0 +1,126 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.panic%b lib-panic.adb 4d5d208b NE OO PK +W arch%s arch.ads arch.ali +W arch.hooks%s arch-hooks.adb arch-hooks.ali +W arch.snippets%s arch-snippets.adb arch-snippets.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali + +U lib.panic%s lib-panic.ads 759189ea NE OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D a-chlat1.ads 20241115151050 8791f8e7 ada.characters.latin_1%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-clocks.ads 20241115151036 f76b002b arch.clocks%s +D arch-hooks.ads 20241115151036 2bd12b55 arch.hooks%s +D arch-snippets.ads 20241115151036 3613a65c arch.snippets%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-messages.ads 20241115151036 4282fa77 lib.messages%s +D lib-panic.ads 20241115151036 ca7c7da8 lib.panic%s +D lib-panic.adb 20241115151036 06ea6c1d lib.panic%b +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [hard_panic lib__panic 32 14 none] +G r c none [hard_panic lib__panic 32 14 none] [seize lib__synchronization 27 14 none] +G r c none [hard_panic lib__panic 32 14 none] [panic_smp_hook arch__hooks 26 14 none] +G r c none [hard_panic lib__panic 32 14 none] [put_line lib__messages 41 14 none] +G r c none [hard_panic lib__panic 32 14 none] [hcf arch__snippets 26 14 none] +X 1 ada.ads +11K9*Ada 12e8 11|19r6 26r38 27r38 +X 2 a-charac.ads +11K13*Characters 12e19 11|19r10 26r42 27r42 +X 3 a-chlat1.ads +11K24*Latin_1 247e27 11|19w21 26r53 27r53 +40e4*ESC{character} 11|26r61 27r61 +X 4 arch.ads +20K9*Arch 52e9 11|18r6 36r35 12|17r6 18r6 33r7 46r7 +X 5 arch-clocks.ads +19K14*Clocks 45e16 11|18w11 36r40 +20@23*Monotonic_Clock_State 11|36r47 +X 6 arch-hooks.ads +17K14*Hooks 33e15 12|17w11 33r12 +26U14*Panic_SMP_Hook 12|33s18 +X 7 arch-snippets.ads +20K14*Snippets 81e18 12|18w11 46r12 +26U14*HCF 12|46s21 +X 9 lib.ads +19K9*Lib 35e8 11|17r6 21r9 39r5 12|19r6 21r14 48r5 +X 10 lib-messages.ads +21K13*Messages 103e17 11|17w10 34r28 37r22 12|36r7 37r7 38r7 39r7 40r7 41r7 +. 42r7 43r7 44r7 45r7 +22@22*Message_State 11|37r31 +26N4*Max_Line 11|34r37 +41U14*Put_Line 12|36s16 37s16 38s16 39s16 40s16 41s16 42s16 43s16 44s16 45s16 +X 11 lib-panic.ads +21K13*Panic 9|19k9 11|39l9 39e14 12|21b18 48l9 48t14 +22@22*Panic_State 23r22 36r22 12|22r22 +26a4*HP{string} 28r38 12|36r26 37r26 38r26 39r26 40r26 41r26 42r26 43r26 +. 44r26 +27a4*RC{string} 34r70 12|36r76 37r76 38r76 39r76 40r76 41r76 42r76 43r76 +. 44r76 45r51 +28a4*Panic_Header{string} 34r48 12|45r26 +32U14*Hard_Panic 32>26 12|27b14 47l8 47t18 +32a26 Message{string} 34r10 12|27b26 45r41 +X 12 lib-panic.adb +24r4 Panic_Mutex{13|22R9} 22r37 30m30 30r30 +X 13 lib-synchronization.ads +20K13*Synchronization 12|19w10 24r26 25r7 30r7 13|66e24 +22R9*Binary_Semaphore 12|24r42 13|57e14 +23r4*Unlocked_Semaphore{22R9} 12|25r23 +27U14*Seize 12|30s23 + diff --git a/obj/lib-panic.o b/obj/lib-panic.o new file mode 100644 index 0000000000000000000000000000000000000000..59e70061fb24f66526ad54219fdecb9181f7c69e GIT binary patch literal 16128 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 eQg7mfrPStBy6xkdawOWX0TVw;-*6n9qWT}w 12|30r68 13|38r68 +31M9*size_t 12|30r53 34r24 38r24 43r16 13|38r53 56r24 69r24 91r16 +X 9 lib.ads +19K9*Lib 35e8 12|23r9 45r5 13|17r6 18r6 22r14 29r34 33r7 101r5 +23V13*C_String_Length{natural} 13|29s38 +X 10 lib-messages.ads +21K13*Messages 103e17 13|17w10 28r21 32r7 +55A12*Translated_String{string} 13|28r30 +63U14*Image 13|32s16 +X 11 lib-panic.ads +21K13*Panic 39e14 13|18w10 33r11 +32U14*Hard_Panic 13|33s17 +X 12 lib-runtime.ads +23K13*Runtime 9|19k9 12|45l9 45e16 13|22b18 101l9 101t16 +25U14*Last_Chance_Handler 25>35 25>58 13|26b14 36l8 36t27 +25m35 File{15|25M9} 13|26b35 29r55 30r26 +25i58 Line{integer} 13|26b58 32r36 +30V13*MemCmp{8|19I9} 30>21 30>25 30>46 13|38b13 52l8 52t14 +30m21 S1{15|25M9} 13|38b21 39r62 +30m25 S2{15|25M9} 13|38b25 40r62 +30m46 Size{8|31M9} 13|38b46 39r26 40r26 42r21 +32V13*MemCpy{15|25M9} 33>8 33>15 34>8 13|54b13 65l8 65t14 +33m8 Desto{15|25M9} 13|55b8 58r61 64r14 +33m15 Source{15|25M9} 13|55b15 59r61 +34m8 Size{8|31M9} 13|56b8 58r25 59r25 61r21 +36V13*MemMove{15|25M9} 37>8 37>15 38>8 13|67b13 86l8 86t15 +37m8 Desto{15|25M9} 13|68b8 71r61 73r60 85r14 +37m15 Source{15|25M9} 13|68b15 72r61 74r60 +38m8 Size{8|31M9} 13|69b8 71r25 72r25 +40V13*MemSet{15|25M9} 41>8 42>8 43>8 13|88b13 100l8 100t14 +41m8 Desto{15|25M9} 13|89b8 94r61 99r14 +42i8 Value{integer} 13|90b8 93r48 +43m8 Size{8|31M9} 13|91b8 94r25 +X 13 lib-runtime.adb +27i7 Line_Len{natural} 32m56 35r43 +28a7 Line_Buffer{10|55A12} 32m43 35r11 35r24 35r59 +29a7 File_String{string} 34r43 +39a7 Str1(7|16M9) 43r13 44r16 +40a7 Str2(7|16M9) 43r25 44r27 +42m11 I{8|31M9} 43r19 43r31 44r22 44r33 +58a7 Dst(7|16M9) 62m10 +59a7 Src(7|16M9) 62r21 +61m11 I{8|31M9} 62r15 62r26 +71a7 Dst(7|16M9) 77r19 78m13 81r27 82m13 +72a7 Src(7|16M9) 78r24 82r24 +73m7 Desto_Int{16|49M9} 76r23 80r26 +74m7 Source_Int{16|49M9} 76r10 80r13 +77m14 I{8|31M9} 78r18 78r29 +81m14 I{8|31M9} 82r18 82r29 +93m7 Val{7|16M9} 97r15 +94a7 Dst(7|16M9) 96m16 96r16 +96m11 C=96:16{7|16M9} 97r10 +X 15 system.ads +11K9*System 12|17w6 25r42 30r30 33r24 34r39 37r24 38r39 41r16 43r31 13|19r6 +. 19r35 26r42 38r30 55r24 56r39 68r24 69r39 89r16 91r31 15|73e11 +25M9*Address 12|25r49 30r37 33r31 34r46 37r31 38r46 41r23 43r38 13|26r49 +. 38r37 55r31 56r46 68r31 69r46 89r23 91r38 +X 16 s-stoele.ads +11K16*Storage_Elements 13|19w13 19r42 16|60e28 +49M9*Integer_Address 13|73r29 74r29 +56V13*To_Integer{49M9} 13|73s48 74s48 + diff --git a/obj/lib-runtime.o b/obj/lib-runtime.o new file mode 100644 index 0000000000000000000000000000000000000000..ca898f28fc71845b8136c9d23495a1ca07b12017 GIT binary patch literal 24840 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 7|54b14 63l8 63t15 +50r7 Lock{38R9} 7|55b7 59m21 59r21 +51b7 Do_Not_Lift{boolean} 7|56b7 60r14 +56m7*Is_Locked{3|16M9} 7|28m48 32m37 38m31 +61m7*Is_Locked{3|16M9} 7|45m43 50m32 59m26 +65U14 Poll_Until_Zero 65>31 7|32s10 50s10 65b14 70l8 70t23 +65m31 Address{9|25M9} 7|65b31 67r28 +X 9 system.ads +11K9*System 6|18w6 65r41 7|65r41 9|73e11 +25M9*Address 6|65r48 7|65r48 + diff --git a/obj/lib-synchronization.o b/obj/lib-synchronization.o new file mode 100644 index 0000000000000000000000000000000000000000..78c16eb1e7bfc1e3c9c8c7643ae2cb01552f15f0 GIT binary patch literal 17720 zcmcIrdvKi9b-$lhvh}d!hXl64#_I=Q16n=&z&0pIYfIQ5jEjwfG0A$hTFVR4?y|cA z+vOn~NFjw5FfETbi6IS1rY%g{X_A(78k*@8($F+XGbC+iAT2}rBW>vfLfa%m&+p!I zc8~6UpK;Rm&g^&3{oUXBopbMZzqfSv@aRZG5EvmpL1KgVr207nt)+ zFnoLlzoWNa^;YN6jb_&y=Puo1?%TQQ?F)W1=bel0ec{PV-om z-g|HU1AqOoD;v$vUwxc({$<9PSN{B&VngMh#*?{ca>ME4GxN=Y*lN>cK3G*0W~qNm zP(=B!*Q6B{<&hVU&n%7^Ght$8XyK~Y=e%*zz3Wbi7c}1e=`#l##)pFAlxwvdY%r8! z&c``67U^KIysqAX&C&!1Y{B?S^LS70beIY@)4c!DcID zS}18(EOx~~YSb{BPB7FM{3*d5;57`bm_*%(%_eMg2~IZ9zO^Cx=fXs>&GmCTxH;dU z#thToO{>i?fN5fLiDHG<2}kPSZD(i0Vq@kc%oR&7Uz+a#9)kl3&Fu_g z9c?QE$6VP0*XH)B>&m%1J2$VS{8~2Du*RL8S1fH
  • J!X-EX5!fED!oRF_0VD_P2f5vKMML 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 n@Av5E$Hz5=QzWZaj_||M*S$_ZKIA=$73t*{8 39>18 4|32b14 44l8 44t17 +38m8 Seconds1{1|19M9} 4|33b8 37r10 38m10 40m10 40r22 43m18 +38m18 Nanoseconds1{1|19M9} 40r35 4|33b18 42m7 42r23 43m28 +39m8 Seconds2{1|19M9} 4|34b8 37r40 40r33 +39m18 Nanoseconds2{1|19M9} 4|34b18 42r38 +48U14*Substract 49=8 49=18 50>8 50>18 4|46b14 57l8 57t17 +49m8 Seconds1{1|19M9} 54r28 4|47b8 51m7 51r19 53m10 53r22 +49m18 Nanoseconds1{1|19M9} 52r25 54r38 55r35 4|47b18 52r10 54m10 54r41 56m7 +. 56r23 +50m8 Seconds2{1|19M9} 54r52 4|48b8 51r30 +50m18 Nanoseconds2{1|19M9} 53r25 54r62 4|48b18 52r25 56r38 +63V13*Is_Greater_Equal{boolean} 54s10 63>31 63>35 63>40 63>44 4|59b13 62l8 +. 62t24 +63m31 S1{1|19M9} 4|59b31 61r15 61r29 +63m35 NS1{1|19M9} 64r34 4|59b35 61r43 +63m40 S2{1|19M9} 4|59b40 61r20 61r34 +63m44 NS2{1|19M9} 64r58 4|59b44 61r50 +71N4 MSec_Per_Sec 73r48 +72N4 USec_Per_MSec 73r32 +73N4 USec_Per_Sec 76r13 4|22r66 29r38 54r26 +X 4 lib-time.adb +22m7 Nanosecond_Seconds{1|19M9} 24r40 25r31 + diff --git a/obj/lib-time.o b/obj/lib-time.o new file mode 100644 index 0000000000000000000000000000000000000000..bb48dfa634d091d97b1fac467b9bdf58ee08ac5b GIT binary patch literal 14536 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 Xcm3l#v0wWMKHQqW`)iXra@+qeqI2iA literal 0 HcmV?d00001 diff --git a/obj/lib.adb.stderr b/obj/lib.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/lib.adb.stdout b/obj/lib.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/lib.ali b/obj/lib.ali new file mode 100644 index 0000000..e15b4d6 --- /dev/null +++ b/obj/lib.ali @@ -0,0 +1,100 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib%b lib.adb d725bb73 NE OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.adb s-stoele.ali + +U lib%s lib.ads 4c321936 NE OO PU PK +W system%s system.ads system.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D a-chlat1.ads 20241115151050 8791f8e7 ada.characters.latin_1%s +D a-unccon.ads 20241115151050 13b8aaf3 ada.unchecked_conversion%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib.adb 20241115151036 104b929b lib%b +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D s-stoele.adb 20241115151050 c919feed system.storage_elements%b +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [c_string_length lib 23 13 none] +G c Z s b [least_common_multiple lib 27 13 none] +G c Z s b [greatest_common_divisor lib 32 13 none] +X 1 ada.ads +11K9*Ada 12e8 6|17r6 38r27 +X 2 a-charac.ads +11K13*Characters 12e19 6|17r10 38r31 +X 3 a-chlat1.ads +11K24*Latin_1 247e27 6|17w21 38r42 +13e4*NUL{character} 6|38r50 +X 5 lib.ads +19K9*Lib 35l5 35e8 6|20b14 65l5 65t8 +23V13*C_String_Length{natural} 23>30 6|30b13 43l8 43t23 +23m30 Addr{7|25M9} 24r19 6|30b30 36r32 +27V13*Least_Common_Multiple{integer} 27>36 27>42 6|45b13 51l8 51t29 +27i36 Val1{integer} 28r21 28r34 6|45b36 47r10 50r20 50r61 +27i42 Val2{integer} 29r21 29r34 6|45b42 47r22 50r27 50r67 +32V13*Greatest_Common_Divisor{integer} 32>38 32>44 34r20 6|50s36 53b13 64l8 +. 64t31 +32i38 Val1{integer} 33r20 6|53b38 54r22 +32i44 Val2{integer} 33r33 6|53b44 55r22 +X 6 lib.adb +31i7 Length{natural} 36r55 38r57 39m13 39r23 42r14 +35e13 C{character} 38r23 +54i7 M{integer} 59r15 60m10 63r14 +55i7 N{integer} 58r13 60r15 61m10 61r21 +56i7 T{integer} 59m10 61r15 +X 7 system.ads +11K9*System 5|17w6 17r18 24r27 6|18r6 18r35 7|73e11 +25M9*Address 5|23r37 6|30r37 +26m4*Null_Address{25M9} 5|24r34 +32V14*"="{boolean} 5|24r24 +X 8 s-stoele.ads +11K16*Storage_Elements 6|18w13 18r42 8|60e28 +12I9*Storage_Offset 6|36r39 +23V14*"+"{7|25M9} 6|36s37 + diff --git a/obj/lib.o b/obj/lib.o new file mode 100644 index 0000000000000000000000000000000000000000..93584fb1c3a9780322605afc2bbd5200686fe396 GIT binary patch literal 15128 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 WpDgNHWni$C{ZC^4-HL(IWq$!qlKc+< literal 0 HcmV?d00001 diff --git a/obj/memory-physical.adb.stderr b/obj/memory-physical.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/memory-physical.adb.stdout b/obj/memory-physical.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/memory-physical.ali b/obj/memory-physical.ali new file mode 100644 index 0000000..ecfd9b3 --- /dev/null +++ b/obj/memory-physical.ali @@ -0,0 +1,253 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U memory.physical%b memory-physical.adb 1e7c9979 NE OO PK +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W config%s config.ads config.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali +Z system.storage_elements%s s-stoele.adb s-stoele.ali +Z system.unsigned_types%s s-unstyp.ads s-unstyp.ali +W userland%s userland.ads userland.ali +W userland.oom_failure%s userland-oom_failure.adb userland-oom_failure.ali + +U memory.physical%s memory-physical.ads 14d8c788 NE OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali +W interfaces.c%s i-c.ads i-c.ali +W memory%s memory.ads memory.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D a-chlat1.ads 20241115151050 8791f8e7 ada.characters.latin_1%s +D a-unccon.ads 20241115151050 13b8aaf3 ada.unchecked_conversion%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-clocks.ads 20241115151036 f76b002b arch.clocks%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D config.ads 20241115151036 e56314eb config%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D i-c.ads 20241115151050 aa7a7c0b interfaces.c%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-alignment.ads 20241115151036 68e8a917 lib.alignment%s +D lib-alignment.adb 20241115151036 a3b617fd lib.alignment%b +D lib-messages.ads 20241115151036 4282fa77 lib.messages%s +D lib-panic.ads 20241115151036 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D memory-physical.ads 20241115151036 f22cd7a2 memory.physical%s +D memory-physical.adb 20241115151036 d87b6a63 memory.physical%b +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D s-stoele.adb 20241115151050 c919feed system.storage_elements%b +D s-unstyp.ads 20241115151050 34cdeecb system.unsigned_types%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-oom_failure.ads 20241115151036 8ec1521c userland.oom_failure%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [init_allocator memory__physical 23 14 none] +G c Z s b [alloc memory__physical 34 13 none] +G c Z s b [free memory__physical 40 14 none] +G c Z s b [get_statistics memory__physical 55 14 none] +G c Z s b [calculate_signature memory__physical 59 13 none] +G c Z s s [statisticsIP memory__physical 47 9 none] +G c Z b b [bitmapIP memory__physical 31 9 none] +G c Z b b [allocation_headerIP memory__physical 42 9 none] +G r c none [init_allocator memory__physical 23 14 none] [hard_panic lib__panic 32 14 none] +G r i none [alloc memory__physical 34 13 none] [alignment lib 19 13 none] +G r c none [alloc memory__physical 34 13 none] [hard_panic lib__panic 32 14 none] +G r c none [alloc memory__physical 34 13 none] [seize lib__synchronization 27 14 none] +G r c none [alloc memory__physical 34 13 none] [put_line lib__messages 41 14 none] +G r c none [alloc memory__physical 34 13 none] [release lib__synchronization 31 14 none] +G r c none [alloc memory__physical 34 13 none] [handle_failure userland__oom_failure 29 14 none] +G r c none [free memory__physical 40 14 none] [seize lib__synchronization 27 14 none] +G r c none [free memory__physical 40 14 none] [put_line lib__messages 41 14 none] +G r c none [free memory__physical 40 14 none] [release lib__synchronization 31 14 none] +G r c none [get_statistics memory__physical 55 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_statistics memory__physical 55 14 none] [release lib__synchronization 31 14 none] +X 5 arch.ads +20K9*Arch 52e9 18|17w6 17r16 23r39 19|21r6 28r37 52r39 57r25 73r25 99r28 +23n8*Memory_Free{22E9} 19|57r30 73r30 99r33 +30m7*Start{20|25M9} 19|62r72 75r46 77r34 105r18 109r59 +31i7*Length{21|16I12} 19|58r50 63r60 73r54 76r34 110r47 +32e7*MemType{22E9} 19|57r15 73r15 99r18 +34A9*Boot_Memory_Map(29R9) 18|23r44 19|52r44 +X 7 arch-mmu.ads +22K14*MMU 250e13 19|21w11 28r42 +49N7*Page_Size 19|28r46 +X 8 config.ads +17K9*Config 29e11 19|24w6 144r14 211r13 229r30 +28b4*Support_Alloc_Only{boolean} 19|144r21 211r20 229r37 +X 9 interfac.ads +11K9*Interfaces 120e15 18|18r6 34r25 40r30 19|17w6 17r22 121r25 134r30 222r30 +16M9*Unsigned_8 19|204r65 +19M9*Unsigned_64 19|31r26 35r36 38r36 70r24 90r18 92r38 106r32 107r32 109r32 +. 110r32 128r28 129r28 190r43 224r22 244r28 247r42 +X 10 i-c.ads +11K20*C 41e17 18|18w17 34r36 40r41 19|121r36 134r41 222r41 +31M9*size_t 18|34r38 40r43 19|121r38 134r43 222r43 +X 11 lib.ads +19K9*Lib 35e8 19|18r6 19r6 19r31 20r6 23r6 83r10 122r28 135r10 149r7 176r10 +. 178r10 180r10 182r10 196r7 241r10 250r13 253r10 259r7 264r7 +X 12 lib-alignment.ads +19k13*Alignment 43e18 19|20w10 122r32 +27V13 Align_Up{17|20M9} 19|142s35[122] +X 14 lib-messages.ads +21K13*Messages 103e17 19|23w10 178r14 250r17 +41U14*Put_Line 19|178s23 250s26 +X 15 lib-panic.ads +21K13*Panic 39e14 19|18w10 83r14 135r14 176r14 +32U14*Hard_Panic 19|83s20 135s20 176s20 +X 16 lib-synchronization.ads +20K13*Synchronization 66e24 19|19w10 19r35 149r11 180r14 182r14 196r11 241r14 +. 253r14 259r11 264r11 +22R9*Binary_Semaphore 57e14 19|39r31 +23r4*Unlocked_Semaphore{22R9} 19|39r51 +27U14*Seize 19|149s27 182s30 241s30 259s27 +31U14*Release 19|180s30 196s27 253s30 264s27 +X 17 memory.ads +19K9*Memory 36e11 18|20r9 34r53 48r19 49r19 50r19 60r5 19|27r14 34r50 36r36 +. 122r43 130r28 130r43 131r28 134r17 161r37 266r5 +20M9*Size 18|48r26 49r26 50r26 59r42 59r55 19|34r57 36r43 43r21 44r21 47r42 +. 47r55 58r42 62r25 62r33 63r25 63r33 71r24 73r46 122r50 130r35 130r50 131r35 +. 134r24 161r44 +23N4*Null_Address 19|37r51 82r27 +29N4*Memory_Offset 19|75r55 105r55 202r64 231r28 232r41 244r49 +35M12*Virtual_Address{21|49M9} 18|34r60 19|37r32 121r53 201r25 202r13 223r22 +. 223r41 +X 18 memory-physical.ads +20K16*Physical 17|19k9 18|59E13 60l12 60e20 19|27b21 266l12 266t20 +23U14*Init_Allocator 23>30 19|52b14 119l8 119t22 +23a30 Memmap{5|34A9} 19|52b30 56r16 62r51 62r59 63r39 63r47 72r16 98r19 +34V13*Alloc{17|35M12} 34>20 19|121b13 220l8 220t13 +34m20 Sz{10|31M9} 19|121b20 130r56 +40U14*Free 40>20 19|222b14 255l8 255t12 +40m20 Address{10|31M9} 19|222b20 223r58 +47R9*Statistics 51e14 55r42 19|257r42 +48m7*Total{17|20M9} 19|261m11 +49m7*Available{17|20M9} 19|262m11 +50m7*Free{17|20M9} 19|263m11 +55U14*Get_Statistics 55<30 19|257b14 265l8 265t22 +55r30 Stats{47R9} 19|257b30 260m7 +59V13 Calculate_Signature{17|20M9} 59>34 19|47b13 50l8 50t27 216s32 243s13 +59m34 Count{17|20M9} 19|47b34 49r14 +X 19 memory-physical.adb +28N4 Block_Size 70r53 114r53 115r33 142r51 143r36 195r63 202r50 204r50 217r26 +. 237r62 244r66 245r64 +29b4 Block_Free{boolean} 100r31 152r31 247r66 +30b4 Block_Used{boolean} 95r21 102r31 190r67 +31A9 Bitmap(boolean)<9|19M9> 88r24 124r21 225r22 +34m4 Total_Memory{17|20M9} 66m10 70r37 261r24 +34m18 Available_Memory{17|20M9} 65m10 262r24 +34m36 Free_Memory{17|20M9} 58m13 58r28 65r30 78m13 78r32 195m7 195r27 245m13 +. 245r28 263r24 +35m4 Block_Count{9|19M9} 70m7 71r30 88r37 124r34 151r40 225r35 +36m4 Bitmap_Length{17|20M9} 71m7 73r64 76r58 77r57 78r46 +37m4 Bitmap_Address{17|35M12} 75m13 82r10 89r50 105r38 125r47 226r38 +38m4 Bitmap_Last_Used{9|19M9} 151r16 169r10 170m10 194m7 +39r4 Alloc_Mutex{16|22R9} 149m34 149r34 180m39 180r39 182m37 182r37 196m36 +. 196r36 241m37 241r37 253m39 253r39 259m34 259r34 264m36 264r36 +42R9 Allocation_Header 45e14 203r19 239r19 +43m7*Block_Count{17|20M9} 215m17 243r41 245r50 246r34 +44m7*Signature{17|20M9} 216m17 243r63 +53i7 Adjusted_Length{21|16I12} 76m13 107r45 +54m7 Adjusted_Start{20|25M9} 77m13 106r57 +56r11 E=56:16{5|29R9} 57r13 58r48 +62m10 Sta{17|20M9} 66r30 +63m10 Len{17|20M9} 66r36 +72r11 E=72:16{5|29R9} 73r13 73r52 75r44 76r32 77r32 +88a10 Bitmap_Body{31A9} 89m14 89r14 94m22 94r22 114m16 +90m10 Index{9|19M9} 113r19 114r44 115m16 115r25 +91b10 Block_Value{boolean} 100m16 102m16 114r68 +92m10 Block_Start{9|19M9} 106m16 109m16 114r30 +92m23 Block_Length{9|19M9} 107m16 110m16 113r27 +94b14 Item=94:22{boolean} 95r13 +98r14 E=98:19{5|29R9} 99r16 105r16 109r57 110r45 +122K15 Align[12|19] 142r29 +124a7 Bitmap_Body{31A9} 125m11 125r11 152r13 169r30 170r30 190m10 +127b7 Did_OOM_Once{boolean} 175r10 179m10 +128m7 First_Found_Index{9|19M9} 153r16 153r46 155m16 183m10 190r23 194r27 +. 202r30 +129m7 Found_Count{9|19M9} 153r66 156m16 158m16 158r31 161r50 184m10 +130m7 Size{17|20M9} 134r10 136r13 137m10 142m7 142r45 143r29 +131m7 Blocks_To_Allocate{17|20M9} 143m7 145m10 145r32 161r16 189r21 195r42 +. 204r29 215r32 216r53 +150L6 Search_Blocks 171r15 185r15 +151m11 I{9|19M9} 152r26 153r41 155r37 +188L6 Fill_Bitmap 162r21 +189m11 I{17|20M9} 190r56 +201m10 Ret{17|35M12} 203r73 205r49 212r20 217r20 +203r10 Header{42R9} 214m13 +204a10 Data(9|16M9) 207m19 207r19 +207m14 V=207:19{9|16M9} 208r13 +223m7 Real_Address{17|35M12} 229r10 231r13 232m10 232r26 237r47 +224m7 Real_Block{9|19M9} 244m13 247r29 +225a7 Bitmap_Body{31A9} 247m16 +237m10 IAddr{21|49M9} 238r59 244r41 +238m10 SAddr{20|25M9} 239r61 +239r10 Header{42R9} 243r34 243r56 245r43 246r27 +246m17 I{17|20M9} 247r55 +X 20 system.ads +11K9*System 19|22w6 22r18 54r25 54r43 238r29 20|73e11 +25M9*Address 19|54r32 238r36 +26m4*Null_Address{25M9} 19|54r50 +32V14*"="{boolean} 19|105r24 +X 21 s-stoele.ads +12I9*Storage_Offset +16I12*Storage_Count{12I9} 19|53r25 76r43 77r42 +23V14*"+"{20|25M9} 19|77s40 +49M9*Integer_Address 19|237r28 +51V13*To_Address{20|25M9} 19|89s38 105s26 125s35 203s61 205s37 226s26 238s47 +56V13*To_Integer{49M9} 19|62s39 75s32 106s45 109s45 +X 24 userland.ads +17K9*Userland 19|25r6 181r10 24|23e13 +X 25 userland-oom_failure.ads +19K18*OOM_Failure 19|25w15 181r19 25|35e25 +29U14*Handle_Failure 19|181s31 + diff --git a/obj/memory-physical.o b/obj/memory-physical.o new file mode 100644 index 0000000000000000000000000000000000000000..8028f09ed3a025fa8287171fd4c07ab97ecc951d GIT binary patch literal 63832 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 X(f^u&kE!X>pZYha*y(Nb%m4oYMQ&mx literal 0 HcmV?d00001 diff --git a/obj/memory.ads.stderr b/obj/memory.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/memory.ads.stdout b/obj/memory.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/memory.ali b/obj/memory.ali new file mode 100644 index 0000000..58b0451 --- /dev/null +++ b/obj/memory.ali @@ -0,0 +1,66 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U memory%s memory.ads fe3c6749 NE OO PK +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.adb s-stoele.ali + +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 memory.ads +19K9*Memory 36l5 36e11 +20M9*Size 28r32 +23N4*Null_Address +28N4*Kernel_Offset 33r31 +29N4*Memory_Offset 33r47 +33N4*Physical_Max 34r59 +34M12*Physical_Address{3|49M9} +35M12*Virtual_Address{3|49M9} +X 2 system.ads +11K9*System 1|17r6 17r35 2|73e11 +X 3 s-stoele.ads +11K16*Storage_Elements 1|17w13 17r42 3|60e28 +49M9*Integer_Address 1|34r32 35r32 + diff --git a/obj/memory.o b/obj/memory.o new file mode 100644 index 0000000000000000000000000000000000000000..dee01d703b1ab0873666df232836eb6791a93778 GIT binary patch literal 3960 zcmbtX&2Jk;6d%V)TX37E4Nyvp;zXq%2=Cf%nlu5oanq(mBxz^^QpI6AUQg_8_e;C$ z(iEgt>H!2-PMkP!<%&3P=gfb=kt^bY#G$-5AM5dSBO!QF=DqiOpPrqsJh`#4HdZPT zMJ4hl8EOh8*d&92AvN;KKw;r4!>HAU`lA)Juqs z4r6FPy@n$pPoD#E90XGmrC(3RPPW<)UPV;~>p8d^yy-AgkTI8K^H3GFe5`7B^z zmO73XW~|2&hjzOOOH&fCAWHTeC+_d1o=bfvppVEP^d7P#1x>o=Zqhy4-A!4RqpA0p z<;nw=gv@uO%gwEis_ibVHs-CSRj<}=HLJB=NV89=;O%N{_x8@6mfep6W(S_zr_8rq z8bj+L+fJhU%*|{si9*+>T|3Fru9w&lE5i36JdA2-M%@RsIEgawjuHR`;`W*QpcO^{ zbZJIwDVV(|OhMlrgk07z?2BDrm$kNNz*=)kn-lfe^^aj+Vu+xi;wC z@iK_%XIY#s+j-Yk7=^uXU`0vK9;6UIh~p^9tbP{wd2~B*`=VsxrS8Lp`I_$qUdVj=0HO+)axhH&<7e ztLI^9UXbgOwBLtq!zZ4Uu7Ef`HNpF9#tkQE#&w6HBN!@WaZ(oG2VTI0Kb&C&R3vZS!v!e% z!?9?P@H|Xr_rcHYgD>ubUo-GyTz~QRih33DmEnJ$>o4|iOZ=4KkEb#zn4jw$uaF++ z!-3yR1@m@W`u}Wv;=2;RI!wW(dlJtKT-2+O4-Gt&{%;%jfb0B5H7xkOMlRXhUM5F# zITy4YWo^`}#M!7#qtX&pNYK`2kmD8KnLHgmaH`q2^s> zTv39-jqT6RMU3Z6Z5a&0Q7}m`DpsS0~S18R&oy^ z^yNma$^hJ}=%@CtTKg@)%$%6v7aV{-5iB1~-)*p%7&^~Mu!@RCrZ1k?Mg4y%uSC@+ z_J0um%>KK8nK=O>*Ce=%ibkfd1Gb|2-^u#-WGvQ4$gCd&hB@o-r_<-M(67dVQ}q@9 z41$W{H?b+8O~LX}#VP(ZSc>AmmGS!7ib+(Q;@@Z(+7nj-Z8B@eff64m4OC#PXcn6sCkKe@Hdzj!iTr5D(1j|RWf6QAHPvrl}Kjx7_ HFysFLZiCe% literal 0 HcmV?d00001 diff --git a/obj/networking-arp.adb.stderr b/obj/networking-arp.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/networking-arp.adb.stdout b/obj/networking-arp.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/networking-arp.ali b/obj/networking-arp.ali new file mode 100644 index 0000000..26fbcb3 --- /dev/null +++ b/obj/networking-arp.ali @@ -0,0 +1,131 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U networking.arp%b networking-arp.adb 0844581d NE OO PK +W networking%s networking.adb networking.ali + +U networking.arp%s networking-arp.ads 9e287770 NE OO PK +W networking%s networking.adb networking.ali + +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D networking.ads 20241115151036 70ea6e55 networking%s +D networking-arp.ads 20241115151036 eec21925 networking.arp%s +D networking-arp.adb 20241115151036 e6864138 networking.arp%b +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [initialize networking__arp 25 14 none] +G c Z s b [add_static networking__arp 32 14 none] +G c Z s b [modify_static networking__arp 40 14 none] +G c Z s b [modify_static networking__arp 46 14 none] +G c Z s b [lookup networking__arp 53 14 none] +G c Z s b [lookup networking__arp 57 14 none] +G c Z s b [lookup networking__arp 61 14 none] +G c Z s b [lookup networking__arp 65 14 none] +G c Z s s [is_initialized networking__arp 69 13 none] +G c Z s s [arp_entryIP networking__arp 73 9 none] +G c Z s s [Tarp_entriesBIP networking__arp 80 4 none] +X 1 interfac.ads +16M9*Unsigned_8 +X 4 networking.ads +20K9*Networking 55e15 5|17r9 86r5 6|17r14 127r5 +22A9*MAC_Address(1|16M9) 5|33r21 41r21 47r21 53r28 57r28 61r51 65r51 +. 74r20 6|31r21 47r21 62r21 76r28 90r28 104r51 116r51 +23A9*IPv4_Address(1|16M9) 5|34r21 35r21 42r21 43r21 53r58 61r27 +. 75r20 76r20 6|32r21 33r21 48r21 49r21 76r58 104r27 +24A9*IPv6_Address(1|16M9) 5|36r21 37r21 48r21 49r21 57r58 65r27 +. 77r20 78r20 6|34r21 35r21 63r21 64r21 90r58 116r27 +X 5 networking-arp.ads +17K20*ARP 4|20k9 5|73E9 86l16 86e19 6|17b25 127l16 127t19 +25U14*Initialize 6|20b14 28l8 28t18 +32U14*Add_Static 33>8 34>8 35>8 36>8 37>8 6|30b14 44l8 44t18 +33a8 MAC{4|22A9} 6|31b8 40r19 +34a8 IP4{4|23A9} 6|32b8 40r24 +35a8 IP4_Subnet{4|23A9} 6|33b8 40r29 +36a8 IP6{4|24A9} 6|34b8 40r41 +37a8 IP6_Subnet{4|24A9} 6|35b8 40r46 +40U14*Modify_Static 41>8 42>8 43>8 6|46b14 59l8 59t21 +41a8 MAC{4|22A9} 6|47b8 53r21 +42a8 IP4{4|23A9} 6|48b8 54r22 +43a8 IP4_Subnet{4|23A9} 6|49b8 55r29 +46U14*Modify_Static 47>8 48>8 49>8 6|61b14 74l8 74t21 +47a8 MAC{4|22A9} 6|62b8 68r21 +48a8 IP6{4|24A9} 6|63b8 69r22 +49a8 IP6_Subnet{4|24A9} 6|64b8 70r29 +53U14*Lookup 53>22 53<41 53<45 6|76b14 88l8 88t14 +53a22 MAC{4|22A9} 6|76b22 79r21 +53a41 IP{4|23A9} 6|76b41 80m13 86m7 +53a45 Subnet{4|23A9} 6|76b45 81m13 87m7 +57U14*Lookup 57>22 57<41 57<45 6|90b14 102l8 102t14 +57a22 MAC{4|22A9} 6|90b22 93r21 +57a41 IP{4|24A9} 6|90b41 94m13 100m7 +57a45 Subnet{4|24A9} 6|90b45 95m13 101m7 +61U14*Lookup 61>22 61<41 6|104b14 114l8 114t14 +61a22 IP{4|23A9} 6|104b22 107r21 +61a41 MAC{4|22A9} 6|104b41 108m13 113m7 +65U14*Lookup 65>22 65<41 6|116b14 126l8 126t14 +65a22 IP{4|24A9} 6|116b22 119r21 +65a41 MAC{4|22A9} 6|116b41 120m13 125m7 +73R9 ARP_Entry 79e14 80r43 +74a7*MAC{4|22A9} 6|23m11 39r15 53r15 68r15 79r15 93r15 108r22 120r22 +75a7*IP4{4|23A9} 6|24m11 54m15 80r25 107r15 +76a7*IP4_Subnet{4|23A9} 6|25m11 55m15 81r25 +77a7*IP6{4|24A9} 6|26m11 69m15 94r25 119r15 +78a7*IP6_Subnet{4|24A9} 6|27m11 70m15 95r25 +80A9 ARP_Entries(73R9) 81r35 6|22r32 +81P9 ARP_Entries_Acc(80A9) 83r24 +83p4 Interface_Entries{81P9} 85r47 6|22m7 38r16 52r16 67r16 78r16 92r16 106r16 +. 118r16 +X 6 networking-arp.adb +38r11 E=38:11{5|73R9} 39r13 40r13 +52r11 E=52:11{5|73R9} 53r13 54r13 55r13 +67r11 E=67:11{5|73R9} 68r13 69r13 70r13 +78r11 E=78:11{5|73R9} 79r13 80r23 81r23 +92r11 E=92:11{5|73R9} 93r13 94r23 95r23 +106r11 E=106:11{5|73R9} 107r13 108r20 +118r11 E=118:11{5|73R9} 119r13 120r20 + diff --git a/obj/networking-arp.o b/obj/networking-arp.o new file mode 100644 index 0000000000000000000000000000000000000000..57178f189f4c48dcfdcb7339d9babafb275e26fc GIT binary patch literal 31480 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 fw0y+=_}FOAV_- 11|34r30 43r29 48r29 57r29 64r33 69r33 73r29 +. 80r29 88r29 12|23r20 34r30 58r29 75r29 92r29 111r33 136r33 160r29 179r29 +85i4*Error_Handle{83I9} 12|31r27 46r34 116r29 119r35 141r29 144r35 205r34 +. 215r46 +224V13*IO_Control{boolean} 12|49s24 +X 4 devices-netinter.ads +17K17*NetInter 20e21 12|17w14 17r36 +19N4*NET_GETMAC 12|49r48 +X 5 interfac.ads +16M9*Unsigned_8 +X 7 lib-synchronization.ads +22R9*Binary_Semaphore 57e14 12|29r30 +23r4*Unlocked_Semaphore{22R9} 12|29r50 +27U14*Seize 12|44s7 64s7 81s7 98s7 117s7 142s7 167s7 186s7 213s7 +31U14*Release 12|54s7 71s7 88s7 106s7 131s7 156s7 175s7 194s7 237s7 +X 9 networking.ads +20K9*Networking 55e15 11|18r6 20r9 107r5 12|19r14 239r5 +22A9*MAC_Address(5|16M9) 11|90r21 12|24r20 +23A9*IPv4_Address(5|16M9) 11|35r22 36r22 44r25 63r21 74r21 75r21 +. 91r21 92r21 12|35r22 36r22 59r25 61r16 110r21 113r16 114r16 161r21 162r21 +24A9*IPv6_Address(5|16M9) 11|37r22 38r22 49r25 68r21 81r21 82r21 +. 93r21 94r21 12|37r22 38r22 76r25 78r16 135r21 138r16 139r16 180r21 181r21 +X 10 networking-arp.ads +17K20*ARP 86e19 11|18w17 45r19 50r19 65r19 70r19 77r19 84r19 102r19 12|50r13 +. 67r13 84r13 120r13 145r13 170r13 189r13 224r16 228r16 +32U14*Add_Static 12|50s17 +40U14*Modify_Static 12|170s17 +46U14*Modify_Static 12|189s17 +53U14*Lookup 12|67s17 120s17 224s20 +57U14*Lookup 12|84s17 145s17 228s20 +X 11 networking-interfaces.ads +20K20*Interfaces 9|20k9 11|106E4 107l16 107e26 12|19b25 239l16 239t26 +25i4*Max_Interface_Count{natural} 106c4 12|27r34 +33U14*Register_Interface 34>8 35>8 36>8 37>8 38>8 39<8 12|33b14 55l8 55t26 +34i8 Interfaced{3|83I9} 12|34b8 47r27 49r36 +35a8 IPv4{9|23A9} 12|35b8 50r38 +36a8 IPv4_Subnet{9|23A9} 12|36b8 50r44 +37a8 IPv6{9|24A9} 12|37b8 50r57 +38a8 IPv6_Subnet{9|24A9} 12|38b8 50r63 +39b8 Success{boolean} 12|39b8 43m7 49m13 +42U14*Get_Interface_Address 43>8 44<8 12|57b14 72l8 72t29 +43i8 Interfaced{3|83I9} 12|58b8 66r26 +44a8 IP{9|23A9} 12|59b8 63m7 67m34 +47U14*Get_Interface_Address 48>8 49<8 12|74b14 89l8 89t29 +48i8 Interfaced{3|83I9} 12|75b8 83r26 +49a8 IP{9|24A9} 12|76b8 80m7 84m34 +56U14*Block 57>8 58>8 59<8 12|91b14 107l8 107t13 +57i8 Interfaced{3|83I9} 12|92b8 100r26 +58b8 Is_Blocked{boolean} 12|93b8 101r31 +59b8 Success{boolean} 12|94b8 97m7 102m13 +62U14*Get_Suitable_Interface 63>8 64<8 12|109b14 132l8 132t30 +63a8 IP{9|23A9} 12|110b8 122r44 +64i8 Interfaced{3|83I9} 12|111b8 116m7 126m13 +67U14*Get_Suitable_Interface 68>8 69<8 12|134b14 157l8 157t30 +68a8 IP{9|24A9} 12|135b8 147r44 +69i8 Interfaced{3|83I9} 12|136b8 141m7 151m13 +72U14*Modify_Addresses 73>8 74>8 75>8 76<8 12|159b14 176l8 176t24 +73i8 Interfaced{3|83I9} 12|160b8 169r26 +74a8 IP{9|23A9} 12|161b8 170r41 +75a8 IP_Subnet{9|23A9} 12|162b8 170r45 +76b8 Success{boolean} 12|163b8 166m7 171m13 +79U14*Modify_Addresses 80>8 81>8 82>8 83<8 12|178b14 195l8 195t24 +80i8 Interfaced{3|83I9} 12|179b8 188r26 +81a8 IP{9|24A9} 12|180b8 189r41 +82a8 IP_Subnet{9|24A9} 12|181b8 189r45 +83b8 Success{boolean} 12|182b8 185m7 190m13 +87R9*Interface_Info 95e14 96r54 +88i7*Handle{3|83I9} 12|205m11 218m51 +89b7*Is_Blocked{boolean} 12|206m11 220m51 +90a7*MAC{9|22A9} 12|207m11 222m51 225r55 229r55 +91a7*IPv4{9|23A9} 12|208m11 226m55 +92a7*IPv4_Subnet{9|23A9} 12|209m11 227m55 +93a7*IPv6{9|24A9} 12|210m11 230m55 +94a7*IPv6_Subnet{9|24A9} 12|211m11 231m55 +96A9*Interface_Arr(87R9) 101r44 12|197r44 +101U14*List_Interfaces 101<31 101<59 12|197b14 238l8 238t23 +101a31 Buffer{96A9} 12|197b31 204m7 217r29 218m16 218r24 220m16 220r24 222m16 +. 222r24 225r20 225r28 226m20 226r20 226r28 227m20 227r20 227r28 229r20 229r28 +. 230m20 230r20 230r28 231m20 231r20 231r28 +101i59 Len{natural} 12|197b59 203m7 216m13 216r20 +X 12 networking-interfaces.adb +22R9 Inner_Interface 26e14 27r58 +23i7*Handle{3|83I9} 46r17 47m17 66r17 83r17 100r17 119r17 126r31 144r17 151r31 +. 169r17 188r17 215r28 219r34 +24a7*MAC{9|22A9} 49m64 50r33 67r29 84r29 120r29 145r29 170r36 189r36 222r73 +25b7*Is_Blocked{boolean} 48m17 101m17 119r60 144r60 221r34 +27A9 Inner_Arr(22R9) 30r22 +29r4 Interfaces_Lock{7|22R9} 44m14 44r14 54m16 54r16 64m14 64r14 71m16 71r16 +. 81m14 81r14 88m16 88r16 98m14 98r14 106m16 106r16 117m14 117r14 131m16 +. 131r16 142m14 142r14 156m16 156r16 167m14 167r14 175m16 175r16 186m14 186r14 +. 194m16 194r16 213m14 213r14 237m16 237r16 +30a4 Interfaces{27A9} 45m18 45r18 65r18 82r18 99m18 99r18 118r18 143r18 168r18 +. 187r18 214r16 215r13 219r19 221r19 222r58 +45r11 Int=45:18{22R9} 46r13 47r13 48r13 49r60 50r29 +61a7 IP_Sub{9|23A9} 67m38 +65r11 Int=65:18{22R9} 66r13 67r25 +78a7 IP_Sub{9|24A9} 84m38 +82r11 Int=82:18{22R9} 83r13 84r25 +99r11 Int=99:18{22R9} 100r13 101r13 +113a7 IP_Sub{9|23A9} 120m39 121r22 122r19 +114a7 IP2{9|23A9} 120m34 122r54 +118r11 Int=118:18{22R9} 119r13 119r56 120r25 126r27 +121i17 I{integer} 122r27 122r48 122r59 +128L12 End_Iter 123r24 +138a7 IP_Sub{9|24A9} 145m39 146r22 147r19 +139a7 IP2{9|24A9} 145m34 147r54 +143r11 Int=143:18{22R9} 144r13 144r56 145r25 151r27 +146i17 I{integer} 147r27 147r48 147r59 +153L12 End_Iter 148r24 +168r11 Int=168:18{22R9} 169r13 170r32 +187r11 Int=187:18{22R9} 188r13 189r32 +201i7 Curr_Index{natural} 217r16 218r39 220r39 222r39 225r43 226r43 227r43 +. 229r43 230r43 231r43 233m16 233r30 +214i11 I{integer} 215r25 219r31 221r31 222r70 + diff --git a/obj/networking-interfaces.o b/obj/networking-interfaces.o new file mode 100644 index 0000000000000000000000000000000000000000..e391745081ef775e2e8b21ae86bff69e89a381e5 GIT binary patch literal 56336 zcmd6w349gR`S;IVvXF!jk{A|ILlQ7p30qjCg5fqmz=()|Y!b3U5R#Y#1Vr|*S=X?r z)k@K#wU%0!TD4V*qG(%Nt##{W-D>++OIx&RRo>@0=REiR?zuCFefxhu?|jHTGvE20 z-+9h9ckbM|!`ktc6M}(&k|m)2sbX6~mAdwqW}Wwy>D4kdR1HxZ)@@i9=pL-!SifE+ zRrA(amri?UWSUa_kKVN@Cn-%$J~HLqk|!SCHuOO9rv)F4*tVN;|9PEKBa@ZNNlsQB z<9ki)+v~xIKHz-5A`s`ckk|v`z9VsN~ztlIrv82 zgB%^@ksLWEZ3><|eN&(&-1oY@E#s~Vw!dCCo?;BW^whD?TU(9=d(6H{v}bI3g~~2C z(*NDb?<5}`*+r?sbxG924zrSw<0g;M(C z*6yN8qIElN{Ofk<_&J9}w6}%hjWlA!dpkJhw9TUV>0^QJlV9U#3*MpjqTK!8On!I2 zN1446+iU~3*&Vt^W2L^nfO@oUZ(XpFM^E83yFX7VKlI?mmrgsvV`%b6XFS2B@fg_q z+LWW4-|YWsPM28jr1Bdlb>`-(`?hRS+f$y=y%T!s&&Tc?@hg=xv4>iAP12u}!f%{b z`dR!q+DD}(*S+2zS-E#*a8PYGJWav<` z3Qb5+Z)6|(q$4>g<&7N=e!h3d_Hh3jLq(I0&3^2ZOP|rLwC~MnAKkTyYr<`{_nkRM zHorUN)10)}h)yc+b#7-buE92{!Sfz9=&EZ_r)v333dDGk{e%N8Cey)ydTtI z=Fwn}&a^;)d+x;!>AUS)_HCZIMQX6o)}Z#5L(0_Plh60wxV_7in?gmCkL_J`!DD+@ zRVU1jk|$^upV$mp?=?gA()>-B6+Aa#W+at=Oyy2_^FbbEdREdX)3ap%rlGN;M=G^x zYN|?_7#nE^Wp-|ijP#vNB~7?5<)U%-ZFw-5l=AHE!o4Y~a1Z_6PJjF8?@s!=i~jDWzy0*LCnZRlAngy* z{vhoS7H)V-y>aSGpO~@VMez}8WV(vZ)y_@jDknW%C6%wQTz_t_%FZ6SYA+q1Uezs7 zyCpe$W53BNbb6ZV_{vu|zg3phzxEezWi{-+;^JWxS!dU>P|n3&1GT^YdDgI$2ScGJ zX~t~%i`wxxmm7LESA`xAtBr??ROoQ2+IXm3b>>~ILQhUt_r2Yqa(1T%W?a*mw>9v} z)j7M9f-|nkIcaln_Em)&p9dISnLr37x<^dKFpo>Ie>eLEmyaAUtT)mhb{ za;lO7Z|}UXW5&4qIvxmpV}3^wSc}Q)1a-j-6brF@l zMeR*~(D{$N9KL-l8yc8(tamJez z*XH5DUnC7%c1Pg0El&jsw^D3dDYk7XfhoJ5-6=68g?|u!BWu%pcr1LoWkUPD_T-gs zH%?f*Z*lS^k=1)w2d{X2>HLn@FYiJ#O}_!!7ksz;a_dRt5Tav4k_ymhR_auK>B=u& z%V`XQi^Jzr(j_E{e07YL6yBUpe?7|RB|Xf}s;@D;gjTcX(o2EC=>e_IU`Z?eT}6N0 zIB!^GucRcpW1sBEim``iOIsmVLSshkvscZ7{)>H^M`RT&wqf(yEokxpgJh;4*bFE-FM z4unQNN$Wbs(5Mt{LAxg-koSq~3G^^+p{pP0sjDB>c>=w3!=#zm*ea9ir#m1?rKjq? zv56iEr-bh&O{~K;JT=TE#h}i0s7%Ka{}Q-4m&S@75A~;UyYUiSQs1P4^EyXCN>q z7O#qq-)Crd{4S+*ZSLj%c9+1-e~{WtO>MAyPikyY7cl2V*K}H{Z0bq{FH99PJfaV5QQdskX8^|)QDhEjzA8$0LM^$?Bc<#-etm|~Egu#)@ z61aIU4GbOkq-dQ^raDdLnHjupRvs(QH5*e+g(~AKw2%x;h3<@2DB2ybCv?YVlAm}T zbmW`$%$AUC8o2p33Y(k1Jifihr;1#UEInkm>**Z2ZqM32jV(jfmE1C+>+V^53Y*<% z9ckXuvXER&b*_n4Ct);JYLNYuAcDzGwE{b-N#Y>cn*3R0hVkDD6L^&YIFXgpB+DRowKuK4DBvX~a1 z77Z>stz|H+@E%OR{!(F+m|Bke-dzGWe~V(#P5G5*;6VyJcxI~T^=#_LIRj(#XwuQw z)2oSoTr~RQjD<}kKk;@pW1+A2Sm1%CBQA(WtPfU&=3rH!H;T+gnHKho9+~xK|LCR} zG^fW8noG#v)NEk1W;Bk>@;>dHN`F)reXyQOr&8hAG2j!u>tZ^B2Lkhh8!1mTC%+|a zH#tx6Es4Zt2@lVVt)CTJ51kC_r^VL8C9qx`TTgneYs@DBB+ASsDK-(XCeY_tJVr<4TF>BYMPw7YM3 zQcm|kc1l^#RlRs;YIs;k+nn@VRTy#;5<+R2VD zne@?3ZW=1Z)a8^k-L$&xGP=`o?bPmpewjJxq0>%2ZAOpofh?-UY1mNb^x`JS@2d*B z4(iHn#6k6qZPMAdG$ZdR+nHL|nTor&2ZDod4Q~&87z!*5e;E2C6qw_+`wziDWBAF?`=LN1?#|-O zStPAKZRQ3(b4fmZFm>r(S z%DJRmN7pCf74yP<=hL;b`K*{{6g8-*;9x4|PziJDsNlNQyuEr|AUGsGsBUZ2*{4Pi z-vv~G-rd%$jYlI!y9i6l;(C=+LFMyIz2+^ajpZv6s#VS*l+UD{Gv`sBdF{O2zT!WL zXy}OJMU+SGd5fw27B4puEkEqE-%Kug<{}DZ(Q*T(IbP)%E+de==6(Y%I28NI_hE_Ki@R-{5p!St|6i0PoeRA z$}H-SSuCXSJij4+IK#-8Pqmw0!x7XpeDTQW=MIB#>DeyAkf)RT^c^%9!aJyAOw>08 z?srDV#T4(w*Yi-g-l!;Kt%_^vti-9)(=9tZxYR`$j&8v+DyK{i39D#h)#`*6EXx{v zYi9ue!gZ?>*{an^b2Nj~ZBU z@vUK2#2t@L56lmrz9>)|Uc`#|Mp27_PUTLYT0;#`(?s3Wbh{qnw+F~6uHCb{UGB`q z>^|Ktcjn^g2`*B1)7t`lw5CO$2d>GMAhHmtJ3*?Hm7tIVmSLE&&} zMmVz~ykG^=%y3q2cS$*&|Iti=E57VuGXIec2`GF?cw(x+1!N zT@3CCt7XKwRVR~OAQ1R>W>-%5!x;V1%4rE7l7fNLf_yrm75JhD6X#SRx>(o6j4j^E z4=I zeWEH;T2^%1lp@<*4JRjRkocO7;+m!CGQy#iHU{tQFI%USP_p)ux@3he=WP`X2a;`b zbWQe;>}hIj2`$Z5KO8d6A>0l5zZ7E9aT@GZ2+J+rZb!$0X~!=cRBSBJSAA5Pv|k@v z`IBrfA1BCnb&#n#dpNX0rzs)tZ8yA98-7ol%CDrs|nUrq2&mPtb?WB?*3!Tn2V^tq! z#c#AdcqQf71KnubnzG%MN|!^#XzM@L`i{1OK($6)$Pk# zt0`Iuh$^wHsjYEgQ+-|4h*DpR*7}8w6d|{QtyQcMOlwpvs&1-VQm>XY)>Kust!%1Y z)Y{zCxT?CnvALyVc;H(#=>C5}hij!I&ewq=d&)iq1%V_oahDm9Hw)veSu^-HT;7B#ne zG*DdUaXsRqr-|;_?-)>HQxnYzp3`wzWsXqDZgZ)LQ)c9ktEn**%^$dwT7Zr?)hlSVx~6f= zl9myrHr(1VgW8w244OD)-1LFd$DcQK;9y>cmP|iyYD{rrP2bkMthKg&P)lp|!ll)1 zCDnCQvTm`ZUS$j!Y|2>L*hbCXQeQh}=-?q|4H-IQ7zasp9n(s6Y^1v>s#Z1Dwzbl0 zLw!?ieWR*b*3dw6pU2%oO8rI}j7vVc`RbO?fjl;O+Em-JT6&M7w+49c;wa>;sHVA@ zj@?ah`(d&s%o`Z|-t+Z%In0ELRz;NzYOYyKuePmYF%F8Y4vfmV6KeeP#C+&YDz;(Y z&7p#>qkma`d)oM*G|+h)r0B4j2U06)WCPIaYU0REAp>eQ{_&b0NxZOOq2(af=G zs!HE_E}(KNwk7Y#n7K8)D{FnQGc6d2b9hlV)#RO-#D5b>kNk$M&h+)O?N+%yxEh+x zKmNgy&NQlbrEN3pB&j@=HQl$ob%FAone#f+c4TlTv&*im-Pt$f-k5h&&u{b&y%vx@ z;MVv}MJz(g(VsEkml74s97+Rn2R)yrz$P zX2l%(^!n1J%a#mj8SE2Y6!S%`u=@M4D1a53Gq4p~4cUvUF=Ez2v2U5<}cR5*u zM4s=%MIXKN28N;7#lw-0jI(6lXx0y&STPBtN}yw`Ae^J_t6li*UC+ zg=dM-(d&CjVV~&zcs^)(bshZ$RBv9@iyS}1XQ=G3sc`rBD!j}`U+%*v_;9|+jf?nC zK}hSur~2@DK776pZ}Q>oK76?kU**Hs`0x!r{Odk^uMfZ7hu`hP_dA?7L*^dQxILzw z-BGJlzE&l2KfQ2weti-5o=0g3k&2J^JW5mE^C(Sa$JJKGl|L`?(f9Y^?i-iH={=9q z)CeD+(LTJ)hgbUWIX=A3hp+JA-s3z?t#Xn7w(S4FXD7+ z61Rxn`#6)KypJ;(3Fl4XGc(Rz##M$|>l&zUelg#Z^<}Gz4!4gQ#Ckx-V7zYTS$Aly(r@_k(>7S=icKm%V!*BCENfa{_c@dxLdMt z?{Sr-`Z(<%`g|YmJ+876KDUaGoL`Ea@G=2574AJwvQ&kS-uwM7%V+##`5d>i)B+!W z?{Sqy_rS$36949SZ0BQ^y1|Fv?8Cq5!}s{`yM4HOyp=c~_0b=2IB$j$&X#0exMxu^ zFA}*a*PnaOi)^2Hk?k`tvVD%j*$Fj}c)X9R*{Z;42hscSGkx?WKHU5GnXMu|dhgFo z+4|-n%p!44K}hSur~7d4^OkI%<7&3@KCWh~JC%?{bwN_dd_bRo?GMxe3>wrCjgxoLuF7o|CJ*=V`9bJk3?*PX9`|Q+@a}A3o2A zxBGDKd6%2;d4aQs5?Wcto7?&_-V(W~mp}I&Z+SlBEzf7X<@t=aJfHEF=QG~&5^5~* zyEPEr+q0eXe9m+7l=pEy&*!{4PkEmg<@t=aJfHEFr@Y@6@_f#h@_f#J^3+V9`qugI z)joWU4`1hS-VB)^X~*p`?cXzw@kYKTiQG>w-245yr_cL)Pt{+S6MGRK@8d&HwKXQy zYofo)hkKu=^;F*PM?KX&K0c57aPRk{p6VGN{m*^)^FI7VAO5lrf7OS-?!({q;eYkv z@B8q7`0$T>_@_QROD_D|{nEd=KD?(7FZJP-K75uB-{8YH`S7hi{F^>}uMfZ9had3a z2Yoo*fFHL=d;ZFYzvjc=_2EZ-xcil#lp74jg=5c?d#ZegvnmANn_#Yx&4tY9`?yGN zhm`(xc*4Gr($50%;Q0xRK`7xUW@I5%<;q%2SmX|yFKj`hm>q2i> z?zZSVmf!98yk~i(!_E6y;&r5dS^acJZ{E)mKacC*57E_-5=Wn`kDJ*E<2l{(Cmg+b zU(8Nu|C6lVJ)i7txjWxa(>zzrbNq`eKf~eXVHAmbvD)b9cUtZq4{x#js^s_#w_ARSPGkG-7QMsG`9!h$lfxge`Xiy3 z2d|m)iDLDUqkr1!-*e(I=M%;1Y3F_XWvjo~@%f|Wbq;^qa(dW6-145~M;!kTEO+Po zXO>?S=R!a5)A@^4l58CBbq0EPCRJ2 zd){lteZFdRe4exVSx!H`V!3-9`;+B+9G|~f?w(iwUGrk~sZL{=KGxfLF(7MtoF$&0 zq-b8O_@~9VbkjUP;d6Hn%kM=ot)FInigg;>dAik`_xTtfWc6=3{XWv_Ka5HB+BupR zsplL%(dymf;rW{9CEPD@k>v%B&wR_>_xF0ui`7@0`L$H@T*pPJcFR{ddoI^JUoCLj zd86gq9Db$dMasSYK)>XtC0~8t(SJkpT-ENByVvql9sV85-SftKG%r@g&T-~PnrAyM zNThmt;65e`eL=!@p)hK#PhDB*58~j z$IR#l=CtIia>vI!Y%uY>%RF{5Tm3L*q1UqY_{dkcI6l2K&sIAeeP7Gn^R8mcYaIO` z&5P9v9dB&sNX@fiz^;w8{D8A(yyp4pkQ3*5ninN}?wDbH-1FqQR^Q?H*INJg9REwK z&kc^g)$;otzS8;(aq7F?>Nh+3t(F%%{2I#_IDD7p#j4pEpWoCx(@`sRyX6hep1U;9 zSF@cs@3nk`!ymSspP`7$LCuTQT!gg#jMYEw=%3d-(>$US^1NcXJFj2UyjbmX>idr7 z8Q@@6-?!ZDm!q1~`?5}B**>*=sKd=OQ;QO=lV>Dx-h4I7(dTNOq1^WudhQf083~^s z3oO5ycf&G3^I|pBX}2Mor-9O}jFuI~^S$p`{jVJT{dzl9ZAWujf5h^;9e&Vq_xNzwa`$ubvziyH z1$;s< zpLiYnTh^!4@xMcJev)JSvfuLl@mM{ed4_W9^<&Kwugg8IdE$L^&sgsE%X6A1-e2^x z|ElJ(#lh=lp@(as`@!GH<{KC57{8GvGmVIqwL)#s5DfjM8gtFp~3*;vAz`JW6k}xURlt*}|&o znwr-7<(y^Qg%gHzE=uhtZ&gmKEal8by@Y?^Ke9z$|hSg=E5kodxaXvhO}=8 z*NsvRi4u;M5({-ZvdG3X#1^0%nYqn1#99xr1?tA;{nk!*18onrK0~dK?gi#H|4^HM zs0~i{7w_kICPZ{G6UIwvy5}k{oL;Kih*EatwvyK1(s@6-M#OqX@x^kM8mZhEj#q{DbWZ`+p9LyWg|EYr+T;?lVX zxir?#tUSvml8arbOfH1Vl(K9+P1)onWpSi4D@So7QNk)pY*XsM$ciahSqt6J6ozhS zYBFi)XxQvkUa1SFy|y8BH$)<(ycrp<6Rw)6iXQwk&AgatCIGhwYpHnFQ1P5_u{tGV z4yU|Q2Sr=9o_bV7B6`+E#_NRhm|6}uwbb)%rkRgajBd^e5j{-C^DAZ0gOOA2cTTx+ zsjhlZ^0sl(qi1HN9uDNBXZVDO4tu<r|IJqhhv&i_Y4gT-btR^By7g%gb3%KFy6Y@wv-;FUF4!8qbXpv z>=0*2mS&5csGI1OeI-~s*rgTp;fD8fsGM>*oN}8{st=Vsd~FGX*^h=X2SbVJs*$FF zN7)h$)Q3^(IHS}DE{ev~U3WEgg~_1DB(4dn{rm zZ6u;wkrJ*1jVq3s60REQ&6cicB%*si5*cCONawjN@cfDBgCXd77Y)smrhf686F#*`k@^s@KB)t-m`k5 z4J8i~aUcD0g3l4DIqm~Zyq_}S+t=Q5H?nBxUeEAJXw|qU3Hg@nJ`2b#Q@2K(m8-z0 z+~>GpP^j~IQW%|c%K0K+r@?DAat6)!e<07NZC?2M&#%gd16nU;NDFHV^_qE+&spq) ze1g^Rx$#uE<}ew!`EJ~Rsg}F(Ot+llIUC~H0Ni|6X~6Bk$AbQD%Lh`5-!XmJ_K_|Zy6q$1cew2{!p6hxb0M_PXyDUj)xk{-FA?8xE*FfJZr3;`9;8`-`#fDZ1rwC+yy)W?I726xgGGk z(Jwn5+;$jkIoDVIdnZO?fzN?pK^GzNo%# z{2U)IZn=F7)*Smi-*UHobYG0 z&&FiA)2?v2Rlx57j^CL+YB{&3xtGTPzxI?X5N>>MZp6gWu z@lUm!>s1R}=C51s9IJQ7&)0$DJlbP9my7q($h_ln>!Dnkcg!1rAGAK)o(q9L349T7 zzjn^BdbeKx8}roMt7QrtYs=+&ErvMDed6((r%SA!+kYY)ua;ZR?Q;qEf7y26@yClh zeq>y^E_IXD zGdK6p8L-uIuCKHSqpw@;#(Ayf(mvAeI~;B|qrd-k+j)-_us_dh@wwgMb~Ae41;>9W z)c1KSaQWLlT+YEb9y}htX+4?aygp(%`?o^5a^I2LK60O)+mER>9=2!$pRT~$fy?ob z(K6sNe;F+YE`7(y+zV-pWjrun0eZP#i_uEpqf9o%L+xA`ZxbzN=_=66eSM5B2RN_a}TTuT-t>B)u8{LUFYN) z;12=67Wh-ZuLJ&T;MmUQeo_-Bw)4M1e?9of_pppQf%mjymC+91rvTpxe1PSg$lRe- zH5Bx_Krf%6csHJh$a@n@cY}T^_}>70mgPmHztMvi6G#0*i03BIUkdyiz}Ex68Te-4 zw*WWydz$vg-$v~M{jH!k_j{WErezOsbH6A3_g@tMw>&u43-u3y|6b5PYB?vj0sk5B z+ku<=H%&a>2L3+iv41}Tj`!Zkf1Jm=QGZg104;2N2l&f>$i@0Qf%mt1Zinx9aBc_G z4+sCdKyU7^H06F5cqQoX27Uo>nX^=snhShC=;b~NM&Ad13Fz+u-U9pwz&8QE7x*^I zxqa>femn5{fjGxw2Z4WLIrrC(JUI6k>gB#}mSTUI z|K!>9mmC{OqKd-&YB=`G5a8JUX9Is2;u#105#Z*2K;uvU8BlbYWA)trKLNf7_@ltD z0FLds1^8p2zX3SvZ?l}G2S9%}=zj|Qe#?tUf6#+-`=kD6;Qu)2e+3--<+s3}0R3yg z4*`D*_>;hc`hFkN&hj2dp{W$hxt$M#J`40u11|#p3~+OQoH>sD47j;J&Ky^N?!mcz zP(Km;e*yaQAkJrjoBP*HxxWN{1?aJVw*dbY=*|6Q#s~GcLp;xc-rPrK^v?r-!0L;r zUUJSrt4cW67xmA9Klc0YfWH9#e**p+;O4$C)4$m7fn+W{vER*oUMBt*!N>eJR7U?2 z@Ivr;8F;bfJbqpQKGTRhjz!0rcB_ z^t&u)=^sIVE9hSXZtjyZAFAA&#j`vKsugU=!0c%J!7;BSEb1>ksmHupoB z{(TelZ-V|U;2!~h8~EpzbHD!?cn;k+#0zt5f4;wo7v}GPz63bx&$67Qe*t|N=>H15 z!g3yO|Kq{A{ZW4r_+$H51AiBMnt;nWKUu0a;5hHr1AiZU`2H+j82t_SO_p=}$Y*xe zJplagpnnE9w%ZH9{{i~9fTRA1?Sl4?H-xGwQRfo~78%y@7uS zJ_CUN3wR0ekAM#Yj_rRA@Q*=%A@EOt^L=W(aQn+=H{Nal{we4$2afI80sJ%2?*fkc zy_U1|bI^Ym^v8hTXE~2^9W1A`2rs5})E@+YZ2zAF4{)XJ@*MCEDEAM*Hv|74;9G!y z06Yl(p8($qdj9XBcwrO*J>SR23v)b<w#ncUI{!6^fv=X{T-HbebYhzT_1iQ@C?vD=))fa-WBwZ`|zIu&jkH1efUejyMg|< zKKu>fS)l*35C0o*xt2mrrT*!|{|!7F{Ezu?xt__=9MGT1h0wwXe`|KGripwpaQs}q z4Y>JDumSh^aQ&Z4&^|5~_2&5jiTqSMr&yl{@ecxCNc)cRe@;S6#D~xD;nl!GVi##Emz&=`n|A9B`k8i}6O5W1Fv9a3x#PY_c5+IK@M2m=eLnA`g?;dR zm36$Z51!u&=M?pWSxgK2{M8-I}+@Mh4T34Al~fxveIF9E(E_#ohq0mo;L$oJGN9Rm8dKri1tG5QcV&bxqZ zTeiS?lnxx{MILY*=lQ^K+8eaaa@%F$8mBlaP0R2TQA;yw$(7|4}1*pGk}i; zUIP3a;G=*`Y>dVL9|!sfa5OM!lSMe|(dR}hU@ae0WD(AK^!b(*FzY8`N`qKd=JU zpDtobg|i-g9%zdGDjE*XFd8n$2)0Zz1;i3 z+rn9oKCkdjT39ci-FRC#>(S>=yptBz%iQE`;jBlWzwl04SU*UwnHS-#N1wl24eRBc zfst_5qmO*PWBm{o+C@0)(dU@m&-$TuofF}#N1v2{5wU)lS=Fz?S&u&5Kwk=a;jBlW z9-zl(6bNTM`kV%Od9UPRgtH!fP6z!+7TQHP>(NKv7r4F?Y+lYHob~84+-icv&t{=r zjSL=!LT$edKdD`;P;?aMq*G#o!+Sy>Ql}Pd(_%K`)&3=(7~` z<3TT+_2{z<^bKHmntyccse;jBlW?}2^_3+*DD_2?t#(ma077cr&6S&u$)j>P(@ zpcl@1^f?6aOtkBqO*re(=a*I!BtC(NK9A+vrS=!LT$edJmw>n{eqaMq)bTw7!P ze9#MLJ^JJajfnMCpcl@1^pVdptX}|n;jBj=`Ru^@YS0U3{Q}^lAf6fz&U*AI1AQ&% zg|i-gDnMTcdf}``pQ)g40KIV5qt7hRF9f}C)}zln&{x>8$JvCl9(@|Do|7dkw994S z(Ql}&lb>M3VPwJN1tmz-wJx+tVf@npl=7gaMq*GEudcpdf}`` zpKpVHIp~G69)0AwHwDBm1HEw8qt652zXJ5aS&u$H0sTtQ3uit090L6+&z+q31>a}{08)^S!fsGtVf^UgZ>H;Q!1SG=<^on*MMF)>(S>u(60l%aMq*G2cTaM zdf}{J2mCY8Z}8x(N1s5*hzcl~1oKol>(M9O>baOLCaZq!13ue4IQyW!2=v=QFP!!0 zb0+A&4tn9NN1syAUj=&MtVf@-L4OVCg|i-g%0YiE=!LT$edNASZs+SjFP!!0GadY| z2fc9Cqt86hcY(QqU^gBQ=ob~9l1oS&WFP!!0(+>Jwpcl@1^jQu1-JloFdi2=@ z`Wrwmob~AQbaMq*G1)zTr^uk$>KC?mpBhU+HJ^ECG{vpr{XFd8f zg8pI93uit0TnhRhgI+l6(dRPIKMH!`tVbXD9+~_1G0+QVJ^FNj{{heoXFd8{1^S(S>3#Pb5^g|i-gJ_7x3Krfv2=p*+haQrWVUO4N~CpF24SpO2}g|i-g;DOQ;jBlWpFliEK`)&3=yM44 zAAnvs>(S>Ip#Ko`!dZ_#zXAQfKrfv2=<|Efe*}8rtVf@>K>rEog|i-g-UI!=K`)&3 z=<@;SKLx#T)}znIpg#}hsc_b#Pbk@#@;nWIKHGBc_mBr?AJq2-eHiq@S&u&EInd@f zkOX?+tVf>`@J|N4aMq(wDd zfj%Ad!dZ_#@_Q)muME%&XFdAVfPYue3uit0G=V-7^uk$>KFdHa-w~5U31>a}tO0!% z_zPz}`fLV$chC!GJ^EY?`fSh(XFdAJ@4vV`b3iYg_2{z~{BuDsob~8)7wAs{y>Ql} z&%L0Rd!k69gtH!f9tOR9=gxZJtVf@NpzjIs2xmR|JOlb(pcl@1^m!iiy+JRW_2}~| z=uZZ{aMq*G>!9xgdf}``pTC0s6wnK2J^K6u^m30qNtAHbqt9ocmwOmkFP!!0lbphP z&G9fF;t|ez^vMQ&U(gF@J^J(neF5l&vmSj4Kwk)Y;jBj=`Tu=*z7&C8IP1}8DERjS zy>Ql}&nVFM2fc9CqfZ3%r-NQN>(NJkKgjVHgI+l6(PtX?4*(n){rS z?K&s|2K=a9cjN!aa*qE((Cdjp+Z_KQ z56O2I zJHQ_Y{r5dM>(S>IR?qc)1oXnWzUcE7=${0=aMu3>_&X5KQy!e-K_B_80cXSZl>585 zJ)Z#|Jt1hD+w*k~&h3eM`E4w>=dVC7oa6ZgaQO`>>;K@vS^sO`@|!F-e!2gO<9`$M za-S8)|CtBp_)$NW4QSzb{;Jo^i*SzT&%h^HJ@@a&9-RB@J>Yd#@5aB#a!!tczQuBm ze~|5K-YuNtNBxafKazL}=!N$u9t5sR+Ey-YucrTHrLDcyq>E&&y?#ZzDyge(uT~{B zZEdQAL5bf3yQ2^9mZ#RAsN6ie{)^P^6YP(#kAIGR2|a7R`uG_<9%+99xxAk_|DR^$ z$EKe^Uh`P_6A*eoGX6x0@XmRH@wv~7Kam36JSSL``!IPuSig9L(ok;WVSNJ1D*X)q zlD5|7<7V)BTD|F^*#99xQwjb@9@{GRzujrB<*HCzdZb!iYjxAY`gqpbv@lV~|7nky z)7+I+##MT|wt4B&`X-voP0j7~B@?I27}(ZcU3*DfX$`H_OUb3Rv8{G_Np*XBYh%r_ zb}Ie9w46*neAr2L{K}kd*|di-*;IXLjq``1#H^G#+p>v=IA*8QUn>3mr}_DF*74$Z z<8`;^`s9xg=f%~#+kB6kSNY{Scl>8LFTaO;^2_Hkw>)>7-wVCUpJvP7Z&OL!{BO~Y zF#VN@z@|OzNpimJutCJRpZJfLo+i=PaJe178c`TBud{%|t%D*seArDcUlqOWfG+)rNRA6ag);P}fWX1&Uno3?M@%F)8@ z&vV`_|5;nUd;FH`o@aArSR}uofBEEJVXx=e;zb@UUjRQpgf(uxR@?ksH(cE91vWow zczvDCpTY+nSloE{`LAB>cf%@^=^Y+4v~c^KLVr?!Iezl}x2`Aaw{+*%_-AkMwyRz1 zlmD(9R?~Mn&KtX%f0a-C>#i~Rx7u;U@#oW@8$aJq>w0p|pV*6Q_wWWRuJ#(A@>6%3 zOgz4M;qnXU&n^E>pYoUX=3Mdr*9&jE<@5hb?$v*H?q)T8H*Pa<`9<{Smj4r<@*n3D zD_U0Cab&g<%m0y2`Fn0OIf@6El*{MOh;I4(|DgN-cudUl~%-QZKcw8INN`5!&Q zlVs|HwHoNc&0t z&!~K_{y%)sDE8P4-2Qy7DfwmocB9N>(IS45t}8KXlLXk*jg_~Z5Vi7GHh(@}FrbC| ncLWLD^1BeH@)MRL^#=9(g5wt-X1ww*`kBe!mm3EbH~#+vYDrB@ literal 0 HcmV?d00001 diff --git a/obj/networking-ipv4.adb.stderr b/obj/networking-ipv4.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/networking-ipv4.adb.stdout b/obj/networking-ipv4.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/networking-ipv4.ali b/obj/networking-ipv4.ali new file mode 100644 index 0000000..4958546 --- /dev/null +++ b/obj/networking-ipv4.ali @@ -0,0 +1,97 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U networking.ipv4%b networking-ipv4.adb cfb8055c NE OO PK +W networking%s networking.adb networking.ali + +U networking.ipv4%s networking-ipv4.ads ad756407 NE OO PK +W networking%s networking.adb networking.ali +W system%s system.ads system.ali + +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D networking.ads 20241115151036 70ea6e55 networking%s +D networking-ipv4.ads 20241115151036 1c38e59d networking.ipv4%s +D networking-ipv4.adb 20241115151036 d380e0c1 networking.ipv4%b +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [generate_header networking__ipv4 62 13 none] +G c Z s s [ipv4_packet_headerIP networking__ipv4 29 9 none] +X 1 interfac.ads +16M9*Unsigned_8 5|38r25 39r25 6|35r30 +17M9*Unsigned_16 5|34r25 35r25 40r25 66r28 6|24r23 31r43 +X 4 networking.ads +20K9*Networking 55e15 5|19r9 67r5 6|17r14 41r5 +23A9*IPv4_Address(1|16M9) 5|41r25 42r25 63r30 6|21r30 +X 5 networking-ipv4.ads +19K20*IPv4 4|20k9 5|67l16 67e20 6|17b25 41l16 41t20 +21M9*Unsigned_2 33r25 +22M9*Unsigned_3 36r25 +23M9*Unsigned_4 30r25 31r25 +24M9*Unsigned_6 32r25 +25M9*Unsigned_13 37r25 +29R9*IPv4_Packet_Header 43e15 45r8 64r46 66r48 6|22r46 24r38 +30m7*Version{23M9} 46r7 6|27m11 +31m7*IHL{23M9} 47r7 6|28m11 +32m7*DSCP{24M9} 48r7 6|29m11 +33m7*ECN{21M9} 49r7 6|30m11 +34m7*Total_Length{1|17M9} 50r7 6|31m11 +35m7*Identification{1|17M9} 51r7 6|32m11 +36m7*Flags{22M9} 52r7 6|33m11 +37m7*Fragment_Offset{25M9} 53r7 6|34m11 +38m7*Time_To_Live{1|16M9} 54r7 6|35m11 +39m7*Protocol{1|16M9} 55r7 6|36m11 +40m7*Header_Checksum{1|17M9} 56r7 6|37m11 +41a7*Source_IP{4|23A9} 57r7 6|38m11 +42a7*Destination_IP{4|23A9} 58r7 6|39m11 +62V13*Generate_Header{29R9} 63>8 63>19 64>8 6|20b13 40l8 40t23 +63a8 Source_IP{4|23A9} 6|21b8 38r30 +63a19 Desto_IP{4|23A9} 6|21b19 39r30 +64i8 Data_Length{natural} 65r19 6|22b8 31r56 +X 6 networking-ipv4.adb +24m7 Size{1|17M9} 31r31 +X 7 system.ads +11K9*System 5|17w6 43r46 44r31 7|73e11 +40n23*High_Order_First{40E9} 5|43r53 44r38 + diff --git a/obj/networking-ipv4.o b/obj/networking-ipv4.o new file mode 100644 index 0000000000000000000000000000000000000000..7e827f1acf6d2777944380f0b85a21cd581fd3fa GIT binary patch literal 8680 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 5|33r25 34r25 50r30 6|21r30 +X 5 networking-ipv6.ads +19K20*IPv6 4|20k9 5|54l16 54e20 6|17b25 35l16 35t20 +21M9*Unsigned_4 27r25 +22M9*Unsigned_20 29r25 +26R9*IPv6_Packet_Header 35e15 37r8 51r46 53r48 6|22r46 +27m7*Version{21M9} 38r7 6|26m11 +28m7*Trafic_Class{1|16M9} 39r7 6|27m11 +29m7*Flow_Label{22M9} 40r7 6|28m11 +30m7*Payload_Length{1|17M9} 41r7 6|29m11 +31m7*Next_Header{1|16M9} 42r7 6|30m11 +32m7*Hop_Limit{1|16M9} 43r7 6|31m11 +33a7*Source_IP{4|24A9} 44r7 6|32m11 +34a7*Destination_IP{4|24A9} 45r7 6|33m11 +49V13*Generate_Header{26R9} 50>8 50>19 51>8 6|20b13 34l8 34t23 +50a8 Source_IP{4|24A9} 6|21b8 32r30 +50a19 Desto_IP{4|24A9} 6|21b19 33r30 +51i8 Data_Length{natural} 52r19 6|22b8 29r43 +X 7 system.ads +11K9*System 5|17w6 35r46 36r31 7|73e11 +40n23*High_Order_First{40E9} 5|35r53 36r38 + diff --git a/obj/networking-ipv6.o b/obj/networking-ipv6.o new file mode 100644 index 0000000000000000000000000000000000000000..df82c606f591c30090f0cc8288b68b041aec5d51 GIT binary patch literal 9208 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 literal 0 HcmV?d00001 diff --git a/obj/networking.adb.stderr b/obj/networking.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/networking.adb.stdout b/obj/networking.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/networking.ali b/obj/networking.ali new file mode 100644 index 0000000..9dddfbd --- /dev/null +++ b/obj/networking.ali @@ -0,0 +1,112 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U networking%b networking.adb 8a19d7a9 NE OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali + +U networking%s networking.ads 141b8716 NE OO PK +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D a-chlat1.ads 20241115151050 8791f8e7 ada.characters.latin_1%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D networking.ads 20241115151036 70ea6e55 networking%s +D networking.adb 20241115151036 7d62411b networking%b +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [Tipv4_addressBIP networking 23 4 none] +G c Z s s [Tipv6_addressBIP networking 24 4 none] +G c Z s b [get_hostname networking 38 14 none] +G c Z s b [set_hostname networking 45 14 none] +G c Z s s [Tmac_addressBIP networking 22 4 none] +G r c none [get_hostname networking 38 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_hostname networking 38 14 none] [release lib__synchronization 31 14 none] +G r c none [set_hostname networking 45 14 none] [seize lib__synchronization 27 14 none] +G r c none [set_hostname networking 45 14 none] [release lib__synchronization 31 14 none] +X 1 ada.ads +11K9*Ada 12e8 8|17r6 24r26 +X 2 a-charac.ads +11K13*Characters 12e19 8|17r10 24r30 +X 3 a-chlat1.ads +11K24*Latin_1 247e27 8|17w21 24r41 +13e4*NUL{character} 8|24r49 +X 4 interfac.ads +11K9*Interfaces 120e15 7|17w6 17r22 +16M9*Unsigned_8 7|22r44 23r44 24r44 +17M9*Unsigned_16 7|25r26 26r26 +X 5 lib.ads +19K9*Lib 35e8 7|18r6 18r31 +X 6 lib-synchronization.ads +20K13*Synchronization 66e24 7|18w10 18r35 +22R9*Binary_Semaphore 57e14 7|51r30 +23r4*Unlocked_Semaphore{22R9} 7|51r50 +27U14*Seize 8|32s7 44s7 +31U14*Release 8|34s7 47s7 +X 7 networking.ads +20K9*Networking 49E4 55l5 55e15 8|19b14 50l5 50t15 +22A9*MAC_Address(4|16M9) +23A9*IPv4_Address(4|16M9) 29r32 +24A9*IPv6_Address(4|16M9) 30r32 +25M9*IPv4_Port<4|17M9> +26M9*IPv6_Port<4|17M9> +29a4*IPv4_8_Submask{23A9} +30a4*IPv6_128_Submask{24A9} +33i4*Hostname_Max_Len{natural} 40r47 49c4 52r41 53r28 +38U14*Get_Hostname 38<28 38<47 8|22b14 35l8 35t20 +38a28 Name{string} 39r19 40r19 8|22b28 24m7 26r10 27r20 33m7 33r13 33r27 +38i47 Length{natural} 8|22b47 27m10 29m10 33r40 33r70 +45U14*Set_Hostname 45>28 45<43 8|37b14 49l8 49t20 +45a28 Name{string} 8|37b28 39r10 39r29 45r26 46r22 46r38 +45b43 Success{boolean} 8|37b43 40m10 48m7 +51r4 Hostname_Lock{6|22R9} 8|32m14 32r14 34m16 34r16 44m14 44r14 47m16 47r16 +52i4 Hostname_Length{natural} 8|26r24 29r20 45m7 +53a4 Hostname{string} 8|33r55 39r43 46m7 + diff --git a/obj/networking.o b/obj/networking.o new file mode 100644 index 0000000000000000000000000000000000000000..4f9a932f26359b5d39873a3f3e562753e65c133d GIT binary patch literal 18824 zcmd^`dvsjIeaGkSu3p%d9}>m}8B4ZtfS|YV3v47I%a01<_@Nq1vR@#Denn2roP|VD061NS!*sc z_nyGNjc?uc!*31T_u(3|_T`;Fs{Q4vpY8en=y(3~Y=<4n+4c}r5IrM2yGguj!X6M zOvlEUH_@+l3vJ>FI%39Hb>9?OT5V@Lr18MkveMgW{~`L-p&(%z?xL(z@RSrRG7Xp? zOX+8V`1*#gQhpJ3;v4GVf$O|L27cDrYXLQ6yB3ex_GqFTV>dRw6==2`pJkV#MUVBK zuVz;xfU<5`b93`mmnTeDXRTRsVXS3!u(WAu(>&6c%YG4Zk_YEN=cBy+jkaMP`t~=9 z9EZrJjWph$A$1VkTyD@FL0f!175|H090Uhr$Bb!Y7iNS+mGx<8Y`Y5~S+thyMX;6v zF7A@u6J*qz+8AYaV-L&=B-u-3xjpKStgf#;o2W;&I&n5(tiyU#Trx7)WhTfl7gtP_ zCHt8t%wqVl!?YB$$4|jIblwirT7-yXXXx5ak(Y*P6yrb|>SpX-+8zwL%7X+que!ph zFn);U0d~PG7le%8tW>&SC&IM4QpaBY+ z)a0oxwxz8u-UvFcBe-rk+6%b7#le!g{$#;G9lH(ehzeu%qOPhpQQhW26`h#cc6V0t+wO(0&(~k(!FLC8$?M-Lu50I5V&X%qn z3vN#Axh2;9SmKsL!OgnlV)1tI6G83RnR@b~ixa_tL}Dn&B!;$Ay=y5HH=|vA65g+y zUrIvho4vT9;(2#ng?Zfk7hM#f7@)l%2!7GH02x87I>=Z_6TX~c!OGY|dwN6R7ADqm zLDtZf*;!N=zc7d!x_<{X^W!n(CYA_l88z0HSd5t~frvFr$xcXxI_$WDc&+uiHXhjA zl^nBnAE_GSbzJUR2b<3>J2_X3N*8b=WG-SsT`haBcR6{a(Wva-nxN(i*Nd7uuC}C9 ztHH*Qh!<^M$1x@1F3za^OS%3<6bkpYW;NN|SF)}u4M;gcJGwOs<9FM(IO3X1Ngc%R zuna!l;Cyp^!qlO{Tsoa86ihBtynQBrTQ)b5Ois=ein-Ku#_UcG?AbGLlbOnnC6k3? zx%6ayCYL>)DrRSL$z(n=l}QycCOw(Tr_#ktzQV~q@sga%L|RJ>CAK?Qw-Nk&7^OuC@BT7w*qHpkMt!sBnxw6)2Ra0NEPSusVS38j?HDK zirHL}8_DLVM~721ILYK(u8^I`WyX`;>mtUYkjWme?AS!6SRTl1A&K}h<0jPY20y}e z$<+9G9>;~EnV#{+Y@hAJ>`cBmSWyvtUDEN2{#Xx%VxEp}MEqmfTq=JoS;$PMW+!Lz zm0huJyLP)9*3q@MB@6ONMnn@Qs zvotHyQ>pRJe6cW|&395=SN#}O&&{+KimCK%?X&rrBB^Kc1RY6FX41E9&dm@QPZd+` z1uCYQU7-ELb2)1(hPX0AJGiY~bbf4JC3~w}dzqopOuj%aHm{oKO7*VqN^dNc49-pL z%@(Q7WU)9~*wk5yx`Q4-CUSEfGx>?mxdPRno5dmQm@H0Dm1+;<)03{re72B2vaYXv zDm$IcWy*q)ksGhSao5OAn}<_Vg^cU?Y&PB6K20M)r)ugbnW?et=Be3reH?Cjb7ygS zwsYIAfqm`!w%)M2y$h+QW8V$C%Zgub=nFG*`E;gpHlLcH^Qt2?PA%IJn+|Pby=!AS zTcBZ|&7?Q?baij+?&*(Z&%G0#7Y*Kt ziQRPpR~>3JgLcI}u$@G9)|vpT@x-DUdvJSZyOYyBvt7v)tTZfptexQwx3#CI=cc-6 zyCRw|VXQ(D=Erzktx7bORSY1`Yb(DnP9)TQrE}m-c{8w|)hx;$BF+Km)-1)EO&VMww&-NwnGCpCS4Qyg^RdBfiqMCjcMS&j z9-So40~(SoJp4RrFoz@b;pa<($wlbH&zA;sBtm~Qg8SzeWO4Vh%&P%zUy_CJ@E5xA z@~gp$I&t^a?!7d z(66lGZl0_#S9m4DJ0tk@5qx(9Pe$$jNYo}c;5pY(V$^S|HpjE7SnC> za$$`fuNL#T$LW;=r55u|k6+0Ava$0uvz2~Rh^6L5D$9#$B=NikakIMk_ zNl(Ac@~HKOzlwF03zMD*{iX4fNYczit>k zeb`)$U6hSy#^xrHsj;zq=13Rq59}T81*e>MyJ>G^&j_kH@f5v;<+2{9L>W~;d#LX+ zG(mgp3{BG>!l0~2nqu57ZJ{wL?`Fr{?5mqw=w_$%QNroiyX_hLf)5Yc?N-+GppB8e z``BdGAZx*U!jLzHtkz0xg&Gdu`7ycJt&M|z5!cHwc< z4(8|x6r=X&jN0Qv9(%dPUT&#ZTHpwJc_4bxIf|Qm0XjN@CPwX1cLyq)J3P~+UgIW{ z?lTI1wHVy7yQ;AC6{e~XFQy|ZR($t)-49mwvsgu=<&R&mAUebdvg%ymKaCm;2F(0=VvUxQSU#FCUxcDR$cgfm<}JInJvR^EC|wL$6KTHb*{ z=2$U*ifv@WY+pjT<|E9}uD(a?VGci^W*gZk+wi0L&CC(!(`+LB*e|T(5z&Ukz5qf>$mE)U{bkHC&VK>GsZHrm38dUTk2?Q)o?or>_bYwB^8bwD z?s?J0^ESmNm0qq4jfTOzZDf@w{E>Pb>Zo#owj)I~9LK@pmbHjycBd z-HLx)aXmin`Ol5pdzAh;rPt&0g5nPP20;_p*_KB@RQ#h+FD4;24Ab7b#V`~}4yQ~alj>*MvB;*TqRGd-6ep;*s{OBMe^ zt8g3o%QBmw*Z%SRgoNY%gtgpeO9UTM`~ynAUGYCs{07DUSn)SS@ZVPagGzr;@ee63 z_dE3KNyUGQZSW5(o>BZGip#YQ`ll4HWgFx3QN^*IK!RS+t7VoN2j|Eu7f68d$}T5hB7@3JOA$(5{u{>^M7>th@IEo>v($ToPA zZDd>620z3$vg_FfPqB?`JKNx6Y$KC(GWyl5_#w8@zoj7@{nPqMrN2n&g+s6X$eIWK z<(Q(HaOkxkSsOsV970aQq1S%o9tXXw!B9mw^xBWyYoN#4RFZJ$wI8|0Lf;}{%7sI( z{m8it{R*WQ4!!nso;A>4s`SF4*M8($1pP{-7Y@Dl^DJwiZ)F>qaOkz4zh({eZEPbG z4t*;Cr*Ci$J${meL$Ccj&jM&yi4ihD z{ami%Nh`f@=(V37*2jo#S`YlQ?9D42NA*H`g>4ihD{k&i4`;}fe^xDrylzu?zg+t%3_@|V9FoZ*| z{XDDma<4=+;m~V8UsC!Z2ssIdUi28WPpy-i_-?EdZxh&T(z7 zXB$~7+qmXw{Z-6;|8mWN{|i`yOwKjR=e{FOCbm$lARUaF|B^93>LL}aYhYtKXQ8$^Vr z;?=(my&_(Dkx#uvw?fP8|7kHD`I#z3)#rnbLbyu*SDe>v$$cydbt9pczB#xamp}W^ zkx?J^C}0d4f4-YZPh|^5I${dae`m@~WGY!cH&HFb$3JmSQ$bANq}@-?OiyQWG&OSc ze@{B-kNw^MMX6}*a325Fs>A+;d`GHC|4V0Vu1Kx_UlX1&aBk{rAbj>?6OwSg>eNO% zs2|sm?0#=wcA?b?Yt(xB{igMC&3e7~{doQT8zbru5=Zj&{(hb`VeJpu+P}K~dn4)( zbA7pv@orT-XQ?1TzkU&L{@hw;$otvVv|C3%j5U(nFF#9mSp5HKRh94Hf&BhILoBTQ z4Y*KKa(|cPo~0US-*5k0#L&Kf{N+9IYgDF_)ED*&8KLz#P?YK9*T?&GX#9R1Ww1zB zCfl#SIimh)u8*m0gEA)2ly4Yu^m*;k6{Q-vLYw>qmVevoM z<@ASKX5()r+mHX-RNwcBDvd1c$Bs(A_W6kRf5h!S$#pS)OX=sgkH6>geWJ=P7OujM zO1}0d5$!+956v8g?LUs0-~N1>C%#WKH_O6Ty+Uu-)KUGg@&B^4kBbH+^dIlf{Pywp zm+&cZl4($;{8W zzR#te@Ha)&mxqPtM98^}pWqRyA2$9!68qm-F{6R35MVluasQo?B$I zif26#KYr|U6RrYpTXC_V^nK3PkbRzhe*2gn)P7Z}N5GW6 25|63r32 26|59r38 154r32 271r31 290r32 +24M15*Core_Context{13|19M9} 26|60r38 +33U14*Init_GP_Context 26|242s23 273s20 +39U14*Load_GP_Context 26|747s20 +42U14*Save_Core_Context 26|709s26 +46U14*Success_Fork_Result 26|339s20 +49U14*Init_FP_Context 26|246s23 277s20 +50U14*Save_FP_Context 26|710s26 +51U14*Load_FP_Context 26|744s20 +52U14*Destroy_FP_Context 26|712s26 +X 8 arch-local.ads +21K14*Local 40e15 26|23w11 130r12 356r39 362r15 369r37 376r12 583r42 698r12 +. 707r59 731r12 737r12 738r12 740r12 743r12 +23U14*Reschedule_In 26|698s18 731s18 +24U14*Reschedule_ASAP 26|130s18 362s21 376s18 +27V13*Fetch_TCB{27|25M9} 26|707s65 +28U14*Load_TCB 26|743s18 +31U14*Set_Stacks 26|740s18 +36V13*Get_Current_Thread{25|27I9} 26|356s45 369s43 583s48 +38U14*Set_Current_Thread 26|738s18 +39U14*Set_Current_Process 26|737s18 +X 9 arch-mmu.ads +22K14*MMU 250e13 25|22w11 45r26 54r26 64r24 26|56r30 138r26 144r41 162r12 +. 263r26 291r24 734r19 +26R9*Page_Permissions 32e14 26|144r45 +27b7*Is_User_Accesible{boolean} 26|145m11 +28b7*Can_Read{boolean} 26|146m11 +29b7*Can_Write{boolean} 26|147m11 +30b7*Can_Execute{boolean} 26|148m11 +31b7*Is_Global{boolean} 26|149m11 +43P9*Page_Table_Acc(42R9) 25|45r30 54r30 64r28 26|56r34 138r30 263r30 291r28 +81V13*Make_Active{boolean} 26|734s23 +139U14*Map_Allocated_Range 26|162s16 +140p8 Map{43P9} 26|163r11 +141m8 Physical_Start{27|25M9} 26|164r11 +142m8 Virtual_Start{27|25M9} 26|165r11 +143i8 Length{28|16I12} 26|166r11 +144r8 Permissions{26R9} 26|167r11 +145b8 Success{boolean} 26|168r11 +X 10 arch-snippets.ads +20K14*Snippets 81e18 26|25w11 128r15 796r12 797r17 +29U14*Enable_Interrupts 26|796s21 +33U14*Wait_For_Interrupt 26|797s26 +37U14*Pause 26|128s24 +X 13 interfac.ads +11K9*Interfaces 120e15 25|18w6 18r22 +16M9*Unsigned_8 26|31r57 33r64 +18M9*Unsigned_32 25|125r60 175r50 26|89r48 562r60 589r15 821r50 +19M9*Unsigned_64 25|48r21 55r21 56r21 82r49 83r49 26|32r57 42r26 43r26 63r25 +. 64r25 65r25 66r25 67r25 68r25 69r25 70r25 71r25 72r25 90r18 141r21 156r19 +. 223r46 232r46 244r55 264r21 265r21 382r49 383r49 395r17 415r29 588r29 801r15 +. 802r15 804r17 805r18 807r18 808r19 +X 18 lib.ads +19K9*Lib 35e8 26|18r6 19r6 26w6 27r6 62r33 82r30 118r7 298r7 337r7 342r7 +. 348r7 352r7 361r10 363r10 364r10 371r7 375r7 386r7 391r7 398r7 404r7 408r7 +. 411r7 417r7 426r10 431r10 435r7 445r7 449r7 457r7 470r7 477r7 493r7 500r7 +. 507r7 514r7 523r7 564r7 579r7 593r7 612r10 613r10 616r10 697r7 735r10 746r7 +. 756r7 768r7 777r7 791r7 +X 20 lib-panic.ads +21K13*Panic 39e14 26|19w10 735r14 +32U14*Hard_Panic 26|735s20 +X 21 lib-synchronization.ads +20K13*Synchronization 66e24 26|18w10 62r37 82r34 118r11 298r11 337r11 342r11 +. 348r11 352r11 361r14 363r14 364r14 371r11 375r11 386r11 391r11 398r11 411r11 +. 417r11 435r11 445r11 449r11 457r11 470r11 477r11 493r11 500r11 507r11 514r11 +. 523r11 564r11 579r11 593r11 612r14 697r11 746r11 756r11 768r11 777r11 791r11 +22R9*Binary_Semaphore 57e14 26|62r53 +27U14*Seize 26|361s30 363s30 +31U14*Release 26|337s27 364s30 612s30 +38R9*Critical_Lock 62e14 26|82r50 +44U14*Seize 26|298s27 348s27 371s27 386s27 398s27 417s27 445s27 457s27 477s27 +. 500s27 514s27 564s27 593s27 756s27 777s27 +49U14*Release 26|118s27 342s27 352s27 375s27 391s27 411s27 435s27 449s27 +. 470s27 493s27 507s27 523s27 579s27 697s27 746s27 768s27 791s27 +X 22 lib-time.ads +19K13*Time 77e13 26|27w10 404r11 408r11 426r14 431r14 613r14 616r14 +37U14*Increment 26|408s16 431s19 616s19 +48U14*Substract 26|404s16 426s19 613s19 +49m8 Seconds1{13|19M9} 26|427r14 +49m18 Nanoseconds1{13|19M9} 26|428r14 +50m8 Seconds2{13|19M9} 26|429r14 +50m18 Nanoseconds2{13|19M9} 26|430r14 +X 23 memory.ads +19K9*Memory 36e11 25|19w6 19r18 +35M12*Virtual_Address{28|49M9} 25|42r21 53r21 26|135r21 165r41 262r21 +X 25 scheduler.ads +25K9*Scheduler 160E9 183l5 183e14 26|29b14 828l5 828t14 +27I9*TID 29r26 49r37 58r37 67r42 70r38 81r17 87r44 88r43 108r54 +. 115r36 116r37 118r33 119r33 132r31 134r46 138r17 160c9 162r27 173r32 177r31 +. 179r46 180r29 180r59 26|74r39 74r54 142r37 152r19 267r37 269r18 294r42 +. 296r17 346r38 356r27 369r25 381r17 394r44 414r43 511r54 527r36 532r37 537r33 +. 551r33 583r30 584r30 815r32 +28I9*TCID 30r26 47r21 57r21 65r19 98r27 103r39 105r35 106r39 108r39 +. 133r30 135r46 139r17 145r22 161c9 163r26 171r37 173r41 178r30 181r46 182r29 +. 182r61 26|45r35 45r51 54r25 140r21 266r21 292r19 439r27 453r39 474r35 475r18 +. 497r39 511r39 587r36 800r37 815r41 +29i4*Error_TID{27I9} 162c4 180r44 26|152r26 296r24 358r22 584r37 610r25 675r28 +. 703r25 753r28 +30i4*Error_TCID{28I9} 163c4 182r45 26|491r19 587r44 630r31 640r31 753r39 +. 774r28 +33V13*Init{boolean} 26|93b13 120l8 120t12 +37U14*Idle_Core 26|122b14 132l8 132t17 +41V13*Create_User_Thread{27I9} 42>8 43>8 44>8 45>8 46>8 47>8 48>8 49>8 26|134b13 +. 259l8 259t26 +42m8 Address{23|35M12} 26|135b8 245r26 +43a8 Args{30|20A9} 26|136b8 191r29 202r35 230r29 237r31 +44a8 Env{30|21A9} 26|137b8 181r28 202r49 221r28 +45p8 Map{9|43P9} 26|138b8 163r29 251r27 +46r8 Vector{31|31R9} 26|139b8 207r35 209r35 211r35 213r35 +47i8 Cluster{28I9} 26|140b8 253r27 +48m8 Stack_Size{13|19M9} 26|141b8 161r58 166r45 174r48 +49i8 PID{natural} 26|142b8 151r73 252r27 +52V13*Create_User_Thread{27I9} 53>8 54>8 55>8 56>8 57>8 58>8 26|261b13 286l8 +. 286t26 +53m8 Address{23|35M12} 26|262b8 276r23 +54p8 Map{9|43P9} 26|263b8 281r23 +55m8 Stack_Addr{13|19M9} 26|264b8 275r40 +56m8 TLS_Addr{13|19M9} 26|265b8 284r52 +57i8 Cluster{28I9} 26|266b8 283r23 +58i8 PID{natural} 26|267b8 282r23 +61V13*Create_User_Thread{27I9} 62>8 63>8 64>8 65>8 66>8 67>8 26|248s21 278s18 +. 288b13 344l8 344t26 +62r8 GP_State{6|22R15} 26|249r14 279r11 289b8 323r41 +63a8 FP_State{6|23A15} 26|250r14 280r11 290b8 324r41 +64p8 Map{9|43P9} 26|251r14 281r11 291b8 321r40 +65i8 Cluster{28I9} 26|253r14 283r11 292b8 320r40 +66i8 PID{natural} 26|252r14 282r11 293b8 325r66 +67m8 TCB{27|25M9} 26|254r14 284r11 294b8 322r44 +70U14*Delete_Thread 70>29 26|346b14 353l8 353t21 +70i29 Thread{27I9} 26|346b29 349r23 350r23 +74U14*Yield_If_Able 26|355b14 366l8 366t21 +77U14*Bail 26|368b14 378l8 378t12 +80U14*Get_Runtime_Times 81>8 82<8 82<24 83<8 83<22 26|380b14 392l8 392t25 +81i8 Thread{27I9} 26|381b8 387r38 388r42 389r36 390r40 +82m8 System_Seconds{13|19M9} 26|382b8 387m7 +82m24 System_Nanoseconds{13|19M9} 26|382b24 388m7 +83m8 User_Seconds{13|19M9} 26|383b8 389m7 +83m22 User_Nanoseconds{13|19M9} 26|383b22 390m7 +87U14*Signal_Kernel_Entry 87>35 26|394b14 412l8 412t27 +87i35 Thread{27I9} 26|394b35 401r20 402r20 406r24 407r24 409r24 409r55 +88U14*Signal_Kernel_Exit 88>34 26|414b14 436l8 436t26 +88i34 Thread{27I9} 26|414b34 420r20 421r20 423r23 424r23 429r43 430r43 432r27 +. 432r60 +93E9*Cluster_Algorithm 95e28 99r27 146r22 26|38r26 440r27 +94n8*Cluster_RR{93E9} 26|110r61 482r37 654r18 774r40 +95n8*Cluster_Cooperative{93E9} 26|662r18 +97V13*Set_Scheduling_Algorithm{boolean} 98>8 99>8 100>8 101>8 26|438b13 451l8 +. 451t32 +98i8 Cluster{28I9} 26|439b8 446r21 447r21 448r21 +99e8 Algo{93E9} 26|440b8 446r50 +100i8 Quantum{natural} 26|441b8 447r50 +101b8 Is_Interruptible{boolean} 26|442b8 448r50 +103V13*Set_Time_Slice{boolean} 103>29 103>45 26|453b13 472l8 472t22 +103i29 Cluster{28I9} 26|453b29 459r50 464r24 465r24 +103i45 Per{natural} 26|453b45 464r48 465r47 +105V13*Create_Cluster{28I9} 26|474b13 495l8 495t22 +106V13*Delete_Cluster{boolean} 106>29 26|497b13 509l8 509t22 +106i29 Cluster{28I9} 26|497b29 501r24 502r24 +108V13*Switch_Cluster{boolean} 108>29 108>45 26|511b13 525l8 525t22 +108i29 Cluster{28I9} 26|511b29 515r24 518r42 +108i45 Thread{27I9} 26|511b45 516r23 518r23 +112I12*Niceness{integer} 113r32 115r48 116r49 26|53r25 527r48 532r49 +113i4*Default_Niceness{112I12} +115V13*Get_Niceness{112I12} 115>27 26|527b13 530l8 530t20 +115i27 Thread{27I9} 26|527b27 529r27 +116U14*Set_Niceness 116>28 116>42 26|532b14 535l8 535t20 +116i28 Thread{27I9} 26|532b28 534r20 +116i42 Nice{112I12} 26|532b42 534r36 +118U14*Get_Name 118>24 118<38 118<57 26|537b14 549l8 549t16 +118i24 Thread{27I9} 26|537b24 539r38 540r23 542r56 543r26 543r58 544r30 +118a38 Name{string} 26|537b38 539r10 542m10 542r16 542r30 546m10 +118i57 Len{natural} 26|537b57 544m10 547m10 +119U14*Set_Name 119>24 119>38 119<53 26|551b14 560l8 560t16 +119i24 Thread{27I9} 26|551b24 553r38 554r23 555r23 +119a38 Name{string} 26|551b38 553r10 554r42 554r58 555r58 +119b53 Success{boolean} 26|551b53 556m10 558m10 +125U14*Get_Load_Averages 125<33 125<40 125<47 26|562b14 580l8 580t25 +125m33 Avg_1{13|18M9} 26|562b33 565m7 +125m40 Avg_5{13|18M9} 26|562b40 567m7 569m10 569r19 571m7 571r16 +125m47 Avg_15{13|18M9} 26|562b47 573m7 575m10 575r20 577m7 577r17 +129U14*Scheduler_ISR 129>29 26|582b14 748l8 748t21 +129r29 State{6|22R15} 26|582b29 708r54 +132V13*Convert{natural} 132>22 177b13 +132i22 Thread{27I9} 177r64 +133V13*Convert{natural} 133>22 178b13 +133i22 Group{28I9} 178r64 +134V13*Convert{27I9} 134>22 179b13 +134i22 Value{natural} 180r12 180r64 +135V13*Convert{28I9} 135>22 181b13 +135i22 Value{natural} 182r12 182r67 +137R9*Thread_Listing 141e14 142r59 +138i7*Thread{27I9} +139i7*Cluster{28I9} +140i7*Proc{natural} +142A9*Thread_Listing_Arr(137R9) 155r35 26|750r35 +144R9*Cluster_Listing 149e14 150r60 +145i7*Cluster{28I9} +146e7*Cluster_Algo{93E9} +147b7*Cluster_Int{boolean} +148i7*Cluster_Quan{natural} +150A9*Cluster_Listing_Arr(144R9) 156r35 26|771r35 +155U14*List_All 155<24 155<55 26|750b14 769l8 769t16 +155a24 List{142A9} 26|750b24 753m7 761m16 761r22 +155i55 Total{natural} 26|750b55 754m7 759m13 759r22 +156U14*List_All 156<24 156<56 26|771b14 792l8 792t16 +156a24 List{150A9} 26|771b24 774m7 782m16 782r22 +156i56 Total{natural} 26|771b56 775m7 780m13 780r22 +165b4 Is_Initialized{boolean} 26|117m7 126r21 +169U14 Waiting_Spot 26|131s7 377s7 794b14 798l8 798t20 +171V13 Has_Available_Time{boolean} 171>33 26|620s13 625s19 632s22 800b13 +. 813l8 813t26 +171i33 C{28I9} 26|800b33 801r44 802r44 812r42 +173V13 Is_Switchable{boolean} 173>28 173>37 26|670s16 677s19 815b13 819l8 +. 819t21 +173i28 T{27I9} 26|815b28 816r45 +173i37 C{28I9} 26|815b37 818r67 +175U14 Add_Bucket_And_Shift 175>36 26|605s10 821b14 827l8 827t28 +175m36 Last_Bucket{13|18M9} 26|821b36 826r34 +X 26 scheduler.adb +30N4 Kernel_Stack_Size 33r42 +31A9 Thread_Stack(13|16M9) 175r19 +32A9 Thread_Stack_64(13|19M9) 176r19 +33A9 Kernel_Stack(13|16M9) 34r36 312r52 742r48 +34P9 Kernel_Stack_Acc(33A9) 57r25 +36R9 Thread_Cluster 44e14 45r65 +37b7*Is_Present{boolean} 103m13 109m41 459r30 464r33 479r34 481m17 501r33 +. 502m33 515r33 779r30 +38e7*Algorithm{25|93E9} 110m41 446m30 482m17 653r43 784r37 +39i7*RR_Quantum{natural} 112m41 447m30 484m17 656r47 657r49 786r37 +40b7*Is_Interruptible{boolean} 111m41 359r56 448m30 483m17 785r37 +41i7*Percentage{integer} 113m41 460r53 465m33 485m17 650r56 812r45 +42m7*Progress_Seconds{13|19M9} 104m13 114m41 617m42 642m21 801r47 +43m7*Progress_Nanos{13|19M9} 105m13 115m41 618m42 643m21 651r50 802r47 +45A9 Cluster_Arr(36R9)<25|28I9> 46r35 97r27 +46P9 Cluster_Arr_Acc(45A9) 83r22 +48R9 Thread_Info 73e14 74r67 816r12 +49b7*Is_Present{boolean} 99m13 302r33 315m29 349r31 350m31 372r31 373m31 +. 516r31 601r32 686r32 706r39 758r29 818r17 +50b7*Is_Running{boolean} 302r68 316m29 686r67 704m36 739m30 818r39 +51a7*Path{string} 317m29 543r34 553r46 554m31 +52i7*Path_Len{integer} 318m29 539r46 540r31 542r64 543r66 544r38 555m31 +53i7*Nice{25|112I12} 319m29 529r35 534m28 658r46 +54i7*Cluster{25|28I9} 320m29 359r47 518m31 611r52 689r48 762r39 818r57 +55m7*TCB_Pointer{27|25M9} 322m29 707m39 743r51 +56p7*PageMap{9|43P9} 321m29 734r59 +57p7*Kernel_Stack{34P9} 100m13 311r32 312m32 742r34 +58r7*GP_State{6|22R15} 323m29 339m63 708m39 745r44 +59a7*FP_State{6|23A15} 324m29 710m69 713m43 744r60 +60m7*C_State{6|24M15} 709m71 741r34 +61i7*Process{33|33I9} 325m29 737r62 763r62 +62r7*Yield_Mutex{21|22R9} 337m58 361m60 363m62 364m62 612m65 +63m7*Last_Sched_Sec{13|19M9} 326m29 614m40 719m34 725r36 +64m7*Last_Sched_NSec{13|19M9} 327m29 615m40 720m34 727r36 +65m7*System_Sec{13|19M9} 328m29 387r46 432m35 +66m7*System_NSec{13|19M9} 329m29 388r50 432m68 +67m7*User_Sec{13|19M9} 330m29 389r44 409m32 +68m7*User_NSec{13|19M9} 331m29 390r48 409m63 +69m7*System_Tmp_Sec{13|19M9} 332m29 401m28 423r31 429r51 +70m7*System_Tmp_NSec{13|19M9} 333m29 402m28 424r31 430r51 +71m7*User_Tmp_Sec{13|19M9} 334m29 406r32 420m28 721r33 724m33 +72m7*User_Tmp_NSec{13|19M9} 335m29 407r32 421m28 722r33 726m33 +74A9 Thread_Info_Arr(48R9)<25|27I9> 75r39 96r27 +75P9 Thread_Info_Arr_Acc(74A9) 84r22 +80N4 Total_Slice 650r14 812r14 +82r4 Scheduler_Mutex{21|38R9} 118m36 118r36 298m34 298r34 342m36 342r36 348m34 +. 348r34 352m36 352r36 371m34 371r34 375m36 375r36 386m34 386r34 391m36 391r36 +. 398m34 398r34 411m36 411r36 417m34 417r34 435m36 435r36 445m34 445r34 449m36 +. 449r36 457m34 457r34 470m36 470r36 477m34 477r34 493m36 493r36 500m34 500r34 +. 507m36 507r36 514m34 514r34 523m36 523r36 564m34 564r34 579m36 579r36 593m34 +. 593r34 697m36 697r36 746m36 746r36 756m34 756r34 768m36 768r36 777m34 777r34 +. 791m36 791r36 +83p4 Cluster_Pool{46P9} 97m7 102r17 102r31 102r57 109r7 109r21 110r7 110r21 +. 111r7 111r21 112r7 112r21 113r7 113r21 114r7 114r21 115r7 115r21 359r10 +. 446r7 447r7 448r7 458r16 459r13 460r36 464r10 465r10 478r16 479r17 480r13 +. 501r10 502r10 515r10 617r14 618r14 624r42 631r25 641r25 650r28 651r22 653r15 +. 656r19 657r21 778r16 779r13 784r20 785r20 786r20 801r30 802r30 812r28 +84p4 Thread_Pool{75P9} 96m7 98r17 301r16 302r17 302r52 311r10 312r10 315r7 +. 316r7 317r7 318r7 319r7 320r7 321r7 322r7 323r7 324r7 325r7 326r7 327r7 +. 328r7 329r7 330r7 331r7 332r7 333r7 334r7 335r7 337r36 339r41 349r10 350r10 +. 359r24 361r37 363r39 364r39 372r10 373r10 387r25 388r29 389r23 390r27 401r7 +. 402r7 406r11 407r11 409r11 409r42 420r7 421r7 423r10 424r10 429r30 430r30 +. 432r14 432r47 516r10 518r10 529r14 534r7 539r25 540r10 542r43 543r13 543r45 +. 544r17 553r25 554r10 555r10 600r19 600r40 601r16 611r26 612r39 614r14 615r14 +. 658r20 669r38 676r22 685r19 686r16 686r51 689r32 704r10 706r13 707r13 708r13 +. 709r45 710r43 713r17 719r11 720r11 721r10 722r10 724r10 725r13 726r10 727r13 +. 734r36 737r39 739r7 741r11 742r11 743r28 744r37 745r21 757r16 758r13 760r29 +. 762r23 763r46 781r29 816r32 +89A9 Stats_Bucket_Arr(13|18M9) 91r18 +90m4 Last_Bucket{13|19M9} 597r22 598m10 +91a4 Buckets{89A9} 565r16 565r25 568r18 568r27 568r44 574r18 823r24 823r41 +. 824m10 824r29 826m7 826r16 +98r11 Th=98:11{48R9} 99r10 100r10 +102r11 Cl=102:11{36R9} 103r10 104r10 105r10 +123b7 To_Test{boolean} 126m10 127r20 +144r7 Stack_Permissions{9|26R9} 167r29 +151i7 Proc{33|33I9} 160r53 161r40 +152i7 New_TID{25|27I9} 248m10 258r14 +153r7 GP_State{6|22R15} 243m14 249r26 +154a7 FP_State{6|23A15} 246m40 250r26 +155m7 Result{27|25M9} 164m29 175r66 176r73 +156m7 Stack_Top{13|19M9} 160m7 161r46 165r58 223r34 232r34 244r43 +157b7 Success{boolean} 168m29 169r14 +174i10 Sz{natural} 175r38 176r41 +175a10 Stk_8{31A9} 177r32 182m13 185m16 192m13 195m16 218r21 +176a10 Stk_64{32A9} 178r32 205m10 206m10 207m10 208m10 209m10 210m10 211m10 +. 212m10 213m10 214m10 219m10 223m13 228m10 232m13 237m10 +177i10 Index_8{natural} 182r20 183m13 183r24 185r23 186m16 186r27 192r20 +. 193m13 193r24 195r23 196m16 196r27 201r23 201r40 218m10 222m13 222r25 223r59 +. 231m13 231r25 232r59 +178i10 Index_64{natural} 201m10 202m10 202r22 205r18 206r18 207r18 208r18 +. 209r18 210r18 211r18 212r18 213r18 214r18 215m10 215r22 219r18 220m10 220r22 +. 223r21 224m13 224r25 228r18 229m10 229r22 232r21 233m13 233r25 237r18 238m10 +. 238r22 241m10 241r22 244r68 +181p14 En=181:28{30|19P9} 184r30 +184e17 C=184:17{character} 185r50 +191p14 Arg=191:29{30|19P9} 194r30 +194e17 C=194:17{character} 195r50 +221p14 En=221:28{30|19P9} 222r35 +230p14 Arg=230:29{30|19P9} 231r35 +257L6 Cleanup 170r15 +269i7 New_TID{25|27I9} 278m7 285r14 +270r7 GP_State{6|22R15} 274m11 279r23 +271a7 FP_State{6|23A15} 277m37 280r23 +296i7 New_TID{25|27I9} 304m13 311r23 312r23 315r20 316r20 317r20 318r20 319r20 +. 320r20 321r20 322r20 323r20 324r20 325r20 326r20 327r20 328r20 329r20 330r20 +. 331r20 332r20 333r20 334r20 335r20 337r49 339r54 343r14 +301i11 I 302r30 302r65 304r24 +310L6 Found_TID 305r18 +341L6 End_Return 308r12 +356i7 Curr_TID{25|27I9} 358r10 359r37 361r50 363r52 364r52 +369i7 Thread{25|27I9} 372r23 373r23 +395m7 T1{13|19M9} 399m39 401r46 405m11 405r11 410r11 +395m11 T2{13|19M9} 399m43 402r47 405m15 405r15 410r15 +396b7 Discard{boolean} +415m7 Temp_Sec{13|19M9} 418m39 420r44 427m30 427r30 433r14 +415m17 Temp_NSec{13|19M9} 418m49 421r45 428m30 428r30 433r24 +454i7 Consumed{natural} 460m13 460r25 464r62 +455b7 Success{boolean} 466m10 468m10 471r14 +458i11 I 459r27 459r45 460r50 +475i7 Returned{25|28I9} 487m13 491m7 494r14 +478i11 I 479r31 480r27 487r25 +492L6 Cleanup 488r18 +498b7 Success{boolean} 503m10 505m10 508r14 +512b7 Success{boolean} 519m10 521m10 524r14 +568m11 Val=568:11{13|18M9} 569r28 +574m11 Val=574:18{13|18M9} 575r30 +583i7 Current_TID{25|27I9} 610r10 611r39 612r52 614r27 615r27 658r33 669r19 +. 675r13 676r43 703r10 704r23 706r26 707r26 708r26 709r58 710r56 713r30 +584i7 Next_TID{25|27I9} 671m16 678m19 688m16 719r24 720r24 721r23 722r23 +. 724r23 725r26 726r23 727r26 734r49 737r52 738r38 739r20 741r24 742r24 743r41 +. 744r50 745r34 +585r7 Next_State{6|22R15} 745m7 747r37 +586i7 Timeout{natural} 655m16 659r19 660m19 663m16 684m10 698r33 731r33 +586i16 Max_Next_Timeout{natural} 649m10 659r29 660r30 663r27 +587i7 Curr_Cluster{25|28I9} 611m10 617r28 618r28 620r33 621r29 624r22 631r47 +. 645r32 650r42 651r36 +587i21 Next_Cluster{25|28I9} 621m13 626m19 630r16 633m22 640r16 645m16 653r29 +. 656r33 657r35 670r34 677r37 689m16 +588m7 Curr_Sec{13|19M9} 591m39 597r10 598r25 615r57 618r58 +588m17 Curr_NSec{13|19M9} 591m49 615r67 618r68 +589m7 Count{13|18M9} 599m10 602m16 602r25 605r32 +600i14 I 601r29 +624i17 I 625r39 626r35 +631i20 I 632r42 633r38 +641r20 C=641:20{36R9} 642r19 643r19 +669i14 I 670r31 671r28 +676i17 I 677r34 678r31 +685i14 I 686r29 686r64 688r28 689r45 +701L6 Found_TID_TCID_Combo 672r21 679r24 690r21 +751i7 Curr_Index{natural} 760r16 761r35 764m16 764r30 +757i11 I 758r26 762r20 762r36 763r59 +772i7 Curr_Index{natural} 781r16 782r35 787m16 787r30 +778i11 I 779r27 783r20 784r34 785r34 786r34 +801m7 Secs{13|19M9} 804r10 805m10 811r23 +802m7 Nanos{13|19M9} 807r10 808m10 811r40 +816r7 Th{48R9} 818r14 818r36 818r54 +823i11 I{integer} 824r19 824r38 +X 27 system.ads +11K9*System 25|17w6 67r19 26|17w6 20r6 20r35 55r25 155r19 254r27 294r19 27|73e11 +25M9*Address 25|67r26 26|55r32 155r26 294r26 +26m4*Null_Address{25M9} 26|254r34 +X 28 s-stoele.ads +11K16*Storage_Elements 26|20w13 20r42 28|60e28 +12I9*Storage_Offset 26|166r29 +16I12*Storage_Count{12I9} +49M9*Integer_Address 26|244r26 275r23 284r35 +51V13*To_Address{27|25M9} 26|165s29 244s14 245s14 275s11 276s11 284s23 +X 30 userland.ads +17K9*Userland 25|20w6 21r6 43r21 44r21 46r21 26|21r6 61r25 136r21 137r21 +. 139r21 151r23 151r47 160r20 161r7 206r35 208r35 210r35 212r35 214r35 325r40 +. 763r20 30|23e13 +19P9*String_Acc(string) +20A9*Argument_Arr(19P9) 25|43r30 26|136r30 +21A9*Environment_Arr(19P9) 25|44r30 26|137r30 +X 31 userland-elf.ads +22K18*ELF 25|21w15 46r30 26|139r30 206r44 208r44 210r44 212r44 214r44 31|142e17 +26N4*Auxval_Null 26|206r48 +27N4*Auxval_Program_Headers 26|210r48 +28N4*Auxval_Header_Size 26|214r48 +29N4*Auxval_Header_Count 26|212r48 +30N4*Auxval_Entrypoint 26|208r48 +31R9*Auxval 25|46r34 26|139r34 31|36e14 +32m7*Entrypoint{13|19M9} 26|207r42 +33m7*Program_Headers{13|19M9} 26|209r42 +34m7*Program_Header_Count{13|19M9} 26|211r42 +35m7*Program_Header_Size{13|19M9} 26|213r42 +X 33 userland-process.ads +28K18*Process 26|21w15 61r34 151r32 151r56 160r29 161r16 325r49 763r29 33|677e21 +33I9*PID 26|61r42 151r40 +350V13*Get_Stack_Base{13|19M9} 26|160s37 +356U14*Set_Stack_Base 26|161s24 +573V13*Convert{natural} 26|763s37 +579V13*Convert{33I9} 26|151s64 325s57 + diff --git a/obj/scheduler.o b/obj/scheduler.o new file mode 100644 index 0000000000000000000000000000000000000000..b1cc0f276ef2d7284cbececb4805336a975f3e24 GIT binary patch literal 246248 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 sd4D)o^7tX?_{f)E&u=k literal 0 HcmV?d00001 diff --git a/obj/userland-elf.adb.stderr b/obj/userland-elf.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-elf.adb.stdout b/obj/userland-elf.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-elf.ali b/obj/userland-elf.ali new file mode 100644 index 0000000..a878a4b --- /dev/null +++ b/obj/userland-elf.ali @@ -0,0 +1,287 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.elf%b userland-elf.adb 31641b25 NE OO PK +W devices%s devices.adb devices.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.adb s-stoele.ali +W userland%s userland.ads userland.ali +W userland.syscall%s userland-syscall.adb userland-syscall.ali + +U userland.elf%s userland-elf.ads 17388f58 NE OO PK +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W interfaces%s interfac.ads interfac.ali +W system%s system.ads system.ali +W userland%s userland.ads userland.ali +W vfs%s vfs.adb vfs.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-unccon.ads 20241115151050 13b8aaf3 ada.unchecked_conversion%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-context.ads 20241115151036 7bffdd51 arch.context%s +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices-termios.ads 20241115151036 06aea761 devices.termios%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D ipc.ads 20241115151036 03976a1a ipc%s +D ipc-fifo.ads 20241115151036 9141c09a ipc.fifo%s +D ipc-pty.ads 20241115151036 66e20305 ipc.pty%s +D ipc-socket.ads 20241115151036 ab61e49d ipc.socket%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-alignment.ads 20241115151036 68e8a917 lib.alignment%s +D lib-alignment.adb 20241115151036 a3b617fd lib.alignment%b +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D networking.ads 20241115151036 70ea6e55 networking%s +D scheduler.ads 20241115151036 61f570e7 scheduler%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D s-stoele.adb 20241115151050 c919feed system.storage_elements%b +D s-unstyp.ads 20241115151050 34cdeecb system.unsigned_types%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-elf.ads 20241115151036 416b8b0c userland.elf%s +D userland-elf.adb 20241115151036 a1012059 userland.elf%b +D userland-mac.ads 20241115151036 eff2fe62 userland.mac%s +D userland-process.ads 20241115151036 a4893a04 userland.process%s +D userland-syscall.ads 20241115151036 b384b127 userland.syscall%s +D vfs.ads 20241115151036 63b4365d vfs%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [load_elf userland__elf 48 13 none] +G c Z s s [elf_id_fieldIP userland__elf 92 9 none] +G c Z s b [get_linker userland__elf 130 13 none] +G c Z s b [load_header userland__elf 136 13 none] +G c Z s s [auxvalIP userland__elf 31 9 none] +G c Z s s [parsed_elfIP userland__elf 38 9 none] +G c Z s s [program_headerIP userland__elf 70 9 none] +G c Z s s [elf_headerIP userland__elf 95 9 none] +G r c none [load_elf userland__elf 48 13 none] [read vfs 400 14 none] +G r i none [load_elf userland__elf 48 13 none] [alignment lib 19 13 none] +G r c none [load_elf userland__elf 48 13 none] [check_userland_mappability userland__syscall 1257 13 none] +G r c none [load_elf userland__elf 48 13 none] [map_allocated_range arch__mmu 139 14 none] +G r c none [get_linker userland__elf 130 13 none] [read vfs 400 14 none] +G r i none [load_header userland__elf 136 13 none] [alignment lib 19 13 none] +G r c none [load_header userland__elf 136 13 none] [check_userland_mappability userland__syscall 1257 13 none] +G r c none [load_header userland__elf 136 13 none] [map_allocated_range arch__mmu 139 14 none] +G r c none [load_header userland__elf 136 13 none] [read vfs 400 14 none] +X 3 arch.ads +20K9*Arch 52e9 26|20r6 51r25 140r17 27|27r25 69r18 148r17 156r35 160r24 185r20 +. 185r57 190r7 +X 6 arch-mmu.ads +22K14*MMU 250e13 26|20w11 51r30 140r22 27|27r30 69r23 148r22 156r40 160r29 +. 185r25 185r62 190r12 +26R9*Page_Permissions 32e14 27|160r33 +27b7*Is_User_Accesible{boolean} 27|161m11 +28b7*Can_Read{boolean} 27|162m11 +29b7*Can_Write{boolean} 27|163m11 176r39 +30b7*Can_Execute{boolean} 27|164m11 176r17 +31b7*Is_Global{boolean} 27|165m11 +43P9*Page_Table_Acc(42R9) 26|51r34 140r26 27|27r34 148r26 +49N7*Page_Size 27|69r27 156r44 185r29 185r66 +139U14*Map_Allocated_Range 27|190s16 +140p8 Map{43P9} 27|191r11 +141m8 Physical_Start{21|25M9} 27|195r11 +142m8 Virtual_Start{21|25M9} 27|192r11 +143i8 Length{22|16I12} 27|193r11 +144r8 Permissions{26R9} 27|194r11 +145b8 Success{boolean} 27|196r11 +X 7 devices.ads +22K9*Devices 279e12 27|20w6 35r22 85r23 130r18 202r18 +29A9*Operation_Data(9|16M9) 27|35r30 85r31 130r26 202r26 +X 9 interfac.ads +11K9*Interfaces 120e15 26|18w6 18r22 +16M9*Unsigned_8 26|92r53 +17M9*Unsigned_16 26|97r30 98r30 104r30 105r30 106r30 107r30 108r30 109r30 +18M9*Unsigned_32 26|71r25 72r25 99r30 103r30 +19M9*Unsigned_64 26|32r30 33r30 34r30 35r30 52r25 73r25 74r25 77r25 78r25 +. 101r30 102r30 141r17 27|28r25 32r22 50r19 56r20 74r35 77r10 82r27 83r13 +. 84r27 94r23 128r18 149r17 152r40 155r27 157r28 171r20 +X 14 lib.ads +19K9*Lib 35e8 27|19r6 152r25 153r25 +X 15 lib-alignment.ads +19k13*Alignment 43e18 27|19w10 152r29 153r29 +27V13 Align_Up{9|19M9} 27|184s19[152] +35V13 Align_Down{22|49M9} 27|183s19[153] +X 18 memory.ads +19K9*Memory 36e11 27|18w6 18r18 +35M12*Virtual_Address{22|49M9} 27|158r30 159r10 +X 21 system.ads +11K9*System 73e11 26|17w6 40r21 75r25 100r30 27|17r6 17r35 40r26 169r20 +25M9*Address 26|40r28 75r32 100r37 27|169r27 +26m4*Null_Address{25M9} 27|40r33 +X 22 s-stoele.ads +11K16*Storage_Elements 60e28 27|17w13 17r42 +12I9*Storage_Offset 27|73r48 203r46 +16I12*Storage_Count{12I9} 27|193r30 +23V14*"+"{21|25M9} 27|73s46 203s44 +49M9*Integer_Address 27|153r40 170r20 183r44 +51V13*To_Address{21|25M9} 27|192s30 +56V13*To_Integer{49M9} 27|74s48 +X 25 userland.ads +17K9*Userland 23e13 26|22r9 142r5 27|21r6 23r14 173r19 209r5 +X 26 userland-elf.ads +22K18*ELF 25|17k9 26|57E4 142l14 142e17 27|23b23 209l14 209t17 +23P9*String_Acc(string) 41r21 133r40 27|125r40 129r22 +26N4*Auxval_Null +27N4*Auxval_Program_Headers +28N4*Auxval_Header_Size +29N4*Auxval_Header_Count +30N4*Auxval_Entrypoint +31R9*Auxval 36e14 42r21 +32m7*Entrypoint{9|19M9} 27|43m14 74m21 +33m7*Program_Headers{9|19M9} 27|44m14 106m33 +34m7*Program_Header_Count{9|19M9} 27|45m14 76m21 +35m7*Program_Header_Size{9|19M9} 27|46m14 75m21 +38R9*Parsed_ELF 44e14 52r45 27|28r45 38r16 +39b7*Was_Loaded{boolean} 27|39m11 117m17 +40m7*Entrypoint{21|25M9} 27|40m11 73m14 74r67 +41p7*Linker_Path{23P9} 27|41m11 108m26 +42r7*Vector{31R9} 27|42m11 74m14 75m14 76m14 106m26 +43b7*Exec_Stack{boolean} 27|47m10 110m26 +48V13*Load_ELF{38R9} 49>8 50>8 51>8 52>8 27|24b13 120l8 120t16 +49i8 FS{31|74I9} 27|25b8 55r17 93r20 102r39 108r53 +50m8 Ino{31|28M9} 27|26b8 55r21 93r24 102r43 108r57 +51p8 Map{6|43P9} 27|27b8 102r53 +52m8 Requested_Base{9|19M9} 27|28b8 32r37 +57N4 ET_DYN 27|68r28 +60N4 Program_Loadable_Segment 27|101r21 +61N4 Program_Dynamic_Segment +62N4 Program_Interpreter_Segment 27|107r21 +63N4 Program_Header_Table_Segment 27|105r21 +64N4 Program_GNU_Stack 27|109r21 +67N4 Flags_Executable 27|110r55 164r50 +68N4 Flags_Write 27|163r50 +69N4 Flags_Read 27|162r50 +70R9 Program_Header 79e14 80r8 90r8 133r17 139r17 27|75r45 81r62 125r17 147r17 +71m7*Segment_Type{9|18M9} 81r7 27|100r22 +72m7*Flags{9|18M9} 82r7 27|110r45 162r40 163r40 164r40 +73m7*Offset{9|19M9} 83r7 27|136r33 205r36 +74m7*Virt_Address{9|19M9} 84r7 27|106r63 156r17 159r41 +75m7*Phys_Address{21|25M9} 85r7 +76i7*File_Size_Bytes{natural} 86r7 27|129r60 130r54 137r54 202r54 206r62 +77m7*Mem_Size_Bytes{9|19M9} 87r7 27|157r61 +78m7*Alignment{9|19M9} 88r7 27|177r17 178r18 178r40 183r68 184r49 +92A9 ELF_ID_Field(9|16M9) 93r29 96r30 +93a4 ELF_Signature{92A9} 27|58r40 +95R9 ELF_Header 110e14 111r8 127r8 27|33r22 34r42 +96a7*Identifier{92A9} 112r7 27|58r17 +97m7*ELF_Type{9|17M9} 113r7 27|68r17 +98m7*Machine{9|17M9} 114r7 +99m7*Version{9|18M9} 115r7 +100m7*Entrypoint{21|25M9} 116r7 27|73r35 +101m7*Program_Header_List{9|19M9} 117r7 27|92r24 +102m7*Section_Header_List{9|19M9} 118r7 +103m7*Flags{9|18M9} 119r7 +104m7*Header_Size{9|17M9} 120r7 +105m7*Program_Header_Size{9|17M9} 121r7 27|83r33 +106m7*Program_Header_Count{9|17M9} 122r7 27|77r30 81r37 +107m7*Section_Header_Size{9|17M9} 123r7 +108m7*Section_Header_Count{9|17M9} 124r7 +109m7*Section_Names_Index{9|17M9} 125r7 +130V13 Get_Linker{23P9} 131>8 132>8 133>8 27|108s41 122b13 142l8 142t18 +131i8 FS{31|74I9} 27|123b8 136r17 +132m8 Ino{31|28M9} 27|124b8 136r21 +133r8 Header{70R9} 27|125b8 129r53 130r47 136r26 137r47 +136V13 Load_Header{boolean} 137>8 138>8 139>8 140>8 141>8 27|102s26 144b13 +. 208l8 208t19 +137i8 FS{31|74I9} 27|145b8 205r20 +138m8 Ino{31|28M9} 27|146b8 205r24 +139r8 Header{70R9} 27|147b8 156r10 157r54 159r34 162r33 163r33 164r33 177r10 +. 178r11 178r33 183r61 184r42 202r47 205r29 206r55 +140p8 Map{6|43P9} 27|148b8 174r11 191r30 +141m8 Base{9|19M9} 27|149b8 159r27 +X 27 userland-elf.adb +32m7 Base{9|19M9} 68r39 69m10 73r64 102r58 106r52 +33r7 Header{26|95R9} 36m34 36r34 58r10 68r10 73r28 77r23 81r30 83r26 92r17 +34i7 Header_Bytes{natural} 35r51 57r48 +35a7 Header_Data{7|29A9} 55m31 +38r7 Result{26|38R9} 60r17 73m7 74m7 74r60 75m7 76m7 89r20 96r20 103r29 106m19 +. 108m19 110m19 117m10 118r17 +49i7 Ret_Count{natural} 55m44 56r33 57r35 93m46 94r36 95r38 +50m7 Pos{9|19M9} 55r26 56m7 56r14 92m10 93r29 94m10 94r17 +51b7 Discard{boolean} +52e7 Success{31|234E9} 55m61 57r10 93m63 95r13 +81a10 PHDRs(26|70R9) 84r50 86m37 86r37 88r26 99r21 +82m10 HSize{9|19M9} 84r42 88r13 +84m10 RSize{9|19M9} 85r61 95r60 +85a10 PHDRs_Data{7|29A9} 93m34 +99r14 HDR=99:21{26|70R9} 100r18 102r48 106r59 108r62 110r41 +128m7 Discard{9|19M9} +129p7 Ret{26|23P9} 131r34 138r17 +130a7 Ret_Data{7|29A9} 136m41 +132i7 Ret_Count{natural} 136m51 137r35 +133b7 Discard2{boolean} +134e7 Success{31|234E9} 136m68 137r10 +152K15 A1[15|19] 184r16 +153K15 A2[15|19] 183r16 +155m7 MisAlign{9|19M9} 157r43 203r62 +157m7 Load_Size{9|19M9} 174r29 184r31 +158m7 ELF_Virtual{18|35M12} 174r16 183r31 +160r7 Flags{6|26R9} 176r11 176r33 194r30 +166i7 Ret_Count{natural} 205m51 206r43 +167b7 Success1{boolean} 173m7 175r14 196m30 197r14 +168e7 Success2{31|234E9} 205m68 206r17 +169m7 Result{21|25M9} 195m30 203r37 +170m7 Ali_V{22|49M9} 183m7 185r10 192r42 +171m7 Ali_L{9|19M9} 184m7 185r47 193r45 +202a10 Load2{7|29A9} 205m44 +X 30 userland-syscall.ads +33K18*Syscall 27|21w15 173r28 30|1356e21 +1257V13*Check_Userland_Mappability{boolean} 27|173s36 +X 31 vfs.ads +24K9*VFS 26|19w6 49r25 50r25 131r17 132r17 137r17 138r17 27|25r25 26r25 30r11 +. 55r7 93r10 123r17 124r17 127r11 136r7 145r17 146r17 151r11 205r10 31|674e8 +28M9*File_Inode_Number<9|19M9> 26|50r29 132r21 138r21 27|26r29 124r21 146r21 +74I9*FS_Handle 26|49r29 131r21 137r21 27|25r29 123r21 145r21 +234E9*FS_Status 27|52r19 134r19 168r20 31|242e16 +235n8*FS_Success{234E9} 27|57r21 95r24 137r20 206r28 +400U14*Read 27|55s11 93s14 136s11 205s14 + diff --git a/obj/userland-elf.o b/obj/userland-elf.o new file mode 100644 index 0000000000000000000000000000000000000000..7c5587e883c98722c705523949a373fc5403cf64 GIT binary patch literal 50424 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 literal 0 HcmV?d00001 diff --git a/obj/userland-loader.adb.stderr b/obj/userland-loader.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-loader.adb.stdout b/obj/userland-loader.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-loader.ali b/obj/userland-loader.ali new file mode 100644 index 0000000..a5b8209 --- /dev/null +++ b/obj/userland-loader.ali @@ -0,0 +1,403 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RV NO_IMPLICIT_CONDITIONALS +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.loader%b userland-loader.adb 914b2322 NE OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W ada.unchecked_deallocation%s +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W cryptography%s cryptography.ads cryptography.ali +W cryptography.random%s cryptography-random.adb cryptography-random.ali +W devices%s devices.adb devices.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W memory%s memory.ads memory.ali +W scheduler%s scheduler.adb scheduler.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.adb s-stoele.ali +W userland%s userland.ads userland.ali +W userland.elf%s userland-elf.adb userland-elf.ali +W userland.mac%s userland-mac.adb userland-mac.ali +W userland.memory_locations%s userland-memory_locations.ads userland-memory_locations.ali + +U userland.loader%s userland-loader.ads 9c0fe15c NE OO PK +W userland%s userland.ads userland.ali +W userland.process%s userland-process.adb userland-process.ali +W vfs%s vfs.adb vfs.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D a-chlat1.ads 20241115151050 8791f8e7 ada.characters.latin_1%s +D a-unccon.ads 20241115151050 13b8aaf3 ada.unchecked_conversion%s +D a-uncdea.ads 20241115151050 f341340f ada.unchecked_deallocation%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-context.ads 20241115151036 7bffdd51 arch.context%s +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D cryptography.ads 20241115151036 8132c7fc cryptography%s +D cryptography-random.ads 20241115151036 ff611fa6 cryptography.random%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices-termios.ads 20241115151036 06aea761 devices.termios%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D ipc.ads 20241115151036 03976a1a ipc%s +D ipc-fifo.ads 20241115151036 9141c09a ipc.fifo%s +D ipc-pty.ads 20241115151036 66e20305 ipc.pty%s +D ipc-socket.ads 20241115151036 ab61e49d ipc.socket%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-alignment.ads 20241115151036 68e8a917 lib.alignment%s +D lib-alignment.adb 20241115151036 a3b617fd lib.alignment%b +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D networking.ads 20241115151036 70ea6e55 networking%s +D scheduler.ads 20241115151036 61f570e7 scheduler%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D s-stoele.adb 20241115151050 c919feed system.storage_elements%b +D s-unstyp.ads 20241115151050 34cdeecb system.unsigned_types%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-elf.ads 20241115151036 416b8b0c userland.elf%s +D userland-loader.ads 20241115151036 4d432fbc userland.loader%s +D userland-loader.adb 20241115151036 01a71cce userland.loader%b +D userland-mac.ads 20241115151036 eff2fe62 userland.mac%s +D userland-memory_locations.ads 20241115151036 d86e3770 userland.memory_locations%s +D userland-process.ads 20241115151036 a4893a04 userland.process%s +D vfs.ads 20241115151036 63b4365d vfs%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [disable_aslr userland__loader 23 14 none] +G c Z s b [start_program userland__loader 29 13 none] +G c Z s b [start_program userland__loader 41 13 none] +G c Z s b [start_elf userland__loader 50 13 none] +G c Z s b [start_shebang userland__loader 58 13 none] +G r c none [start_program userland__loader 29 13 none] [create_process userland__process 181 14 none] +G r c none [start_program userland__loader 29 13 none] [fork_table arch__mmu 70 13 none] +G r c none [start_program userland__loader 29 13 none] [set_common_map userland__process 338 14 none] +G r c none [start_program userland__loader 29 13 none] [read vfs 400 14 none] +G r c none [start_program userland__loader 29 13 none] [open vfs 593 14 none] +G r s argument_arr [start_program userland__loader 29 13 none] [argument_arrIP userland 20 9 none] +G r i none [start_program userland__loader 29 13 none] [alignment lib 19 13 none] +G r s parsed_elf [start_program userland__loader 29 13 none] [parsed_elfIP userland__elf 38 9 none] +G r c none [start_program userland__loader 29 13 none] [get_common_map userland__process 344 13 none] +G r c none [start_program userland__loader 29 13 none] [load_elf userland__elf 48 13 none] +G r c none [start_program userland__loader 29 13 none] [get_integer cryptography__random 32 14 none] +G r c none [start_program userland__loader 29 13 none] [close vfs 359 14 none] +G r c none [start_program userland__loader 29 13 none] [convert scheduler 135 13 none] +G r c none [start_program userland__loader 29 13 none] [get_limit userland__process 604 13 none] +G r c none [start_program userland__loader 29 13 none] [convert userland__process 573 13 none] +G r c none [start_program userland__loader 29 13 none] [create_user_thread scheduler 41 13 none] +G r c none [start_program userland__loader 29 13 none] [add_thread userland__process 203 14 none] +G r c none [start_program userland__loader 29 13 none] [delete_thread scheduler 70 14 none] +G r c none [start_program userland__loader 29 13 none] [add_file userland__process 252 14 none] +G r c none [start_program userland__loader 29 13 none] [delete_process userland__process 185 14 none] +G r c none [start_program userland__loader 41 13 none] [read vfs 400 14 none] +G r c none [start_program userland__loader 41 13 none] [open vfs 593 14 none] +G r s argument_arr [start_program userland__loader 41 13 none] [argument_arrIP userland 20 9 none] +G r i none [start_program userland__loader 41 13 none] [alignment lib 19 13 none] +G r s parsed_elf [start_program userland__loader 41 13 none] [parsed_elfIP userland__elf 38 9 none] +G r c none [start_program userland__loader 41 13 none] [get_common_map userland__process 344 13 none] +G r c none [start_program userland__loader 41 13 none] [load_elf userland__elf 48 13 none] +G r c none [start_program userland__loader 41 13 none] [get_integer cryptography__random 32 14 none] +G r c none [start_program userland__loader 41 13 none] [close vfs 359 14 none] +G r c none [start_program userland__loader 41 13 none] [convert scheduler 135 13 none] +G r c none [start_program userland__loader 41 13 none] [get_limit userland__process 604 13 none] +G r c none [start_program userland__loader 41 13 none] [convert userland__process 573 13 none] +G r c none [start_program userland__loader 41 13 none] [create_user_thread scheduler 41 13 none] +G r c none [start_program userland__loader 41 13 none] [add_thread userland__process 203 14 none] +G r c none [start_program userland__loader 41 13 none] [delete_thread scheduler 70 14 none] +G r i none [start_elf userland__loader 50 13 none] [alignment lib 19 13 none] +G r s parsed_elf [start_elf userland__loader 50 13 none] [parsed_elfIP userland__elf 38 9 none] +G r c none [start_elf userland__loader 50 13 none] [get_common_map userland__process 344 13 none] +G r c none [start_elf userland__loader 50 13 none] [load_elf userland__elf 48 13 none] +G r c none [start_elf userland__loader 50 13 none] [open vfs 593 14 none] +G r c none [start_elf userland__loader 50 13 none] [get_integer cryptography__random 32 14 none] +G r c none [start_elf userland__loader 50 13 none] [close vfs 359 14 none] +G r c none [start_elf userland__loader 50 13 none] [convert scheduler 135 13 none] +G r c none [start_elf userland__loader 50 13 none] [get_limit userland__process 604 13 none] +G r c none [start_elf userland__loader 50 13 none] [convert userland__process 573 13 none] +G r c none [start_elf userland__loader 50 13 none] [create_user_thread scheduler 41 13 none] +G r c none [start_elf userland__loader 50 13 none] [add_thread userland__process 203 14 none] +G r c none [start_elf userland__loader 50 13 none] [delete_thread scheduler 70 14 none] +G r c none [start_shebang userland__loader 58 13 none] [read vfs 400 14 none] +G r c none [start_shebang userland__loader 58 13 none] [open vfs 593 14 none] +G r s argument_arr [start_shebang userland__loader 58 13 none] [argument_arrIP userland 20 9 none] +G r i none [start_shebang userland__loader 58 13 none] [alignment lib 19 13 none] +G r s parsed_elf [start_shebang userland__loader 58 13 none] [parsed_elfIP userland__elf 38 9 none] +G r c none [start_shebang userland__loader 58 13 none] [get_common_map userland__process 344 13 none] +G r c none [start_shebang userland__loader 58 13 none] [load_elf userland__elf 48 13 none] +G r c none [start_shebang userland__loader 58 13 none] [get_integer cryptography__random 32 14 none] +G r c none [start_shebang userland__loader 58 13 none] [close vfs 359 14 none] +G r c none [start_shebang userland__loader 58 13 none] [convert scheduler 135 13 none] +G r c none [start_shebang userland__loader 58 13 none] [get_limit userland__process 604 13 none] +G r c none [start_shebang userland__loader 58 13 none] [convert userland__process 573 13 none] +G r c none [start_shebang userland__loader 58 13 none] [create_user_thread scheduler 41 13 none] +G r c none [start_shebang userland__loader 58 13 none] [add_thread userland__process 203 14 none] +G r c none [start_shebang userland__loader 58 13 none] [delete_thread scheduler 70 14 none] +X 1 ada.ads +11K9*Ada 12e8 33|17r6 18r6 251r29 298r18 309r18 +X 2 a-charac.ads +11K13*Characters 12e19 33|17r10 298r22 309r22 +X 3 a-chlat1.ads +11K24*Latin_1 247e27 33|17w21 298r33 309r33 +23e4*LF{character} 33|298r41 309r41 +X 5 a-uncdea.ads +14u15*Unchecked_Deallocation 33|18w10 251r33 +X 6 arch.ads +20K9*Arch 52e9 33|22r6 62r11 62r32 201r49 +X 9 arch-mmu.ads +22K14*MMU 250e13 33|22w11 62r16 62r37 201r54 +43P9*Page_Table_Acc(42R9) +49N7*Page_Size 33|201r58 +58p4*Kernel_Table{43P9} 33|62r41 +70V13*Fork_Table{43P9} 33|62s20 +X 10 cryptography.ads +17K9*Cryptography 18e17 33|28r6 197r13 +X 11 cryptography-random.ads +19K22*Random 40e24 33|28w19 197r26 +32U14*Get_Integer 33|197s33 +X 12 devices.ads +22K9*Devices 279e12 33|29w6 257r19 261r19 +29A9*Operation_Data(14|16M9) 33|257r27 261r27 +X 14 interfac.ads +11K9*Interfaces 120e15 33|19w6 19r22 +16M9*Unsigned_8 +18M9*Unsigned_32 +19M9*Unsigned_64 33|168r41 172r18 224r28 255r19 276r20 292r23 304r23 +X 19 lib.ads +19K9*Lib 35e8 33|27r6 168r26 +X 20 lib-alignment.ads +19k13*Alignment 43e18 33|27w10 168r30 +27V13 Align_Up{14|19M9} 33|201s29[168] +X 23 memory.ads +19K9*Memory 36e11 33|23w6 23r18 +35M12*Virtual_Address{27|49M9} 33|171r22 +X 25 scheduler.ads +25K9*Scheduler 183e14 33|25w6 25r21 217r34 217r51 223r28 233r13 +27I9*TID 33|217r44 +28I9*TCID +29i4*Error_TID{27I9} 33|227r28 +41V13*Create_User_Thread{27I9} 33|217s61 +42m8 Address{23|35M12} 33|218r14 +43a8 Args{30|20A9} 33|219r14 +44a8 Env{30|21A9} 33|220r14 +45p8 Map{9|43P9} 33|221r14 +46r8 Vector{31|31R9} 33|222r14 +47i8 Cluster{28I9} 33|223r14 +48m8 Stack_Size{14|19M9} 33|224r14 +49i8 PID{natural} 33|225r14 +70U14*Delete_Thread 33|233s23 +135V13*Convert{28I9} 33|223s38 +X 26 system.ads +11K9*System 73e11 33|20w6 21r6 21r35 +25M9*Address +X 27 s-stoele.ads +11K16*Storage_Elements 60e28 33|21w13 21r42 +49M9*Integer_Address +56V13*To_Integer{49M9} 33|207s24 213s24 +X 30 userland.ads +17K9*Userland 23e13 32|17r6 17r28 20r9 65r5 33|24r6 24r24 26r6 30r6 30r24 +. 32r14 346r5 +19P9*String_Acc(string) 33|251r65 268r20 269r20 +20A9*Argument_Arr(19P9) 32|33r22 45r22 53r22 62r22 33|44r22 152r22 +. 164r22 247r22 +21A9*Environment_Arr(19P9) 32|34r22 46r22 54r22 63r22 33|45r22 153r22 +. 165r22 248r22 +X 31 userland-elf.ads +22K18*ELF 142e17 33|24w15 24r33 170r28 180r21 205r20 +23P9*String_Acc(string) +38R9*Parsed_ELF 44e14 33|170r32 +39b7*Was_Loaded{boolean} 33|182r25 208r24 +40m7*Entrypoint{26|25M9} 33|207r43 213r47 +41p7*Linker_Path{23P9} 33|186r21 189r35 190r24 190r53 191r45 +42r7*Vector{31R9} 33|222r39 +48V13*Load_ELF{38R9} 33|180s25 205s24 +X 32 userland-loader.ads +20K18*Loader 30|17k9 32|65l14 65e20 33|32b23 346l14 346t20 +23U14*Disable_ASLR 33|35b14 38l8 38t20 +29V13*Start_Program{36|33I9} 30>8 31>8 32>8 33>8 34>8 35>8 36>8 37>8 33|40b13 +. 146l8 146t21 +30a8 Exec_Path{string} 33|41b8 63r29 +31i8 FS{37|74I9} 33|42b8 63r40 +32m8 Ino{37|28M9} 33|43b8 63r44 +33a8 Arguments{30|20A9} 33|44b8 63r49 +34a8 Environment{30|21A9} 33|45b8 63r60 +35a8 StdIn_Path{string} 33|46b8 101r35 +36a8 StdOut_Path{string} 33|47b8 112r35 +37a8 StdErr_Path{string} 33|48b8 123r35 +41V13*Start_Program{boolean} 42>8 43>8 44>8 45>8 46>8 47>8 33|63s14 148b13 +. 159l8 159t21 325s22 333s22 +42a8 Exec_Path{string} 33|149b8 158r29 326r14 334r14 +43i8 FS{37|74I9} 33|150b8 157r29 158r40 327r14 335r14 +44m8 Ino{37|28M9} 33|151b8 157r33 158r44 328r14 336r14 +45a8 Arguments{30|20A9} 33|152b8 157r38 158r49 329r14 337r14 +46a8 Environment{30|21A9} 33|153b8 157r49 158r60 330r14 338r14 +47i8 Proc{36|33I9} 33|154b8 157r62 158r73 331r14 339r14 +50V13*Start_ELF{boolean} 51>8 52>8 53>8 54>8 55>8 33|157s14 161b13 241l8 +. 241t17 +51i8 FS{37|74I9} 33|162b8 180r35 +52m8 Ino{37|28M9} 33|163b8 180r39 +53a8 Arguments{30|20A9} 33|164b8 219r28 +54a8 Environment{30|21A9} 33|165b8 220r28 +55i8 Proc{36|33I9} 33|166b8 180r68 205r73 221r52 224r52 225r45 231r30 +58V13*Start_Shebang{boolean} 59>8 60>8 61>8 62>8 63>8 64>8 33|158s14 243b13 +. 345l8 345t21 +59a8 Exec_Path{string} 33|244b8 326r29 334r29 +60i8 FS{37|74I9} 33|245b8 271r13 281r16 291r16 303r16 +61m8 Ino{37|28M9} 33|246b8 271r17 281r20 291r20 303r20 +62a8 Arguments{30|20A9} 33|247b8 329r51 337r42 +63a8 Environment{30|21A9} 33|248b8 330r29 338r29 +64i8 Proc{36|33I9} 33|249b8 331r29 339r29 +X 33 userland-loader.adb +33b4 Do_ASLR{boolean} 37m7 196r13 +50i7 Returned_PID{36|33I9} 56m42 57r10 61r11 64r29 134r25 135r25 136r25 139r17 +. 143r31 +51i7 Discard{natural} 134m52 135m52 136m52 +52e7 Success{37|234E9} 104m25 108r10 115m25 119r10 126m25 130r10 +53b7 Success1{boolean} 134m61 138r10 +53b17 Success2{boolean} 135m61 138r23 +53b27 Success3{boolean} 136m61 138r36 +54p7 User_Stdin{36|57P9} 69m7 102r25 103r25 134r39 +54p19 User_StdOut{36|57P9} 79m7 113r25 114r25 135r39 +54p32 User_StdErr{36|57P9} 89m7 124r25 125r25 136r39 +142L6 Error_Process 66r15 +144L6 Error 58r15 +168K15 Aln[20|19] 201r25 +170r7 Loaded_ELF{31|38R9} 180m7 182r14 186r10 189r24 190r13 190r42 191r34 +. 213r36 222r28 +170r19 LD_ELF{31|38R9} 205m10 207r36 208r17 +171m7 Entrypoint{23|35M12} 207m10 213m10 218r28 +172m7 LD_Slide{14|19M9} 200m17 201m13 201r39 203m13 206r34 +173a7 LD_Path{string} 189m10 191r16 +174i7 LD_FS{37|74I9} 191m70 205r34 211r17 +175m7 LD_Ino{37|28M9} 192m16 205r41 211r24 +176e7 Success{37|234E9} 192m24 193r13 +177b7 Success2{boolean} 231m50 232r17 +217i10 Returned_TID{25|27I9} 227r13 231r36 233r38 +239L6 Error 183r15 194r18 209r18 228r18 234r18 +251U17 Free[5|14] 342s7 343s7 +253i7 Path_Len{natural} 271m45 272r39 276r33 279m7 299m28 299r40 299r60 315r24 +. 321r42 +254i7 Arg_Len{natural} 310m28 310r39 310r57 322r42 324r10 +255m7 Pos{14|19M9} 276m7 276r14 281r25 286m28 286r35 291r25 292m10 292r17 +. 303r25 304m10 304r17 +256a7 Path{string} 258m34 258r34 272r56 299m54 315r13 321r31 +257a7 Path_Data{12|29A9} 271m25 271r25 +259a7 Arg{string} 310m52 322r31 +260e7 Char{character} 262m34 262r34 285r15 296r15 299r73 308r15 310r69 +261a7 Char_Data{12|29A9} 281m30 291m30 303m30 +263i7 Char_Len{natural} 281m41 282r42 291m41 292r36 293r42 303m41 304r36 +. 305r42 +264e7 Success{37|234E9} 271m61 272r10 281m57 282r13 291m57 293r13 303m57 +. 305r13 315m58 317r10 +265b7 Returned{boolean} 325m10 333m10 344r14 +266i7 Banged_FS{37|74I9} 315m35 327r29 335r29 +267m7 Banged_Ino{37|28M9} 315m46 328r29 336r29 +268p7 Path_Acc{30|19P9} 321m7 329r30 337r30 342m13 342r13 +269p7 Arg_Acc{30|19P9} 322m7 329r40 343m13 343r13 +314L6 Return_Shebang 298r52 +X 34 userland-mac.ads +20K18*MAC 33|30w15 30r33 34|180e17 +58M9*Limit_Value<14|19M9> +64n8*Stack_Size_Limit{59E9} 33|224r58 +X 35 userland-memory_locations.ads +17K18*Memory_Locations 33|26w15 181r10 198r17 199r17 203r25 35|30e30 +20N4*Program_Offset 33|181r27 +24N4*LD_Offset_Min 33|198r34 203r42 +25N4*LD_Offset_Max 33|199r34 +X 36 userland-process.ads +28K18*Process 32|17w15 17r37 33|56r7 60r7 134r7 135r7 136r7 143r7 180r44 +. 205r49 221r28 225r28 231r10 36|677e21 +33I9*PID 32|37r37 47r22 55r22 64r22 33|48r37 50r22 154r22 166r22 +. 249r22 +34i4*Error_PID{33I9} 33|56r31 57r25 109r17 120r17 131r17 145r14 +54n8*Description_Inode{49E9} 33|71r32 81r32 91r32 +56R9*File_Description 33|69r25 79r26 89r26 36|80e14 +57P9*File_Description_Acc(56R9) 33|54r46 +58e27*Description{49E9} 33|71m11 81m11 91m11 +59i7*Children_Count{natural} 33|70m11 80m11 90m11 +70b13*Inner_Is_Locked{boolean} 33|72m11 82m11 92m11 +71b13*Inner_Is_Blocking{boolean} 33|73m11 83m11 93m11 +72b13*Inner_Ino_Read{boolean} 33|74m11 84m11 94m11 +73b13*Inner_Ino_Write{boolean} 33|75m11 85m11 95m11 +74m13*Inner_Ino_Pos{14|19M9} 33|76m11 86m11 96m11 +75i13*Inner_Ino_FS{37|74I9} 33|77m11 87m11 97m11 102m36 113m37 124m37 +76m13*Inner_Ino{37|28M9} 33|78m11 88m11 98m11 103m36 114m37 125m37 +181U14*Create_Process 33|56s15 +185U14*Delete_Process 33|143s15 +203U14*Add_Thread 33|231s18 +252U14*Add_File 33|134s15 135s15 136s15 +338U14*Set_Common_Map 33|60s15 +344V13*Get_Common_Map{9|43P9} 33|180s52 205s57 221s36 +573V13*Convert{natural} 33|225s36 +604V13*Get_Limit{34|58M9} 33|224s41 +X 37 vfs.ads +24K9*VFS 32|18w6 18r28 33|52r22 77r32 87r32 97r32 100r7 111r7 122r7 193r24 +. 264r19 272r21 282r24 293r24 305r24 37|674e8 +28M9*File_Inode_Number<14|19M9> 32|32r22 44r22 52r22 61r22 33|43r22 151r22 +. 163r22 175r18 246r22 267r20 +74I9*FS_Handle 32|31r22 43r22 51r22 60r22 33|42r22 150r22 162r22 +. 174r18 245r22 266r20 +75i4*Error_Handle{74I9} 33|77r36 87r36 97r36 +234E9*FS_Status 33|52r26 176r18 264r23 37|242e16 +235n8*FS_Success{234E9} 33|108r21 119r21 130r21 193r28 272r25 282r28 293r28 +. 305r28 317r21 +359U14*Close 33|211s10 +400U14*Read 33|271s7 281s10 291s10 303s10 +593U14*Open 33|100s11 111s11 122s11 191s10 315s7 +594a8 Path{string} 33|101r11 112r11 123r11 +595i8 Key{74I9} 33|102r11 113r11 124r11 +596m8 Ino{28M9} 33|103r11 114r11 125r11 +597e8 Success{234E9} 33|104r11 115r11 126r11 +598m8 User{14|18M9} 33|105r11 116r11 127r11 +599b8 Want_Read{boolean} 33|106r11 117r11 128r11 +600b8 Want_Write{boolean} 33|107r11 118r11 129r11 + diff --git a/obj/userland-loader.o b/obj/userland-loader.o new file mode 100644 index 0000000000000000000000000000000000000000..c2f99274a8a35de40a983e4281df21ed51dbab27 GIT binary patch literal 89032 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
    )-hs{t)mY;12^o1^6St8-YIx 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 KcxrL!@&5)V;%Yen literal 0 HcmV?d00001 diff --git a/obj/userland-mac.adb.stderr b/obj/userland-mac.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-mac.adb.stdout b/obj/userland-mac.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-mac.ali b/obj/userland-mac.ali new file mode 100644 index 0000000..d426d74 --- /dev/null +++ b/obj/userland-mac.ali @@ -0,0 +1,190 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RV NO_IMPLICIT_LOOPS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.mac%b userland-mac.adb 370e286c NE OO PK +W userland%s userland.ads userland.ali + +U userland.mac%s userland-mac.ads 62cf5ff2 NE OO PK +W interfaces%s interfac.ads interfac.ali +W userland%s userland.ads userland.ali +W vfs%s vfs.adb vfs.ali + +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-mac.ads 20241115151036 eff2fe62 userland.mac%s +D userland-mac.adb 20241115151036 d8fcd60e userland.mac%b +D vfs.ads 20241115151036 63b4365d vfs%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [get_enforcement userland__mac 74 13 none] +G c Z s b [set_enforcement userland__mac 79 14 none] +G c Z s b [get_capabilities userland__mac 84 13 none] +G c Z s b [set_capabilities userland__mac 89 14 none] +G c Z s b [check_permissions userland__mac 98 13 none] +G c Z s b [add_entity userland__mac 112 14 none] +G c Z s b [get_limit userland__mac 124 13 none] +G c Z s b [set_limit userland__mac 133 14 none] +G c Z s s [capabilitiesIP userland__mac 23 9 none] +G c Z s s [Tlimit_arrBIP userland__mac 151 4 none] +G c Z s s [permissionsIP userland__mac 42 9 none] +G c Z s s [filterIP userland__mac 142 9 none] +G c Z s s [filter_arrIP userland__mac 150 9 none] +G c Z s s [contextIP userland__mac 152 9 none] +G c Z s b [add_filter userland__mac 176 14 none] +X 4 interfac.ads +11K9*Interfaces 120e15 11|17w6 17r22 +19M9*Unsigned_64 11|58r28 +X 10 userland.ads +17K9*Userland 23e13 11|20r9 180r5 12|17r14 128r5 +X 11 userland-mac.ads +20K18*MAC 10|17k9 11|141E4 180l14 180e17 12|17b23 128l14 128t17 +23R9*Capabilities 39e14 84r53 89r61 154r17 12|31r53 36r61 +24b7*Can_Change_Scheduling{boolean} +25b7*Can_Spawn_Others{boolean} +26b7*Can_Access_Entropy{boolean} +27b7*Can_Modify_Memory{boolean} +28b7*Can_Use_Networking{boolean} +29b7*Can_Manage_Networking{boolean} +30b7*Can_Manage_Mounts{boolean} +31b7*Can_Manage_Power{boolean} +32b7*Can_Trace_Children{boolean} +33b7*Can_Change_UIDs{boolean} +34b7*Can_Manage_MAC{boolean} +35b7*Can_Use_Clocks{boolean} +36b7*Can_Signal_All{boolean} +37b7*Can_Change_GIDs{boolean} +38b7*Can_Bypass_IPC_Checks{boolean} +42R9*Permissions 49e14 101r45 116r17 147r19 12|44r45 68r17 +43b7*Includes_Contents{boolean} +44b7*Can_Read{boolean} +45b7*Can_Write{boolean} +46b7*Can_Execute{boolean} +47b7*Can_Append_Only{boolean} 12|60m18 +48b7*Can_Lock_Files{boolean} +52E9*Enforcement 55e13 74r52 79r59 153r17 12|21r52 26r59 +53n8*Deny{52E9} 160r19 +54n8*Deny_And_Scream{52E9} +55n8*Kill{52E9} +58M9*Limit_Value<4|19M9> 126r38 136r20 151r51 164r32 165r32 166r32 168r32 +. 12|91r38 100r20 +59E9*Limit_Type 65e26 126r19 135r20 151r30 12|91r19 99r20 +60n8*Core_Size_Limit{59E9} 163r11 +61n8*CPU_Time_Limit{59E9} 164r11 +62n8*File_Size_Limit{59E9} 165r11 +63n8*Opened_File_Limit{59E9} 166r11 +64n8*Stack_Size_Limit{59E9} 167r11 +65n8*Memory_Size_Limit{59E9} 168r11 +68R9*Context 69r31 74r36 79r44 84r37 89r45 99r15 113r24 125r19 134r27 152c9 +. 157e14 159r31 177r24 12|21r36 26r44 31r37 36r45 42r15 65r24 90r19 98r27 +. 113r24 +69r4*Default_Context{68R9} 159c4 +74V13*Get_Enforcement{52E9} 74>30 12|21b13 24l8 24t23 +74r30 Ctx{68R9} 12|21b30 23r14 +79U14*Set_Enforcement 79=31 79>53 12|26b14 29l8 29t23 +79r31 Ctx{68R9} 12|26b31 28m7 +79e53 Act{52E9} 12|26b53 28r21 +84V13*Get_Capabilities{23R9} 84>31 12|31b13 34l8 34t24 +84r31 Ctx{68R9} 12|31b31 33r14 +89U14*Set_Capabilities 89=32 89>54 12|36b14 39l8 39t24 +89r32 Ctx{68R9} 12|36b32 38m7 +89r54 Caps{23R9} 12|36b54 38r19 +98V13*Check_Permissions{42R9} 99>8 100>8 101>8 12|41b13 62l8 62t25 +99r8 Data{68R9} 12|42b8 48r16 +100i8 FS{13|74I9} 12|43b8 51r43 +101m8 Ino{13|28M9} 12|44b8 51r58 +104E9*Addition_Status 104e63 117r21 179r21 12|69r21 115r21 +104n29*Success{104E9} 12|75r26 121r23 +104n38*No_Space{104E9} 12|126r17 +104n48*Is_Conflicting{104E9} 12|77r26 +112U14*Add_Entity 113=8 114>8 115>8 116>8 117<8 12|64b14 87l8 87t18 +113r8 Data{68R9} 12|65b8 72r16 84m21 +114i8 FS{13|74I9} 118r16 12|66b8 73r54 85r35 +115m8 Ino{13|28M9} 12|67b8 73r69 85r39 +116r8 Perms{42R9} 12|68b8 74r16 85r44 +117e8 Status{104E9} 12|69b8 75m16 77m16 86m21 +124V13*Get_Limit{58M9} 125>8 126>8 12|89b13 95l8 95t17 +125r8 Data{68R9} 12|90b8 94r14 +126e8 Resource{59E9} 12|91b8 94r27 +133U14*Set_Limit 134=8 135>8 136>8 137<8 12|97b14 110l8 110t17 +134r8 Data{68R9} 12|98b8 104r19 105m10 +135e8 Resource{59E9} 12|99b8 104r32 105r23 +136m8 Limit{58M9} 12|100b8 104r10 105r36 +137b8 Could_Set{boolean} 12|101b8 106m10 108m10 +141N4 Filter_Path_Length +142R9 Filter 148e14 150r51 178r17 12|114r17 +143b7*Is_Used{boolean} 170m11 12|49r15 73r15 119r19 +144b7*Is_Device{boolean} 171m11 12|51r22 73r33 +145i7*FS{13|74I9} 172m11 12|51r38 73r49 +146m7*Ino{13|28M9} 173m11 12|51r52 73r63 +147r7*Perms{42R9} 174m11 12|52r25 74r26 +150A9 Filter_Arr(142R9) 156r17 +151A9 Limit_Arr(58M9)<59E9> 155r17 +153e7*Action{52E9} 160m8 12|23r18 28m11 +154r7*Caps{23R9} 161m8 12|33r18 38m11 +155a7*Limits{151A9} 162m8 12|94r19 104r24 105m15 +156a7*Filters{150A9} 169m8 12|48r21 72r21 118r21 +176U14 Add_Filter 177=8 178>8 179<8 12|83s7 112b14 127l8 127t18 +177r8 Data{68R9} 12|84r11 113b8 118m16 118r16 +178r8 Filt{142R9} 12|85r11 114b8 120r23 +179e8 Status{104E9} 12|86r11 115b8 121m13 126m7 +X 12 userland-mac.adb +46b7 Has_Elements{boolean} 50m13 57r10 +48r11 E=48:11{11|142R9} 49r13 51r20 51r36 51r50 52r23 +72r11 E=72:11{11|142R9} 73r13 73r31 73r47 73r61 74r24 +118r11 E=118:11{11|142R9} 119r17 120r13 +X 13 vfs.ads +24K9*VFS 11|18w6 18r22 100r15 101r15 114r17 115r17 118r22 145r19 146r19 172r24 +. 12|43r15 44r15 66r17 67r17 13|674e8 +28M9*File_Inode_Number<4|19M9> 11|101r19 115r21 146r23 12|44r19 67r21 +74I9*FS_Handle 11|100r19 114r21 145r23 12|43r19 66r21 +75i4*Error_Handle{74I9} 11|118r26 172r28 + diff --git a/obj/userland-mac.o b/obj/userland-mac.o new file mode 100644 index 0000000000000000000000000000000000000000..d872cee122b4a13041907df886edbd9627ce4803 GIT binary patch literal 39008 zcmeI5dwf*Yx%bzeJ-I+6gd`9Ugj^62VG@!M@B$`*grFf%Zh}yUVKRi#WD+w8w+bT2 zrF|99c%e##YOB51mSd%t)7!CP+tZ6y>!q#5ORK#ctyZx;w)#HLTF*1{WbN6C{hUAE z&-*zWGHdPc`mNu3*4k_D*|TTw+!<4vUMY*}^!3RD!WnlLMpF5WGR=~M=#$97q)YT8UYwXBobz$}o>TkO1`?tA2 z$X3@4eErCcd+)q$zWV0gQ}t&Zx!};Q`MGNLCywPj5V&q&?CmA$>qqW{*RwvcbBEKk zbH~md4I`YU1_yKa&uz+5J9kv52jJBiF_1M<&2ApLJNwVKLqA^Hp_JP)LhYLGD7U#x z?P|VBxlPlRJO4VhtLc-GTmhY*%vmZUMF3W9>sO1N~ zpS7#`QT4+E3lF$WS3|AmRABr%_xZKQUOM62J-Vi&Lj^`3d#S`}997ei(8YL0|j zBR_oO(>G>CFxsrF+0EH6ay)mh#n^$)cUrd19VjVL-?)8$&gX95_3++6R?a6L-u0Oi zfn5*Z9&nH6xX1P#uOB!*S`9orO4Z~(Qh)5!D5q%FXm#vVw)6ErX0^O9qT?UYqTJwv zIgT^1x1^vbM-|L@sAAM}5a&(M>+7J`pM+k21$qp<%5s|?RX;h<2)%ng`-uaAlBW-p zL!1~-0BSkv4-Xy+?|SltdjYJyrux6*jHuf`@a!H{^xJG_;J4Xz zKIpzsbOO>7?h6y%`ltJYC*7K?<@Gf)j;ide*B;E8zilqWk<}68@vX^yQ|)Tm2P6E# zt-0^axpnvaisCl|>)IB@dL&SB#uI^i&UnJD81_5&o?$<5EAroT@5x^taGJ1v zh(f3PvqHD##&_<(bX+|8yA!J54_PoLab7~3&CsTMBEW6(HhuHdp@`FT=&eJsLvJ67 zA9@$Gpx3(@z64c3!CvXAEal`Dj7PL|`P{ipOP97S3NKyUFt=&J((v3xZOyF<<}O>% zHXjAf-~|yb@A@pfS97sZ|L^Pnj==vPBj6N_pEjp0tmZCS(iC30;PR$$>w<*~md#zf zJiKhdLRxEH&?*ZTEpBRSnitkotCucon0u+Hy|8KFq9v;YfZZ;ucr=dKyr#BQ_!Dku zn-^X>cS%#j!b=ylwuZBn-ic9iCcX^AmrP3@!dl#wVc+LhN9O}7I0eWVh=-T_6JGT@ z_GrwR>=+F-JrlD5ogIr=S7*mzHmI{_VKz%=$742IXD47bM`ueho2#>Bm>r_C<(M6+ zvlW=l)7gobJws>D#_TYiorKwZSkd7R%gupRRUi*FWuOb9MXo8-y}$4>0N&nf;_BC+ ze$7(B$)Fs8uIOy$Yg@9_$TYg&h2cMZfY?o1n>&AX*P`bveA0YI?xA_rwmi?hwS7V4Zi!Z|y?D9@cRcEa+K5l#VA8(Rj0TAo)4BR&oS z9acHa#CaC-N_fj3ult>4dW2z5kR7~uOaR8N^c>OWi^t&RE5nV2BVA5$(TJ4hp+|-E zfCDQY-_F)uB^ewS^-%CQLL=v3hq3bHv!KgMU}a_As=Ujft#d;FWQV8V5aEQ2==O9AqsGayahK$wk{h_BO%}E- zk%h7cTcKZD57Iy$bndk}*bZB;T^Fy0GXyMNEo*l=Yl5A+cnuY=k;S>tnP6@+Ztmu_ z&RQ@y9!&td8-xin$WO!$`-tpk@n~5#X|i0KJY~=p z`vOc2^LAnOJ=*jBpG|%Qk@0bY-t6J6NaY6$=D;kt%Q0`H7=BP)5WJ`**tT7wNx{i2 z!In#ci7Y~zrXgVeqD{ah=YEcm3MRqV>^?-9#n zhnmZAvvl1&@)%03=TXbNelC?4P`z1{o=d6COD)|nT0fI~^HL))M7KZGj4q6y>B~^} z8qEvbt(d}(XVfp|KIFN%T053vucfxeQaYE?^C-2;ncF&EA4>J?F&Refl~C-%+-*9J zTz8mGN9iq?#608zw1pw-8binhQ@Jc|B-@>;YqPsw>&4W1t{c|+Vz*4E>Gg72ze1<^ z?m4u+3RC#;jObG^fq6o_$K*MwWjWfd%tS%46w}tDt(d8eS5?k#4c8For zP`(?~9)qHt-?qH8p*>PMy*5-Gsw$nfsJe7oM1Fs|6V1=Lnsq$@VNoY%@t zd$D;dV!cVQm|fmc6{(q76+J&y(%9dzG~NewHuUxNBrm8;MIB0XCpr@Sq3+&}%KjwO z@9*j9?(GY0=r7=hkcXJj*EBkSU`JA3MCDctDn%D%3i%K2>#%cd=BTDW*x6)x4GWeXRl6{k1! z$?pE%XsoiQH`37+Nrocr(6Sz}u8eKWGHrCllQ8T(vFPmTs_ExXuby6mK|)_=_d*}z zU6E*bYdo6lh1d15L^Kvx(MTe^sTT%P;aGJ>67AtI%EHm^-dH#p-x>?!$n@F8?XmTd z{?0y-CHi8UJ;l+U{%~Ksi!0*{vmIiI_1)0Lu2`Z^#lfT_)@w`1JRDv&6F&IElv2^| z{?7JrGUjQpC)Nv{$GMVJFdO^&J?%lIFvJ0ytTWyhk0o{2lRc45iEww{2AC%rbVU-8 zj##*>yFbyFRO{oNeOO|Rjlnj>24ttKN_rT>eOr2Bx}m<_NHi9XZisib_r?;oSERi? zOs#~&>-r&#cp}^t>x%Ylfx(J)_P589X6!Lc_}~v6*S4@nCm{YL?2GOFo$*A6rt7x! zM3TvHyeA4R!cIDa4xO%v(uRXXRXug5GbrB+>&t zZx44TI=AQ!(Nyf|-sBymtKyxV3Ip=Q3bSU=ev8gDDLOI?jXrYA{oHh;H)ak%_KZmO zN29Uipy>lg3k4GeI^M4L7rTm?#^Ihw--d8!EYZ=oLH91AjbMlA>+Oa~ZH-%dEU_hw z2cu*ZHgK1ssgIojWjNZ|jg#1_WM-Z0%!WuZ9P8A_7*HqT8)0XTbi(v|ufvTFFBylU zZD%+F!>niVGCi(x-Zp9-27-Gk98auhunRaa?Xit0S-g&dYGNCm-Z*H$FSek)#`rXD2oF_ zsIq(Al`2$8Z%f=&{RWF~8t^U?g*T~nAjv39#gP)Sg&#<&i}Z1CT0AjFsrhr~UQjw2 zPH)boa~n8^I|F|3iyK!t*Equhsu_Iv9wI=I?K+)g0==Ia8Ne6P{S-b)v_VQ9W;giCL@)SATe3hgf27YHPVJ_3%7 zd4bD^KGKev#z*up{f~`PLkl#mPt%kGQ$Ym_vh>+Zb`P0@KbV7z4oq!^(xGl zUe5YVE#rL|_G0v2Zv4G`5g0gXY|5s9a_n<+swACp)7Ldp(CAYaCsN$B>*cJ^+%NCd zB%}9ocKy`1%#{b^?vtr)$R8-Fin zeP(|=+74cf{`9$N_w@DbpSpT4ns+nYtzh)tyBPeqiRbk7>|^hd%rnPH2U`)l(R;ax z$IJcn%{q-+kN;>AAY?L-}eD|=6PPMGSBm3b=1fIGd}zqKK%PW{HH$rF(3Z84}Z#s zpY-9+e?V?-T1;2s{m74-+Znxjb0?>ln|nFE+}uT&=9qImdpqyf_R+zgoA=Gr*PH&1 z@_b@ro;x^1z2?%pvn(=t)4Jq_c)6dRc~F`_o_Xf;!xD3!s;I;I0>LoL+@$G3=H4SW zZkN;@Z>b7KfBM{v!0GGRKagtCWSD0jhcTXaD%Owo@yUE1G6rta9lWql=JS&=s&ufN z#(9jI;=`x<@XY5eV^o!;$5mH+-j~I$Cwf!rs_4L*h zxvDIskr~(A)hm(CyXHpT4E$^lL*SbGay@0Pn(SdlZ;!r_xyl}W=Jx0_uQVC!)m76i z!uwaHI@c;O^QThTPRtv8^huJgHdO=c~K4q*xtKOLcA^@j8p&NZgdC3vVWFpLg9(+&*tPOx!%Dk@oo{ z@o%S*&YA69;`wC%d0je2*~jPmiQ9YL1H`j+ntn0oTi)ZqkF>^Dn&WA$knJir~^-|Gu#Xw%XlK{8h{6HsT>`eBd5KSVHP8OMfr% zJ1zbt;x}63@HOHWS@Y`K#J5`fVd8ICOd#e6r>L3h_T# z@th+5JF8#su)h^gwyqyi)s{~_@#EIGjUxVaE1vPh6PA7w@dH-7A>z+k`a0rwS^7D| zms|Q~;w!EGwh`ZKjpqvDH(5Sc5P!w$*Lvc|b(-Ge6U4u3@r}eQE&uJr-?HM|L;R5C zv!8f_70+$N7h67e5x>LI-%EUnH4a}QzSGiwjd;B^{@*6PTBqr8c$oNZ%m1gu&$7nh zm&Cte#s4gEd;m=@zbC%K@_&UmKN`h#P7#k={dz}p@8>?aZxR;odCnP{Px5?@E7m-u z7Fh9&BYg!2LaBLfDx~IG`l;k&KQIJ0m%=j1a~^UL>3?Z$mwB3dKVM%;+&WCECFGCa zPs-(T;_D@Z{5s7;>LF`8Ua7hF)9Ka3?eomdmf%qFIM*TBJ=(?#q+)Vm&s?PK3=99e~{X}B#m_LJEUK4=}%}LQZ3dz{F&zFY*||U zlK8z6LjE`8Z{BCpg)b8Soz?E2h?^&A)B4vn52*rcJN`H6EA;-6);oHhP4UeCT+Jt` zg_hpj1s_syqxPVsMC%I%F+@85-lm9Nue=6}$TD*pQ>=w?~Jfw21@o&&P-xE&@ zar<-DBF!f$`}n_t^!6UGM)QzLSmV&Hx%Ye0tB6~N2h~eHSLiey?pD2iMjB9V2XWhH zkLHuqlh(N1sJZw0&n?8OtQPJhA9LJI7v4jhpG@VF&uczKtz|&zG18x7jn6kV52>fE z4*Uo4$1VMjHTNFRA0uv$(9@dRvrVa!n%i3uevb@s`;*5j#CKZ#dXspa#s5LvzJ3c& zZo*Qm?9XvSHTNDL%p=*}@B2!$-k$yND7og|d0wHpJvvIAtGRbRR1u$I^=l?^YjdeN znpaqArCK%j#=k^!@8|AS#J_Jjt<~K7c@|}E#;bD3t1TC^>Uxg;N_BvLp}6|YyUlLR zb>q77&E$Ag^YlTL_5ZGU`rVgv_&Kvs+$Y2O*ELUnN@t!A16*jH=+`YWKS%TQcI55Q ztatzrwUOIoYZ%c$Y*_!t%HNI;7LL4plHf^Fj(iO3H_0E+EHf_9K#AdpPw z#;`S9C&TIFIGrq~lh<@In@(=i$!9GPIJwA}ulD{4iw54p<&Kk|9(Ls9r^g-F$!{k4*RUV;x0ZZrc?2o0TJou-dbQ-EH!Aqf;2|cT z8RVlkHI|c)-qyHIK6)15I*r>*j*r&$1cCCI6lWc^Q%CL8Q9E@QUvs109L-HSXpvq)(%TrsZTUuGcgSC(MgjD z3c6w%L)R6$0uC_-4oaOgrMjUd*dR)DG>y8e5EPBaOg#{dI^ZUJg>GOGcu9;Uy>NYC6A=HLSfLUUA!!(&aj*4T()!4^Zi#zwuTH8#Qo=A$e>XC)p&C>>_%C0G?WD^wty4s(1^{6B&Ly436G1dKAlBU_S+9b?<#1it;>}Ll1gna2fRI zf>r*$59o-eD6FdKr-`fr-)DNnvsqRZ>#3eLdy`q^OYQRad8jTu89dJEB9EzfB+XMz zlr2qt-+^aNPo~Ze(&t#n|q`~jK(`R!Eeix@%@D6gxIS;?$L&0yZNG*IGWAo9Z zmefkq^c%`L_grf%2GqoAT)MBIPl8 zobt$jM|n)(bXhORe@}T#_`DO_eMxYse_3#xPq^T?{Xyr<3(pgrI)4;=80C@wNpL>X zNB(EQM^PU6e+ka*B7a5jNt8$as^I4d{ujY#2>zPj7YhEm;0=QRRq%y^zajWa!QT`- zD)=eE6N0}b_!hzcCiwM&|6T9{g8#SRcL@Hr;GY)!AA;X6_&){zrr_@g{;=Tk;haYW zmyhT0K91YV{IWSCt&1s@~$8-kxH_}>LL-?3wqFlPcL#bW&Jf4mGA{4BvM1s^Z?Y{4f8-Y9sf;41_# z6TDq;^PRtms9W#~q37?55%C~4~#~sje^e- z`s)PeV;Ac83VwmmoA1ZWZ;!fAaP$3`d9L-M3>?Qn>hBZ&avZ)Q_-x_xHNoXLd{^)} zLjSPfeC)-3neWF;{PjZrBS5%H`Q z{IfzI5&TO+zfSP45yyC<892rx^(TdYyU_nZ_{Ri)P57_Rz|mjohtdZ#ly(SxF>xIK z4T6s&j`7DcaP*h@O5uN{&|fV0Rf4w&-YNKp1n&}jrQiv{*9hJ%IDdY`e)R~B{lUfN z{5cN!)k42mtBsz|jS+SDaJ~+JK1tzoT+XUY#{I3`MBZA-U!@n;0HA2tlby&Pj@K=R?yWsqbsImB3 z!6(!EEb<+K)AUh@t`i)uci@70xgYWME1XAizhiFiccq}i1%2fHjyhcI;{$U{rM^n5 zjgLHz%_5FI^0>zweWbpg^caskp0^N3A9?&|jy_T^_Y3*Hxl;JZ_gUuXBlT-ZkMYR! zr47U}9(jJn9DSs|hxF(p&l@)rM<02f$sB#8eh2B%N1nIuBaS}uyq!7vNc}<5qmMjJ z9wLrD^0>+zeWYF<$99VOSx!Faze{kwPK8{ar(G)a*9(0_@ZEx6Ex4Tj9}!&6&)tH{ z`6kCf&L6(MgmKFG@M+;Ax9|Oe%kA|I!R7crB)A+;9yjdj3DRIPiSo!Fp*$v4lt=zU z%45RgjQmG}UqE@}KNkFA!T(e61(e5ez&XLoD#~EI92+9$$fW+mSO^R1f1-2dg*ob_ zk9_}{BJ`Umk3M*e3P9QD%YIB8Hnlk%7_N4@m<9%)cN zi}IK-N4@m<329Kza|{u4)JvZyun-p1^SKSKGe^Djc^V60LH*Bk&b%;3z4Up3GyzEK zDUS(X>qei33>bD?LB zdg(KU`~$%G7>m`;5$!HSKnrv9k@`xZZ(}i}%uz3WW(vK$cbYlsr4L`zzVn~^zUivH&@hlN~=BSrG{9b_mONE{}>ZK2VMnnBFp=XYI>C++NSuXU< zQ7?VEg?@$5Ge^Dj*(CIr2|aVvOP_0nex=YeN4@mfEA)KK$7;+`FMSRO{pBd6g*ob_ z&+S6Ln#GVZN4@kpBJ^v7o;m8J&wWDA??G6NIqId)mxcZc6w<;R_0s1-p%1edQs$_a zKHm}gwL;Gv_0s2r(61AE=BQsQ_|Jqsnt`KU`usxZ`8zMH#vJw1=QpGe0N;Q@TK*(_ zu4D))bM%q=zY6_TLeCua(&ufV?-Y9GsFyzG?`E0zkuITUj(X{nhaG~Y9DevaOu> zdg*ha(Dw;FbJR&qXO4R5b3o{K2t9Mu zOP@Q0{yL#&j`|&fe@f_gX5groK3@|0T|&@ZT-;%uz3W z`1?Ne-y`(QQ7?TS75;mLo;m8J&(lJ`Pw1JWUiv&I^dA*^=BSrGe-QeQ2|aVvOP|+- z{{IL)bJR3O#ew9~FF?(BGYb zqh9*#7W#XHo;m8J&qsy+aiM39dg(JjdfdME3H{x|=d&3&`bhofg#L3v&m8sA=c_{h zd7)>Hdg;T@BbNjJg3vQZz4ZCM@c*LFGe^Dj`H|3nN$8oQUiv&H^j{Ww=BSrGPYM0~ zLeCua(&t&B|BBEvN4@mn@6&O7zAE(0Q7?U75&p-7o;m8J&ncn*H=$>adg)`HTQ%pg zPY6A8)JvaY(m0U*Qs_rh9_MGa;H8wG2x)ExJ{g$QPbH1*Uqu}Khf*GsS(HcrVU)*& zIr>ZeJkr?yEyU4(IOQ=}OnLMlL3vD=qrcSiXG7b6EmndB{fl(YylkL6`j5=O(O>HM z9L)CLL3Po;gz}i|qdfYLp*$wc(O>FsA&u?N$9(i3OBzg$QXc)!qC6%?DUbeA&-=3N z&-)1aPoTP(9H%_`mr))Q=IAf=50S?9e}p*tS5O|4pHm+F&!Idf%+X)!e@z@Q;`n}XIjAy&hGsk%1 zf*%z68!~XzUn}^hNN>mg8R8iKtwMi4ag6_t3>@Q^`fvI8e^>Y)7Cw&%|4(J$=r8q; z`}jX4{O=V$Cx!n5894e&y$U6_boE8xZ;2%PdQG~4bNX*hh4i0-3av{fRR}@IdJHEz z_>rm*{Z2aw&rqtWO^oQbqNt z+~5oyHd7GKm2%RT_7#`WCehc5GsXWnmD}yv>v&BhQ++OXs$?LXsF|Kw@b|A$Zg z=TEc#Sm=DF{=Z1|?RjmFU%gNLKb~fNyw@{R`+uSO{5gnLJ>!q}7G;`0Cu#ohJi+;s z4?ny;ncwQuKHuXsiW{cX?mwRAWorL#8QL$%(EfLQ+P?!hE`!d2VBK#2n?CIqEYsCf z*FLfTh45qd|Ia?{*Hc3U6o+y1w*Qh(`$wt$QmT*b7iVby3}^=>_B>lm2Q-e?ul*{Y z`YWkEwka2T{LTZAY5RS5xv9nT1mnlg=Nu37Wj^h9Qv32VA3ECYFY;;sDQdq3E5U;8 z<8=eO{XS~n_B~4NGa-2VQ|6isFW$W$rNj~-eLiMlUhAFk{FYu|qILB0YzwyK0tClJLl~i9|6GBJ3 z{oAQNg_laYseaVjv1oTp>28MlndX1#3L{yG2TfRT{#C#ax6kwc9-sCfql^IMtX-`s9$O{VrS{z>p-$NyuW_8%@X_3t-H>eX)lVW0Mo zt~XVViuNZ1vfKZyPx~9`!1dEq%O+#D|BO%j^>i^}F;&3+Psz~!8$RvN8)@2uKcqQm zvD<&ur~QLhnri!~AJ{&gYuf$CjfbB0adIwQBwfW7j9qH3a2$C)^$(Ys3i28Y60XPT zSfBc1%T0Zn24*Eg{fSgRC7?`*>f4;#Wsbks(PmgyMfG2{3a#N#wNM}at9q;?meJI4 zK91q|SHln2=l!=CD#Ir15mj||^h87CH8~_!IC?!`q=Q~JQ2o*P0R33 15|27b14 32l8 32t25 +30e33 Pol{21E9} 15|27b33 30r21 +33U14*Handle_Failure 15|34b14 37l8 37t22 +37r4 Config_Mutex{10|22R9} 15|22m14 22r14 24m16 24r16 29m14 29r14 31m16 31r16 +38e4 Mem_Policy{21E9} 15|23r14 30m7 + diff --git a/obj/userland-memory_failure.o b/obj/userland-memory_failure.o new file mode 100644 index 0000000000000000000000000000000000000000..19c2f3a38cfe0b996e4798de445960cd7ede733d GIT binary patch literal 13904 zcmb_iYiwM{b)LJsBt@-7k)mCRrfMx2S&?OP`LL{4O-ZCAin3`*m1NmgTCXmbm*iUe z>h3a;6em`kxN-8MXq_KPS|>5`K>Vj^fg*L^u#psSA3%$wKnnx~3?oHVAV8BAMO_3% zdcHg7?4F&ymsE@nuy@XU^PR^$@7y6@IJGdB@H`{QGyiE?B|(kpAG0#*j)&rLbHCYb zW(G#zIhZnLuq$P{fB1Q-`PW;X(;_!P1B^2fHW&`ppasc6FK0z0{>5^U`J7W?%KE8v7Vy{W|?WEpKX3epoM~BLN$-X1$UrHYy z>7$YsVj*^=~(3Q_4&B9Zjdxq5U*iy?e|V$~Nyd>GaWbl3b<-iKHoaZ9xo(D1Bz| z5Cytr-oOcsPM1k;l9~iL*b4VAdPAt}=O|fGM>#;PYSY_h!=?^BMZYc+PS)07r%bdOd_QKXFy3lKsml3b4 z--$h@Y_-?wL9Ix;XD(+q)f{iCx!fx4wz+GCV$l@pxnd=MEm$(e!eTC0zfsPw)+*(~ zO}|m7lykXSPz?NfVB&4ng9fS98$l^Y%fFDnu?}~ogB$I&9u#h_=QE7I>X!@ob(~S7 zH;$-YS#H>#h;N~N14-|hLb(ytmi>HC&*j$2^}J2}CZLC_WG>BcP5onS8YLLG+U9J$Y;f1TNy`x*4L`lO0AJyZIp^l?U`DB)w-+|>iG{J*gsY*lnUjbMOauk zcjDaHg=ePc{9-+@4X+mRnXwY}0L@7MI*I;bVY*m7u%E-tPmecB)$!A3XD*FhI`zc) zu?eK9?4>8pw-|TU_4UeHEgy_mYyL{fuV?)w@*MV9DbmLQ>!VbtQ@2-x{Pfhs2b9MLxjGF+6Ymj8f8g&wE=Ebi$2Jvwi)uFQ*>+ zMB>@EPQE?cXC8{Cnc2R~>}R^?UQW$_B5~pE*|+BYipZ39#_%8O>nEdhcAY0eIPZ;j zl*CkjS2#VUs*}0WRCOZfL&`%6XNwi=gbC$RX{|U}orrPMgz*AQnV}d=q@X5LKRR9paj(M^E|%Y9s7dV-=oPS3m!d=-6k8uKj7df zCi%GTRwWJ2aqY?ay>r}-`ecUO{myVJP)i5>Ty=7{52@P!!snHYR62LG)X{C8vUKaIpwG4XdBcYVox zcHheu-{n|0=1PdTv)`Cph&QiCntDs2)Hxp-AwF!%&a3wM5Z~FcbAOWYFjJ4uhVu4~ znQr^BbDn%9dFh5XL`4A`%GUb+_Iar>}c#g1#*_d3@#I7u_&Qq2vrzfGNH zr2oD__<(wkgkg~O-;xj&&FzridcO#tJ~blw4-&pj?E*57o(l2Se3topE5^>}2_I1J zM;V?!4)NCMO6;urRhC_t$e7*N-`@vGcHzXNp~nP0mV(8#m7Kr0SPMRk^327#$tjyl zkxB~}764juk!}E_?qN%14KD4s;3GDh~14_KVDgH)QE1!wLQo|hL6+xkOc1x(JJ z!gJx`B}9FB0g9IwP>o=%J_49Kg(uMv+~o!P_4yU#KkEq*0nDu3^z`R z$Bk3s!MfM+$ajouKN}OLgbe#w)3`eTwxsi53!7_$TD!z1tfDG_^$%s^l8q4KPw>Rudociq6_GE z7zaPcGP2iL2LCF{$X;i8H|0Ld$OPX@@>Kww-ryW|76qjIFIk4)yu$yQW$>32{ymoA zH;BODSMz_w9N1r0{GYH4`_kutxoNH6 zDg4(I{|{nt**7p=HN}5`W#Dy%%Xtj=M-?t7SGZ{?T+W2x>;9*|HiyX_FTvgM$}k^x z^!x-533l{+796?ePk>AbcCJF;bcl1<@dcz@aM-!3aNTdZU2=2b#yP^euHR9{(QmWL zzTR(7D14vdpH#S<&td13!VfF{oWhSP{ItTw7wpU{Tx8&96fW-+v}=>X7gxS zpXN&+g0FA21P5Q+k+}-Kj0K6!ISjtGa}$-6z?XL}%7TNh?YxLeO5kq|CHoK@d~N5m z%mH8KJRrfr*LGe(B_;3&LdiY^2VdLyZRUW#jb&tlgRkv;nK|G;#xgR&!Pj^iAqY~<4hyzO%}k{cHU+jeErobIQZJm-z)xoEF%*fd~N5S zm;?J6mXQe#zP9rYDk*_K5=!>*4$I(YSVnf6W$^KnBslom&X1V@F7_Hpf`hN^yvGD! z_Y0YF!NJ#d^+X%KOa>5`;?ur2pl#ve~;p4 z6<=`hwH>+NLYxzdFF5$x&H-hAQt<@`U)wpV_*056IQZI*y$`ZuwV?QdgRkw#c^+<_ zQ2ZS%Cn)b$c!p(+t>^;E;6Z6G{WM?N{s`fBfxt;{ydPS(C#|-Ck8cb~(nj#LokyAA z#($h~#4q0zfaV!T{2yc)nc#?D^X1zC@!;D`lHiDENI=Tv3=jSXB5?5aZI_(!-1w`k zi}?2`JJ(r8{0~Rqh+p$>F$eLCvyAK(%ZNwwO}2ic)bQzF2I`HP%~wUDe@bYWEdE`^ zWEbmolf}PwWPxVm?*lq-OYTUm^S_j`wF+FXl?)1c3HF`TipvuxZKv(H5QGQy4h>1rvD-<7U~TdMdsD~@=DN-)ygZKMBM&~ zaq4Fg0q4SUzEUa$WtuK!`p>5<{bz^$PpGyKmTUBnOoZUSin4yAQ7bIcKfdTwJx|j2 zk>TBpHKq3=m^qF|M8Z1LX@m;UPim0l<4#$M;Od0EWfT40uRiv>_2S36)ya+jA*xK# z@3I9)#^}Gt1UG(H|3j?r&c7W9iV|nGKu=fyGco!@G5W5(Z?nGJ{tOdce{T6Z ztltcfg}to*C!9;YQ#5};K-BoX$sKo|2LR*OPe1W5tqQxY{y!5C6@UK-*sb#l;>S73jsL%6{LgZ`&%=mHuK)jt@&7dYmw62T_t4Mv zpQe6tZNl9v>|dX`fxFyp(vNEYJRDM*w^{g2g1ZgZeL*2kRDN%SN? z&-$7Jxj*e9wk:*HHevJg3!{uB5r=|_$K^}UwSPxVNn^uu{t^kx0lsGgQu6&#(u z!0~Ui{?HzFq1DZ8)}P>y5WI)3)6eyfcY?e3!q5&5@CS}@xBmuW^k3$~`lmL~|3B1i BIdA{~ literal 0 HcmV?d00001 diff --git a/obj/userland-memory_locations.ads.stderr b/obj/userland-memory_locations.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-memory_locations.ads.stdout b/obj/userland-memory_locations.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-memory_locations.ali b/obj/userland-memory_locations.ali new file mode 100644 index 0000000..28021c7 --- /dev/null +++ b/obj/userland-memory_locations.ali @@ -0,0 +1,61 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.memory_locations%s userland-memory_locations.ads ce1ff5c9 NE OO PK +W userland%s userland.ads userland.ali + +D system.ads 20241115151050 c1a7efcf system%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-memory_locations.ads 20241115151036 d86e3770 userland.memory_locations%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 2 userland.ads +17K9*Userland 23e13 3|17r9 30r5 +X 3 userland-memory_locations.ads +17K18*Memory_Locations 2|17k9 3|30l14 30e30 +20N4*Program_Offset +24N4*LD_Offset_Min +25N4*LD_Offset_Max +26N4*Mmap_Anon_Min +27N4*Mmap_Anon_Max +28N4*Stack_Jump_Min +29N4*Stack_Jump_Max + diff --git a/obj/userland-memory_locations.o b/obj/userland-memory_locations.o new file mode 100644 index 0000000000000000000000000000000000000000..9fcee7bcb42a1eaa99430913032f6c4bf81bacdb GIT binary patch literal 4312 zcmbtXNpBoQ6s}3zVVT5n;y`wJVugfldKNoQ>@dNT#lgaHEMkH`?pAkC zNI(b)aRDwMAla6+7d#0~LhxFCVJ!2#Z@rKenOCJ3H1_1^p5QdO^On-8w8ukI?9 zh@uktos2Yv5^{KtkkPin#T7C`4v>c+PmEy)P%*#iPKSqeP1KbT0++TWTYNl+>9-Ey$1oP%TWr!>Durkc?6e*W4maQpF zOpe2kkB;#AsNQqF2+}0jY~ZC*>CdUX$gsrl17TJKgT4#oeOyB;DGgIE324}L9Okho zdEf+*OEW(TQ^yIqPSoqAUgj`*pN#WljK&TPqfmH;{yi^AY2f%_=JmZ~Y;2lQ_pWni z$YLIRZR7PyyGtvL1-oh2E7cp#O0^%->>Vn2yHf4Fwso^r8$`^jG2b0fFQ~aRPO~WV zHk0U%=VmoOi9$D^-CB~RT|cQotO$Pq;bBzeomS%{%D_8H02GKj@Z7ttFan@UGg?i- zjKu)GHw?L~VK^@D%9`wJgEFr*r?ffIpLgXJlmb$;=K6Iyf3EH><(5ms{!KrFm_e4s z>2fU}wGEZ*heJC``ZX+jI*j8e$?QSKf;_sNxC7B;;-~Jt#f56%Ge7i34(sbTF5lQ# zf3vkpgVYlfkA1gNWl({{3+R0iX~%B`@#2CUuG^|*EUsPKXm3@wu3q1)){&a_*7ePi z$GYfkdW9 zMTvg^A&76lWyXdcy#Ne@cbH*Mul(a&LAs1Fz{1c-#Om} zj+e>jhW`bw@7YnIOAkAlyG1YH{3}k@m~!8 z_ay$j5%8hJ4;kb6SmL7pQP5{xk zB;LI`=$pbI4;>~P(U81q8tGKBY&4VQ>`PeEdQiP$vD62CLdAnpGr{3ci=&n zQ~WJn zIvTfvF`v07(Kf9%w5%WAH5K@o^~Y~wlo$|*m+Sv4u8kUV{Ft{W{ 26|45r34 +74U14*Image 26|72s26 +X 15 lib-synchronization.ads +20K13*Synchronization 66e24 25|17w10 17r35 +22R9*Binary_Semaphore 57e14 25|33r33 +23r4*Unlocked_Semaphore{22R9} 25|33r53 +27U14*Seize 26|26s7 33s7 +31U14*Release 26|28s7 35s7 +X 22 userland.ads +17K9*Userland 23e13 25|19r9 35r5 26|19r6 19r28 20r6 23r14 85r5 +X 25 userland-oom_failure.ads +19K18*OOM_Failure 22|17k9 25|33E4 35l14 35e25 26|23b23 85l14 85t25 +22U14*Get_Killing_Config 22<34 26|24b14 29l8 29t26 +22b34 Enabled{boolean} 26|24b34 27m7 +26U14*Configure_Killing 26>33 26|31b14 36l8 36t25 +26b33 Enabled{boolean} 26|31b33 34r29 +29U14*Handle_Failure 26|38b14 84l8 84t22 +33r4 Config_Mutex{15|22R9} 26|26m14 26r14 28m16 28r16 33m14 33r14 35m16 35r16 +34b4 Is_Killing_Allowed{boolean} 26|27r18 34m7 48r10 +X 26 userland-oom_failure.adb +39i7 Count{natural} 50m35 51r13 52m13 58r34 73m70 76r33 +40a7 Items{27|171A9} 50m28 51r21 52r22 58r19 59r44 70r34 73r39 78r17 78r49 +. 81r30 +41p7 Map{5|43P9} 59m13 60r16 61r55 +42i7 Guilty{natural} 56m10 63m19 70r13 70r41 73r46 78r24 78r56 81r37 +43m7 Guilty_Size{8|19M9} 57m10 62r26 64m19 +44m7 Size{8|19M9} 61m16 62r19 64r34 +45a7 Str{14|55A12} 73m65 76r17 76r22 76r46 +58i14 I{integer} 59r51 63r34 +X 27 userland-process.ads +28K18*Process 26|19w15 19r37 40r21 50r10 59r20 70r60 27|677e21 +33I9*PID +34i4*Error_PID{33I9} 26|70r68 +163a7*Identifier{string} 26|78r32 +164i7*Identifier_Len{natural} 26|78r64 +165i7*Process{33I9} 26|59r54 70r49 73r54 81r45 +171A9*Process_Info_Arr(162R9) 26|40r29 +176U14*List_All 26|50s18 +344V13*Get_Common_Map{5|43P9} 26|59s28 +573V13*Convert{natural} 26|73s30 +X 28 userland-syscall.ads +33K18*Syscall 26|20w15 81r13 28|1356e21 +1249U14*Do_Exit 26|81s21 + diff --git a/obj/userland-oom_failure.o b/obj/userland-oom_failure.o new file mode 100644 index 0000000000000000000000000000000000000000..75323f96851d7cf1cc0cb861f59a9bc99ba3263f GIT binary patch literal 25880 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

    ?j_Wp-oD%6SNG;5jqygms8x$5)Jd)oEw z^)FFZcD7^6Q> zX!07!M!_Gq&;5`8j?ngrHI5@;!0H%V`xTG+oz!lvRl!7eivVe}hN+N6a_%W&5K6+3nxw(f<9^zI?WktNnXC+OJq(+Fxxl zz5Qdrw%dQ)qx}!4{r5g+|NYdX{q@xTV6h3H1~MEocKgp$`%OlcULK@+JFOE7$aUiU z6_5Jo9Ab3*y%beT??0~pu1Eb#u(Ke^Yj#}cdYpeu^|4H*uTg!;(B^u~M?wGE49jk! z`cJcva_&FIg-}1&_&>OU6f_Ui!0LGT 35|205r28 218r60 633r68 36|225r28 255r60 282r33 +29i4*Error_TID{27I9} 36|130r47 194r19 232r47 247r51 261r48 287r23 305r20 +. 351r23 +70U14*Delete_Thread 36|302s26 +80U14*Get_Runtime_Times 36|195s23 262s23 291s26 +112I12*Niceness{integer} 35|232r59 236r60 641r35 36|337r59 338r26 346r60 +113i4*Default_Niceness{112I12} 36|115r46 +116U14*Set_Niceness 36|234s23 352s23 +X 28 system.ads +11K9*System 73e11 35|17w6 545r19 554r15 565r21 635r58 36|114r47 876r19 887r15 +. 900r21 906r17 +25M9*Address 35|545r26 554r22 565r28 635r65 36|876r26 887r22 900r28 +26m4*Null_Address{25M9} 36|114r54 906r24 +X 31 userland.ads +17K9*Userland 23e13 35|23r6 28r9 677r5 36|23r6 26r14 1002r5 +X 33 userland-mac.ads +20K18*MAC 180e17 35|23w15 586r49 587r49 589r50 590r51 595r45 601r17 602r21 +. 606r19 606r42 610r20 611r20 661r25 36|135r36 945r49 947r14 950r49 952r7 +. 955r50 957r14 960r51 962r7 968r45 971r14 978r17 979r21 982r7 987r19 987r42 +. 990r14 995r20 996r20 1000r7 +23R9*Capabilities 39e14 35|589r54 590r55 36|955r54 960r55 +42R9*Permissions 49e14 35|595r49 601r21 36|968r49 978r21 +52E9*Enforcement 55e13 35|586r53 587r53 36|945r53 950r53 +58M9*Limit_Value<13|19M9> 35|606r46 611r24 36|987r46 996r24 +59E9*Limit_Type 65e26 35|606r23 610r24 36|987r23 995r24 +68R9*Context 157e14 35|661r29 +69r4*Default_Context{68R9} 36|135r40 +74V13*Get_Enforcement{52E9} 36|947s18 +79U14*Set_Enforcement 36|952s11 +84V13*Get_Capabilities{23R9} 36|957s18 +89U14*Set_Capabilities 36|962s11 +98V13*Check_Permissions{42R9} 36|971s18 +104E9*Addition_Status 104e63 35|602r25 36|979r25 +112U14*Add_Entity 36|982s11 +124V13*Get_Limit{58M9} 36|990s18 +133U14*Set_Limit 36|1000s11 +X 34 userland-memory_locations.ads +17K18*Memory_Locations 30e30 36|23w15 316r14 317r14 320r14 321r14 327r23 +. 328r23 +26N4*Mmap_Anon_Min 36|316r31 327r40 +27N4*Mmap_Anon_Max 36|317r31 +28N4*Stack_Jump_Min 36|320r31 328r40 +29N4*Stack_Jump_Max 36|321r31 +X 35 userland-process.ads +28K18*Process 31|17k9 35|616E9 677l14 677e21 36|26b23 1002l14 1002t21 +33I9*PID 34r33 155r53 157r15 165r25 166r25 181r39 181r59 185r40 +. 189r15 195r15 204r18 212r41 218r36 223r36 228r52 232r37 236r38 243r38 253r18 +. 263r39 278r18 279r18 295r18 304r24 315r24 324r37 329r37 333r42 338r37 344r36 +. 350r39 356r40 363r34 371r20 381r20 390r36 397r36 407r21 419r15 429r15 437r32 +. 437r44 443r37 451r15 459r30 464r30 469r40 474r40 479r30 484r30 489r40 494r40 +. 500r17 505r18 509r49 514r32 519r32 525r41 531r41 536r35 543r15 552r15 563r17 +. 573r29 579r45 586r37 587r38 589r38 590r39 593r15 598r17 605r19 609r20 616c9 +. 617r33 651r25 672r35 672r50 36|44r15 102r39 102r59 103r11 161r44 164r25 +. 171r40 180r15 210r15 224r18 242r41 255r36 281r36 310r52 337r37 346r38 358r38 +. 372r18 394r39 422r18 423r18 474r18 490r24 509r24 524r37 535r37 548r42 561r37 +. 568r36 577r39 586r40 594r20 606r20 617r36 626r36 636r21 652r15 664r15 675r34 +. 686r32 686r44 687r16 695r37 712r15 733r30 740r30 747r40 754r40 761r30 768r30 +. 775r40 782r40 790r17 807r18 823r49 830r32 837r32 844r41 851r41 864r35 874r15 +. 885r15 898r17 929r29 934r45 937r20 939r17 945r37 950r38 955r38 960r39 966r15 +. 975r17 986r19 994r20 +34i4*Error_PID{33I9} 185r68 207r27 213r30 219r27 223r61 229r30 233r30 237r30 +. 244r30 258r30 264r30 281r31 282r30 297r30 308r30 319r30 325r30 329r65 333r70 +. 339r27 345r27 351r30 357r30 364r24 374r30 384r30 391r30 398r30 412r30 422r27 +. 432r27 438r27 444r27 454r27 573r69 617c4 36|50r25 73r33 105r19 142r26 263r42 +. 288r42 941r17 +35i4*Max_Process_Count{natural} 618c4 36|936r37 +39i4*Max_CWD_Length{natural} 620c4 +40i4*Max_Name_Length{natural} 621c4 649r38 650r44 36|698r24 699r20 +41i4*Max_Thread_Count{natural} 622c4 633r35 +42i4*Max_File_Count{natural} 280r29 284r29 623c4 634r35 653r44 36|424r29 +46m4*Default_Umask{37|32M12} 625c4 36|116r36 +49E9*File_Description_Type 55e27 58r41 +50n8*Description_Reader_FIFO{49E9} 61r15 36|452r18 +51n8*Description_Writer_FIFO{49E9} 63r15 36|453r18 +52n8*Description_Primary_PTY{49E9} 65r15 36|454r18 +53n8*Description_Secondary_PTY{49E9} 67r15 36|455r18 +54n8*Description_Inode{49E9} 69r15 36|456r18 +55n8*Description_Socket{49E9} 77r15 36|464r18 +56R9*File_Description 57r40 58c9 58d27 80e14 36|447r11 +57P9*File_Description_Acc(56R9) 254r18 270r17 271r21 288r32 296r38 630r23 +. 36|373r18 408r17 409r21 445r32 447r29 475r38 477r13 +58e27*Description{49E9} 60r12 36|451r17 +59i7*Children_Count{natural} 36|413r12 414m12 414r32 450r12 468m12 468r32 +62p13*Inner_Reader_FIFO{15|39P9} 36|452m61 +64p13*Inner_Writer_FIFO{15|39P9} 36|453m61 +66p13*Inner_Primary_PTY{17|37P9} 36|454m54 +68p13*Inner_Secondary_PTY{17|37P9} 36|455m56 +70b13*Inner_Is_Locked{boolean} 36|457r21 +71b13*Inner_Is_Blocking{boolean} +72b13*Inner_Ino_Read{boolean} +73b13*Inner_Ino_Write{boolean} +74m13*Inner_Ino_Pos{13|19M9} +75i13*Inner_Ino_FS{37|74I9} 36|458r48 463r29 +76m13*Inner_Ino{37|28M9} 36|458r64 463r45 +78p13*Inner_Socket{18|37P9} 36|464m49 +82E9*Signal 110e34 114r8 143r33 397r47 411r25 536r46 544r15 553r15 564r21 +. 635r30 663r25 36|626r47 640r25 864r46 875r15 886r15 899r21 +83n8*Signal_Abort{82E9} 115r8 +84n8*Signal_Alarm{82E9} 116r8 +85n8*Signal_Bad_Memory{82E9} 117r8 +86n8*Signal_Child{82E9} 118r8 36|920r29 +87n8*Signal_Continue{82E9} 119r8 +88n8*Signal_FP_Exception{82E9} 120r8 36|905r17 +89n8*Signal_Hang_Up{82E9} 121r8 +90n8*Signal_Illegal_Instruction{82E9} 122r8 +91n8*Signal_Interrupted{82E9} 123r8 +92n8*Signal_Kill{82E9} 124r8 36|137r36 857r39 891r17 +93n8*Signal_Broken_Pipe{82E9} 125r8 +94n8*Signal_Quit{82E9} 126r8 +95n8*Signal_Segmentation_Fault{82E9} 127r8 +96n8*Signal_Stop{82E9} 128r8 36|858r39 +97n8*Signal_Terminated{82E9} 129r8 +98n8*Signal_Terminal_Stop{82E9} 130r8 +99n8*Signal_Terminal_In{82E9} 131r8 +100n8*Signal_Terminal_Out{82E9} 132r8 +101n8*Signal_User_1{82E9} 133r8 +102n8*Signal_User_2{82E9} 134r8 +103n8*Signal_Pollable{82E9} 135r8 +104n8*Signal_Profiling_Timer{82E9} 136r8 +105n8*Signal_Bad_Syscall{82E9} 137r8 +106n8*Signal_Tracepoint{82E9} 138r8 36|859r39 +107n8*Signal_Urgent{82E9} 139r8 36|920r51 +108n8*Signal_Virtual_Timer{82E9} 140r8 +109n8*Signal_CPU_Exceeded{82E9} 141r8 +110n8*Signal_File_Size_Exceeded{82E9} 142r8 +143A9*Signal_Bitmap(boolean)<82E9> 525r56 531r52 638r25 639r25 36|844r56 +. 851r52 +146U14*Init 36|32b14 36l8 36t12 +149U14*Disable_ASLR 36|38b14 41l8 41t20 +155A9*Children_Arr(33I9) 158r19 36|45r19 +156U14*Get_Children 157>8 158<8 159<8 36|43b14 64l8 64t20 +157i8 Proc{33I9} 36|44b8 54r65 +158a8 Buf{155A9} 36|45b8 50m7 57r24 58m16 58r21 +159i8 Len{natural} 36|46b8 51m7 56m13 56r20 +162R9*Process_Info 170e14 171r57 +163a7*Identifier{string} 36|71m14 87m20 +164i7*Identifier_Len{natural} 36|72m14 88m20 +165i7*Process{33I9} 36|73m14 89m20 +166i7*Parent{33I9} 36|74m14 90m20 +167m7*User{13|18M9} 36|75m14 91m20 +168b7*Is_Being_Traced{boolean} 36|76m14 92m20 +169b7*Has_Exited{boolean} 36|77m14 93m20 +171A9*Process_Info_Arr(162R9) 176r35 36|66r35 +176U14*List_All 176<24 176<53 36|66b14 100l8 100t16 +176a24 List{171A9} 36|66b24 69m7 84r29 86m16 86r22 +176i53 Total{natural} 36|66b53 78m7 83m13 83r22 +181U14*Create_Process 181>30 181<44 36|102b14 169l8 169t22 +181i30 Parent{33I9} 36|102b30 103r23 142r16 146r48 +181i44 Returned{33I9} 36|102b44 105m7 164m13 +185U14*Delete_Process 185>30 36|171b14 177l8 177t22 +185i30 Process{33I9} 185r57 36|171b30 173r44 175r23 +188U14*Get_Runtime_Times 189>8 190<8 190<24 191<8 191<22 36|179b14 207l8 +. 207t25 +189i8 Proc{33I9} 36|180b8 191r44 193r27 206r46 +190m8 System_Seconds{13|19M9} 36|181b8 186m7 196m13 196r31 203m27 +190m24 System_Nanoseconds{13|19M9} 36|181b24 187m7 197m13 197r35 203m43 +191m8 User_Seconds{13|19M9} 36|182b8 188m7 198m13 198r29 204m27 +191m22 User_Nanoseconds{13|19M9} 36|182b22 189m7 199m13 199r33 204m41 +194U14*Get_Children_Runtimes 195>8 196<8 196<24 197<8 197<22 36|209b14 221l8 +. 221t29 +195i8 Proc{33I9} 36|210b8 215r44 216r35 217r39 218r33 219r37 220r46 +196m8 System_Seconds{13|19M9} 36|211b8 216m7 +196m24 System_Nanoseconds{13|19M9} 36|211b24 217m7 +197m8 User_Seconds{13|19M9} 36|212b8 218m7 +197m22 User_Nanoseconds{13|19M9} 36|212b22 219m7 +203U14*Add_Thread 204>8 205>8 206<8 36|223b14 240l8 240t18 +204i8 Proc{33I9} 207r19 36|224b8 229r44 231r26 232r23 233r23 234r55 239r46 +205i8 Thread{27|27I9} 36|225b8 233r48 234r37 +206b8 Success{boolean} 36|226b8 230m7 235m13 +212V13*Get_Thread_Count{natural} 212>31 36|242b13 253l8 253t24 +212i31 Process{33I9} 213r19 36|242b31 245r44 246r26 247r23 251r46 +218U14*Remove_Thread 218>29 218>41 36|255b14 279l8 279t21 +218i29 Proc{33I9} 219r19 36|255b29 258r44 259r26 260r23 261r23 263r26 264r36 +. 267r40 268r40 271r40 272r40 278r46 +218i41 Thread{27|27I9} 36|255b41 260r47 262r42 +223U14*Flush_Threads 223>29 36|281b14 308l8 308t21 +223i29 Proc{33I9} 223r53 36|281b29 285r44 286r31 288r26 289r36 294r40 295r40 +. 297r40 298r40 307r46 +228U14*Reassign_Process_Addresses 228>42 36|161s16 310b14 335l8 335t34 +228i42 Process{33I9} 229r19 36|310b42 331r44 332r17 333r17 334r46 +232V13*Get_Niceness{27|112I12} 232>27 36|337b13 344l8 344t20 +232i27 Process{33I9} 233r19 36|337b27 340r44 341r27 342r46 +236U14*Set_Niceness 236>28 236>43 36|346b14 356l8 356t20 +236i28 Process{33I9} 237r19 36|346b28 348r44 349r17 350r31 355r46 +236i43 Nice{27|112I12} 36|346b43 349r38 352r45 +243V13*Is_Valid_File{boolean} 243>28 243>43 36|358b13 369l8 369t21 +243i28 Process{33I9} 244r19 36|358b28 361r44 363r25 367r46 +243m43 FD{13|19M9} 36|358b43 362r10 363r55 +252U14*Add_File 253>8 254>8 255<8 256<8 257>8 36|371b14 392l8 392t16 +253i8 Process{33I9} 258r19 36|372b8 379r44 380r35 381r23 382r23 391r46 +254p8 File{57P9} 36|373b8 382r62 +255i8 FD{natural} 36|374b8 383m13 388m7 +256b8 Success{boolean} 36|375b8 384m13 389m7 +257i8 Start{natural} 36|376b8 380r16 +263V13*Get_File_Count{natural} 263>29 36|394b13 405l8 405t22 +263i29 Process{33I9} 264r19 36|394b29 397r44 398r28 403r46 +269U14*Duplicate 270>8 271<8 36|407b14 419l8 419t17 436s16 +270p8 F{57P9} 36|408b8 413r10 414r10 414r30 415r20 +271p8 Result{57P9} 36|409b8 415m10 417m10 +277U14*Duplicate_FD_Table 278>8 279>8 280>8 36|421b14 443l8 443t26 +278i8 Process{33I9} 281r20 36|422b8 426r40 429r44 442r46 +279i8 Target{33I9} 282r20 36|423b8 427r40 430r44 441r46 +280i8 Max_FD{natural} 283r19 284r19 36|424b8 432r21 +288U14*Close 288=21 36|445b14 471l8 471t13 528s10 540s13 553s13 +288p21 F{57P9} 36|445b21 450r10 451r15 452r59 453r59 454r52 455r54 457r19 +. 458r46 458r62 463r27 463r43 464r47 466m16 468r10 468r30 470m7 +294V13*Get_File{57P9} 295>8 296>8 36|473b13 487l8 487t16 +295i8 Process{33I9} 297r19 36|474b8 479r44 481r27 485r46 +296m8 FD{13|19M9} 36|475b8 480r10 481r57 +303U14*Get_FD_Flags 304>8 305>8 306<8 307<8 36|489b14 506l8 506t20 +304i8 Process{33I9} 308r19 36|490b8 495r42 497r44 505r46 +305m8 FD{13|19M9} 36|491b8 498r10 499r43 500r43 +306b8 Close_On_Exec{boolean} 36|492b8 499m10 502m10 +307b8 Close_On_Fork{boolean} 36|493b8 500m10 503m10 +314U14*Set_FD_Flags 315>8 316>8 317>8 318>8 36|508b14 522l8 522t20 +315i8 Process{33I9} 319r19 36|509b8 514r42 516r44 521r46 +316m8 FD{13|19M9} 36|510b8 517r10 518r26 519r26 +317b8 Close_On_Exec{boolean} 36|511b8 518r48 +318b8 Close_On_Fork{boolean} 36|512b8 519r48 +324U14*Remove_File 324>27 324>42 36|524b14 533l8 533t19 +324i27 Process{33I9} 325r19 36|524b27 526r44 528r27 529r20 530r20 532r46 +324i42 FD{natural} 36|524b42 527r10 528r48 529r41 530r41 +329U14*Flush_Files 329>27 36|535b14 546l8 546t19 +329i27 Process{33I9} 329r54 36|535b27 537r44 538r26 545r46 +333U14*Flush_Exec_Files 333>32 36|548b14 559l8 559t24 +333i32 Process{33I9} 333r59 36|548b32 550r44 551r26 558r46 +338U14*Set_Common_Map 338>30 338>42 36|561b14 566l8 566t22 +338i30 Proc{33I9} 339r19 36|561b30 563r44 564r17 565r46 +338p42 Map{8|43P9} 36|561b42 564r37 +344V13*Get_Common_Map{8|43P9} 344>29 36|568b13 575l8 575t22 +344i29 Proc{33I9} 345r19 36|568b29 571r44 572r27 573r46 +350V13*Get_Stack_Base{13|19M9} 350>29 36|577b13 584l8 584t22 +350i29 Process{33I9} 351r19 36|577b29 580r44 581r27 582r46 +356U14*Set_Stack_Base 356>30 356>45 36|586b14 591l8 591t22 +356i30 Process{33I9} 357r19 36|586b30 588r44 589r17 590r46 +356m45 Base{13|19M9} 36|586b45 589r40 +363V13*Bump_Alloc_Base{13|19M9} 363>30 363>39 36|675b13 684l8 684t23 +363i30 P{33I9} 364r19 36|675b30 679r44 680r27 681r17 682r46 +363m39 Length{13|19M9} 36|675b39 681r43 +370U14*Get_Traced_Info 371>8 372<8 373<8 36|593b14 603l8 603t23 +371i8 Process{33I9} 374r19 36|594b8 599r44 600r30 601r30 602r46 +372b8 Is_Traced{boolean} 36|595b8 600m7 +373i8 FD{natural} 36|596b8 601m7 +380U14*Set_Traced_Info 381>8 382>8 383>8 36|605b14 615l8 615t23 +381i8 Process{33I9} 384r19 36|606b8 611r44 612r17 613r17 614r46 +382b8 Is_Traced{boolean} 36|607b8 612r39 +383i8 FD{natural} 36|608b8 613r39 +390U14*Issue_Exit 390>26 390>41 36|617b14 624l8 624t18 +390i26 Process{33I9} 391r19 36|617b26 619r44 620r17 621r17 622r17 623r46 +390m41 Code{13|16M9} 36|617b41 622r41 +397U14*Issue_Exit 397>26 397>41 36|626b14 633l8 633t18 +397i26 Process{33I9} 398r19 36|626b26 628r44 629r17 630r17 631r17 632r46 +397e41 Sig{82E9} 36|626b41 631r42 +406U14*Check_Exit 407>8 408<8 409<8 410<8 411<8 36|635b14 649l8 649t18 +407i8 Process{33I9} 412r19 36|636b8 643r44 644r31 645r31 646r31 647r31 648r46 +408b8 Did_Exit{boolean} 36|637b8 644m7 +409m8 Code{13|16M9} 36|638b8 645m7 +410b8 Was_Signal{boolean} 36|639b8 646m7 +411e8 Sig{82E9} 36|640b8 647m7 +418U14*Set_CWD 419>8 420>8 421>8 36|651b14 661l8 661t15 +419i8 Proc{33I9} 422r19 36|652b8 657r44 658r17 659r17 660r46 +420i8 FS{37|74I9} 36|653b8 658r42 +421m8 Ino{37|28M9} 36|654b8 659r42 +428U14*Get_CWD 429>8 430<8 431<8 36|663b14 673l8 673t15 +429i8 Proc{33I9} 432r19 36|664b8 669r44 670r24 671r24 672r46 +430i8 FS{37|74I9} 36|665b8 670m7 +431m8 Ino{37|28M9} 36|666b8 671m7 +437V13*Get_Parent{33I9} 437>25 36|686b13 693l8 693t18 +437i25 Proc{33I9} 438r19 36|686b25 689r44 690r27 691r46 +443U14*Set_Identifier 443>30 443>42 36|695b14 709l8 709t22 +443i30 Proc{33I9} 444r19 36|695b30 704r44 705r17 706r17 708r46 +443a42 Name{string} 36|695b42 698r10 701r20 707r10 707r16 707r30 +450U14*Get_Identifier 451>8 452<8 453<8 36|711b14 731l8 731t22 +451i8 Proc{33I9} 454r19 36|712b8 720r32 721r30 726r44 728r20 730r46 +452a8 ID{string} 36|713b8 718m7 720r10 723r20 727m7 727r11 727r23 +453i8 Len{natural} 36|714b8 729m7 +459U14*Get_UID 459>23 459<35 36|733b14 738l8 738t15 +459i23 Proc{33I9} 36|733b23 735r44 736r24 737r46 +459m35 UID{13|18M9} 36|733b35 736m7 +464U14*Set_UID 464>23 464>35 36|740b14 745l8 745t15 +464i23 Proc{33I9} 36|740b23 742r44 743r17 744r46 +464m35 UID{13|18M9} 36|740b35 743r31 +469U14*Get_Effective_UID 469>33 469<45 36|747b14 752l8 752t25 +469i33 Proc{33I9} 36|747b33 749r44 750r25 751r46 +469m45 EUID{13|18M9} 36|747b45 750m7 +474U14*Set_Effective_UID 474>33 474>45 36|754b14 759l8 759t25 +474i33 Proc{33I9} 36|754b33 756r44 757r17 758r46 +474m45 EUID{13|18M9} 36|754b45 757r41 +479U14*Get_GID 479>23 479<35 36|761b14 766l8 766t15 +479i23 Proc{33I9} 36|761b23 763r44 764r24 765r46 +479m35 GID{13|18M9} 36|761b35 764m7 +484U14*Set_GID 484>23 484>35 36|768b14 773l8 773t15 +484i23 Proc{33I9} 36|768b23 770r44 771r17 772r46 +484m35 GID{13|18M9} 36|768b35 771r32 +489U14*Get_Effective_GID 489>33 489<45 36|775b14 780l8 780t25 +489i33 Proc{33I9} 36|775b33 777r44 778r25 779r46 +489m45 EGID{13|18M9} 36|775b45 778m7 +494U14*Set_Effective_GID 494>33 494>45 36|782b14 787l8 787t25 +494i33 Proc{33I9} 36|782b33 784r44 785r17 786r46 +494m45 EGID{13|18M9} 36|782b45 785r42 +496N4*Max_Supplementary_Groups 648r53 36|796r27 799r49 813r26 +497A9*Supplementary_GID_Arr(13|18M9) 501r21 506r18 648r25 36|791r21 +. 808r18 +499U14*Get_Supplementary_Groups 500>8 501<8 502<8 36|789b14 804l8 804t32 +500i8 Proc{33I9} 36|790b8 795r44 797r30 800r26 802r27 803r46 +501a8 Groups{497A9} 36|791b8 796r10 797m10 797r50 799m10 799r18 799r34 +502i8 Length{natural} 36|792b8 802m7 +504U14*Set_Supplementary_Groups 505>8 506>8 507<8 36|806b14 821l8 821t32 +505i8 Proc{33I9} 36|807b8 812r44 816r20 817r20 820r46 +506a8 Groups{497A9} 36|808b8 813r10 816r40 816r58 817r42 +507b8 Success{boolean} 36|809b8 814m10 818m10 +509U14*Empty_Supplementary_Groups 509>42 36|823b14 828l8 828t34 +509i42 Proc{33I9} 36|823b42 825r44 826r17 827r46 +514U14*Get_Umask 514>25 514<37 36|830b14 835l8 835t17 +514i25 Proc{33I9} 36|830b25 832r44 833r26 834r46 +514m37 Umask{37|32M12} 36|830b37 833m7 +519U14*Set_Umask 519>25 519>37 36|837b14 842l8 842t17 +519i25 Proc{33I9} 36|837b25 839r44 840r17 841r46 +519m37 Umask{37|32M12} 36|837b37 840r32 +525U14*Get_Masked_Signals 525>34 525<46 36|844b14 849l8 849t26 +525i34 Proc{33I9} 36|844b34 846r44 847r24 848r46 +525a46 Sig{143A9} 36|844b46 847m7 +531U14*Set_Masked_Signals 531>34 531>46 36|851b14 862l8 862t26 +531i34 Proc{33I9} 36|851b34 853r44 856r17 857r17 858r17 859r17 861r46 +531a46 Sig{143A9} 36|851b46 856r61 +536U14*Raise_Signal 536>28 536>40 36|864b14 871l8 871t20 +536i28 Proc{33I9} 36|864b28 866r44 867r24 868r20 870r46 +536e40 Sig{82E9} 36|864b40 867r46 868r42 +542U14*Get_Signal_Handler 543>8 544>8 545<8 36|873b14 882l8 882t26 +543i8 Proc{33I9} 36|874b8 879r44 880r25 881r46 +544e8 Sig{82E9} 36|875b8 880r48 +545m8 Addr{28|25M9} 36|876b8 880m7 +551U14*Set_Signal_Handler 552>8 553>8 554>8 36|884b14 895l8 895t26 +552i8 Proc{33I9} 36|885b8 890r44 892r20 894r46 +553e8 Sig{82E9} 36|886b8 891r10 892r43 +554m8 Addr{28|25M9} 36|887b8 892r51 +562U14*Get_Raised_Signal_Actions 563>8 564<8 565<8 566<8 567<8 36|897b14 +. 927l8 927t33 +563i8 Proc{33I9} 36|898b8 910r44 911r26 912r23 914r33 922r23 926r46 +564e8 Sig{82E9} 36|899b8 905m7 913m13 920r23 920r45 +565m8 Addr{28|25M9} 36|900b8 906m7 914m13 +566b8 No_Sig{boolean} 36|901b8 907m7 915m13 +567b8 Ignore{boolean} 36|902b8 908m7 920m13 +573V13*Convert{natural} 573>22 36|929b13 932l8 932t15 +573i22 Proc{33I9} 573r61 36|929b22 931r23 +579V13*Convert{33I9} 579>22 36|934b13 943l8 943t15 +579i22 Proc{natural} 36|934b22 936r10 936r29 937r25 939r22 +586V13*Get_Enforcement{33|52E9} 586>30 36|945b13 948l8 948t23 +586i30 Proc{33I9} 36|945b30 947r45 +587U14*Set_Enforcement 587>31 587>43 36|950b14 953l8 953t23 +587i31 Proc{33I9} 36|950b31 952r38 +587e43 Act{33|52E9} 36|950b43 952r51 +589V13*Get_Capabilities{33|23R9} 589>31 36|955b13 958l8 958t24 +589i31 Proc{33I9} 36|955b31 957r46 +590U14*Set_Capabilities 590>32 590>44 36|960b14 963l8 963t24 +590i32 Proc{33I9} 36|960b32 962r39 +590r44 Caps{33|23R9} 36|960b44 962r52 +592V13*Check_Permissions{33|42R9} 593>8 594>8 595>8 36|965b13 972l8 972t25 +593i8 Proc{33I9} 36|966b8 971r47 +594i8 FS{37|74I9} 36|967b8 971r60 +595m8 Ino{37|28M9} 36|968b8 971r64 +597U14*Add_Entity 598>8 599>8 600>8 601>8 602<8 36|974b14 983l8 983t18 +598i8 Proc{33I9} 36|975b8 982r33 +599i8 FS{37|74I9} 36|976b8 982r46 +600m8 Ino{37|28M9} 36|977b8 982r50 +601r8 Perms{33|42R9} 36|978b8 982r55 +602e8 Status{33|104E9} 36|979b8 982m62 +604V13*Get_Limit{33|58M9} 605>8 606>8 36|985b13 991l8 991t17 +605i8 Proc{33I9} 36|986b8 990r39 +606e8 Resource{33|59E9} 36|987b8 990r52 +608U14*Set_Limit 609>8 610>8 611>8 612<8 36|993b14 1001l8 1001t17 +609i8 Proc{33I9} 36|994b8 1000r32 +610e8 Resource{33|59E9} 36|995b8 1000r45 +611m8 Limit{33|58M9} 36|996b8 1000r55 +612b8 Could_Set{boolean} 36|997b8 1000m62 +627R9 File_Descriptor 631e14 634r58 +628b7*Close_On_Exec{boolean} 36|499r48 518m31 529m45 542m12 552r46 554m15 +629b7*Close_On_Fork{boolean} 36|433r25 500r48 519m31 530m45 543m12 555m15 +630p7*Description{57P9} 36|363r60 381r47 382m47 399r17 435r24 436r35 436m56 +. 481r62 528m52 539r15 540m22 552r15 553m22 +633A9 Thread_Arr(27|27I9) 656r25 +634A9 File_Arr(627R9) 657r25 36|362r29 426r13 427r13 480r29 495r15 +. 498r29 514r15 517r29 527r16 +635A9 Handle_Arr(28|25M9)<82E9> 640r25 +636R9 Process_Data 670e14 671r36 36|28r8 110r33 +637r7*Data_Mutex{23|22R9} 36|85m56 95m58 111m17 143m56 159m58 173m53 191m50 +. 206m52 215m50 220m52 229m50 239m52 245m53 251m55 258m50 278m52 285m50 307m52 +. 331m53 334m55 340m53 342m55 348m53 355m55 361m53 367m55 379m53 391m55 397m53 +. 403m55 429m53 430m52 441m54 442m55 479m53 485m55 497m53 505m55 516m53 521m55 +. 526m53 532m55 537m53 545m55 550m53 558m55 563m50 565m52 571m50 573m52 580m53 +. 582m55 588m53 590m55 599m53 602m55 611m53 614m55 619m53 623m55 628m53 632m55 +. 643m53 648m55 657m50 660m52 669m50 672m52 679m47 682m49 689m50 691m52 704m50 +. 708m52 726m50 730m52 735m50 737m52 742m50 744m52 749m50 751m52 756m50 758m52 +. 763m50 765m52 770m50 772m52 777m50 779m52 784m50 786m52 795m50 803m52 812m50 +. 820m52 825m50 827m52 832m50 834m52 839m50 841m52 846m50 848m52 853m50 861m52 +. 866m50 870m52 879m50 881m52 890m50 894m52 910m50 926m52 +638a7*Masked_Signals{143A9} 36|112m17 145m29 145r61 847r30 856m23 857m23 +. 858m23 859m23 867r30 +639a7*Raised_Signals{143A9} 36|113m17 868m26 911r32 912r29 922m29 +640a7*Signal_Handlers{635A9} 36|114m17 880r31 892m26 914r39 +641i7*Niceness{27|112I12} 36|115m17 144m29 144r61 234r61 341r36 349m26 +642m7*Umask{37|32M12} 36|116m17 158m29 158r61 833r32 840m23 +643m7*User{13|18M9} 36|91r52 117m17 152m29 152r61 736r30 743m23 +644m7*Effective_User{13|18M9} 36|118m17 153m29 153r61 750r31 757m23 +645m7*Group{13|18M9} 36|119m17 154m29 154r61 764r30 771m23 +646m7*Effective_Group{13|18M9} 36|120m17 155m29 155r61 778r31 785m23 +647i7*SGroup_Count{natural} 36|121m17 156m29 156r61 802r33 817m26 826m23 +648a7*SGroups{497A9} 36|122m17 157m29 157r61 797r36 800r32 816m26 +649a7*Identifier{string} 36|87r52 123m17 706m23 728r26 +650i7*Identifier_Len{integer} 36|88r52 124m17 705m23 720r38 721r36 +651i7*Parent{33I9} 36|54r56 90r52 125m17 146m29 263r32 264r42 267r46 268r46 +. 271r46 272r46 288r32 289r42 294r46 295r46 297r46 298r46 690r33 +652b7*Is_Traced{boolean} 36|92r52 126m17 600r39 612m26 +653i7*Tracer_FD{integer} 36|127m17 601r39 613m26 +654i7*Current_Dir_FS{37|74I9} 36|128m17 149m29 149r61 658m23 670r30 +655m7*Current_Dir_Ino{37|28M9} 36|129m17 150m29 150r61 659m23 671r30 +656a7*Thread_List{633A9} 36|130m17 193r33 231r32 232r29 233m29 246r35 247r32 +. 259r32 260r29 261m29 286r37 350r40 +657a7*File_Table{634A9} 36|131m17 363r34 380r44 381r32 382m32 398r37 426m49 +. 427m48 481r36 495m51 514m51 528r36 529m29 530m29 538r35 551r35 +658p7*Common_Map{8|43P9} 36|132m17 564m23 572r33 +659m7*Stack_Base{13|19M9} 36|133m17 147m29 147r61 333m26 581r36 589m26 +660m7*Alloc_Base{13|19M9} 36|134m17 148m29 148r61 332m26 680r30 681m20 +661r7*Perms{33|68R9} 36|135m17 151m29 151r61 947r51 952m44 957r52 962m45 +. 971r53 982m39 990r45 1000m38 +662b7*Signal_Exit{boolean} 36|136m17 621m26 630m26 646r40 +663e7*Which_Signal{82E9} 36|137m17 631m26 647r40 +664b7*Did_Exit{boolean} 36|93r52 138m17 620m26 629m26 644r40 +665m7*Exit_Code{13|16M9} 36|139m17 622m26 645r40 +666m7*Children_SSec{13|19M9} 36|216r41 267m54 294m54 +667m7*Children_SNSec{13|19M9} 36|217r45 268m54 295m54 +668m7*Children_USec{13|19M9} 36|218r39 271m54 297m54 +669m7*Children_UNSec{13|19M9} 36|219r43 272m54 298m54 +671P9 Process_Data_Acc(636R9) 672r63 36|28r22 +672A9 Process_Arr(671P9)<33I9> 673r36 36|34r23 +673P9 Process_Arr_Acc(672A9) 676r21 +675r4 Registry_Mutex{23|22R9} 36|35m36 35r36 52m34 52r34 63m36 63r36 80m34 +. 80r34 99m36 99r36 107m34 107r34 168m36 168r36 174m34 174r34 176m36 176r36 +676p4 Registry{673P9} 36|34m7 53r16 54r13 54r43 81r16 82r13 85r43 87r39 88r39 +. 90r39 91r39 92r39 93r39 95r45 108r16 109r13 110r13 143r43 144r16 144r48 +. 145r16 145r48 146r16 147r16 147r48 148r16 148r48 149r16 149r48 150r16 150r48 +. 151r16 151r48 152r16 152r48 153r16 153r48 154r16 154r48 155r16 155r48 156r16 +. 156r48 157r16 157r48 158r16 158r48 159r45 173r34 175r13 191r34 193r17 206r36 +. 215r34 216r25 217r29 218r23 219r27 220r36 229r34 231r16 232r13 233r13 234r45 +. 239r36 245r34 246r16 247r13 251r36 258r34 259r16 260r13 261r13 263r16 264r16 +. 264r26 267r20 267r30 268r20 268r30 271r20 271r30 272r20 272r30 278r36 285r34 +. 286r21 288r16 289r16 289r26 294r20 294r30 295r20 295r30 297r20 297r30 298r20 +. 298r30 307r36 331r34 332r7 333r7 334r36 340r34 341r17 342r36 348r34 349r7 +. 350r21 355r36 361r34 363r15 367r36 379r34 380r25 381r13 382r13 391r36 397r34 +. 398r18 403r36 426r30 427r30 429r34 430r34 441r36 442r36 479r34 481r17 485r36 +. 495r32 497r34 505r36 514r32 516r34 521r36 526r34 528r17 529r10 530r10 532r36 +. 537r34 538r16 545r36 550r34 551r16 558r36 563r34 564r7 565r36 571r34 572r17 +. 573r36 580r34 581r17 582r36 588r34 589r7 590r36 599r34 600r20 601r20 602r36 +. 611r34 612r7 613r7 614r36 619r34 620r7 621r7 622r7 623r36 628r34 629r7 +. 630r7 631r7 632r36 643r34 644r21 645r21 646r21 647r21 648r36 657r34 658r7 +. 659r7 660r36 669r34 670r14 671r14 672r36 679r34 680r17 681r7 682r36 689r34 +. 690r17 691r36 704r34 705r7 706r7 708r36 720r22 721r20 726r34 728r10 730r36 +. 735r34 736r14 737r36 742r34 743r7 744r36 749r34 750r15 751r36 756r34 757r7 +. 758r36 763r34 764r14 765r36 770r34 771r7 772r36 777r34 778r15 779r36 784r34 +. 785r7 786r36 795r34 797r20 800r16 802r17 803r36 812r34 816r10 817r10 820r36 +. 825r34 826r7 827r36 832r34 833r16 834r36 839r34 840r7 841r36 846r34 847r14 +. 848r36 853r34 856r7 857r7 858r7 859r7 861r36 866r34 867r14 868r10 870r36 +. 879r34 880r15 881r36 890r34 892r10 894r36 910r34 911r16 912r13 914r23 922r13 +. 926r36 937r10 947r35 952r28 957r36 962r29 971r37 982r23 990r29 1000r22 +X 36 userland-process.adb +27U14 Free[2|14] 175s7 +30b4 Do_ASLR{boolean} 40m7 314r10 +48i7 Index{natural} 57r16 58r33 59m16 59r43 +53i11 I 54r23 54r53 58r43 +67i7 Curr_Index{natural} 84r16 86r35 94m16 94r30 +81i11 I 82r23 85r53 87r49 88r49 89r39 90r49 91r49 92r49 93r49 95r55 +103i7 P=103:23{35|33I9} 143r53 144r58 145r58 147r58 148r58 149r58 150r58 +. 151r58 152r58 153r58 154r58 155r58 156r58 157r58 158r58 159r55 +108i11 I 109r23 110r23 144r26 145r26 146r26 147r26 148r26 149r26 +. 150r26 151r26 152r26 153r26 154r26 155r26 156r26 157r26 158r26 161r49 164r30 +184m7 Temp1{13|19M9} 195m46 196r48 +184m14 Temp2{13|19M9} 195m53 197r56 +184m21 Temp3{13|19M9} 195m60 198r44 +184m28 Temp4{13|19M9} 195m67 199r52 +193i11 Th=193:11{27|27I9} 194r13 195r42 +231i11 I{integer} 232r42 233r42 +243i7 Returned{natural} 248m13 248r25 252r14 +246i11 I{integer} 247r45 +256m7 Temp1{13|19M9} 262m50 269r20 +256m14 Temp2{13|19M9} 262m57 269r27 +256m21 Temp3{13|19M9} 262m64 273r20 +256m28 Temp4{13|19M9} 262m71 273r27 +259i11 I{integer} 260r42 261r42 +282i7 Current_Thread{27|27I9} 301r26 +283m7 T1{13|19M9} 291m53 295r70 +283m11 T2{13|19M9} 291m57 295r74 +283m15 T3{13|19M9} 291m61 298r70 +283m19 T4{13|19M9} 291m65 298r74 +286i11 Thread=286:11{27|27I9} 287r13 291r45 301r16 302r41 305r10 +311K15 Aln[20|19] 324r23 325r23 +312m7 Rand_Addr{13|19M9} 318m14 324m10 324r37 327m10 332r40 333r40 +312m18 Rand_Jump{13|19M9} 322m14 325m10 325r37 328m10 333r52 +338i7 Result{27|112I12} 341m7 343r14 +350i11 Thread=350:11{27|27I9} 351r13 352r37 +359b7 R{boolean} 363m10 365m10 368r14 +380i11 I{integer} 381r44 382r44 383r24 +390L6 Cleanup 385r18 +395i7 Count_Of_FDs{natural} 400m13 400r29 404r14 +398r11 Ent=398:11{35|627R9} 399r13 +426a7 Src{35|634A9} 433r17 434r24 435r16 436r27 +427a7 Tgt{35|634A9} 434r13 436r48 +432i11 I{integer} 433r22 434r18 434r29 435r21 436r32 436r53 +446U17 Free[2|14] 466s10 +448b7 T{boolean} 458m75 459r26 +477p7 Res{35|57P9} 481m10 483m10 486r14 +495a7 Table{35|634A9} 499r27 500r27 +514a7 Table{35|634A9} 518r10 519r10 +538r11 F=538:11{35|627R9} 539r13 540r20 542r10 543r10 +551r11 F=551:11{35|627R9} 552r13 552r44 553r20 554r13 555r13 +569p7 Result{8|43P9} 572m7 574r14 +578m7 Result{13|19M9} 581m7 583r14 +677m7 Result{13|19M9} 680m7 681r34 683r14 +687i7 Result{35|33I9} 690m7 692r14 +696i7 Length{natural} 699m10 701m10 705r51 706r40 707r43 +716i7 Length{natural} 721m10 723m10 727r34 728r43 729r14 +911e11 I{35|82E9} 912r45 913r23 914r56 922r45 +X 37 vfs.ads +24K9*VFS 35|18w6 46r29 75r33 76r33 420r15 421r15 430r19 431r19 514r49 519r45 +. 594r15 595r15 599r17 600r17 625r29 642r25 654r25 655r25 36|128r36 463r16 +. 653r15 654r15 665r19 666r19 830r49 837r45 967r15 968r15 976r17 977r17 37|674e8 +28M9*File_Inode_Number<13|19M9> 35|76r37 421r19 431r23 595r19 600r21 655r29 +. 36|654r19 666r23 968r19 977r21 +32M12*File_Mode{13|18M9} 35|46r33 514r53 519r49 625r33 642r29 36|830r53 837r49 +74I9*FS_Handle 35|75r37 420r19 430r23 594r19 599r21 654r29 36|653r19 +. 665r23 967r19 976r21 +75i4*Error_Handle{74I9} 36|128r40 +359U14*Close 36|463s20 + diff --git a/obj/userland-process.o b/obj/userland-process.o new file mode 100644 index 0000000000000000000000000000000000000000..04dd4f3eaa8187054cc5b3549a0c7ea4647d4d3e GIT binary patch literal 393256 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

    Bq{=U$&i22*XZcCVdSHzPQ z%s&zSZ~^ldgdUq8B-LnPx64?*Q|RwxUN73^dgkjzeE2o<%Z0qn^OEW{;fD{h{DGWI zJO3B+5u(35$K0;dN9X*3xm`z(_}k0}i1F@y=GnrZKVjb7J- z*!e5WuM*cC#QbQwPIQfLGJpN#h?%WC=5vHUmoP6Cd3zc2zlk_7h57rL>QyE44l(}z zka?Z3Pd)RC#Q5ICJX`qxGUmS!^*W#VIl?~cn2!+Uyo7m`(7%oOQ=-1tFh7qzBV{); ze@L|NZ<&kcRrfMqC;awN=Iz4IpJslSh@USyd2!u0n4c}=|C{+KB0l_`d8x45XUsQ< z^7N!}E2(}XG^>9S;F7`#k^3|t2?dlB-L!uzF%ZsBF5iin4cx;^>yZxh5S(F+eQD1F<&Rf zyOGSlkrUO)Y>i{SOvHhy%y)|T_C4lfh23T|KThO_^O?UZ<`K=zhl>2+T;`96daYuv zM7#Wy`50lh&CJgh?ea_Jr;B)UE%PJ9c(IH5Wx_tUF+WcD=Y7l{6#o1e^T!0=&-^Zt z54^xehNDuN%cvpe+obE$9%r9|5uq`Ev`F+ z`Oih%7{RQ2J;fLR4{}g`Lc2P&+$mrEX>Zv?$Nr%twmx z`eEjuit(k3d4nkb0p_zsd%ec|Mv9A3dEQ}uo`?@0Iz1x3eaifG5x0+^`XtrEk!srN z!~7l*PmX1Nso*)x+eLpr*~yFfW1RVJ5eL4_e4_B5@yu&PIZtP9*U6%TGnl`4M8wQi zHS_7h&I_1dmy;=fHuDP6j?0;!C+z$a<~Q}q)MM8-ld44Mzm(;x1>es66w$srnBOVv zb_;X+oOpEY+nLW5_Pn3@Rw=uu+3lTG0=P|eIYSFQ^%#RY+ zwc|}v{Z#n#R+i5aPq3b?BECIK zyvuuE)+;POLd5yESY9-XI>_?&Ik@QJ|77{{2+@{ZuTQFr#kh79`GiFc{9#2MdazDn@%tS3+KsX%`v@uZqB`uh)w?-E*+s%2gw zj+{lj%X{9VmHFL5{>RK;6MPMEJ#V7+i4I;&+8SFoNuk+)w*{H91TZ|!0( z?Z20Jm$Kg{j!yd>bNL+OKIUV(MY3k=_pD#G%k#|TbzdW%R14@c()AAQ?~DL%z0X|g z`IvZ@vfrbPPU}YFdYAfWLBWQdfxb zjAVIfw=$q-GV!GPvlt)GAil#Z&rIgBJadV6slB2+iDF3|;M-uN+CE^18m{$q@ zRpx62AHw`L!ACGZD0qVSe$`9x(JY^nomquR#FOf~VtoHDasPe$XEMJoQ;nL-{B6M( zGXGTYvxz5Fofvtk(;$5m()a&QWzc2V!=IaH&iuI2a`gby4F8Chi z8w9_T`3-_Uz+9I9apHQM5_!Ti#J348O1;Q@t2pvH@hf2t5_dHwiw2`L%-2W`2j@^~_~C8;K{?c|9^uIEVO_OsMx(GMARPfOwZ$ zCF-?-`L6`OjP)eM6|P|3BKQvGvK@CZm*x2_@uWJA;$o!iUg8}Q;H^iPuMkI`B;KWd zBg&s-`M8k(19Lfky~TWikpC-ldEI{yPpUOyo~vkGb+gc-)EAhyiz9uAcd7lN{Kqo? zK=2&alMs4_GOrRmk9mXO#mw6UA45E;rW~Jn;56dW%axkOd}XG%`abb4b%L0u&tX1V z@P({Lw%6Ir<@kOs^F`vi=QEe(xrlgD-7m(AO~f|}ElOR^e7QK%NxVx{i1J_0^0NH9 znNJsbZf9OE_PoR%0B-RU3>!Z z^%3B$sm$kyeESUIUFt1ihgr;finv`zJgMdk%DhA)%TE#V=MZ17#%GGF^O#FNzmU0% zw-+=2K|k0*}g-Gcd6?{`D4r<7JMY@k#VVvxs0omnaj93ow+Q}OyWuPe<~&L-Zao)zU^&io_6f5LiXd;OHTY_Ch0%W?1*%w>75BA!%l56mp+jl@@H zLcO<#xwOw6#JkjqVjcAX=3@nag7wJudWN}dua}t1_IiW4EYDwvC)JO|{foa5U**;7 zQ|9gBNH*mMU22*re{bSR)xU4%314CPCLuqF_$u$c74wqt_1EaxcVN%a+x zN0k$o(n?h@mv;Le@h-Jplz%q!y9A%ldSp8`F_-Ol4s+R#=P{S%xsbSiURT7ojl`w2 zQucoNN+oN&o#eaJV^>pfdiRCoZ#a zrCwz&Yy1}RE_Gbb3^nQ?^CH3R{g@Tr`*OR{eaaQydoqt?F5By9=CVA;5lKDnHt^1gNU5rzY5nq-mtoMG;JWrJW0P!yMuCV`Wtbcz_rmA;Xe%O(j z{6pra3jQhaW!`(hx>G%udB50T>%UArlc`?yXZeo=AIMz3pJ51dd7ol9b7_YH;z{)- z5eG_%w~4DNHJ-WbcTa< zF|Wu}qmE}TTV^oxwL*Rv@uYV@BAmL~*+NxzxBHP#FHvHDD%LdiOXzBse{br zO3y!tcd4UA`R$9AyHuXwN7D5gynOp;=JlDyQO7Zt8OjOFWqD2}uJgA(nTq1X7iB`d zSHfKC8AH5FRg3bU#(bsV(^-#i_P;Ad*k2aWoH(%KA;>wGrU0T;{9AkwW5Ks!^1G6ziAooi1njp9%SCtY7+h74uo* zx^tMz5oQ5%Sb*yquM|g~BHpF`F3SHr^ZsHz^L5rE>-7%v$wL1J z%w_-mgt;tFR*q4SRDDFfjv_wW9L)IZmt%Hkt9J8|_IF&4+38XRqWpuIpCS0Sh|l)M zk$mP=T3hIVC7x7c zdt{z)H}RR7Q13m+{8e$}apGO-FQUHBu)OrFmzc|Z_zl+c#Xc(I@4s2TA%iOQH|ElA z|HJ%hA%6s|JI_?N3I0XqPYC`M=C2C=HR4Gn%YPDa>CO7N0>`^$Dk>n}rN)Z-mNK6s z_(awt<9P-1+D!Fo2J?-A&t`su;PuS!7rc@A0m0jt|3&bX%;ozA*AP#t&yL7E;bP)5 zGNInJ)mu%={_A2NK_} zUhbB8iEps{QGGLcF7ZlLmWfq@x%AIb%(n>niOg>lyn=XA-6hKNed5!Fv>rj2-y)9G z5${s=`%KZnM&?sRz0P4hvfrJ@Tt>b>7Hm+Q<2hfOnYEnt^yn8cvo($RP{Ge+{qp_xbD7sw+VhW^LGS4mw7)? z-}9Nv_sw3!T&~0aoVi?wznr;ThyN9G=~veiPpVa7KJ{znR|tM5@p4fsrS4~bk2vxu z@h&x0*!lOYU#|bW!18iE|8?T~)huDRcUb;nq5lKo<*GxJ=M&~}!Lx=KP_AS<_F^u_ z@qWx@eUB%eR3iptUf@LH6EdOR8^&DbnK9yB>ffSXC9MAiF&`{r`LEG){n2G6vwYF< z5i?t7u)O`AM|A85%(nQlj>v<_f`;}pl2SLf2*0V$i!+r z@h)|rxb9|_A1UOwF_+`Q)y!`d@;5S<_P>>QQvE{2pSy{V6IyiM&Rpt$oOqY|qbUD= z=2`tSRlUgEevctK_D9w)$H#Y>%M9g1=IbLBwDm9Moq}h7!vOzxPLCp$J!JB;-Y7wc^KEPsxW|2FacDk0*)IM!qHn&{$FiI4T>xs}XM zjYMf{7W2)5*D}9O@CN303Es+F+F=FpqEvJ0Nly@$y;Q0F%%6-zY3l{zUCMs{ zBRcpx>wk#W*CYNe^Rd|xGg}`qzg)=w4|DmPOplYySxMFM74sSWeTlh!|8&F$Fdr}G zK_@Wp>K)0Ntzpdnc0?x6C*GyLEUx=)mVcs0ru=x8A1CCe5+CXP?qMbI{py`eHEI^? zsTO)_nYRhvzGq>N{h)&wf+A--Qd z9jTzL;lzv8)q)o=e?#z7nGY3lemrye{P0xf>xFzJ^G?BMF_*uuSIb=f-d_Xrp`x6v z%qs<7!Cd~{-)iPBiSn#xeo*ku%%wkUBc4>7MP6|YahWA3btChh!msua?^0KbcD$4M zLxMj*JgGhudC?Or--Dh*kBspQ%YRwSqhDtE8X^BDmbcF@M|$34`TK>ueJ_=MZb9V9 zpRv4so;}j@1!}AKW%(JtFr|Hp$ePuM}cOI0-V>@Fa7&9`y(2vc7K-PpVPkKFdMk@~TSxgSm{K|0b@VLlE=#9&}$yKd&OVy4=9`873g$8opTS(_;j@`b zyVVod--Gx<<^`IF=Vd~@*T(z?apcFuyVOom-wT*OCiu^o%lFA&%3S`S<1d+i_4v#S zUqd|4e-44UT)*1GydzVMx|6xA*8{|p>W#sfCp_wcmShMla%BYO|2<$NX1YaVmi zj*E!v_oRt9yoC60aaH|GSj;=ck@JanseQt37qPq?F*Y)n_PLCCmC(PPxr|HKFqi8j zH!_#y+(SI64hZ|)MZ8p8RjCJQOJMH`t9?)X{UY5Y?rEOX~=B$WG>@IU*__Ae*+vB_03^^lHfy`%lB&LF_(5L zW}YL;Ifi*c=%2*AR`6-WlWHZ+lOknj5+@@?P;bp)K1S%7&wBcZ@uHb{mzpEm@f?;v zNcm}WiFTI%sgS>r_5_Vh_)&8K$BOa&FRVwF=Of}3 zUitsUJV&%+)(9iorE-P-qloWUyM%my;uWfoxWYh|e^AJOgY`EE{khD4CU_C+pCR;* zX1+o2a^^P({vGCz3I2WNuM1wyT-s+o^T|TKiTNVI&tWd}ob#A(74jDnPpbbG>*pJp zpCS6!<;+K)kg4cO<{xy=pZccz|qn15f$f5_ZE4<4QKDf1NrB4)OZ$Tj~bRj#m4ALg;6%<<^&SmwVG>v%cL zTSWgonfXf5UUBAs5O(`E^PQqR%*rrKVOWqGnl_80$eq7`Td;*%vix2`3=+v7JA-{tYW#BcKW zJ;Zl<{9)qPd;Ce_ay3e+=ZIh9$-hGUDv!TOywl_FF`q7u{GIrAL6!P9@ogUOaf(6P zyx#}!LtI7^rH&!K#nUs0xLjq>zqd$yvnQWRe3Qo$%*(`)QN%Y2s(-hI_y&(xFuy|_ znL&KLp!zvC=CVZf#MgQ9jl|b_yp6dm|4QO(Joz=mS9^Q|bE&6;_$p6+JMngpU&~zT zxtaJ%Pkt})6&}BbxzzJ8@#UWUlgy>%o+Bz$*;we@55Z?vBwZ^_T&c7MGnmVI%_d&!$=4IF@pvP1si%$j98Z2F@!1|S5+1#gQk8%jm4*Kk+F-TKhlqQ^k=tnadi#$6Q9@ zzcb$}^!%H6xu8n*h#6Gwtqb)bKEabehPmv)gP2!{GfpBdvp1!3nalp0AU;-T(f&_d zu9E2Z&s^%MATC=)sTs@%i7U)zex=~`#ES)0s*$;jS8dF15NE7pexu-PnBOe;2IjX2 z-a$MesP=#6Ys8Ujnah#tX6EaJ{9fkk1;2;6^uvdV7YJ#ko@72v9C?m-Tu|-*%w>;! zlQ=nV#yS7ZT=uY!m`gqXVlK;{MMcTY&~0{(WG?-@FZ1Q%jANP0k#i7pInsWExbz;S zh7&Ip+LbC`P9JGUPbDxcjo8g`%r}W6lbN3+_;;D#FL)Jkk%ViR+02g@^0my{1V4+o zzwWVwxzzI`;xd{j^%LfOg#MorAF8qh-^5({;pN1KDKR}&zhW-?-mX}0(?fw5km|32{vo}PaaFZasX zE#D~hpU*#%c!l@-=|>Z<^zs;c|;(t$;xPrLb)Av!BKSVs5q&xmD@m?wYjvuW z9=9HUR8hG6-vqo&^L}brN{_owGMl)wu2P*W(GK*iC;8lz9(Uh(H;{i4@IR8CXnenc zHTKpiSHHBUncrYOO!H8Cm65!5UjDmUYV-bjl5Mvd`61j%v;|lUX|jCJA51QnJNA%Z(T|}n*SbT zemn8mDfxEZdXe~?6nFmcKg4TNd=+nfT~8?csoE4@&0AxM*QfXz-l`?OAjPlctqX}S zO7RW6bq(=;v1Ql5^qb%J3IV<__7pt zaq`ES_f64g;{uXjo&wIFcMxBZ;!gkl#ND1!?JV&!akr=63(q`jlqtV!jY$5R#9eDd z@@2$bYee!tB<`#d$*&^rtQ*PiAikbUp`UMHKip5;wVs|=GyjaZv#wsR=QBs>(9TZG(TG1m69LHTOGvjPVwiu+0EU=?@e)6h8Kz7m*VI1))9JWJX$@F;@x@c zB;pTxd=l}8Jl;V3VUJ%-{1K1uCce+(&k=vr<7(-Wx|W8yjkP11Tbkz8Em@K~x3)&* zPR+|vLzcC)B?=bCn`70B1bIsN~v$cHTyd^DmqrR?jUY(ZFaPi`$4YB4tRll&I zuDZ5v$-I_@&8-WY8mn8+ZLX_~@!UlCNO^9dTC#9{8-f_m#_a7=zp;i^IwtvFK%|@#pb_+ z`L9s_mv2};Z5dWz&Mu_?jE+LX3e6b_BUfx#kx^W1{!5sn#dN?ZC^AP&V&*@ipxB%i zixD)^v6%he$d^!=@{DXO&qx##pi;)-rmQhr?0lmsmTyF2RMc1@os>_y@=XC^g+^nH ziW;LL#S(OBDo?DKv?Z(&NLvwUpfbivNOOtN7SAKe5>u6U%t*$m@bNeujT^~0)gc}u z87fKKT9(QXkJDLkqd#6qXBCp&3(eKz2|Ah}JqdF(KhJVgi#U}zKaX0ch$N}}`P5YT zblrTqZhp+@A4g4=Z^ZNIQu$Pb{J2q>PiD&}v*p_swoOb1%cnx+Q=#(7F!^MXd}`Tz zGEBa`coAKN%u_%n$)}dfFEK^VFEN!XprRE}(F&;13Sy>I1!S0ln2{`?@)S^c3aBIn z1*Xvos2K|i%vB1g76k>S`~}pQ1>|@IWVV8YsdRxY3Hf3Hm9QW|WuRIVP%R3`1q#T_ zg?Yx1IHOefvHJhAzh2gT1fRQw0(_gQb-O^NHr|f zix*nH$W)?`>R(7MT4-xQZBR%hNl+~kRPqG5VuG%opjJsx2@_O?1X(;mWk`@WB*=~l zx_Y9>v_YcSlrus7IYHMgqPiE6m5RucMP#cY(qBZLSCntgDxx|T(Y1=GU5n^iMF~^u zBDz)))u@QBRYcvth^|#kZB|UBEw-_NEMH7rqnNr(F?Gpe^2lPcb1~Vxn1Wj|wS95E zu~;#Ae=&8pV!iCE36-GbkE|5SqY*)Wm@?`QbJ18Hm(pHO?;04RX44;3*ch2n z?@=LQ)PQ=&^jrO5A+?*{GiBEw_B;v{v6wAjjJi;a!+(rS8jI0zr3VtL%vvB$=7`xq zURzhQbbj^RnwplnHX}6ljEMy__~{MaH`kmxeQKPFV&xkaHrDY`Qxq*r4X;17eJwEM zHp=+Z)Z6UZ4`Uj=XF`kqFb38iCJgD1I5m*oAS3C|d}<^EOiA=7IfU8gYm?#3K5Hj? zntj$!4r=z@6<80oy5U?n>MnYp0*Co@bz{BM%?xL~)>d%s%TO z|1$fmhlVh-?~LRcg3C#buaDD!VLsV>1$;g^fZ<#Y@(aE1+L5}T-jBNiQ!F+D+&DCD zntfJGaoFs0%aCiCeJ&u4M|z(|B=gA?rT%U9xuO*7%)TqAD+zUGbAT06u-E(4pUfvK zq~X}?vqB0EW}g*O05$tua|&8|znCpZ9n56HT$fOG9|Om`Y2TCed<5v zlUsyxCbRFnoAps(GMx2M=QsPTkD`Fy*Wt>#vQ7PnuqqvJ+#zla9c>)p_Rzt_5jLQW zC`OO#BsRDZahg;8Bh^7tJtWmdTpzK?r#apA1|2Z?qOM=WQXPl}eG+zMc74RAvUJFm zITb2gf3acB$haP3!yXZ54cAFxuJ^=T_ldcF8%uQ{=io6K-HaX@jA(;hA?6}e%yp}n z>sK+?v219ivs~d_--@};WwUW3le(zuRyHlCL(VL&XT@CCvSFKKTvNK<6?5Gy=K5F6 zb+DN0VKLXmY}_|`Qqj?MvY6{-G1tvvuAjwRM~k_hW(N+V$MvufRC+hVS}#aw@j zxega|J zi@P2dccVz$^*B4zG-Y-pS=7k51_?s{C@^|-hj>Edpvi@P2dcY|Hr^|-hj?&5B|i@P2dcOzch^|-j}adFq< z;;zT#yB?SChQEB*_3~ZUvvXi=!+bXm+694$Wu$lF1gAcqve>C-RHl46pTbky4d9!(7v-;4(OuuuB|TmFdY^mH8l5MxHiI6rl}sNNXTpG@mKeREjccC#@kR zZ>~fq8q1gy_|neL^C>RrOPfpS6WtXl0%>{bMdmYgA+l2$xrmlGYK?x1VYFeQqd9>u z=*Gl+lF%121<)tDf>9=-<*EOhPmZqn6bvVpk#|mOw})6CavikPKg}fWnNvI%zkbMz8*)NNGNeb&L~J znAVpkYfYdJx~g-Il*^K*>N5%GPnz49Pt%0vlUv+nZ26RXY0cE&6X=69yOyI4MZ}(2 zL~S}_Y7x1%xe~iTstZyQr!^XRZ7TCY=R3ntr_~B57U@rtFrT(5ipaQTKV^F=TN#BT zt&pA3j>KBC9f^%XTaqG*k!Ii4xyS`Zy8x(5W}TBh=zMGSB64DV9>r?&$u)M7I-i< zV-oYpnl|RB2U|NtjP=J<@0{$#Rqrn0?b2bV;&)8O1$)N$yEDhofs7LV~WL$q}>) z=Q!kPW}n-KI-%aDbm{-F_b%X8jcfmZB`G;3Bq2!>(qXkEA&ZhEsdkdXYE>((tZKC? zDj^k;Bos*qIVT~foN^AaL&!PDorJdY+5h>Dao?-Yewt%%y}iHddVjz7Kdy_p)@Od^ zcRb^Mp7D&soNJ~>+j<-G=?ykcnnQYag#L*C(lbvNV-w^HsO;Uk=L@Ki<7Yu0&MC}?^^2j^!SwTXB;h)F%w#pbX)u6 zK`rugitkDO$O4MFMtlsqUXDRT0IkG14T8}5dsZ?Gg!S>clth>&TcIp1dN z^p~GyHuW^&9+P?lF&{)5jI#4NgLG3$t&z|mR>0) zPiYf-hWqB}&eh6xg;vQf5LR!8fqdIZ^KB>1_Y<;~$!T|3r5Y7hSy2epSgTBWH(66! z>{iMA9M)*ZhgQi^PruvNv`of9NYwU*L_O&B$!wea;L}-hf*xLJ2Z;3D0R65cJxWa4 zVB;X&`;z%T3G$Jd)Gr}wet4xPCu2MOZhKQJKc`RMN(yaEg4-t#$?JX4C)<#av^!hb zU~iQ?p*2|DE4nWEAta{zWAdQaCx?jS2k*?Jj}zjZnRG$Ow8KCv+YegVVWyQ|Mzu_K z;jj+1GE~+Zn|Mj0YONr3o*r#bB>RDW_aT_{MF^4?f_#5UR-6RcR@+gel@03j9iI^7 zm!2(?$)rO;QtuA!lLx&%*^(rvBHBhzaylIn>>!Z7N2TAb=lm);ee*6Pr@L(OkRx4nJEaIBalD(Y#cd3nicZ%=zqPLFAM^OD0% zl9+UMLE0_tlZT{5!pRS58T0JukY|UPJlkdRDt4K492TTwsC~t7PWmwkN~@Q?{})wuZpu=%vSW%;zNs5&f=GB%P%ehSH=vPsOyB%-hKpSZCQpo@Zk| z&sS&{0eN0R+sX3mpp(A$o2)1qvIXhH+CF(uzF#|qcWtbg$u&)~YV9S-OMObP9WT$W z7xL_=lfLB~w#x4zwM-AP18^7 zk{5;zwgXzlyx^yW$$4mKy2IO6Os_-=k_`##u`Nw{ zOzrVYon)d)fE`=>V$84Z(#yus5Id5j`*EmZvVwy4>0_v!O>yZBt)AgCIq58&-dPI2 zSM+Im)mM=0wxMO}l<;!D{_q0WX>odYF1$QBg$s{15vDiU^t&J7k_Ly7lskJ(7G*4wO7Dz@ z7#k@Sw?kVdUEiS~y>MxtJcM>96M51vK5hD~x|S8!gnnPIrQg>}_iVi?IVntj@bV;k zkb*0Kot`A~bm-6YfZHvcgryzg2Vg(MCkM;mr3cM!;XF6>{8Y+M(){!|8(}%1}ZOXU|w=MBcK8&z;@nbC?&wM(%GY1IJO2;udq!@eh*Etp`5;v z6@ItV?)2Rv{jN2H$D}Rt(?fdN#o>25iB8{&((mamUGe@?UUJJeY@!+%HqqLdbXn3) zwI{SI9n{^zv~Ry#j?Jd&TZ$py4y@@Lf%;v35~Lr(deq*q9vgXnvXs0`t4VlRjoJ}L zYH|(~W+*=wvXkQUjnoitx9HLXW%%80{x!Grfr@uS^OE}-VfE?M;;T!J4Pmv(sj(hy z>wI-~+F(apyHk-KbF^~xVX|!+&mlaWMtqynqj)%sS=T0eNmxn6IfY87qnqswN!!&3 zwNZ~&qvV_>coi3?;puRSoX%<1|H+gXZp);-V*5ohErq*^f@-GS6;C#*L;K`G%~7d! zGM_$ZrQtV&+QRT#y8k58OcIn-u^_2Z2uil2dk??zO|R6$?4lN?pG_$lGGJ(OQ4uEX zH1pOR<*Fhbb50?%q>>>^qqw8yWMw4&nfl1a>UaHSG@g|mmEGj6r}eT+b0i6 zn{8zKc=X<}PEcDD%{$AQTXEu)uEy48!_ZG#(_-0)gzdSuBim*qyH7X;tXR8ttI){g zp}h}3D~PfobPoi)4M$+yd$e4B;x zZ8+rHdh>1m%eQ?xKPgOjy&dlIlU~;E>AsO~x6kwKc6lp1BWY#l{H^R%xRu>ZXl28+ zm90Phlx>)3?F_Y*%^t06-bg>M8=g=4H#{bTD?BE9N_e#6V4mGUOg{-6<{N8Ap7mp% z-3QFGe$2D_rei`E-WpNiF&Tz>Oy`&M6V%~%yHAszHH6*C4l(HoZTQ{#Fa3C6_}%)W zrOhPidn|!l-O_ic!|!$-o4(5)rYS$8xBg1s`w!gDNNt>@pKQ>ymX1Gv`zrk$N#J&H zOFv2z4%ybe^dm9hcdJMGff)U6IW}(7JAr{GbCn*``ZTxorypSo+_o=0PYJ&#XH|Mk zeH(suUTV{!jd?p`vx&^^?bvi?n`>)L=f$v9winqTOy-wBZRSfyq#cry-n2oPzLgz{ zZ98N70sZiMvhx!9x|e+e01TdCH=G2e;GBvB zVR>8Eb{cm`s;r#{{_a9kWTpkL$ z-jhjz61i~5(DG1owf#SAx91PfB^LGXUzms13vM-CroFB)E{sJ!36!oo1Fib~UJ^cz_o z_H17{n`~vb)#WHj*t3Rf`tY7944Ymawl9>tU-{^=5kpTcFDe^2y0EZ3>_S5ar|T;j zGNSlYbw$qkJZwi1x;n>7Rj7Yg$p2L6lHrA?hfeNasQo@yz0`kM&uQh!e398l{YRFS zmh=nTkSn_4$-)6)jA%E@W%Vl^8g|W+vVP&XIU-aKzYi!GFw{Wd8RaD-ipx`vT=QMv zrwWy?{>)D*?>C?rdiu)yfmeWxS`VAdCIQ+?NIQ(U8 z!+$o0k0=V2>zgsBYAyfXNOu47qJG8w3v~$1)ewb@`1eZ5@Zlqi3yVjEV@QrYXWg?| zJKwH zotgx5naY8gqXIHUmgL+7ttR6sy{dS?fZ~25O2X`$A?fx1QBqPkr^(fLy*}fqe_elu z^snpBkdzdiVU-UZS(dqH{8hJjuqLX%YO56^2Nw-LEvpWhPwJI=Vc1L3)7H$E|7WYb zsAPDt#pG&8Qmf=I>Hpnni^^_i(EsM-Mp?=FyxoOGVK5CHlC$~!h7LKsxIE{+U{7W2 zzFJFhm^{k+#peQpi^8!a`)NNrEldVcc0%^k6$x5NzoN3Dz9pq4BTD{dUan|F#`6^! zT1|$NWc-`wD>A|vUzp0uipvLwSud(|67uhaiWHp+XyzHgGwtN%IiIO`ovKh;GWcJn z;fl?VpQw11wkv+JVuRx+*1akjqg`?h;dEej&-GMt5)*&nM9z?$X3ot1#RG~)mj0W4 zdvMXH|8Vvs<3F7R%NbG>PVP&KhnzZMV6Lr`5{^gz!SE7hp34=Nmk%v3EDIBMviSGm z>3d8*t6uT7AeEZgk9EW2x^EW@-wO)9`8vJg-xb?A^8Nc-#OZgl*J{20z-#iYvb+m_QdUMV}9JuLy$8P?d)JYu1_cAus%NCG(Y@=c8)M#^VrYe z{ta^4u3x~%nXjB*!Ou4?pL{a-Z}6vq)1MChJAD7@%UM3T>UZ&;hSI+6^-|vjaIX@YXbNqW2;~f9@%;KCaG;xL{&hdZO zInMEapDfO)pOMqpc%0+=wfgZ-)W`S7IRA*GmFu^2s&VD;gy1sc%HjTgh4Hu_XBk&J zxqsbYTshp2ZZ@tQ^4pE8J(Y2S;^RlW3izw$Yd_iqe7SM?Rlz?3r@tC}Q}}Da>HD~f zx7Wvs)>{oZK2Bop<0R((@2bZ2@$sYW-3<8+ZJfk>62=ebXa9amt+zUIuE02CzsxeO z`K<>0+3-0|=47mQiSc-RE=3Oa>*dJde*JDn&dQ9ORT(*JGjhJm$oVZJ$G_h<-Y);1 z;CO!6rb;MeSmOQK|2@k%r=Iz7PQ#2G|MxHBoMst0tuu1`c&!|c2cL4{@mVX`s_^d* zgvZS>PI!DLZ<68b^;+WnD=)>#c?HK?YvXDUxzC4j4(CH|S4Ydy`fH;7JnnA+-qn2N zkH&GQm+`nh1HswOGURYS9c4W3$Fa!a{xT6c++U_-t#QZ_p$YAe%l&;f8%QBHsFJdtDW0|4>7Lsa3;pXB;(3qzSm#= zSom|zkNG^~@wi%OTVys>*?2Ds^@m7XMOY4kL1ma$G%@rsXaU|@^K!o z*RNBQQyc3&0{P^vIPvpvwSQ;i+-iQ@@AHhu{qFNmJbrxsiE|cbz%F3tl!KI8uN`x{#CE?93{px8j)z*7ue$Ayx^Z42_jxJyy?^8J;PZbx9tyDD23T+B4BpGQ_Uk?1p8~%jcz^Ic z!M%UgPM*(urLZPcryd#?^lMzhwA+y&t#7ulM8j`28Q{?}PTVu=66db6@awIA7xVTdxdWp25c% zkN4||#??;l*He(g{d#&v&diLQTQhPNWaKQ&$ayj&=Y@=%mosww-vLm6al78n$oVKE zXSMM-=bMb2A2M?MA2f?|>V@`cQGf9~s=i=Y+_Bo zyt8qwm&Y|f?!@c$c}eSSiuLwIK6$xuwReB`emqi6Gw`$FlTQS14&Tq0l+yy-&wI6A z`hMKe_HsU)Yx(i^E-;Ili-2RSOZ$5H58`pLn0Nx{mmtnn}KSvpl z=fkna)gI1=K2NIsoHu-)jB}=C)qRrN))d{bdaJ1=xRmUX@So^Q6v855ju=Iy4?v zw_AR^-`#`ta=%+-JkEJ6Bj?$SoT|v-ecCOMLtYy``@IhG*)R2xL*K6#G#(B{eSAEq zZij&Tb%e&rq2L@R?ZEvwu72U?2YQF!wTScc27MEno^P~8&H&@;7xIbV+^)68)y~6^ z^BZ^p_~tfm$S3#Xj@rq3?tuA+>#d8N!;#-0gEz_GSAZXZoUN*)8=&@Zzo=_m{nZ}+ zuJF&t{?f#_>dA4{6h8AiW#o4@9*_U7$mj9vB;<2H>YtG_Fe9fdBWF}b&e)8ci5WTE zAKAav)AA?pzmsd+XwiPu0rgj1wCH(qKTnSRCW)Qy7aVUbjK}k;?~lqk66@vuNM3+^ z_HR$)aX2rqqp)5-4l1AAuT!+2c7o6Al%v5If#-oGt1uI*)hnen*&eqEz>9)tX` z=Er=B@p%53Zaf}8GmXdnJ_k7*KeuM&%*)7Gn33~HM$Y1loFy4K8#)eaS&r(~1@)|F zT>V1s`+MyBaXB7`Z7e75M?W7^{;^oE@9)a*3f|FjV&2(!+`qoR%Rde|1Cc}S`?bb- zH~6E>kH?9Rw|JaPG+*uEIGK`>GtGFMe#l2oZ>+a%2Jd2A{cHHQ^5T^L7e$MPU3zaZ~1Y5 zoo_tuuc^l4{<u7CnDY#!p$K!lg%ZbN%BjfS@-qd)U6?)=C?jV`M$YLOIcI0&jL*oKoRL!vDIwf~-uob!!qz0;91)p)$#%izy|KRd&}0sa;6{kW#~oPqY-W4`J+ z3fzxt@&2{Q{CK~3(s;a|zF=HALy-S6_)zdyjVqu28{qWcHm>zviS7N!xav6?`JWh% zw`-O0c)QjbkGJcmjGW&xa;j$RUt47Cr~Wy{xIJ|;a%{Dg^z;~Pub&Typ9x;wULZae z-1qC4YkX)CKMTI+tDd}X=J{$rd9Cof7LCKRky9_B>3K4_pXbDWQ}fj?JifOv9*{1L|E@j1$PJRZgwkH_bvjGQSM zIny(8e4dHhGbbbG){LAD9Va_jj{0Q+>Qmpi#v^%)4DRD09w*+v%9)7#&XyC8pRUH$ zp7Y@M&fq5*kH^V)#GIIPl9{1N|%ZclJ z8S>d*vy8_%*JkAS^@!TZoDJc?s5mxh+FaZa9RJobIQ zQh)J$!_O7KxC)%}A^8aN=hdiZJ>%*Z@+KL6*74oPZQPG-kTVb z$5P{QPFY6IsEnKqt-tE4MfJZ1bx=FB=y~$S30>d!eo=jR+-YHcTz~Hut@m22w=MF? z{WulZzo+?e-Fjoa{QQp}zm&uJ56Z~#>*BZ{Pd7i#*_irYhdQwS^v$8{Ts9M<3GnK;Lfn{m$AjGPUvKj)ttQ3tg{i=HRv_$T*% zQGGUa{+WyQa{QBLjej5Kaov2LiR*@1M zTu-laTu-laoHO3q6X#4e9_L(UJkGfyBj?(ToDJ1x;eJ~yA=;+zc~|2)3TM;&&x^{W2l8kbu1NWL-0m%FfD9$(0N zCu{wGul^kW3s47*11)-)FUS8v)IsggqUXsu{>i;xv|SrI|KEr8a{QAQs4-!Q>)$iQ z>y7{3#^bvA@glDOpo|Z=YY@Zm9$JH9+ z@woafBj=}#oa6&O;kh`+zi%yWkAHqCZjXO1G|utwTZ?n*>w`sMiE|nok8|oLcG~Zc zp`Oi*%je&pwl=Qya(w!{5s%w;=4)I%j{MFUyti?U2l{?Kshq{g@p(Y}3GgwNqxN$? z^z+8Jos-SidY?qjOykOb3VcomzZLvx_zR84`S-);dY2ei`?w+{CV*I z|8vM`2WEW^c|*?+)gM~azb~N9+W)oad2&C_#{R~fpS+0m`aGk2^8Z`TPd2pvJU?HG zI@D9~!=n0=d!1Du@{Kt^e+lbt7jm^IpS){A*FQh(WnANh$KR8T$H%Gu$l-Z)X+}<2 zM$V{=oDHqN>Z?WD`!edl@lVe2PwxE^ACLULK|G)5Cu>dD`**CDKS0j=11sS#u^eqL z{Z}*i+u$D}$L|BgIjhZ&>+_9qU5|f+oFBkH2LA>86Y$@RYaZowf!{ZauM7OXncBna z0>A$d=lK1HILGgs#W@Y_enOn%_s!y*W*PU>T4&_=eT+Egh>V=h897~z$2q++ayImO zX9w#S?O&gwzZw|VI3aJA;pZDyoq7Mwk5g(t?;mzDU-_S5y&lq-M$Rhu zrQpmtJ%jr^p!R%@9G?fonKRXL;{9coakXIS`_>UP^{+HlS zXK(vE|5J>|_4oV#an7KOobrsE4V@2J|8G$T z)}Ng9C*PR*e~0z5{^UNd#`X6)$93zSQMbMsb@MvMIYTmXd|r+FaYO50%knkezDFJE z8CU<1d!1vysrhOT$G?yBc>K39UpYTuz3no1SL1R0{WulZ?IiQ#d80paIFFSYk8{d0 za{f=;|NIekP&>4!{^T70*oCu*S}Aavi|$F z1C7Ty-Y;>^h>V<#8UH_{4jljFUT2M4@{Jk)zhJ%XY`c_C?(;)jf1iiry7~MN*Uitn zl*93VzO6UTnQT1Hxy*Q+voZDm6?I_!$ytB$jj8`{SZ_PqF4dpBvvKW@zr*+WT>c;6 zUbncvyl!!wudw{M&es}`>wL5EIOq0^oO?2I7G>o4d2igFXESm(rr-ZW-PrHs?052w z>Gw*T+s1^4cJ`zCk(~WbevEN4! z`~DuUcb56_dT%fuulIK2anAgVocl9!Hgx~p!E)3u)v#UljjR6T&5Xx>);MWnemqVN zLC$7aFUJXaSMzn$9?bbXr4+ZZ5-VVGk_+jAw?_{a{1>onvKOB52_z~dO zfVT&~8@vPfV(=rumxFf%{}}uz@NdC8f&T`6GfuQ z58f5L3;1#1#o*n*hkjj;Jv{=20sz} z8}O6BE87L3#^K4}+kl?}z8iQUcvJ8`;0J>jfgc0j7kmJCKk#AT{lU)wF9tsgd;s_a z@KeDr1Rn@~33v(k4DdnVSA(Ahem!_8_$}ar!S4hg0)8*}Q1FMq%fKH89|rymcscls z;KRXR0UrVWCiqD3_rOmF{}}uX@Xx_VfqxA?8vJ|kG2p*~p9x-h(`5Qdju&IWHv>Nl zd`s}N!M6iH2Yfg1ao~C2=YqEb9}j*c_yq7S;1j{SgP#Xp0)9UD5bz7YCxTA`zYP3B z@HyaMc|i% z4*{PJekS+~@JZlTfX@KG68r}6nc#PUUj_ac_$=_Mo2?uFSA*9EpAB9g{2K86z^?^w z1AZO&k>GQ{dw^dLUIcyv_z>_L!N-En1-}6NCh+OtH-p~{ehc_Q@LR#(1iuaZ2k_g$ zYuN>@#^)X24Z!DtHv_*D{9y3;;GMwl0zV#n0eFA#yTONn-vfR&_`Tp4fiDD~34R~= zP2l%~-vj;t_~YOYf-ePs2>dPZMc|)-KMei@_#@zdfME>@K?b11%DO%VDQ(#j{{#0elqy$;C`;C z_Phb^=R)Fdg8Q*vdnk2VVvL zBlzdwn{JVmGpXll@a@6B0KXc14fxIAUxLpA{|fvb@UOui0$&UMH26QkUjY9Gd>Qz+ z;BSI|2mU4a_u!k@4PTA7AHb`F{|LS-_)p+_fd35M8vGaV4&c9ncL)Csyf66g;AepU z0e&9%pWv5)SF$mq5poN7W$*>yRlpww-vs=F9hEU{0i{K z;5UNr4ZZ-p3HYPner(lv^Y`G?&VAwgdm`fdfq#M=UI+aE&g-BWdLuV1%4v$6eZlt! zKLNZMcrkc$@X_EMQUCM7j{?6OyajURfFBM2PVjc%i@;kV=Q;2^@Ylgxfqw+fdVUAa zdTzFDQqH8F`N(MkegOFK;H|;?gZnv^l81q}fqypmLEsmGw*|inoa?r=elXg(iM;`=@kxIh@C(uJyMj*!-w&KQZNNLj{~I{{zThXpF9SaW z?LQm*Q1Dsc%zpyB9sHNUISxMr=Q#WY{4nI~q7P7nMfEHI?*z{F^anp2emVFN;N!sC zgI@yP0elwtk>GQ{JA&T~eiZm!;GMu1g8Maywtum4y{$FO=0@@7;de&P>+t>9A^&~& z$H4yzybE}v+Im%5|6{?M8CQF{g10u_F!1AY@WzpUB=Wn#?*`r-{CMyl;C;dW27W4d zPw;Z^{N&idavz|YJ zpMsp(&%}2yzYv9}0d9co}#%<7($H@N)2S@Co3o!*$3X4*w?j zBf#%8t~!j&!Bq$Pk076Qcn==Ymf$ zuI(D1gKN9!UyXcj*UjJ)kaIuyMDT}=t6$CoUk-jg_^069-XD>F0sPAL0aoQt0%9oP75EhJ4&dCbUdX=~eqZ=g!3P=Fc3qN#YrE)= zMn1P|BKS1qT!{5v3O);*?VpF7%i!M+|8nrhjH~_Ab8xkv{!7Sb``-nhft=5<-YdYr z!g{aF!L?rczayXPt-ezb!=iCA6FED9Uj@D^IM276fX{-zKRD0B4+6g$emiiUpLYhI z4gWasYry-1Ukg46{5tRv#H-O&=&T+L6{6_fCfYX1|xcX%-{P*DB z1pcXUjl-LBaE%B0-yxsl;ZN{ekh8UYa9QoS6}&b$$HQ*mx4~~{Ty?%3ygB$C;D>F%YEQm=noyjB7Q&kPT&uKHw9p9lUp_(R}}!CwYv9X;s=cnK|h5s~ozH!z0nH*eorr#d#d!ot!QVvA72t>BzUcMfE8yR3T=jel{9f?4!54$S1O7TV>+>1-yYPPmr(eVVAWHRo z5B_$>)z0_9cQ&qievpH!p7fg_pY?17z7jcYz*)}@;2*+2+PK>J5qK}~kHL$-T$J{RAieukhQ0Gyizw>i6H^7s3A>yu`Tr{f``6{Z4pbt@I9fHTd6xZw6j{ zcfD%;{@Mw=I{c>K?5{(?YryXTPQMs@bNFMx>0bn16aH*)`tyxf4%@Z`{Dtth1b@W1 z#?MwcxW*6t7m?5L^9K0V$ax2R8}QG-w*~*gxW+>*@Sni91K+ek5W^zBHh5id)@L7Z z|E!%}-xi#H7vq(Kvjg&b!QTw{O`BZy&9J$KK+RZsfcn6G@+ zb7$}d$k_*c5AbHjt7zTe2ZQek-U+-Bcp*6JPzJsi{ByzSUv6C6)foOY@b?D4$++s) zBnMaB=r2S*>-ISKKFC=HzAyOe##Oidz&`?S3jQ_t{@_*B@USR{b=V%f8T>}z^jjNO z-I~Kc1bz$f4#xG+G6z@P=>HA*tXm)OJmeIEw*oH%&j%lATy;1Ad^~t-@JqlC1fL7e z`rHTJ2L7|)^j8>HJr9Ea5&X8`tBvd7;2d1_r2jMWS}^q(}Y zy7h#=6#ntx%Z;mUy>f8XjsC~TXWhO6KLI(vgZBpCYOfF+7Pa$4@a@1)0yC!t zC&S;{xccQ3@FT$s!Fz!B0WShC0v`h27kmOZ`(-+KKlrzS(_aMMAO7FL>8}JYhW}4+ z`c>7jVNv}Dz~2g-pEKMAoS!pn0e&iS{suk}d{N!H0rB4bJho47?2f>&CTR!@xfRF9-hxd^q@KdxwCqC}#wC zJ#hB>e&p~A$g3xj$^W{8pALT@IP*t?p8vu!lE43XIJoZ;qMPl|1jgK z=Xm%>!=C`&-MH#GF$Y&Y>7R!D^Wc|(bNrtPem?wh;H>i$@C)EyYFzc11b!{}h2VF9 zPX=EM&bqwrT{}1>VgIC)ph+$Ekr{>_QGyUz&S3bvWeeg?=(+qqX z_+j9ef_E^kdR_+J9sF|eKH$^AM}o6H=Y!9He^WKv=}D0pA+@TJVP8tWPWO>)>|)r{CAO z>Ny8~Dg5ifM;KQE01o+MHUj@Gf{7vKPuUo-C0ly9WpWwHHSKBWwh;rC3JA&Tk2G*Y@5GJ`wyL@Jqq(1-}`bb$9@LA^aua z^xrnFy4?qVCH(urR~c8`9>~E}H~K#!pLMI!G>Bo*dLKm2X5bvpwZI>OzoT*0a}jt$ z@Q1;hgFgb^0i5+Y9{f@G1HtK!F|O@;4E{LykAqJ#u6i!c!BtQCS0bPFyaD_PZ$3ox$nv3%&&Y!Qk|d zHLiYn9{vgNUjQ#Mu6}tj2Uow)FGD{2e^{kHIT74`Nv4e*(TeIP230{8RV` zfYU$9xa#>C{O<7o0e+%!)pJ!2u6oiRg#2zezZwbtIdaB;v!3UJuZDk-an+>S`SMc8jr~j34)$?ok-@#uC{+n^t^Pf4m>Pf$5ivYr+eAaUZ@NbaQ z2>e^{eT=Ja-+{LV{~o+O_z&Q{!C8mXz<-247M%W6+=l#I_yL6OL08YOc`D;aMhFkOysj4Zv^-6 z0tzp!bSu_d1NjTE-pzAxt(X3D$gc^1De|`fe;a&D@PB}B1^ylQ*5Ebrv=!<6&pOuy z-v<8v;Pl&pZwvo8aQgj>s~>B@FM+=u_%P$@$J#l#>Pdeb^4X6Ufp3qTS>QW>UuRt7 ze@F0n;B~+s0^bSzS@62xuYvCjz6zXm`x(3*{HZF7Wff>9+^>@3vBI zPjLDJjjJDbL;eu>^}$a!u72D-2UkDRKM(or$7$dVkaHcle+O5HtTY##-^+0qcthkY z1n2j4JPy7m{HMVifiDB!3;cEC>aWJ&UxM!q{tI{$@U8Q;b?f(geeiwYHwR}wb~LVj z+!uZ~`1^tPHm-hbnuDt!>6aj%{Wt=Af8{92ZZ3TC_f*5ZE*T~8CQQD0KYkW|E@XZ9%x+sbs&7_ z>M!~ok4&DYieZda`A8B0M)fRj__`%?pfFA-r7o2st5ByO0FM!j32fQ8pHQ@CB zFs?cu2ER`00Ky_(0G@AL+j}_p(csKK3H%87gTd*KGp_Zvhkri&4&YObtKW~z!PW2d zuR%Wh{Z{af$hi~zDDVftJApq6el++J@Xp|Gfgc0D8oUem*Wky3{|Md{{5SC9z_&gy z6ecXHb2soh#?`;w!Ry2C0p1M!Z{P=l_XIx_`NxBI1?PC^3*HO<81NIoF97ciJ{|l- z@aw@(0>2-e?RgITWccrb)Bh6u6!=xzsQT+4*R}&Mgx?sP`3Hjcf!_(7{z=Bw??v!O zg7dz?1n|D_FGhYp@EOLnKlabTwLj9Ii+t{ncYzlpXCe3i@WtS#f2Zs`sX8`{WT4|962+KNo%Og-w@;TnF1wRit^T5vse;E7% z@WsYe&q?4ffnNyzHuz-lufbWLN(YDFuqgi`_}hciZv;LC{sG|hk20?MUkv|P_*21; zH?I0$l7p-M^amiH^)CaThMbY$mx7-Iei`^g@XNt32A>W-%ed+}1N<)VE5IKCzY_d; z@R{K6gR{LH;aVNrYNZx22Tej{-D1;*8nSHtfNe>QjzIQ`FztDbY=uYrFP z_;|X0p1OK9{5S%cY>b^ zJ|BD>_+8*vfiD2R3H)yG+rjSvzaRWw@W+j7{44~24*q@MZ-U+^A$LA zeguCIIaS()28KoLdunhhs;IDu$0Dl$yW$@R)-vM6^z80MQTe(2hPxqtO;qL%We=qPi;I{>*e+>AW z@J|7!Uk1Jc{#oE}flmg18~jS}cfjX?bG?s(zYG6WaQYvEzX$(2aQf8_PwQMcJiHIT zrtvC)e*nInaqUMdb8ziP^cx_b`_aDOA0nqYILGHf;2*(n2mUd5XYfzJj|2Y{{ABRY z!25##1AGYhD)8appM#$Rz8ZWY_!r<;g0BIeZCw5GCHNxnufX2{{~G*f@U`Gu9T9@V zqI`~%-N63|KM$OKd+=}I_XMXu5d2&CBf-A|9}oUL_$A;!fX@d15&Uj&w&zLkpWwd< zPJb2n&+vZ+r@u}6q|C|jfCx!@z&b!L{GfZ-#uHf3^Yt9XW@B{{h|! z{7>*>!7FW*Zj1h31YQ|@fN^bC74S2_S)WPZo4}s|UKRWX@J+!V0B8Pl;ML%-0H^=C zam|zdZ|G=yzky#JIlmZJf7Qsr)nD{$bWqy*=NsFBZ;qTg;G8ELfY*e-7dY>CwE*7& z{sG`yg10rUe%uQD2;RAVTTjQ$dPC2;hNxwewd7NzmUKct0 zgCB_V+cw}k!#@0 z!b>Y%3(o$U58ePdkAu@+W?b{b9`N6S-w^ym6cLQhtHUZxo{{GKLu|E z{tb9O_-03G>()OH+!6c$`1^u$zi12I8vZfh^b3t^d>#nDKm0b}rN*@%`M*7ejRZ7dmC5%4~O3Z{t@79jH~|bb8yw4{!z&1zZcdWyaRH2f%CkyANY~*2ZH;* zIT)HyX%zTT!S86lpAFs#In%(82A^SE`)OzJ`QXQZzY5+3`~&b~!PkIy1+RLvwj%Av z&g8UQUzXRSId?oma;9r2B1ilvhWbp67PXVvgIW#aV+TKF&O~Lzs z?+9K5UeCD3r~ez8%H12hAN+jq{@_Q0vtLdGFNR+RPJbNu0QfV&>E8r?D*Q#@^j`oU z2>%^$`fI>T;8#9IRZ90Sj@z2xgW%T(r{4tpH24RBvpvTcSHG9S?+Je}_$kIU&WGgS z8t3!}BcJDuXMp>^sTy8d>3r}qFa_~9e!@=(W9|67qd?fgj;HQH>XI$g_ z4DffsS?4w2qu^KWqOD&4JZD?*(eN99GruMH82DYm&jc?9=lB^4J{JB&aQaih&w_s) zINN!*agDdL;Xerf9Pq`)HQvVM;2LlAUo>C&=fYoRT>Uj3e1&o4PsqWQPyZjtnFznq zu|W)r^3MZr2!1|zD{$8H2=EKwcQ&qePRha6PWpxBs}2{!9|%4fd>Gby5%_5MQ@|&K zUkrW;a;AdM0q1yl0Q?g8j~mzaPRqfyz4Tu-U)y^r{CB`F1OE!^y&U`p_|w5FcMZW| zQT`0@&B5vK2z~|pdd4+Qt_05mp9y{#_*LLtz-NK?181E_fL{&&T=3c8mw_{9F8DR@ z?*_jX{4wzBz+VKP1OB#g)%kkx_cQos;5Wcuox#5bzY+eo8T?o9x$ytY;F}#68Xgw4 z|0eh~Gx&DkH^bjCgYO1@3;aDY_&(sb!rwoG9{_$E{DU(1;o!H!KQe^D_8S@HgPE0)G>{MzwYAB<~Eq0{)5MZ-I}=;J1Ol4gWdtcfj8Oe;54w z4Bl|Fb?tu-egXLV;KzY~0A7~CuLEBR|55M{!Iy%61pY+^uUmax`#*-?8vGORBf&of zAD6-J0PnL!x-R|yS@6%0vj+Sh;QQ2A*G}?-!B@dQ5&U!T(cr7WCxL$feoF>_1AGnq z)!<)(*Vuer`@aI;ErYiN{~CU`41R6~e*kx&7+v_V`EbM2jp}D{}J5Buzd2N@PC3oHG}(i zzA5Kt`2O8Z;=h3Vci@Qs3ckIaV8y%@_;2ugWN`mm9_9QF-#=q7{s*{!Hc$Ld@U84; z@k(3kf9X;HUKzY7gZs6oa;m`hV?@krnG^HQ8T=gZO^|;*cvbLMGWZtTq}!+UZVJCC zcs1~2GWdDmo55d_!E0{2ZoTw-gI7n+RPY+$PlBJ|C+i{l8}QBHZ&qvFdTWC3oxzU* z-vWMV2A>ALCH$|z%fSBx-wJ%!?bfxE{BIfjD)6n5b7uyB5_}u@pMY-*zDezM?IAxL z+{duY6Tr7a&ZrE27kF*>FM)3l{x0|q;I+43*UlZmkI3MC!1?zPXJqgTGWeC?b+F#K z8GK;|ep z4}5pn zcY!wpe+0Za`19Z`z*m8{1mCLOx^|Mc0?&hA1l|gK3V1&F-QWj+uK;fi{uB6t;Jfa! zuASr^!N*{{jR0?hoLj&T0$&2&7JN+xue0mA_8bgztVZ*&|LcU)8;2R=O9O(mWJWKaXGl2r{7F+SacpW7=G)7 zra41$aOKc%XTEZdhu_h-+S4lsR}THI<}0TS{9eYDb5IVh9Qu9CS58Ct1C1+Z&m3Gi z^vldwP96B8j4NlS99%i{$ChLESS5A!_TsiconXerFUB*n~%HiK}I9Cq+Ip!;e ze^+&@apmyuu$(K0{sQxr!@qNU(71B=cahGOLw~XP%DD;W!%K`S=jI$-IrNvAubd-L z&lSd%(>@1R4*iwpD`z&=yUMt7`1kM5l|z56`O2A!oS%#<=aL*;IrNi>BrxSnfM4D2 zGb?9e4z3*f+u*)*8T>lP8J2@9hkkwJ^n>3RIsJ2R<#$gkvX_>=yyd9KZno@IsDv$bLG(QgPhh_??B`nn1d^aei?H1gFgy6O>=PN&>x4K z`tTakyASdR}TF-$f*YZR^)7!gDZ#r0_5;}gC9f=zh~IFa_BEc z4!^f~33B*7&(4)Ye;IQ4ecCIK!|&gAt{nO+k;CsfUxgfgFS>K(&|ixje*gSW$l>?Z zJ68_Mfa(Ha(fq@IU%dqH$x8pos`zdnU5Uj%Awy5IsA8XIwI!=1C99%i{*CJT!K=mHFEyQ!IeY59df>g-w`=$b8zL*?~0s%!1wq4 zRp(VXxN_+CLC*W|2ckV6;HHgDZ!AedL@8zcF&g=HSYq-wZh;;I~H3$Q)cb^xGk)6n;nK49>xo zL%%C>`oZsooc=kua_IL#&PnhGBIo2BTsid1kkb|ZDC8WMgDZ!=U&?6ww8Q98AANv8E=U0{RxniC#Z4S=!p9aa%EB*T^|IDh8 zpa1A^cy4u*!b21LQG7gjQ}7AkEx;#&=YyXI-Uj@9@I$~a051Ta1l}3^Lh$3jCxiR> zo3`sB@Dt%r0q+BTF?ccfRPaIImw*oip9Vex{8I4I;Fp1)4SqTJ1n}wLlfY+yUkrW) zxSyA*K39TY34bQ|Z1AhVuLqw6elz&h;CFz}2KV7n!fabBX<|hZpQ;jrY^+ zXFWLAc&GoWIr9A+UdXw8=De*Z!yBXh=kl5JkvZ~**w1=!E}uE8&5>VbKkLD{ zeCB*_j{ITvvmTtwXO5r$%P*H`i*xzR*;IuOi~QlqPwD@h%V*A3@O^CS70%@|X9xIa zNVLVdeCF&5f0WDN(Ybu)G=lH@lwRgsK69GFA0yEg=kl484}Yx7;nBH#=Cpx-EylBR z`OG=O{3?Nu3;+4j13A9$>pADj87E-NN$@8+43Ey`Gp7&y>(EZ;@|iOT?Yt2AqmXk^ z4z3*fi8e4!(2w%xRDOIq;p!XHGZx z*TZ)%e-3zW_&4O>@|iOL{*CaR%V*9o_;cYqm(QHD;ok(`xqRmM{gVcP-wfZmeCAw+ z{9E8Vm(QG8@Nb3hTt0JdfPWi&=kl2|AO0Qioy%v=BKY&*JD1O#XW`!o-?@C|yb6Cl zeCP6+&K66^ae-yrR z`OG;8{$uc+%V&F}R}?_54}u7|$_zH|A^xfA~L@SV$N z&VBIxT2e1_E}uD1z<*JqEzadLXDR%pE{8|w@|p8G{FmT6m(QFJ;lB*uxqRk)4*&1) zoy%v=_wbj&cP^hfzr%k8zH|A^sZlkRv_HNI-?@C|Y!Cl6_|D}sXBYU(;X9Yl9KY|X z_Ph??xqRmAhx|9-JD1O#R`B11?_54}4uk&|eCP6+a}4~q;X9YloD<-`1K+uP<`lz! z7rt}(%ozs%J^0S$Gv_S$@56U4pE>8kzaGbZ=kl3zk@-~u{}}nRk@IN|t{nPv;eQ6- zxqRl#gTD&CbNS490RHFjoy%vA-^bRt^?OQsnREHfS%&;CB--L!K6BoHzsBY8=v+Q? z-iQAseCP6+vl{+a@SV$N&iC-YhVNWHbN+)&{|UZx`OIkz|7ZBl}IhW6z4(4mW`vdvM zBd1d3bx$}~4*f#-mEk*=&zw`?Zvx-BeCCwHuL|F}eCC`3-|wBO3C`s+=OXykkndbR zb1sL!8GPsRnR6}t>hPV*XU;9~YruCdpE-BI-yFVk`OJ9$zJC@aD3zScXU^mBw?Mvg z`OJ9^{+95a%V*Bt;co@sxqRll34d$&&gC=b1Nhs(cP^hftKn}8-?@C|d<(x8eCP6+ z^DF%A;5(PkoK30)5EjjQwc$IL&zzd@w}vZ|pE-NL zuLIw?eCF&8e<%3Pp*_y!Gp87SefZAhGiNaT-Qhcz&z#Zl_kizQK6B24-w?iY`OLW# z{+{ri%V*9E_&4G>=v+Q?t}|c9!6wLGfSi4EaOKc{5dMDfoy%v=V)*;RcP^hfFT!sI z-?@C|tbpGfzH|A^`2>Co_|D}sXAS(8@SV$N&QI|3;5(PkoT{4z5EjjQt>8PC&zx=G z`+I_Vy>t1@sRQ3XV=3RceCGJ~u&F%N|@jgydHfSglu zaOKeN1iuizbNS5a2EPctbNS3U8Gc{*&gC;_5d41doy%v=>G1o*cP^hfXTvXs?_54} zCc_^9-?@C|_-EBLu1ZUk^0zmxejlBKD~J9r@W;S+E}uDj!XFFYxqRj{gMSu$ z=kl53-@mH%pAFx+eC8a5{BiJ|%V*AU@Xv+sTt0J7hCd#@bNS3EhCczmbNS2}27e-a z=kl3z7X0(zJD1O#^WdKk-?@C|Tnv8_eCP6+a~1px;X9Yloa^CFhVNWHbMAzH5q#(J zne!0*De#@kXU;S5FNW`2K674yKNY@n`OJ9_{xtZ`Ki}uIq@SV$Nj(;z){2B0_%V*B^$iD)sk2D_eM;hoE~=VJ7~2Jc*+J^mXy^)G;TF3+CZ(f>NU zb9weW2>%AWb9wgoZv(ZSH{qSjv*!i$zXk7Ho;~y7--dTC&z^VS-+^~7&mRBnq}Kl~ zymNW>e1-mn@XqDg^8@^Q@XqDg^9TI<@XqDg^RId#2%Fab0lag0_G|{f2;R9od$xxE z5Z<{wds@IRhIcN{o|f<*!8?~{&pz-=;GN5}rvv=Q@XqDgXV1Op{|4TkFo;@$Xe+Tbeo;~y7 zSHL@$XV3faKf*hgXV2&GKfybfXU`AtKf^nhXU}T*U*Mg~v!~7mAqbmp-&OF=<=NxM z-jx3p-nl$`{8$k3zrj0~XV1=9&+qWg<=N8;ehR+NbS}@HeWI@w@;}jk1bWue2jk{k zJ@kHT79CeDc<1u$ISKu>;hoE~$B*fu{&nD;%d_WH^sfu=T%J9{;Maq9F3+B`;OoFU zmuJtv;r*O+fvkC~V0rdj1ngSo2Jp`1*>eZ{hVahi+4B(m zM)1z%+4CfPeR${c?0Fu(0lag0_Ph?iF}!nm_IwDx3A}T8_IwH75Z<{wd%lO?6yCW! zd;SaG2;R9od)C=71Yv6yUK+zYmuF7{_|4&+%d=-o_$}a_%d=-Y_$}d`%d=-!_^sfb z%d=-M_-){w%d=;H_@?mA<=Jx({I>AU<=NxsAZQlyX7JAC+0zyM+rc}RXHO6KLU`x$ z>^T*_IlOau_M8si0^Yeid(MKt2VZxb%d_YF=vBQl`u!Z=%|hNXC07r?_8ceQ{az+cP`JKhv7THJC|qA6YxjFJC|qA3-F!c zoy)Ul0sJxW&gI$jK71E==kn}X3h&2A45YxhJbRYIcSXN*dG@S=KMvlxJbP-@4?)

    o?`gk@XqDg(;2=mymNW>bc62)?_8cez2OJIJC|oqIs8C)=kn|s0e=d-b9wfh z2Y)KOb9wfRhcAbBF3+AT;qS%wbt%d_W6_!02V z<=Nxs8*LWy)8U=Vv*&H}kA!zF&z_Ir&wzI>&z>*g&xCg_&z_&)&w_U@&z`j!gdl9q z!pkUl=kn~?0RC)v=kn~?6yA@85=en_dG>4zKL-8I<=L|f{JHSX<=L|vyq}vpkOJrO z?AbSZRbPPqBhfQ1C07r9SNMzIoy)VQ2mB@Q&gI!N0RB>V=kn~Sgue{lxjcKuz>kM_ zF3+BE@R!3omuJt_@Dt#j%d=+^{1x!d<=Ha@{z`b~^6Z%ge-*rQdG^eNzZ%}TJbPxt zUjy%4o;`EnuZ4Fm&z=SF*TFlNXU{_TiSW+l*|P-xdU)sZ?D+=%26*T4>{$taBfN8Y z_7rR!g0M9UFSo!umuF8s_(|~2<=N91{x*2$^6V*uza8GWJbQ}Z{X5Ko6gZb>&+gHy z`fl_egr0j+a`n(30e>&Nb9we03x7Ynb9wgkgnt0uxjcJLg?|vJC|qACh$+gJC|oqBlrjKeYkUZ_G}xys-Hvu?&x_TC07sqKJYKXJC|oq z2l$uZoy)W5DEOD*oy)VQJN!I&=ko075C00hb9wd*hJO{_xjcK$gr5)ZT%J7_z`q9X zT%J9b!7qS!F3+AD;9rM#F3+C3;NO6EF3+Ba;opRJF3+CF;opLHF3+B4;opXLF3+Bq z;opIGF3+9?@bAJqmuJr+_=WJ!<=L|o{yli-^6Xgw{{g&ndG@S^Uj*-5o;?K(LlCxR z;pIWxZ#b7{Pu=KM{W1EtM9-%wxq9fggI@~oT%J8U!G8|#T%J8`;J<)(F3+BW;FrNW zmuJt>@L$3^muJrj@L$0@muF8O_^;ue%d_WH_;28y%d=+~{I~GV<=Jx<{Bn5b^6dFH z{CDuq<=Jxy{0eyI^6a?^{(E@m^6a@0{s(yH^6a@A{zrJ{^6Z%kzY^ZLJbPxr{{-(` zo;`Eme};E1&z{%dSHU}%XU_-lzrs70XU`Y#zrj0~XV2I0Q*l4zT%J8YMX%~V(7*1c zAqZPDy^4<+sEf|kL%%WnTJX;0*|RmgA6r$#xjcJzgkKx|&gI$D2EI1Db9wf(gI@>U zxjcIgfnOKixjcKiz^@1IT%JAM;p@OVmuF9Z_`2}U<=HbBetmf7^6WVi-p{oZNP%;C z_Kb#~hV#(5JbT7PuT!uA)^k02{1~}`6gXE8{cZ3K(c@g6J@>$G2Jc*+J=5X++){xQ zIG1P7Gw_Yk?_8ceuflH*?_8ce@4;^Y?_8cepTTbl?_8ce-@-S6cP`JKU*WfccP`JK zbv6q@*mOU$HN10q_G|#Z4ZL%C_G}K{6yCW!d$xt&7T&o$dv<|u2Jc*+J$u7%2k%^- zJqN-U!aJ8|&tdS*;hoE~=NR}F@XqDgb29w)@XqDgQwCoI?_8ce!{K*;cP`JKbK!S{ zcP`JK%iwo{cP`JKYv6Z=cP`JKo8kRja)A^$muJsC@Ga5rT%J9T!tV<2T%J8o!ncBV zF3+Bq;CF*}F3+CV;dh63F3+A1;rE1hF3+CN;P--eF3+Ct;QgF^ffP8GXU}i&d!ygE zJbTt_q_*7s)jsgf<=L|d{J!wc<=L|p{C@Dx<=L|X{QmIH<=L|bd^>pO^6c3Q{vmuF zcP`JK1Ebg1@s8;4f}TTCa`n*ngg+GCxjcJLfiH%4F3+A3@Q1-WmuJs;@Q1@YmuJs- z_#@$+%d_VO_@m&R%d_Wpct6)<=N8^ z{v>$k^6Y5}-vi#cJbQM6KN;S+JbT*0_k?#Y&z|=1z2Ke8v*$?o-tf-l*>eJX3A}T8 z_VkAD1Mgg(J>~Fy;hoE~XC!<-c<1u$84F(u?_8ceJOV!i-nl$`o`N3=?_8ce^WaZ|cP`JKci}7Goy)W5BluzP&gI$j z1$-sEb9wfB2R|I%xjcJ*fgb_yT%J8^ZytiM>3-&Pc<1u$*$93lymNW>Yzcn`ymNW> zYzKcPymNW>>;yjw-nl$`_JThf-nl$`4uT&I?_8ceN5h{3?_8ceC&7<_cP`JK0r2O- zJC|qAsql~Be!#grdxl4^`+*D4e*t>NrR3_N9}j;KymNW>Tnm2*ymNW>+y;LsymNW> zJP3aoymNW>JPtn|-nl$`o`t_0-nl$`UWT6l?_8ce@4#OH?_8cepTJ)U?_8ceU%_7m z?_8ceKf_-G?_8cewYCUB*mOU0ExdDi_G}1$9lUdS_G}D49p|}odG<7kUg!Bu=-&lB zx1{9iq2Ck!R(R*~?AagwHhAaq>?wx79p1S-dya#j4DVc?JtgpWz&n>`PZ|83@XqDg za~k|z@XqDgb2j|l@XqDgb3XhOc<1u$xdQ$^c<1u$xf%Wec<1u$xf}jLc<1u$c?5nc zymNW>JPkh$-nl$`=DA9|PfD&H`p@BK!aJ8|&vN+3;hoE~ z=U4by@XqDgv+kB52%GMIo`82Q&z_CppMrNT&z>#dpN4lX&z@%Rv*De~vu8*6XW*U7 zvuAhsIq=Tq+0zdGIe6#t>^Thnd3fjY>^UC(1$gK3?CAmjBD`~X_VkCJ3-4T>J>~E( z!8?~{&q(-};hoE~XDs|Yc<1u$xfK2tc<1u$nFv20-nl$`Cc(c3?_8ce_rouMcP`JK zneeZ}JC|qAZ1^|eoy)W575KN{oy)W5E%)PY|F?_8ce4dEBVJC|oqQ}`wD&gI#&GyJFU&gI$D2L3a6 z=ko070RK6>b9wf3g8u^ExjcKiz|X+fP3Q9L=@GrYZhnLQLFieYlBv<=OKc{D0w{%d_Vf z_&?yC%d=%$ks=lIk9&gI$D2!3sN=kn~?4t^bY=kn~?6@FcK z=kn~?7k)i>=kn}10N#&vA4q|7dG;I@z3yk~p}#wNHcZLYL*EB}BY5ZX>^TL#0lag0 z_6&#L7~Z)&d(MO31m3wkd&a{zgm*5_o@?PZg?BE`p4;FzgLf{^p1a{2!8?~{&oubP z@XqDgGZTJuc<1u$c@BOHc<1u$c?Et;c<1u$c^AG3ymNW>EP?lP^#)SlT%JA4;I~G< zb9wfxfZqn*xjcJT!#9O@F3+CYTZbTQx*yvX-nl$`>cbbpJC|oq6ZjVJ&gI!t1iwAJ zb9wf(hA)D5F3+B}@H6rKk8^qUbckN}OMb58aIxT6^z4ec&ecPI5_~Io=ko073%@(O zb9wd*hTj9;xjcK$f^QA)T%J7_!tV+1T%J9b!?%HVF3+AD;rD`fF3+CH@NMCp%d=-H z{66r`<=OKe_%d=+={QmIH<=OKZ`~mRJ<=OKAe0zB3^6dEt{xO{A&gI$jW%N4F z4@UoQ=s7ecR}X!yZ9)(>-JcZ0JC|oqUHHS{oy)UlQ}`p`oy)VQ8T^s(&gI$D65h{6 z9!P<6dG@q{?}UEm^6cpVe>A*vdG>UI?+ou;o;}^+kAZhC&z?T;UErO|vu7}TS9s_0 z>^T$uIC$ss>=_OJIL=$=^6VKGz0TY2=)WF4JyLS@(BB4sGQ4wn_S^&C3*Nard#1zp zhIcN{o@d}o;GN5}=T-PV@XqDg^EP~6c<1u$`53+*ymNW>d<$O+?_8cezry#2cP`JK zwVH+?Y`UKr0KZn#5QI&hJsUJtn)7Aw&gI#&c~j|}KLy^oJbSikDxLGQaNatXXV3Oc zrE||qH3a=_n^whD$8}mtt{(dK@D=dR<=ImVUkUGAo;}CH4~KUy&z|1!BjBCOv!@*X zba?0T?5Ttw3GZBo=f4+gm*5_o~z-{f_E;@o=Na$!#kH}&lLF4@XqDg zGaddMc<1u$c>;b6ymNW>%!NM>-nl$`-hv+s?_8ceOW@CkcP`JKrSMPS^Uk?EdzMG9 zuNN1i|4;N>nv$!Be!Xo&5H{WaTn6u4o;@4EUk>kFo;_Q@Pk?tW&z|k!uYh+h&z?Qt zuY`9l&z^nZuYz|j&z?i!uZDLn&z@u9uYq?i&z_UvuZ4Fm&z>^)>)@Tsv*$GUiSW+l z*>g7h4e-w8*>e&6jquLp*>f5ElQ_?v%d_XY=yje?LjM%>+@6xFhkhFTWO(QD?3oFF zC%kic_RN953*Nardltao4ewl@J&WL{z&n>`&r{%d&W^6dEm{#$tG^6dEo{yTW*^6aTw7=p0rerW}~b9we`2=C`i z*Z$7s+0!_BeO~{B{vFWsOG>UD`rY7H!8?~{&))FA!8?~{Pe=IQ;hoE~=NS0a@XqDg zb29vY;hoE~rxgAVc<1u$ISu|#c<1u$IUBxUo$$f9IhSY8h45>^JC|qA74Ws-oy)W5 zX85(?oy)W5PWamJ&gI$j5d6CE&gI$jB>Z~t&gI$j4E!_rdgol8J@ca1=S4mAFGA0T zDY<&+m%?uZ?_8ce-@rG3cP`JKU*I=}cP`JK+RZ}{Hr=0W0`FX&J@w%m!aJ8|Phw1wXs-nl$`I>2uM?_8cehr@3P?_8ce$HQ+0?_8ce zec-o&cP`JK!SGGtoy)VQ0{&TiUO1O$ŴdC?sGm!W6-lw3XZ*T5ISJC|qA&G0+I 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 Wa=xyfwEc@7$sPY=;rO^E_y2!KMi7Mn literal 0 HcmV?d00001 diff --git a/obj/userland-syscall.adb.stderr b/obj/userland-syscall.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-syscall.adb.stdout b/obj/userland-syscall.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/userland-syscall.ali b/obj/userland-syscall.ali new file mode 100644 index 0000000..5339f99 --- /dev/null +++ b/obj/userland-syscall.ali @@ -0,0 +1,4876 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RV NO_IMPLICIT_CONDITIONALS +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_ACCESS +RV NO_UNCHECKED_CONVERSION +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RV NO_IMPLICIT_LOOPS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.syscall%b userland-syscall.adb 3a460ce4 NE OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W ada.unchecked_conversion%s +W ada.unchecked_deallocation%s +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W arch.hooks%s arch-hooks.adb arch-hooks.ali +W arch.local%s arch-local.adb arch-local.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W arch.power%s arch-power.adb arch-power.ali +W config%s config.ads config.ali +W cryptography%s cryptography.ads cryptography.ali +W cryptography.random%s cryptography-random.adb cryptography-random.ali +W devices%s devices.adb devices.ali +W devices.termios%s devices-termios.ads devices-termios.ali +W ipc%s ipc.ads ipc.ali +W ipc.filelock%s ipc-filelock.adb ipc-filelock.ali +W ipc.futex%s ipc-futex.adb ipc-futex.ali +W ipc.shm%s ipc-shm.adb ipc-shm.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W lib.time%s lib-time.adb lib-time.ali +W memory%s memory.ads memory.ali +W memory.physical%s memory-physical.adb memory-physical.ali +W networking%s networking.adb networking.ali +W networking.interfaces%s networking-interfaces.adb networking-interfaces.ali +W system%s system.ads system.ali +Z system.storage_elements%s s-stoele.adb s-stoele.ali +W userland%s userland.ads userland.ali +W userland.loader%s userland-loader.adb userland-loader.ali +W userland.memory_failure%s userland-memory_failure.adb userland-memory_failure.ali +W userland.oom_failure%s userland-oom_failure.adb userland-oom_failure.ali + +U userland.syscall%s userland-syscall.ads 66b2f2bd NE OO PK +W arch%s arch.ads arch.ali +W arch.context%s arch-context.adb arch-context.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali +W ipc.fifo%s ipc-fifo.adb ipc-fifo.ali +W ipc.pty%s ipc-pty.adb ipc-pty.ali +W ipc.socket%s ipc-socket.adb ipc-socket.ali +W memory%s memory.ads memory.ali +W networking%s networking.adb networking.ali +W scheduler%s scheduler.adb scheduler.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.adb s-stoele.ali +W userland%s userland.ads userland.ali +W userland.mac%s userland-mac.adb userland-mac.ali +W userland.process%s userland-process.adb userland-process.ali +W vfs%s vfs.adb vfs.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D a-chlat1.ads 20241115151050 8791f8e7 ada.characters.latin_1%s +D a-unccon.ads 20241115151050 13b8aaf3 ada.unchecked_conversion%s +D a-uncdea.ads 20241115151050 f341340f ada.unchecked_deallocation%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-clocks.ads 20241115151036 f76b002b arch.clocks%s +D arch-context.ads 20241115151036 7bffdd51 arch.context%s +D arch-hooks.ads 20241115151036 2bd12b55 arch.hooks%s +D arch-interrupts.ads 20241115151036 186adf79 arch.interrupts%s +D arch-local.ads 20241115151036 e5953d14 arch.local%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D arch-power.ads 20241115151036 0576051f arch.power%s +D config.ads 20241115151036 e56314eb config%s +D cryptography.ads 20241115151036 8132c7fc cryptography%s +D cryptography-random.ads 20241115151036 ff611fa6 cryptography.random%s +D devices.ads 20241115151036 f45ecf09 devices%s +D devices-termios.ads 20241115151036 06aea761 devices.termios%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D i-c.ads 20241115151050 aa7a7c0b interfaces.c%s +D ipc.ads 20241115151036 03976a1a ipc%s +D ipc-fifo.ads 20241115151036 9141c09a ipc.fifo%s +D ipc-filelock.ads 20241115151036 69934e3c ipc.filelock%s +D ipc-futex.ads 20241115151036 e719aab2 ipc.futex%s +D ipc-pty.ads 20241115151036 66e20305 ipc.pty%s +D ipc-shm.ads 20241115151036 e6bb078c ipc.shm%s +D ipc-socket.ads 20241115151036 ab61e49d ipc.socket%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-alignment.ads 20241115151036 68e8a917 lib.alignment%s +D lib-alignment.adb 20241115151036 a3b617fd lib.alignment%b +D lib-messages.ads 20241115151036 4282fa77 lib.messages%s +D lib-panic.ads 20241115151036 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D lib-time.ads 20241115151036 30059be5 lib.time%s +D memory.ads 20241115151036 335640bf memory%s +D memory-physical.ads 20241115151036 f22cd7a2 memory.physical%s +D networking.ads 20241115151036 70ea6e55 networking%s +D networking-arp.ads 20241115151036 eec21925 networking.arp%s +D networking-interfaces.ads 20241115151036 9c034257 networking.interfaces%s +D scheduler.ads 20241115151036 61f570e7 scheduler%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D s-stoele.adb 20241115151050 c919feed system.storage_elements%b +D s-unstyp.ads 20241115151050 34cdeecb system.unsigned_types%s +D userland.ads 20241115151036 1671c2b9 userland%s +D userland-elf.ads 20241115151036 416b8b0c userland.elf%s +D userland-loader.ads 20241115151036 4d432fbc userland.loader%s +D userland-mac.ads 20241115151036 eff2fe62 userland.mac%s +D userland-memory_failure.ads 20241115151036 e591e3ec userland.memory_failure%s +D userland-oom_failure.ads 20241115151036 8ec1521c userland.oom_failure%s +D userland-process.ads 20241115151036 a4893a04 userland.process%s +D userland-syscall.ads 20241115151036 b384b127 userland.syscall%s +D userland-syscall.adb 20241115151036 afb2e59c userland.syscall%b +D vfs.ads 20241115151036 63b4365d vfs%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [sys_exit userland__syscall 98 14 none] +G c Z s b [arch_prctl userland__syscall 104 14 none] +G c Z s b [open userland__syscall 117 14 none] +G c Z s b [close userland__syscall 126 14 none] +G c Z s b [read userland__syscall 132 14 none] +G c Z s b [write userland__syscall 140 14 none] +G c Z s b [seek userland__syscall 151 14 none] +G c Z s b [mmap userland__syscall 168 14 none] +G c Z s b [munmap userland__syscall 179 14 none] +G c Z s b [get_pid userland__syscall 186 14 none] +G c Z s b [get_ppid userland__syscall 189 14 none] +G c Z s b [exec userland__syscall 192 14 none] +G c Z s b [clone userland__syscall 205 14 none] +G c Z s b [wait userland__syscall 221 14 none] +G c Z s b [socket userland__syscall 239 14 none] +G c Z s b [set_hostname userland__syscall 246 14 none] +G c Z s b [fstat userland__syscall 295 14 none] +G c Z s b [chdir userland__syscall 305 14 none] +G c Z s b [ioctl userland__syscall 311 14 none] +G c Z s b [sched_yield userland__syscall 319 14 none] +G c Z s b [delete_thread_cluster userland__syscall 322 14 none] +G c Z s b [pipe userland__syscall 328 14 none] +G c Z s b [get_uid userland__syscall 335 14 none] +G c Z s b [rename userland__syscall 339 14 none] +G c Z s b [sysconf userland__syscall 462 14 none] +G c Z s b [spawn userland__syscall 470 14 none] +G c Z s b [get_tid userland__syscall 482 14 none] +G c Z s b [manage_thread_cluster userland__syscall 488 14 none] +G c Z s b [fcntl userland__syscall 524 14 none] +G c Z s b [exit_thread userland__syscall 532 14 none] +G c Z s b [get_random userland__syscall 535 14 none] +G c Z s b [mprotect userland__syscall 542 14 none] +G c Z s b [set_mac_capabilities userland__syscall 565 14 none] +G c Z s b [get_mac_capabilities userland__syscall 571 14 none] +G c Z s b [add_mac_permissions userland__syscall 582 14 none] +G c Z s b [set_mac_enforcement userland__syscall 593 14 none] +G c Z s b [mount userland__syscall 605 14 none] +G c Z s b [umount userland__syscall 617 14 none] +G c Z s b [readlink userland__syscall 625 14 none] +G c Z s b [getdents userland__syscall 656 14 none] +G c Z s b [sync userland__syscall 664 14 none] +G c Z s b [makenode userland__syscall 667 14 none] +G c Z s b [unlink userland__syscall 677 14 none] +G c Z s b [truncate userland__syscall 685 14 none] +G c Z s b [bind userland__syscall 711 14 none] +G c Z s b [symlink userland__syscall 719 14 none] +G c Z s b [connect userland__syscall 730 14 none] +G c Z s b [open_pty userland__syscall 738 14 none] +G c Z s b [fsync userland__syscall 744 14 none] +G c Z s b [link userland__syscall 751 14 none] +G c Z s b [ptrace userland__syscall 763 14 none] +G c Z s b [listen userland__syscall 772 14 none] +G c Z s b [sys_accept userland__syscall 779 14 none] +G c Z s b [get_rlimit userland__syscall 794 14 none] +G c Z s b [set_rlimit userland__syscall 800 14 none] +G c Z s b [faccess userland__syscall 811 14 none] +G c Z s b [ppoll userland__syscall 833 14 none] +G c Z s b [get_euid userland__syscall 842 14 none] +G c Z s b [set_uids userland__syscall 845 14 none] +G c Z s b [fchmod userland__syscall 852 14 none] +G c Z s b [umask userland__syscall 862 14 none] +G c Z s b [reboot userland__syscall 871 14 none] +G c Z s b [fchown userland__syscall 878 14 none] +G c Z s b [pread userland__syscall 889 14 none] +G c Z s b [pwrite userland__syscall 898 14 none] +G c Z s b [get_sock_name userland__syscall 906 14 none] +G c Z s b [get_peer_name userland__syscall 913 14 none] +G c Z s b [shutdown userland__syscall 923 14 none] +G c Z s b [futex userland__syscall 939 14 none] +G c Z s b [clock userland__syscall 953 14 none] +G c Z s b [clock_nanosleep userland__syscall 962 14 none] +G c Z s b [get_rusage userland__syscall 978 14 none] +G c Z s b [recvfrom userland__syscall 984 14 none] +G c Z s b [sendto userland__syscall 994 14 none] +G c Z s b [config_netinterface userland__syscall 1015 14 none] +G c Z s b [utimes userland__syscall 1022 14 none] +G c Z s b [create_tcluster userland__syscall 1031 14 none] +G c Z s b [switch_tcluster userland__syscall 1035 14 none] +G c Z s b [sigprocmask userland__syscall 1044 14 none] +G c Z s b [sigaction userland__syscall 1059 14 none] +G c Z s b [send_signal userland__syscall 1066 14 none] +G c Z s b [get_prio userland__syscall 1076 14 none] +G c Z s b [set_prio userland__syscall 1082 14 none] +G c Z s b [get_gid userland__syscall 1089 14 none] +G c Z s b [get_egid userland__syscall 1091 14 none] +G c Z s b [set_gids userland__syscall 1094 14 none] +G c Z s b [get_groups userland__syscall 1101 14 none] +G c Z s b [set_groups userland__syscall 1108 14 none] +G c Z s b [tty_name userland__syscall 1115 14 none] +G c Z s b [fadvise userland__syscall 1129 14 none] +G c Z s b [shmat userland__syscall 1139 14 none] +G c Z s b [shmctl userland__syscall 1170 14 none] +G c Z s b [shmdt userland__syscall 1177 14 none] +G c Z s b [shmget userland__syscall 1186 14 none] +G c Z s b [getsockopt userland__syscall 1200 14 none] +G c Z s b [setsockopt userland__syscall 1209 14 none] +G c Z s b [get_thread_name userland__syscall 1218 14 none] +G c Z s b [set_thread_name userland__syscall 1225 14 none] +G c Z s b [failure_policy userland__syscall 1241 14 none] +G c Z s b [do_exit userland__syscall 1249 14 none] +G c Z s b [do_exit userland__syscall 1250 14 none] +G c Z s b [pre_syscall_hook userland__syscall 1253 14 none] +G c Z s b [post_syscall_hook userland__syscall 1254 14 none] +G c Z s b [check_userland_mappability userland__syscall 1257 13 none] +G c Z s b [do_remote_exit userland__syscall 1264 14 none] +G c Z s b [common_syscall_hook userland__syscall 1266 14 none] +G c Z s b [translate_status userland__syscall 1271 14 none] +G c Z s b [translate_status userland__syscall 1277 14 none] +G c Z s b [translate_status userland__syscall 1283 14 none] +G c Z s b [translate_status userland__syscall 1289 14 none] +G c Z s b [exec_into_process userland__syscall 1296 14 none] +G c Z s b [to_string userland__syscall 1308 13 none] +G c Z s b [get_mmap_prot userland__syscall 1311 13 none] +G c Z s b [execute_mac_failure userland__syscall 1314 14 none] +G c Z s b [pty_ioctl userland__syscall 1317 14 none] +G c Z s b [set_mac_capabilities userland__syscall 1325 14 none] +G c Z s b [mac_syscall_to_kernel userland__syscall 1328 14 none] +G c Z s b [check_add_file userland__syscall 1334 14 none] +G c Z s b [check_userland_access userland__syscall 1341 13 none] +G c Z s b [resolve_at_directive userland__syscall 1346 14 none] +G c Z s b [translate_signal userland__syscall 1352 14 none] +G c Z s s [time_specIP userland__syscall 253 9 none] +G c Z s s [statIP userland__syscall 264 9 none] +G c Z s s [proc_infoIP userland__syscall 375 9 none] +G c Z s s [proc_info_arrIP userland__syscall 383 9 none] +G c Z s s [mount_infoIP userland__syscall 385 9 none] +G c Z s s [mount_info_arrIP userland__syscall 402 9 none] +G c Z s s [uts_nameIP userland__syscall 404 9 none] +G c Z s s [thread_infoIP userland__syscall 412 9 none] +G c Z s s [thread_info_arrIP userland__syscall 418 9 none] +G c Z s s [cluster_infoIP userland__syscall 420 9 none] +G c Z s s [cluster_info_arrIP userland__syscall 425 9 none] +G c Z s s [interface_infoIP userland__syscall 429 9 none] +G c Z s s [interface_arrIP userland__syscall 438 9 none] +G c Z s s [flock_infoIP userland__syscall 440 9 none] +G c Z s s [flock_info_arrIP userland__syscall 448 9 none] +G c Z s s [Tload_arrBIP userland__syscall 450 4 none] +G c Z s s [mem_infoIP userland__syscall 452 9 none] +G c Z s s [flock_dataIP userland__syscall 516 9 none] +G c Z s s [direntIP userland__syscall 641 9 none] +G c Z s s [direntsIP userland__syscall 655 9 none] +G c Z s s [sockaddr_inIP userland__syscall 692 9 none] +G c Z s s [sockaddr_in6IP userland__syscall 698 9 none] +G c Z s s [sockaddr_unixIP userland__syscall 706 9 none] +G c Z s s [poll_fdIP userland__syscall 827 9 none] +G c Z s s [poll_fdsIP userland__syscall 832 9 none] +G c Z s s [futex_itemIP userland__syscall 933 9 none] +G c Z s s [futex_item_arrIP userland__syscall 938 9 none] +G c Z s s [rusageIP userland__syscall 971 9 none] +G c Z s s [addr4_netinterfaceIP userland__syscall 1007 9 none] +G c Z s s [addr6_netinterfaceIP userland__syscall 1011 9 none] +G c Z s s [sigaction_infoIP userland__syscall 1054 9 none] +G c Z s s [ipc_permsIP userland__syscall 1146 9 none] +G c Z s s [shmid_dsIP userland__syscall 1156 9 none] +G c Z s s [failure_structIP userland__syscall 1236 9 none] +G r c none [sys_exit userland__syscall 98 14 none] [get_current_process arch__local 37 13 none] +G r c none [sys_exit userland__syscall 98 14 none] [make_active arch__mmu 81 13 none] +G r c none [sys_exit userland__syscall 98 14 none] [put_line lib__messages 41 14 none] +G r c none [sys_exit userland__syscall 98 14 none] [flush_threads userland__process 223 14 none] +G r c none [sys_exit userland__syscall 98 14 none] [flush_files userland__process 329 14 none] +G r c none [sys_exit userland__syscall 98 14 none] [get_current_thread arch__local 36 13 none] +G r c none [sys_exit userland__syscall 98 14 none] [remove_thread userland__process 218 14 none] +G r c none [sys_exit userland__syscall 98 14 none] [issue_exit userland__process 390 14 none] +G r c none [sys_exit userland__syscall 98 14 none] [bail scheduler 77 14 none] +G r c none [arch_prctl userland__syscall 104 14 none] [get_current_process arch__local 37 13 none] +G r c none [arch_prctl userland__syscall 104 14 none] [get_common_map userland__process 344 13 none] +G r i none [arch_prctl userland__syscall 104 14 none] [alignment lib 19 13 none] +G r c none [arch_prctl userland__syscall 104 14 none] [translate_address arch__mmu 96 14 none] +G r c none [arch_prctl userland__syscall 104 14 none] [prctl_hook arch__hooks 22 13 none] +G r c none [open userland__syscall 117 14 none] [get_current_process arch__local 37 13 none] +G r c none [open userland__syscall 117 14 none] [get_common_map userland__process 344 13 none] +G r i none [open userland__syscall 117 14 none] [alignment lib 19 13 none] +G r c none [open userland__syscall 117 14 none] [translate_address arch__mmu 96 14 none] +G r c none [open userland__syscall 117 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [open userland__syscall 117 14 none] [get_cwd userland__process 428 14 none] +G r c none [open userland__syscall 117 14 none] [get_file userland__process 294 13 none] +G r c none [open userland__syscall 117 14 none] [open vfs 255 14 none] +G r c none [open userland__syscall 117 14 none] [stat vfs 433 14 none] +G r c none [open userland__syscall 117 14 none] [check_permissions userland__process 592 13 none] +G r c none [open userland__syscall 117 14 none] [close userland__process 288 14 none] +G r c none [open userland__syscall 117 14 none] [convert userland__process 573 13 none] +G r c none [open userland__syscall 117 14 none] [image lib__messages 63 14 none] +G r c none [open userland__syscall 117 14 none] [get_enforcement userland__process 586 13 none] +G r c none [open userland__syscall 117 14 none] [put_line lib__messages 41 14 none] +G r c none [open userland__syscall 117 14 none] [make_active arch__mmu 81 13 none] +G r c none [open userland__syscall 117 14 none] [flush_threads userland__process 223 14 none] +G r c none [open userland__syscall 117 14 none] [flush_files userland__process 329 14 none] +G r c none [open userland__syscall 117 14 none] [get_current_thread arch__local 36 13 none] +G r c none [open userland__syscall 117 14 none] [remove_thread userland__process 218 14 none] +G r c none [open userland__syscall 117 14 none] [issue_exit userland__process 390 14 none] +G r c none [open userland__syscall 117 14 none] [bail scheduler 77 14 none] +G r c none [open userland__syscall 117 14 none] [get_file_count userland__process 263 13 none] +G r c none [open userland__syscall 117 14 none] [get_limit userland__process 604 13 none] +G r c none [open userland__syscall 117 14 none] [add_file userland__process 252 14 none] +G r c none [open userland__syscall 117 14 none] [set_fd_flags userland__process 314 14 none] +G r c none [close userland__syscall 126 14 none] [get_current_process arch__local 37 13 none] +G r c none [close userland__syscall 126 14 none] [is_valid_file userland__process 243 13 none] +G r c none [close userland__syscall 126 14 none] [remove_file userland__process 324 14 none] +G r c none [read userland__syscall 132 14 none] [get_current_process arch__local 37 13 none] +G r c none [read userland__syscall 132 14 none] [get_common_map userland__process 344 13 none] +G r c none [read userland__syscall 132 14 none] [get_file userland__process 294 13 none] +G r i none [read userland__syscall 132 14 none] [alignment lib 19 13 none] +G r c none [read userland__syscall 132 14 none] [translate_address arch__mmu 96 14 none] +G r c none [read userland__syscall 132 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [read userland__syscall 132 14 none] [read vfs 400 14 none] +G r c none [read userland__syscall 132 14 none] [read ipc__fifo 113 14 none] +G r c none [read userland__syscall 132 14 none] [read_primary ipc__pty 50 14 none] +G r c none [read userland__syscall 132 14 none] [read_secondary ipc__pty 66 14 none] +G r c none [read userland__syscall 132 14 none] [read ipc__socket 109 14 none] +G r c none [write userland__syscall 140 14 none] [get_current_process arch__local 37 13 none] +G r c none [write userland__syscall 140 14 none] [get_common_map userland__process 344 13 none] +G r c none [write userland__syscall 140 14 none] [get_file userland__process 294 13 none] +G r i none [write userland__syscall 140 14 none] [alignment lib 19 13 none] +G r c none [write userland__syscall 140 14 none] [translate_address arch__mmu 96 14 none] +G r c none [write userland__syscall 140 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [write userland__syscall 140 14 none] [get_limit userland__process 604 13 none] +G r c none [write userland__syscall 140 14 none] [write vfs 418 14 none] +G r c none [write userland__syscall 140 14 none] [write ipc__fifo 125 14 none] +G r c none [write userland__syscall 140 14 none] [write_primary ipc__pty 58 14 none] +G r c none [write userland__syscall 140 14 none] [write_secondary ipc__pty 74 14 none] +G r c none [write userland__syscall 140 14 none] [write ipc__socket 121 14 none] +G r c none [seek userland__syscall 151 14 none] [get_current_process arch__local 37 13 none] +G r c none [seek userland__syscall 151 14 none] [get_file userland__process 294 13 none] +G r c none [seek userland__syscall 151 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [seek userland__syscall 151 14 none] [stat vfs 433 14 none] +G r c none [mmap userland__syscall 168 14 none] [get_current_process arch__local 37 13 none] +G r c none [mmap userland__syscall 168 14 none] [get_common_map userland__process 344 13 none] +G r c none [mmap userland__syscall 168 14 none] [get_capabilities userland__process 589 13 none] +G r c none [mmap userland__syscall 168 14 none] [get_user_mapped_size arch__mmu 187 13 none] +G r c none [mmap userland__syscall 168 14 none] [get_limit userland__process 604 13 none] +G r c none [mmap userland__syscall 168 14 none] [bump_alloc_base userland__process 363 13 none] +G r c none [mmap userland__syscall 168 14 none] [translate_address arch__mmu 96 14 none] +G r c none [mmap userland__syscall 168 14 none] [map_allocated_range arch__mmu 139 14 none] +G r c none [mmap userland__syscall 168 14 none] [get_file userland__process 294 13 none] +G r c none [mmap userland__syscall 168 14 none] [mmap vfs 475 14 none] +G r c none [mmap userland__syscall 168 14 none] [convert userland__process 573 13 none] +G r c none [mmap userland__syscall 168 14 none] [image lib__messages 63 14 none] +G r c none [mmap userland__syscall 168 14 none] [get_enforcement userland__process 586 13 none] +G r c none [mmap userland__syscall 168 14 none] [put_line lib__messages 41 14 none] +G r c none [mmap userland__syscall 168 14 none] [make_active arch__mmu 81 13 none] +G r c none [mmap userland__syscall 168 14 none] [flush_threads userland__process 223 14 none] +G r c none [mmap userland__syscall 168 14 none] [flush_files userland__process 329 14 none] +G r c none [mmap userland__syscall 168 14 none] [get_current_thread arch__local 36 13 none] +G r c none [mmap userland__syscall 168 14 none] [remove_thread userland__process 218 14 none] +G r c none [mmap userland__syscall 168 14 none] [issue_exit userland__process 390 14 none] +G r c none [mmap userland__syscall 168 14 none] [bail scheduler 77 14 none] +G r c none [munmap userland__syscall 179 14 none] [get_current_process arch__local 37 13 none] +G r c none [munmap userland__syscall 179 14 none] [get_common_map userland__process 344 13 none] +G r c none [munmap userland__syscall 179 14 none] [get_capabilities userland__process 589 13 none] +G r c none [munmap userland__syscall 179 14 none] [convert userland__process 573 13 none] +G r c none [munmap userland__syscall 179 14 none] [image lib__messages 63 14 none] +G r c none [munmap userland__syscall 179 14 none] [get_enforcement userland__process 586 13 none] +G r c none [munmap userland__syscall 179 14 none] [put_line lib__messages 41 14 none] +G r c none [munmap userland__syscall 179 14 none] [make_active arch__mmu 81 13 none] +G r c none [munmap userland__syscall 179 14 none] [flush_threads userland__process 223 14 none] +G r c none [munmap userland__syscall 179 14 none] [flush_files userland__process 329 14 none] +G r c none [munmap userland__syscall 179 14 none] [get_current_thread arch__local 36 13 none] +G r c none [munmap userland__syscall 179 14 none] [remove_thread userland__process 218 14 none] +G r c none [munmap userland__syscall 179 14 none] [issue_exit userland__process 390 14 none] +G r c none [munmap userland__syscall 179 14 none] [bail scheduler 77 14 none] +G r c none [munmap userland__syscall 179 14 none] [unmap_range arch__mmu 175 13 none] +G r c none [get_pid userland__syscall 186 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_pid userland__syscall 186 14 none] [convert userland__process 573 13 none] +G r c none [get_ppid userland__syscall 189 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_ppid userland__syscall 189 14 none] [get_parent userland__process 437 13 none] +G r c none [get_ppid userland__syscall 189 14 none] [convert userland__process 573 13 none] +G r c none [exec userland__syscall 192 14 none] [get_current_thread arch__local 36 13 none] +G r c none [exec userland__syscall 192 14 none] [get_current_process arch__local 37 13 none] +G r c none [exec userland__syscall 192 14 none] [flush_threads userland__process 223 14 none] +G r c none [exec userland__syscall 192 14 none] [get_common_map userland__process 344 13 none] +G r i none [exec userland__syscall 192 14 none] [alignment lib 19 13 none] +G r c none [exec userland__syscall 192 14 none] [translate_address arch__mmu 96 14 none] +G r c none [exec userland__syscall 192 14 none] [get_capabilities userland__process 589 13 none] +G r c none [exec userland__syscall 192 14 none] [convert userland__process 573 13 none] +G r c none [exec userland__syscall 192 14 none] [image lib__messages 63 14 none] +G r c none [exec userland__syscall 192 14 none] [get_enforcement userland__process 586 13 none] +G r c none [exec userland__syscall 192 14 none] [put_line lib__messages 41 14 none] +G r c none [exec userland__syscall 192 14 none] [make_active arch__mmu 81 13 none] +G r c none [exec userland__syscall 192 14 none] [flush_files userland__process 329 14 none] +G r c none [exec userland__syscall 192 14 none] [remove_thread userland__process 218 14 none] +G r c none [exec userland__syscall 192 14 none] [issue_exit userland__process 390 14 none] +G r c none [exec userland__syscall 192 14 none] [bail scheduler 77 14 none] +G r c none [exec userland__syscall 192 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [exec userland__syscall 192 14 none] [get_cwd userland__process 428 14 none] +G r c none [exec userland__syscall 192 14 none] [open vfs 255 14 none] +G r c none [exec userland__syscall 192 14 none] [check_permissions userland__process 592 13 none] +G r c none [exec userland__syscall 192 14 none] [close vfs 359 14 none] +G r s argument_arr [exec userland__syscall 192 14 none] [argument_arrIP userland 20 9 none] +G r s environment_arr [exec userland__syscall 192 14 none] [environment_arrIP userland 21 9 none] +G r c none [exec userland__syscall 192 14 none] [c_string_length lib 23 13 none] +G r c none [exec userland__syscall 192 14 none] [flush_exec_files userland__process 333 14 none] +G r c none [exec userland__syscall 192 14 none] [reassign_process_addresses userland__process 228 14 none] +G r c none [exec userland__syscall 192 14 none] [fork_table arch__mmu 70 13 none] +G r c none [exec userland__syscall 192 14 none] [set_common_map userland__process 338 14 none] +G r c none [exec userland__syscall 192 14 none] [set_identifier userland__process 443 14 none] +G r c none [exec userland__syscall 192 14 none] [start_program userland__loader 41 13 none] +G r c none [exec userland__syscall 192 14 none] [destroy_table arch__mmu 75 14 none] +G r c none [clone userland__syscall 205 14 none] [get_current_process arch__local 37 13 none] +G r c none [clone userland__syscall 205 14 none] [get_capabilities userland__process 589 13 none] +G r c none [clone userland__syscall 205 14 none] [convert userland__process 573 13 none] +G r c none [clone userland__syscall 205 14 none] [image lib__messages 63 14 none] +G r c none [clone userland__syscall 205 14 none] [get_enforcement userland__process 586 13 none] +G r c none [clone userland__syscall 205 14 none] [put_line lib__messages 41 14 none] +G r c none [clone userland__syscall 205 14 none] [make_active arch__mmu 81 13 none] +G r c none [clone userland__syscall 205 14 none] [flush_threads userland__process 223 14 none] +G r c none [clone userland__syscall 205 14 none] [flush_files userland__process 329 14 none] +G r c none [clone userland__syscall 205 14 none] [get_current_thread arch__local 36 13 none] +G r c none [clone userland__syscall 205 14 none] [remove_thread userland__process 218 14 none] +G r c none [clone userland__syscall 205 14 none] [issue_exit userland__process 390 14 none] +G r c none [clone userland__syscall 205 14 none] [bail scheduler 77 14 none] +G r c none [clone userland__syscall 205 14 none] [get_parent userland__process 437 13 none] +G r c none [clone userland__syscall 205 14 none] [get_common_map userland__process 344 13 none] +G r c none [clone userland__syscall 205 14 none] [convert scheduler 135 13 none] +G r c none [clone userland__syscall 205 14 none] [create_user_thread scheduler 52 13 none] +G r c none [clone userland__syscall 205 14 none] [convert scheduler 132 13 none] +G r c none [clone userland__syscall 205 14 none] [create_process userland__process 181 14 none] +G r c none [clone userland__syscall 205 14 none] [get_identifier userland__process 450 14 none] +G r c none [clone userland__syscall 205 14 none] [set_identifier userland__process 443 14 none] +G r c none [clone userland__syscall 205 14 none] [fork_table arch__mmu 70 13 none] +G r c none [clone userland__syscall 205 14 none] [set_common_map userland__process 338 14 none] +G r c none [clone userland__syscall 205 14 none] [duplicate_fd_table userland__process 277 14 none] +G r c none [clone userland__syscall 205 14 none] [fetch_tcb arch__local 27 13 none] +G r c none [clone userland__syscall 205 14 none] [create_user_thread scheduler 61 13 none] +G r c none [clone userland__syscall 205 14 none] [add_thread userland__process 203 14 none] +G r c none [wait userland__syscall 221 14 none] [get_current_process arch__local 37 13 none] +G r c none [wait userland__syscall 221 14 none] [get_common_map userland__process 344 13 none] +G r c none [wait userland__syscall 221 14 none] [get_children userland__process 156 14 none] +G r c none [wait userland__syscall 221 14 none] [check_exit userland__process 406 14 none] +G r c none [wait userland__syscall 221 14 none] [yield_if_able scheduler 74 14 none] +G r c none [wait userland__syscall 221 14 none] [convert userland__process 579 13 none] +G r c none [wait userland__syscall 221 14 none] [get_parent userland__process 437 13 none] +G r i none [wait userland__syscall 221 14 none] [alignment lib 19 13 none] +G r c none [wait userland__syscall 221 14 none] [translate_address arch__mmu 96 14 none] +G r c none [wait userland__syscall 221 14 none] [destroy_table arch__mmu 75 14 none] +G r c none [wait userland__syscall 221 14 none] [delete_process userland__process 185 14 none] +G r c none [wait userland__syscall 221 14 none] [convert userland__process 573 13 none] +G r c none [socket userland__syscall 239 14 none] [get_current_process arch__local 37 13 none] +G r c none [socket userland__syscall 239 14 none] [create ipc__socket 55 13 none] +G r c none [socket userland__syscall 239 14 none] [get_file_count userland__process 263 13 none] +G r c none [socket userland__syscall 239 14 none] [get_limit userland__process 604 13 none] +G r c none [socket userland__syscall 239 14 none] [add_file userland__process 252 14 none] +G r c none [socket userland__syscall 239 14 none] [set_fd_flags userland__process 314 14 none] +G r c none [socket userland__syscall 239 14 none] [close ipc__socket 75 14 none] +G r c none [socket userland__syscall 239 14 none] [close userland__process 288 14 none] +G r c none [set_hostname userland__syscall 246 14 none] [get_current_process arch__local 37 13 none] +G r c none [set_hostname userland__syscall 246 14 none] [get_common_map userland__process 344 13 none] +G r c none [set_hostname userland__syscall 246 14 none] [get_capabilities userland__process 589 13 none] +G r c none [set_hostname userland__syscall 246 14 none] [convert userland__process 573 13 none] +G r c none [set_hostname userland__syscall 246 14 none] [image lib__messages 63 14 none] +G r c none [set_hostname userland__syscall 246 14 none] [get_enforcement userland__process 586 13 none] +G r c none [set_hostname userland__syscall 246 14 none] [put_line lib__messages 41 14 none] +G r c none [set_hostname userland__syscall 246 14 none] [make_active arch__mmu 81 13 none] +G r c none [set_hostname userland__syscall 246 14 none] [flush_threads userland__process 223 14 none] +G r c none [set_hostname userland__syscall 246 14 none] [flush_files userland__process 329 14 none] +G r c none [set_hostname userland__syscall 246 14 none] [get_current_thread arch__local 36 13 none] +G r c none [set_hostname userland__syscall 246 14 none] [remove_thread userland__process 218 14 none] +G r c none [set_hostname userland__syscall 246 14 none] [issue_exit userland__process 390 14 none] +G r c none [set_hostname userland__syscall 246 14 none] [bail scheduler 77 14 none] +G r i none [set_hostname userland__syscall 246 14 none] [alignment lib 19 13 none] +G r c none [set_hostname userland__syscall 246 14 none] [translate_address arch__mmu 96 14 none] +G r c none [set_hostname userland__syscall 246 14 none] [set_hostname networking 45 14 none] +G r c none [fstat userland__syscall 295 14 none] [get_current_process arch__local 37 13 none] +G r c none [fstat userland__syscall 295 14 none] [get_common_map userland__process 344 13 none] +G r i none [fstat userland__syscall 295 14 none] [alignment lib 19 13 none] +G r c none [fstat userland__syscall 295 14 none] [translate_address arch__mmu 96 14 none] +G r c none [fstat userland__syscall 295 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [fstat userland__syscall 295 14 none] [get_file userland__process 294 13 none] +G r c none [fstat userland__syscall 295 14 none] [get_cwd userland__process 428 14 none] +G r c none [fstat userland__syscall 295 14 none] [open vfs 255 14 none] +G r c none [fstat userland__syscall 295 14 none] [stat vfs 433 14 none] +G r c none [fstat userland__syscall 295 14 none] [get_backing_device vfs 156 13 none] +G r c none [fstat userland__syscall 295 14 none] [get_unique_id devices 161 13 none] +G r c none [chdir userland__syscall 305 14 none] [get_current_process arch__local 37 13 none] +G r c none [chdir userland__syscall 305 14 none] [get_file userland__process 294 13 none] +G r c none [chdir userland__syscall 305 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [chdir userland__syscall 305 14 none] [stat vfs 433 14 none] +G r c none [chdir userland__syscall 305 14 none] [set_cwd userland__process 418 14 none] +G r c none [ioctl userland__syscall 311 14 none] [get_current_process arch__local 37 13 none] +G r c none [ioctl userland__syscall 311 14 none] [get_common_map userland__process 344 13 none] +G r c none [ioctl userland__syscall 311 14 none] [get_file userland__process 294 13 none] +G r i none [ioctl userland__syscall 311 14 none] [alignment lib 19 13 none] +G r c none [ioctl userland__syscall 311 14 none] [translate_address arch__mmu 96 14 none] +G r c none [ioctl userland__syscall 311 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [ioctl userland__syscall 311 14 none] [io_control vfs 458 14 none] +G r c none [ioctl userland__syscall 311 14 none] [get_termios ipc__pty 113 14 none] +G r c none [ioctl userland__syscall 311 14 none] [set_termios ipc__pty 117 14 none] +G r c none [ioctl userland__syscall 311 14 none] [get_winsize ipc__pty 121 14 none] +G r c none [ioctl userland__syscall 311 14 none] [set_winsize ipc__pty 125 14 none] +G r c none [ioctl userland__syscall 311 14 none] [flush_primary ipc__pty 133 14 none] +G r c none [ioctl userland__syscall 311 14 none] [flush_secondary ipc__pty 137 14 none] +G r c none [ioctl userland__syscall 311 14 none] [stop_primary ipc__pty 149 14 none] +G r c none [ioctl userland__syscall 311 14 none] [stop_secondary ipc__pty 153 14 none] +G r c none [ioctl userland__syscall 311 14 none] [start_primary ipc__pty 141 14 none] +G r c none [ioctl userland__syscall 311 14 none] [start_secondary ipc__pty 145 14 none] +G r c none [sched_yield userland__syscall 319 14 none] [yield_if_able scheduler 74 14 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [get_current_process arch__local 37 13 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [get_capabilities userland__process 589 13 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [convert userland__process 573 13 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [image lib__messages 63 14 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [get_enforcement userland__process 586 13 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [put_line lib__messages 41 14 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [make_active arch__mmu 81 13 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [flush_threads userland__process 223 14 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [flush_files userland__process 329 14 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [get_current_thread arch__local 36 13 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [remove_thread userland__process 218 14 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [issue_exit userland__process 390 14 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [bail scheduler 77 14 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [convert scheduler 135 13 none] +G r c none [delete_thread_cluster userland__syscall 322 14 none] [delete_cluster scheduler 106 13 none] +G r c none [pipe userland__syscall 328 14 none] [get_current_process arch__local 37 13 none] +G r c none [pipe userland__syscall 328 14 none] [get_common_map userland__process 344 13 none] +G r i none [pipe userland__syscall 328 14 none] [alignment lib 19 13 none] +G r c none [pipe userland__syscall 328 14 none] [translate_address arch__mmu 96 14 none] +G r c none [pipe userland__syscall 328 14 none] [create ipc__fifo 47 13 none] +G r c none [pipe userland__syscall 328 14 none] [get_file_count userland__process 263 13 none] +G r c none [pipe userland__syscall 328 14 none] [get_limit userland__process 604 13 none] +G r c none [pipe userland__syscall 328 14 none] [add_file userland__process 252 14 none] +G r c none [pipe userland__syscall 328 14 none] [close userland__process 288 14 none] +G r c none [get_uid userland__syscall 335 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_uid userland__syscall 335 14 none] [get_uid userland__process 459 14 none] +G r c none [rename userland__syscall 339 14 none] [get_current_process arch__local 37 13 none] +G r c none [rename userland__syscall 339 14 none] [get_common_map userland__process 344 13 none] +G r i none [rename userland__syscall 339 14 none] [alignment lib 19 13 none] +G r c none [rename userland__syscall 339 14 none] [translate_address arch__mmu 96 14 none] +G r c none [rename userland__syscall 339 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [rename userland__syscall 339 14 none] [get_cwd userland__process 428 14 none] +G r c none [rename userland__syscall 339 14 none] [get_file userland__process 294 13 none] +G r c none [rename userland__syscall 339 14 none] [rename vfs 331 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_current_process arch__local 37 13 none] +G r c none [sysconf userland__syscall 462 14 none] [get_common_map userland__process 344 13 none] +G r c none [sysconf userland__syscall 462 14 none] [get_statistics memory__physical 55 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_active_core_count arch__hooks 29 13 none] +G r i none [sysconf userland__syscall 462 14 none] [alignment lib 19 13 none] +G r c none [sysconf userland__syscall 462 14 none] [translate_address arch__mmu 96 14 none] +G r c none [sysconf userland__syscall 462 14 none] [list_all userland__process 176 14 none] +G r c none [sysconf userland__syscall 462 14 none] [convert userland__process 573 13 none] +G r c none [sysconf userland__syscall 462 14 none] [list_all vfs 138 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_backing_fs vfs 144 13 none] +G r c none [sysconf userland__syscall 462 14 none] [get_backing_device vfs 156 13 none] +G r c none [sysconf userland__syscall 462 14 none] [fetch_name devices 130 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_mount_point vfs 162 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_block_size vfs 185 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_fragment_size vfs 192 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_size vfs 198 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_inode_count vfs 204 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_max_length vfs 230 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_free_blocks vfs 211 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_hostname networking 38 14 none] +G r c none [sysconf userland__syscall 462 14 none] [list_all scheduler 155 14 none] +G r c none [sysconf userland__syscall 462 14 none] [convert scheduler 132 13 none] +G r c none [sysconf userland__syscall 462 14 none] [convert scheduler 133 13 none] +G r c none [sysconf userland__syscall 462 14 none] [get_niceness scheduler 115 13 none] +G r c none [sysconf userland__syscall 462 14 none] [list_all scheduler 156 14 none] +G r c none [sysconf userland__syscall 462 14 none] [list_interfaces networking__interfaces 101 14 none] +G r c none [sysconf userland__syscall 462 14 none] [dump_logs lib__messages 50 14 none] +G r c none [sysconf userland__syscall 462 14 none] [list_all ipc__filelock 99 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_unique_id devices 161 13 none] +G r c none [sysconf userland__syscall 462 14 none] [get_load_averages scheduler 125 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_statistics arch__mmu 198 14 none] +G r c none [sysconf userland__syscall 462 14 none] [get_total_size ipc__shm 93 14 none] +G r c none [spawn userland__syscall 470 14 none] [get_current_process arch__local 37 13 none] +G r c none [spawn userland__syscall 470 14 none] [create_process userland__process 181 14 none] +G r c none [spawn userland__syscall 470 14 none] [duplicate_fd_table userland__process 277 14 none] +G r c none [spawn userland__syscall 470 14 none] [get_common_map userland__process 344 13 none] +G r i none [spawn userland__syscall 470 14 none] [alignment lib 19 13 none] +G r c none [spawn userland__syscall 470 14 none] [translate_address arch__mmu 96 14 none] +G r c none [spawn userland__syscall 470 14 none] [get_capabilities userland__process 589 13 none] +G r c none [spawn userland__syscall 470 14 none] [convert userland__process 573 13 none] +G r c none [spawn userland__syscall 470 14 none] [image lib__messages 63 14 none] +G r c none [spawn userland__syscall 470 14 none] [get_enforcement userland__process 586 13 none] +G r c none [spawn userland__syscall 470 14 none] [put_line lib__messages 41 14 none] +G r c none [spawn userland__syscall 470 14 none] [make_active arch__mmu 81 13 none] +G r c none [spawn userland__syscall 470 14 none] [flush_threads userland__process 223 14 none] +G r c none [spawn userland__syscall 470 14 none] [flush_files userland__process 329 14 none] +G r c none [spawn userland__syscall 470 14 none] [get_current_thread arch__local 36 13 none] +G r c none [spawn userland__syscall 470 14 none] [remove_thread userland__process 218 14 none] +G r c none [spawn userland__syscall 470 14 none] [issue_exit userland__process 390 14 none] +G r c none [spawn userland__syscall 470 14 none] [bail scheduler 77 14 none] +G r c none [spawn userland__syscall 470 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [spawn userland__syscall 470 14 none] [get_cwd userland__process 428 14 none] +G r c none [spawn userland__syscall 470 14 none] [open vfs 255 14 none] +G r c none [spawn userland__syscall 470 14 none] [check_permissions userland__process 592 13 none] +G r c none [spawn userland__syscall 470 14 none] [close vfs 359 14 none] +G r s argument_arr [spawn userland__syscall 470 14 none] [argument_arrIP userland 20 9 none] +G r s environment_arr [spawn userland__syscall 470 14 none] [environment_arrIP userland 21 9 none] +G r c none [spawn userland__syscall 470 14 none] [c_string_length lib 23 13 none] +G r c none [spawn userland__syscall 470 14 none] [flush_exec_files userland__process 333 14 none] +G r c none [spawn userland__syscall 470 14 none] [reassign_process_addresses userland__process 228 14 none] +G r c none [spawn userland__syscall 470 14 none] [fork_table arch__mmu 70 13 none] +G r c none [spawn userland__syscall 470 14 none] [set_common_map userland__process 338 14 none] +G r c none [spawn userland__syscall 470 14 none] [set_identifier userland__process 443 14 none] +G r c none [spawn userland__syscall 470 14 none] [start_program userland__loader 41 13 none] +G r c none [spawn userland__syscall 470 14 none] [set_capabilities userland__process 590 14 none] +G r c none [get_tid userland__syscall 482 14 none] [get_current_thread arch__local 36 13 none] +G r c none [get_tid userland__syscall 482 14 none] [convert scheduler 132 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [get_current_process arch__local 37 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [get_capabilities userland__process 589 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [convert userland__process 573 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [image lib__messages 63 14 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [get_enforcement userland__process 586 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [put_line lib__messages 41 14 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [make_active arch__mmu 81 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [flush_threads userland__process 223 14 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [flush_files userland__process 329 14 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [get_current_thread arch__local 36 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [remove_thread userland__process 218 14 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [issue_exit userland__process 390 14 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [bail scheduler 77 14 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [create_cluster scheduler 105 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [convert scheduler 135 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [set_scheduling_algorithm scheduler 97 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [set_time_slice scheduler 103 13 none] +G r c none [manage_thread_cluster userland__syscall 488 14 none] [convert scheduler 133 13 none] +G r c none [fcntl userland__syscall 524 14 none] [get_current_process arch__local 37 13 none] +G r c none [fcntl userland__syscall 524 14 none] [get_common_map userland__process 344 13 none] +G r c none [fcntl userland__syscall 524 14 none] [get_file userland__process 294 13 none] +G r c none [fcntl userland__syscall 524 14 none] [duplicate userland__process 269 14 none] +G r c none [fcntl userland__syscall 524 14 none] [get_file_count userland__process 263 13 none] +G r c none [fcntl userland__syscall 524 14 none] [get_limit userland__process 604 13 none] +G r c none [fcntl userland__syscall 524 14 none] [add_file userland__process 252 14 none] +G r c none [fcntl userland__syscall 524 14 none] [set_fd_flags userland__process 314 14 none] +G r c none [fcntl userland__syscall 524 14 none] [get_fd_flags userland__process 303 14 none] +G r c none [fcntl userland__syscall 524 14 none] [is_read_blocking ipc__fifo 51 13 none] +G r c none [fcntl userland__syscall 524 14 none] [is_write_blocking ipc__fifo 53 13 none] +G r c none [fcntl userland__syscall 524 14 none] [is_blocking ipc__socket 81 13 none] +G r c none [fcntl userland__syscall 524 14 none] [is_primary_blocking ipc__pty 97 14 none] +G r c none [fcntl userland__syscall 524 14 none] [is_secondary_blocking ipc__pty 105 14 none] +G r c none [fcntl userland__syscall 524 14 none] [set_read_blocking ipc__fifo 55 14 none] +G r c none [fcntl userland__syscall 524 14 none] [set_write_blocking ipc__fifo 57 14 none] +G r c none [fcntl userland__syscall 524 14 none] [set_blocking ipc__socket 87 14 none] +G r c none [fcntl userland__syscall 524 14 none] [set_primary_blocking ipc__pty 101 14 none] +G r c none [fcntl userland__syscall 524 14 none] [set_secondary_blocking ipc__pty 109 14 none] +G r c none [fcntl userland__syscall 524 14 none] [get_size ipc__fifo 94 14 none] +G r c none [fcntl userland__syscall 524 14 none] [set_size ipc__fifo 102 14 none] +G r i none [fcntl userland__syscall 524 14 none] [alignment lib 19 13 none] +G r c none [fcntl userland__syscall 524 14 none] [translate_address arch__mmu 96 14 none] +G r c none [fcntl userland__syscall 524 14 none] [convert userland__process 579 13 none] +G r c none [fcntl userland__syscall 524 14 none] [could_acquire_lock ipc__filelock 33 14 none] +G r c none [fcntl userland__syscall 524 14 none] [convert userland__process 573 13 none] +G r c none [fcntl userland__syscall 524 14 none] [release_lock ipc__filelock 68 14 none] +G r c none [fcntl userland__syscall 524 14 none] [acquire_lock ipc__filelock 51 14 none] +G r c none [exit_thread userland__syscall 532 14 none] [get_current_process arch__local 37 13 none] +G r c none [exit_thread userland__syscall 532 14 none] [get_current_thread arch__local 36 13 none] +G r c none [exit_thread userland__syscall 532 14 none] [remove_thread userland__process 218 14 none] +G r c none [exit_thread userland__syscall 532 14 none] [bail scheduler 77 14 none] +G r c none [get_random userland__syscall 535 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_random userland__syscall 535 14 none] [get_common_map userland__process 344 13 none] +G r c none [get_random userland__syscall 535 14 none] [get_capabilities userland__process 589 13 none] +G r c none [get_random userland__syscall 535 14 none] [convert userland__process 573 13 none] +G r c none [get_random userland__syscall 535 14 none] [image lib__messages 63 14 none] +G r c none [get_random userland__syscall 535 14 none] [get_enforcement userland__process 586 13 none] +G r c none [get_random userland__syscall 535 14 none] [put_line lib__messages 41 14 none] +G r c none [get_random userland__syscall 535 14 none] [make_active arch__mmu 81 13 none] +G r c none [get_random userland__syscall 535 14 none] [flush_threads userland__process 223 14 none] +G r c none [get_random userland__syscall 535 14 none] [flush_files userland__process 329 14 none] +G r c none [get_random userland__syscall 535 14 none] [get_current_thread arch__local 36 13 none] +G r c none [get_random userland__syscall 535 14 none] [remove_thread userland__process 218 14 none] +G r c none [get_random userland__syscall 535 14 none] [issue_exit userland__process 390 14 none] +G r c none [get_random userland__syscall 535 14 none] [bail scheduler 77 14 none] +G r i none [get_random userland__syscall 535 14 none] [alignment lib 19 13 none] +G r c none [get_random userland__syscall 535 14 none] [translate_address arch__mmu 96 14 none] +G r c none [get_random userland__syscall 535 14 none] [fill_data cryptography__random 22 14 none] +G r c none [mprotect userland__syscall 542 14 none] [get_current_process arch__local 37 13 none] +G r c none [mprotect userland__syscall 542 14 none] [get_common_map userland__process 344 13 none] +G r c none [mprotect userland__syscall 542 14 none] [get_capabilities userland__process 589 13 none] +G r c none [mprotect userland__syscall 542 14 none] [convert userland__process 573 13 none] +G r c none [mprotect userland__syscall 542 14 none] [image lib__messages 63 14 none] +G r c none [mprotect userland__syscall 542 14 none] [get_enforcement userland__process 586 13 none] +G r c none [mprotect userland__syscall 542 14 none] [put_line lib__messages 41 14 none] +G r c none [mprotect userland__syscall 542 14 none] [make_active arch__mmu 81 13 none] +G r c none [mprotect userland__syscall 542 14 none] [flush_threads userland__process 223 14 none] +G r c none [mprotect userland__syscall 542 14 none] [flush_files userland__process 329 14 none] +G r c none [mprotect userland__syscall 542 14 none] [get_current_thread arch__local 36 13 none] +G r c none [mprotect userland__syscall 542 14 none] [remove_thread userland__process 218 14 none] +G r c none [mprotect userland__syscall 542 14 none] [issue_exit userland__process 390 14 none] +G r c none [mprotect userland__syscall 542 14 none] [bail scheduler 77 14 none] +G r c none [mprotect userland__syscall 542 14 none] [remap_range arch__mmu 159 13 none] +G r c none [set_mac_capabilities userland__syscall 565 14 none] [get_current_process arch__local 37 13 none] +G r c none [set_mac_capabilities userland__syscall 565 14 none] [get_capabilities userland__process 589 13 none] +G r c none [set_mac_capabilities userland__syscall 565 14 none] [set_capabilities userland__process 590 14 none] +G r c none [get_mac_capabilities userland__syscall 571 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_mac_capabilities userland__syscall 571 14 none] [get_capabilities userland__process 589 13 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [get_current_process arch__local 37 13 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [get_common_map userland__process 344 13 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [get_capabilities userland__process 589 13 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [convert userland__process 573 13 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [image lib__messages 63 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [get_enforcement userland__process 586 13 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [put_line lib__messages 41 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [make_active arch__mmu 81 13 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [flush_threads userland__process 223 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [flush_files userland__process 329 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [get_current_thread arch__local 36 13 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [remove_thread userland__process 218 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [issue_exit userland__process 390 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [bail scheduler 77 14 none] +G r i none [add_mac_permissions userland__syscall 582 14 none] [alignment lib 19 13 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [translate_address arch__mmu 96 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [open vfs 593 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [add_entity userland__process 597 14 none] +G r c none [add_mac_permissions userland__syscall 582 14 none] [close vfs 359 14 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [get_current_process arch__local 37 13 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [get_capabilities userland__process 589 13 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [convert userland__process 573 13 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [image lib__messages 63 14 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [get_enforcement userland__process 586 13 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [put_line lib__messages 41 14 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [make_active arch__mmu 81 13 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [flush_threads userland__process 223 14 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [flush_files userland__process 329 14 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [get_current_thread arch__local 36 13 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [remove_thread userland__process 218 14 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [issue_exit userland__process 390 14 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [bail scheduler 77 14 none] +G r c none [set_mac_enforcement userland__syscall 593 14 none] [set_enforcement userland__process 587 14 none] +G r c none [mount userland__syscall 605 14 none] [get_current_process arch__local 37 13 none] +G r c none [mount userland__syscall 605 14 none] [get_common_map userland__process 344 13 none] +G r i none [mount userland__syscall 605 14 none] [alignment lib 19 13 none] +G r c none [mount userland__syscall 605 14 none] [translate_address arch__mmu 96 14 none] +G r c none [mount userland__syscall 605 14 none] [get_capabilities userland__process 589 13 none] +G r c none [mount userland__syscall 605 14 none] [convert userland__process 573 13 none] +G r c none [mount userland__syscall 605 14 none] [image lib__messages 63 14 none] +G r c none [mount userland__syscall 605 14 none] [get_enforcement userland__process 586 13 none] +G r c none [mount userland__syscall 605 14 none] [put_line lib__messages 41 14 none] +G r c none [mount userland__syscall 605 14 none] [make_active arch__mmu 81 13 none] +G r c none [mount userland__syscall 605 14 none] [flush_threads userland__process 223 14 none] +G r c none [mount userland__syscall 605 14 none] [flush_files userland__process 329 14 none] +G r c none [mount userland__syscall 605 14 none] [get_current_thread arch__local 36 13 none] +G r c none [mount userland__syscall 605 14 none] [remove_thread userland__process 218 14 none] +G r c none [mount userland__syscall 605 14 none] [issue_exit userland__process 390 14 none] +G r c none [mount userland__syscall 605 14 none] [bail scheduler 77 14 none] +G r c none [mount userland__syscall 605 14 none] [get_mount vfs 126 14 none] +G r c none [mount userland__syscall 605 14 none] [remount vfs 174 14 none] +G r c none [mount userland__syscall 605 14 none] [mount vfs 104 14 none] +G r c none [umount userland__syscall 617 14 none] [get_current_process arch__local 37 13 none] +G r c none [umount userland__syscall 617 14 none] [get_common_map userland__process 344 13 none] +G r i none [umount userland__syscall 617 14 none] [alignment lib 19 13 none] +G r c none [umount userland__syscall 617 14 none] [translate_address arch__mmu 96 14 none] +G r c none [umount userland__syscall 617 14 none] [get_capabilities userland__process 589 13 none] +G r c none [umount userland__syscall 617 14 none] [convert userland__process 573 13 none] +G r c none [umount userland__syscall 617 14 none] [image lib__messages 63 14 none] +G r c none [umount userland__syscall 617 14 none] [get_enforcement userland__process 586 13 none] +G r c none [umount userland__syscall 617 14 none] [put_line lib__messages 41 14 none] +G r c none [umount userland__syscall 617 14 none] [make_active arch__mmu 81 13 none] +G r c none [umount userland__syscall 617 14 none] [flush_threads userland__process 223 14 none] +G r c none [umount userland__syscall 617 14 none] [flush_files userland__process 329 14 none] +G r c none [umount userland__syscall 617 14 none] [get_current_thread arch__local 36 13 none] +G r c none [umount userland__syscall 617 14 none] [remove_thread userland__process 218 14 none] +G r c none [umount userland__syscall 617 14 none] [issue_exit userland__process 390 14 none] +G r c none [umount userland__syscall 617 14 none] [bail scheduler 77 14 none] +G r c none [umount userland__syscall 617 14 none] [unmount vfs 119 14 none] +G r c none [readlink userland__syscall 625 14 none] [get_current_process arch__local 37 13 none] +G r c none [readlink userland__syscall 625 14 none] [get_common_map userland__process 344 13 none] +G r i none [readlink userland__syscall 625 14 none] [alignment lib 19 13 none] +G r c none [readlink userland__syscall 625 14 none] [translate_address arch__mmu 96 14 none] +G r c none [readlink userland__syscall 625 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [readlink userland__syscall 625 14 none] [get_cwd userland__process 428 14 none] +G r c none [readlink userland__syscall 625 14 none] [get_file userland__process 294 13 none] +G r c none [readlink userland__syscall 625 14 none] [open vfs 255 14 none] +G r c none [readlink userland__syscall 625 14 none] [check_permissions userland__process 592 13 none] +G r c none [readlink userland__syscall 625 14 none] [convert userland__process 573 13 none] +G r c none [readlink userland__syscall 625 14 none] [image lib__messages 63 14 none] +G r c none [readlink userland__syscall 625 14 none] [get_enforcement userland__process 586 13 none] +G r c none [readlink userland__syscall 625 14 none] [put_line lib__messages 41 14 none] +G r c none [readlink userland__syscall 625 14 none] [make_active arch__mmu 81 13 none] +G r c none [readlink userland__syscall 625 14 none] [flush_threads userland__process 223 14 none] +G r c none [readlink userland__syscall 625 14 none] [flush_files userland__process 329 14 none] +G r c none [readlink userland__syscall 625 14 none] [get_current_thread arch__local 36 13 none] +G r c none [readlink userland__syscall 625 14 none] [remove_thread userland__process 218 14 none] +G r c none [readlink userland__syscall 625 14 none] [issue_exit userland__process 390 14 none] +G r c none [readlink userland__syscall 625 14 none] [bail scheduler 77 14 none] +G r c none [readlink userland__syscall 625 14 none] [read_symbolic_link vfs 384 14 none] +G r c none [readlink userland__syscall 625 14 none] [close vfs 359 14 none] +G r c none [getdents userland__syscall 656 14 none] [get_current_process arch__local 37 13 none] +G r c none [getdents userland__syscall 656 14 none] [get_common_map userland__process 344 13 none] +G r c none [getdents userland__syscall 656 14 none] [get_file userland__process 294 13 none] +G r i none [getdents userland__syscall 656 14 none] [alignment lib 19 13 none] +G r c none [getdents userland__syscall 656 14 none] [translate_address arch__mmu 96 14 none] +G r c none [getdents userland__syscall 656 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [getdents userland__syscall 656 14 none] [read_entries vfs 369 14 none] +G r c none [sync userland__syscall 664 14 none] [synchronize vfs 609 14 none] +G r c none [makenode userland__syscall 667 14 none] [get_current_process arch__local 37 13 none] +G r c none [makenode userland__syscall 667 14 none] [get_common_map userland__process 344 13 none] +G r i none [makenode userland__syscall 667 14 none] [alignment lib 19 13 none] +G r c none [makenode userland__syscall 667 14 none] [translate_address arch__mmu 96 14 none] +G r c none [makenode userland__syscall 667 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [makenode userland__syscall 667 14 none] [get_cwd userland__process 428 14 none] +G r c none [makenode userland__syscall 667 14 none] [get_file userland__process 294 13 none] +G r c none [makenode userland__syscall 667 14 none] [get_umask userland__process 514 14 none] +G r c none [makenode userland__syscall 667 14 none] [apply_umask vfs 635 13 none] +G r c none [makenode userland__syscall 667 14 none] [create_node vfs 276 14 none] +G r c none [unlink userland__syscall 677 14 none] [get_current_process arch__local 37 13 none] +G r c none [unlink userland__syscall 677 14 none] [get_common_map userland__process 344 13 none] +G r i none [unlink userland__syscall 677 14 none] [alignment lib 19 13 none] +G r c none [unlink userland__syscall 677 14 none] [translate_address arch__mmu 96 14 none] +G r c none [unlink userland__syscall 677 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [unlink userland__syscall 677 14 none] [get_cwd userland__process 428 14 none] +G r c none [unlink userland__syscall 677 14 none] [get_file userland__process 294 13 none] +G r c none [unlink userland__syscall 677 14 none] [unlink vfs 348 14 none] +G r c none [truncate userland__syscall 685 14 none] [get_current_process arch__local 37 13 none] +G r c none [truncate userland__syscall 685 14 none] [get_file userland__process 294 13 none] +G r c none [truncate userland__syscall 685 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [truncate userland__syscall 685 14 none] [truncate vfs 445 14 none] +G r c none [bind userland__syscall 711 14 none] [get_current_process arch__local 37 13 none] +G r c none [bind userland__syscall 711 14 none] [get_file userland__process 294 13 none] +G r c none [bind userland__syscall 711 14 none] [get_common_map userland__process 344 13 none] +G r i none [bind userland__syscall 711 14 none] [alignment lib 19 13 none] +G r c none [bind userland__syscall 711 14 none] [translate_address arch__mmu 96 14 none] +G r c none [bind userland__syscall 711 14 none] [get_domain ipc__socket 63 13 none] +G r c none [bind userland__syscall 711 14 none] [bind ipc__socket 197 13 none] +G r c none [bind userland__syscall 711 14 none] [bind ipc__socket 300 13 none] +G r c none [bind userland__syscall 711 14 none] [c_string_length lib 23 13 none] +G r c none [bind userland__syscall 711 14 none] [bind ipc__socket 405 13 none] +G r c none [symlink userland__syscall 719 14 none] [get_current_process arch__local 37 13 none] +G r c none [symlink userland__syscall 719 14 none] [get_common_map userland__process 344 13 none] +G r i none [symlink userland__syscall 719 14 none] [alignment lib 19 13 none] +G r c none [symlink userland__syscall 719 14 none] [translate_address arch__mmu 96 14 none] +G r c none [symlink userland__syscall 719 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [symlink userland__syscall 719 14 none] [get_cwd userland__process 428 14 none] +G r c none [symlink userland__syscall 719 14 none] [get_file userland__process 294 13 none] +G r c none [symlink userland__syscall 719 14 none] [create_symbolic_link vfs 294 14 none] +G r c none [connect userland__syscall 730 14 none] [get_current_process arch__local 37 13 none] +G r c none [connect userland__syscall 730 14 none] [get_file userland__process 294 13 none] +G r c none [connect userland__syscall 730 14 none] [get_common_map userland__process 344 13 none] +G r i none [connect userland__syscall 730 14 none] [alignment lib 19 13 none] +G r c none [connect userland__syscall 730 14 none] [translate_address arch__mmu 96 14 none] +G r c none [connect userland__syscall 730 14 none] [get_domain ipc__socket 63 13 none] +G r c none [connect userland__syscall 730 14 none] [connect ipc__socket 210 13 none] +G r c none [connect userland__syscall 730 14 none] [connect ipc__socket 313 13 none] +G r c none [connect userland__syscall 730 14 none] [c_string_length lib 23 13 none] +G r c none [connect userland__syscall 730 14 none] [connect ipc__socket 415 13 none] +G r c none [open_pty userland__syscall 738 14 none] [get_current_process arch__local 37 13 none] +G r c none [open_pty userland__syscall 738 14 none] [get_common_map userland__process 344 13 none] +G r i none [open_pty userland__syscall 738 14 none] [alignment lib 19 13 none] +G r c none [open_pty userland__syscall 738 14 none] [translate_address arch__mmu 96 14 none] +G r c none [open_pty userland__syscall 738 14 none] [create ipc__pty 43 13 none] +G r c none [open_pty userland__syscall 738 14 none] [get_file_count userland__process 263 13 none] +G r c none [open_pty userland__syscall 738 14 none] [get_limit userland__process 604 13 none] +G r c none [open_pty userland__syscall 738 14 none] [add_file userland__process 252 14 none] +G r c none [open_pty userland__syscall 738 14 none] [close ipc__pty 47 14 none] +G r c none [open_pty userland__syscall 738 14 none] [close userland__process 288 14 none] +G r c none [fsync userland__syscall 744 14 none] [get_current_process arch__local 37 13 none] +G r c none [fsync userland__syscall 744 14 none] [get_file userland__process 294 13 none] +G r c none [fsync userland__syscall 744 14 none] [synchronize vfs 511 13 none] +G r c none [link userland__syscall 751 14 none] [get_current_process arch__local 37 13 none] +G r c none [link userland__syscall 751 14 none] [get_common_map userland__process 344 13 none] +G r i none [link userland__syscall 751 14 none] [alignment lib 19 13 none] +G r c none [link userland__syscall 751 14 none] [translate_address arch__mmu 96 14 none] +G r c none [link userland__syscall 751 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [link userland__syscall 751 14 none] [get_cwd userland__process 428 14 none] +G r c none [link userland__syscall 751 14 none] [get_file userland__process 294 13 none] +G r c none [link userland__syscall 751 14 none] [create_hard_link vfs 312 14 none] +G r c none [ptrace userland__syscall 763 14 none] [get_current_process arch__local 37 13 none] +G r c none [ptrace userland__syscall 763 14 none] [convert userland__process 579 13 none] +G r c none [ptrace userland__syscall 763 14 none] [get_parent userland__process 437 13 none] +G r c none [ptrace userland__syscall 763 14 none] [get_capabilities userland__process 589 13 none] +G r c none [ptrace userland__syscall 763 14 none] [convert userland__process 573 13 none] +G r c none [ptrace userland__syscall 763 14 none] [image lib__messages 63 14 none] +G r c none [ptrace userland__syscall 763 14 none] [get_enforcement userland__process 586 13 none] +G r c none [ptrace userland__syscall 763 14 none] [put_line lib__messages 41 14 none] +G r c none [ptrace userland__syscall 763 14 none] [make_active arch__mmu 81 13 none] +G r c none [ptrace userland__syscall 763 14 none] [flush_threads userland__process 223 14 none] +G r c none [ptrace userland__syscall 763 14 none] [flush_files userland__process 329 14 none] +G r c none [ptrace userland__syscall 763 14 none] [get_current_thread arch__local 36 13 none] +G r c none [ptrace userland__syscall 763 14 none] [remove_thread userland__process 218 14 none] +G r c none [ptrace userland__syscall 763 14 none] [issue_exit userland__process 390 14 none] +G r c none [ptrace userland__syscall 763 14 none] [bail scheduler 77 14 none] +G r c none [ptrace userland__syscall 763 14 none] [set_traced_info userland__process 380 14 none] +G r c none [listen userland__syscall 772 14 none] [get_current_process arch__local 37 13 none] +G r c none [listen userland__syscall 772 14 none] [get_file userland__process 294 13 none] +G r c none [listen userland__syscall 772 14 none] [get_type ipc__socket 70 13 none] +G r c none [listen userland__syscall 772 14 none] [listen ipc__socket 152 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [get_current_process arch__local 37 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [get_common_map userland__process 344 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [get_file userland__process 294 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [get_type ipc__socket 70 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [accept_connection ipc__socket 159 14 none] +G r i none [sys_accept userland__syscall 779 14 none] [alignment lib 19 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [translate_address arch__mmu 96 14 none] +G r c none [sys_accept userland__syscall 779 14 none] [get_domain ipc__socket 63 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [accept_connection ipc__socket 222 14 none] +G r c none [sys_accept userland__syscall 779 14 none] [accept_connection ipc__socket 326 14 none] +G r c none [sys_accept userland__syscall 779 14 none] [c_string_length lib 23 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [accept_connection ipc__socket 425 14 none] +G r c none [sys_accept userland__syscall 779 14 none] [get_file_count userland__process 263 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [get_limit userland__process 604 13 none] +G r c none [sys_accept userland__syscall 779 14 none] [add_file userland__process 252 14 none] +G r c none [sys_accept userland__syscall 779 14 none] [set_fd_flags userland__process 314 14 none] +G r c none [sys_accept userland__syscall 779 14 none] [close ipc__socket 75 14 none] +G r c none [sys_accept userland__syscall 779 14 none] [close userland__process 288 14 none] +G r c none [get_rlimit userland__syscall 794 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_rlimit userland__syscall 794 14 none] [get_limit userland__process 604 13 none] +G r c none [set_rlimit userland__syscall 800 14 none] [get_current_process arch__local 37 13 none] +G r c none [set_rlimit userland__syscall 800 14 none] [set_limit userland__process 608 14 none] +G r c none [faccess userland__syscall 811 14 none] [get_current_process arch__local 37 13 none] +G r c none [faccess userland__syscall 811 14 none] [get_common_map userland__process 344 13 none] +G r i none [faccess userland__syscall 811 14 none] [alignment lib 19 13 none] +G r c none [faccess userland__syscall 811 14 none] [translate_address arch__mmu 96 14 none] +G r c none [faccess userland__syscall 811 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [faccess userland__syscall 811 14 none] [get_cwd userland__process 428 14 none] +G r c none [faccess userland__syscall 811 14 none] [get_file userland__process 294 13 none] +G r c none [faccess userland__syscall 811 14 none] [open vfs 255 14 none] +G r c none [faccess userland__syscall 811 14 none] [get_uid userland__process 459 14 none] +G r c none [faccess userland__syscall 811 14 none] [check_access vfs 552 14 none] +G r c none [ppoll userland__syscall 833 14 none] [get_current_process arch__local 37 13 none] +G r c none [ppoll userland__syscall 833 14 none] [get_common_map userland__process 344 13 none] +G r i none [ppoll userland__syscall 833 14 none] [alignment lib 19 13 none] +G r c none [ppoll userland__syscall 833 14 none] [translate_address arch__mmu 96 14 none] +G r c none [ppoll userland__syscall 833 14 none] [get_masked_signals userland__process 525 14 none] +G r c none [ppoll userland__syscall 833 14 none] [set_masked_signals userland__process 531 14 none] +G r c none [ppoll userland__syscall 833 14 none] [get_monotonic_time arch__clocks 31 14 none] +G r c none [ppoll userland__syscall 833 14 none] [increment lib__time 37 14 none] +G r c none [ppoll userland__syscall 833 14 none] [get_file userland__process 294 13 none] +G r c none [ppoll userland__syscall 833 14 none] [poll_reader ipc__fifo 61 14 none] +G r c none [ppoll userland__syscall 833 14 none] [poll_writer ipc__fifo 70 14 none] +G r c none [ppoll userland__syscall 833 14 none] [poll_primary ipc__pty 82 14 none] +G r c none [ppoll userland__syscall 833 14 none] [poll_secondary ipc__pty 90 14 none] +G r c none [ppoll userland__syscall 833 14 none] [poll ipc__socket 96 14 none] +G r c none [ppoll userland__syscall 833 14 none] [poll vfs 492 14 none] +G r c none [ppoll userland__syscall 833 14 none] [is_greater_equal lib__time 63 13 none] +G r c none [ppoll userland__syscall 833 14 none] [yield_if_able scheduler 74 14 none] +G r c none [get_euid userland__syscall 842 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_euid userland__syscall 842 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [set_uids userland__syscall 845 14 none] [get_current_process arch__local 37 13 none] +G r c none [set_uids userland__syscall 845 14 none] [get_capabilities userland__process 589 13 none] +G r c none [set_uids userland__syscall 845 14 none] [set_effective_uid userland__process 474 14 none] +G r c none [set_uids userland__syscall 845 14 none] [set_uid userland__process 464 14 none] +G r c none [set_uids userland__syscall 845 14 none] [get_uid userland__process 459 14 none] +G r c none [fchmod userland__syscall 852 14 none] [get_current_process arch__local 37 13 none] +G r c none [fchmod userland__syscall 852 14 none] [get_common_map userland__process 344 13 none] +G r i none [fchmod userland__syscall 852 14 none] [alignment lib 19 13 none] +G r c none [fchmod userland__syscall 852 14 none] [translate_address arch__mmu 96 14 none] +G r c none [fchmod userland__syscall 852 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [fchmod userland__syscall 852 14 none] [get_file userland__process 294 13 none] +G r c none [fchmod userland__syscall 852 14 none] [get_cwd userland__process 428 14 none] +G r c none [fchmod userland__syscall 852 14 none] [open vfs 255 14 none] +G r c none [fchmod userland__syscall 852 14 none] [check_permissions userland__process 592 13 none] +G r c none [fchmod userland__syscall 852 14 none] [change_mode vfs 522 14 none] +G r c none [umask userland__syscall 862 14 none] [get_current_process arch__local 37 13 none] +G r c none [umask userland__syscall 862 14 none] [get_umask userland__process 514 14 none] +G r c none [umask userland__syscall 862 14 none] [set_umask userland__process 519 14 none] +G r c none [reboot userland__syscall 871 14 none] [get_current_process arch__local 37 13 none] +G r c none [reboot userland__syscall 871 14 none] [get_capabilities userland__process 589 13 none] +G r c none [reboot userland__syscall 871 14 none] [convert userland__process 573 13 none] +G r c none [reboot userland__syscall 871 14 none] [image lib__messages 63 14 none] +G r c none [reboot userland__syscall 871 14 none] [get_enforcement userland__process 586 13 none] +G r c none [reboot userland__syscall 871 14 none] [put_line lib__messages 41 14 none] +G r c none [reboot userland__syscall 871 14 none] [make_active arch__mmu 81 13 none] +G r c none [reboot userland__syscall 871 14 none] [flush_threads userland__process 223 14 none] +G r c none [reboot userland__syscall 871 14 none] [flush_files userland__process 329 14 none] +G r c none [reboot userland__syscall 871 14 none] [get_current_thread arch__local 36 13 none] +G r c none [reboot userland__syscall 871 14 none] [remove_thread userland__process 218 14 none] +G r c none [reboot userland__syscall 871 14 none] [issue_exit userland__process 390 14 none] +G r c none [reboot userland__syscall 871 14 none] [bail scheduler 77 14 none] +G r c none [reboot userland__syscall 871 14 none] [halt arch__power 22 13 none] +G r c none [reboot userland__syscall 871 14 none] [poweroff arch__power 28 13 none] +G r c none [reboot userland__syscall 871 14 none] [reboot arch__power 25 13 none] +G r c none [reboot userland__syscall 871 14 none] [hard_panic lib__panic 32 14 none] +G r c none [fchown userland__syscall 878 14 none] [get_current_process arch__local 37 13 none] +G r c none [fchown userland__syscall 878 14 none] [get_common_map userland__process 344 13 none] +G r i none [fchown userland__syscall 878 14 none] [alignment lib 19 13 none] +G r c none [fchown userland__syscall 878 14 none] [translate_address arch__mmu 96 14 none] +G r c none [fchown userland__syscall 878 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [fchown userland__syscall 878 14 none] [get_file userland__process 294 13 none] +G r c none [fchown userland__syscall 878 14 none] [get_cwd userland__process 428 14 none] +G r c none [fchown userland__syscall 878 14 none] [open vfs 255 14 none] +G r c none [fchown userland__syscall 878 14 none] [check_permissions userland__process 592 13 none] +G r c none [fchown userland__syscall 878 14 none] [change_owner vfs 535 14 none] +G r c none [pread userland__syscall 889 14 none] [get_current_process arch__local 37 13 none] +G r c none [pread userland__syscall 889 14 none] [get_common_map userland__process 344 13 none] +G r c none [pread userland__syscall 889 14 none] [get_file userland__process 294 13 none] +G r i none [pread userland__syscall 889 14 none] [alignment lib 19 13 none] +G r c none [pread userland__syscall 889 14 none] [translate_address arch__mmu 96 14 none] +G r c none [pread userland__syscall 889 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [pread userland__syscall 889 14 none] [read vfs 400 14 none] +G r c none [pwrite userland__syscall 898 14 none] [get_current_process arch__local 37 13 none] +G r c none [pwrite userland__syscall 898 14 none] [get_common_map userland__process 344 13 none] +G r c none [pwrite userland__syscall 898 14 none] [get_file userland__process 294 13 none] +G r i none [pwrite userland__syscall 898 14 none] [alignment lib 19 13 none] +G r c none [pwrite userland__syscall 898 14 none] [translate_address arch__mmu 96 14 none] +G r c none [pwrite userland__syscall 898 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [pwrite userland__syscall 898 14 none] [get_limit userland__process 604 13 none] +G r c none [pwrite userland__syscall 898 14 none] [write vfs 418 14 none] +G r c none [get_sock_name userland__syscall 906 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_sock_name userland__syscall 906 14 none] [get_common_map userland__process 344 13 none] +G r c none [get_sock_name userland__syscall 906 14 none] [get_file userland__process 294 13 none] +G r i none [get_sock_name userland__syscall 906 14 none] [alignment lib 19 13 none] +G r c none [get_sock_name userland__syscall 906 14 none] [translate_address arch__mmu 96 14 none] +G r c none [get_sock_name userland__syscall 906 14 none] [get_domain ipc__socket 63 13 none] +G r c none [get_sock_name userland__syscall 906 14 none] [get_bound ipc__socket 173 14 none] +G r c none [get_sock_name userland__syscall 906 14 none] [get_bound ipc__socket 276 14 none] +G r c none [get_sock_name userland__syscall 906 14 none] [c_string_length lib 23 13 none] +G r c none [get_sock_name userland__syscall 906 14 none] [get_bound ipc__socket 381 14 none] +G r c none [get_peer_name userland__syscall 913 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_peer_name userland__syscall 913 14 none] [get_common_map userland__process 344 13 none] +G r c none [get_peer_name userland__syscall 913 14 none] [get_file userland__process 294 13 none] +G r i none [get_peer_name userland__syscall 913 14 none] [alignment lib 19 13 none] +G r c none [get_peer_name userland__syscall 913 14 none] [translate_address arch__mmu 96 14 none] +G r c none [get_peer_name userland__syscall 913 14 none] [get_domain ipc__socket 63 13 none] +G r c none [get_peer_name userland__syscall 913 14 none] [get_peer ipc__socket 185 14 none] +G r c none [get_peer_name userland__syscall 913 14 none] [get_peer ipc__socket 288 14 none] +G r c none [get_peer_name userland__syscall 913 14 none] [c_string_length lib 23 13 none] +G r c none [get_peer_name userland__syscall 913 14 none] [get_peer ipc__socket 393 14 none] +G r c none [shutdown userland__syscall 923 14 none] [get_current_process arch__local 37 13 none] +G r c none [shutdown userland__syscall 923 14 none] [get_file userland__process 294 13 none] +G r c none [shutdown userland__syscall 923 14 none] [shutdown ipc__socket 136 13 none] +G r c none [futex userland__syscall 939 14 none] [get_current_process arch__local 37 13 none] +G r c none [futex userland__syscall 939 14 none] [get_common_map userland__process 344 13 none] +G r i none [futex userland__syscall 939 14 none] [alignment lib 19 13 none] +G r c none [futex userland__syscall 939 14 none] [translate_address arch__mmu 96 14 none] +G r s element_arr [futex userland__syscall 939 14 none] [element_arrIP ipc__futex 32 9 none] +G r c none [futex userland__syscall 939 14 none] [wait ipc__futex 39 13 none] +G r c none [futex userland__syscall 939 14 none] [wake ipc__futex 46 14 none] +G r c none [clock userland__syscall 953 14 none] [get_current_process arch__local 37 13 none] +G r c none [clock userland__syscall 953 14 none] [get_common_map userland__process 344 13 none] +G r i none [clock userland__syscall 953 14 none] [alignment lib 19 13 none] +G r c none [clock userland__syscall 953 14 none] [translate_address arch__mmu 96 14 none] +G r c none [clock userland__syscall 953 14 none] [get_capabilities userland__process 589 13 none] +G r c none [clock userland__syscall 953 14 none] [convert userland__process 573 13 none] +G r c none [clock userland__syscall 953 14 none] [image lib__messages 63 14 none] +G r c none [clock userland__syscall 953 14 none] [get_enforcement userland__process 586 13 none] +G r c none [clock userland__syscall 953 14 none] [put_line lib__messages 41 14 none] +G r c none [clock userland__syscall 953 14 none] [make_active arch__mmu 81 13 none] +G r c none [clock userland__syscall 953 14 none] [flush_threads userland__process 223 14 none] +G r c none [clock userland__syscall 953 14 none] [flush_files userland__process 329 14 none] +G r c none [clock userland__syscall 953 14 none] [get_current_thread arch__local 36 13 none] +G r c none [clock userland__syscall 953 14 none] [remove_thread userland__process 218 14 none] +G r c none [clock userland__syscall 953 14 none] [issue_exit userland__process 390 14 none] +G r c none [clock userland__syscall 953 14 none] [bail scheduler 77 14 none] +G r c none [clock userland__syscall 953 14 none] [get_monotonic_resolution arch__clocks 27 14 none] +G r c none [clock userland__syscall 953 14 none] [get_real_time_resolution arch__clocks 35 14 none] +G r c none [clock userland__syscall 953 14 none] [get_monotonic_time arch__clocks 31 14 none] +G r c none [clock userland__syscall 953 14 none] [get_real_time arch__clocks 39 14 none] +G r c none [clock userland__syscall 953 14 none] [set_real_time arch__clocks 43 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [get_current_process arch__local 37 13 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [get_common_map userland__process 344 13 none] +G r i none [clock_nanosleep userland__syscall 962 14 none] [alignment lib 19 13 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [translate_address arch__mmu 96 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [get_capabilities userland__process 589 13 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [convert userland__process 573 13 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [image lib__messages 63 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [get_enforcement userland__process 586 13 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [put_line lib__messages 41 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [make_active arch__mmu 81 13 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [flush_threads userland__process 223 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [flush_files userland__process 329 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [get_current_thread arch__local 36 13 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [remove_thread userland__process 218 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [issue_exit userland__process 390 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [bail scheduler 77 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [get_monotonic_time arch__clocks 31 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [get_real_time arch__clocks 39 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [increment lib__time 37 14 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [is_greater_equal lib__time 63 13 none] +G r c none [clock_nanosleep userland__syscall 962 14 none] [yield_if_able scheduler 74 14 none] +G r c none [get_rusage userland__syscall 978 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_rusage userland__syscall 978 14 none] [get_common_map userland__process 344 13 none] +G r i none [get_rusage userland__syscall 978 14 none] [alignment lib 19 13 none] +G r c none [get_rusage userland__syscall 978 14 none] [translate_address arch__mmu 96 14 none] +G r c none [get_rusage userland__syscall 978 14 none] [get_runtime_times userland__process 188 14 none] +G r c none [get_rusage userland__syscall 978 14 none] [get_children_runtimes userland__process 194 14 none] +G r c none [recvfrom userland__syscall 984 14 none] [get_current_process arch__local 37 13 none] +G r c none [recvfrom userland__syscall 984 14 none] [get_common_map userland__process 344 13 none] +G r c none [recvfrom userland__syscall 984 14 none] [get_file userland__process 294 13 none] +G r i none [recvfrom userland__syscall 984 14 none] [alignment lib 19 13 none] +G r c none [recvfrom userland__syscall 984 14 none] [translate_address arch__mmu 96 14 none] +G r c none [recvfrom userland__syscall 984 14 none] [get_type ipc__socket 70 13 none] +G r c none [recvfrom userland__syscall 984 14 none] [get_domain ipc__socket 63 13 none] +G r c none [recvfrom userland__syscall 984 14 none] [read ipc__socket 239 14 none] +G r c none [recvfrom userland__syscall 984 14 none] [read ipc__socket 343 14 none] +G r c none [recvfrom userland__syscall 984 14 none] [c_string_length lib 23 13 none] +G r c none [recvfrom userland__syscall 984 14 none] [read ipc__socket 441 14 none] +G r c none [recvfrom userland__syscall 984 14 none] [read ipc__socket 109 14 none] +G r c none [sendto userland__syscall 994 14 none] [get_current_process arch__local 37 13 none] +G r c none [sendto userland__syscall 994 14 none] [get_common_map userland__process 344 13 none] +G r c none [sendto userland__syscall 994 14 none] [get_file userland__process 294 13 none] +G r i none [sendto userland__syscall 994 14 none] [alignment lib 19 13 none] +G r c none [sendto userland__syscall 994 14 none] [translate_address arch__mmu 96 14 none] +G r c none [sendto userland__syscall 994 14 none] [get_type ipc__socket 70 13 none] +G r c none [sendto userland__syscall 994 14 none] [get_domain ipc__socket 63 13 none] +G r c none [sendto userland__syscall 994 14 none] [write ipc__socket 257 14 none] +G r c none [sendto userland__syscall 994 14 none] [write ipc__socket 361 14 none] +G r c none [sendto userland__syscall 994 14 none] [c_string_length lib 23 13 none] +G r c none [sendto userland__syscall 994 14 none] [write ipc__socket 457 14 none] +G r c none [sendto userland__syscall 994 14 none] [write ipc__socket 121 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [get_current_process arch__local 37 13 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [get_common_map userland__process 344 13 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [get_file userland__process 294 13 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [get_capabilities userland__process 589 13 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [convert userland__process 573 13 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [image lib__messages 63 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [get_enforcement userland__process 586 13 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [put_line lib__messages 41 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [make_active arch__mmu 81 13 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [flush_threads userland__process 223 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [flush_files userland__process 329 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [get_current_thread arch__local 36 13 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [remove_thread userland__process 218 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [issue_exit userland__process 390 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [bail scheduler 77 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [stat vfs 433 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [from_unique_id devices 165 13 none] +G r i none [config_netinterface userland__syscall 1015 14 none] [alignment lib 19 13 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [translate_address arch__mmu 96 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [block networking__interfaces 56 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [modify_addresses networking__interfaces 72 14 none] +G r c none [config_netinterface userland__syscall 1015 14 none] [modify_addresses networking__interfaces 79 14 none] +G r c none [utimes userland__syscall 1022 14 none] [get_current_process arch__local 37 13 none] +G r c none [utimes userland__syscall 1022 14 none] [get_common_map userland__process 344 13 none] +G r i none [utimes userland__syscall 1022 14 none] [alignment lib 19 13 none] +G r c none [utimes userland__syscall 1022 14 none] [translate_address arch__mmu 96 14 none] +G r c none [utimes userland__syscall 1022 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [utimes userland__syscall 1022 14 none] [get_file userland__process 294 13 none] +G r c none [utimes userland__syscall 1022 14 none] [get_cwd userland__process 428 14 none] +G r c none [utimes userland__syscall 1022 14 none] [open vfs 255 14 none] +G r c none [utimes userland__syscall 1022 14 none] [check_permissions userland__process 592 13 none] +G r c none [utimes userland__syscall 1022 14 none] [change_access_times vfs 571 14 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [get_current_process arch__local 37 13 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [get_capabilities userland__process 589 13 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [convert userland__process 573 13 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [image lib__messages 63 14 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [get_enforcement userland__process 586 13 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [put_line lib__messages 41 14 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [make_active arch__mmu 81 13 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [flush_threads userland__process 223 14 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [flush_files userland__process 329 14 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [get_current_thread arch__local 36 13 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [remove_thread userland__process 218 14 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [issue_exit userland__process 390 14 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [bail scheduler 77 14 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [create_cluster scheduler 105 13 none] +G r c none [create_tcluster userland__syscall 1031 14 none] [convert scheduler 133 13 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [get_current_process arch__local 37 13 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [convert scheduler 135 13 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [convert scheduler 134 13 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [get_capabilities userland__process 589 13 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [convert userland__process 573 13 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [image lib__messages 63 14 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [get_enforcement userland__process 586 13 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [put_line lib__messages 41 14 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [make_active arch__mmu 81 13 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [flush_threads userland__process 223 14 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [flush_files userland__process 329 14 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [get_current_thread arch__local 36 13 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [remove_thread userland__process 218 14 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [issue_exit userland__process 390 14 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [bail scheduler 77 14 none] +G r c none [switch_tcluster userland__syscall 1035 14 none] [switch_cluster scheduler 108 13 none] +G r c none [sigprocmask userland__syscall 1044 14 none] [get_current_process arch__local 37 13 none] +G r c none [sigprocmask userland__syscall 1044 14 none] [get_common_map userland__process 344 13 none] +G r c none [sigprocmask userland__syscall 1044 14 none] [get_masked_signals userland__process 525 14 none] +G r i none [sigprocmask userland__syscall 1044 14 none] [alignment lib 19 13 none] +G r c none [sigprocmask userland__syscall 1044 14 none] [translate_address arch__mmu 96 14 none] +G r c none [sigprocmask userland__syscall 1044 14 none] [set_masked_signals userland__process 531 14 none] +G r c none [sigaction userland__syscall 1059 14 none] [get_current_process arch__local 37 13 none] +G r c none [sigaction userland__syscall 1059 14 none] [get_common_map userland__process 344 13 none] +G r i none [sigaction userland__syscall 1059 14 none] [alignment lib 19 13 none] +G r c none [sigaction userland__syscall 1059 14 none] [translate_address arch__mmu 96 14 none] +G r c none [sigaction userland__syscall 1059 14 none] [get_signal_handler userland__process 542 14 none] +G r c none [sigaction userland__syscall 1059 14 none] [set_signal_handler userland__process 551 14 none] +G r c none [sigaction userland__syscall 1059 14 none] [get_masked_signals userland__process 525 14 none] +G r c none [sigaction userland__syscall 1059 14 none] [set_masked_signals userland__process 531 14 none] +G r c none [send_signal userland__syscall 1066 14 none] [get_current_process arch__local 37 13 none] +G r c none [send_signal userland__syscall 1066 14 none] [convert userland__process 579 13 none] +G r c none [send_signal userland__syscall 1066 14 none] [get_capabilities userland__process 589 13 none] +G r c none [send_signal userland__syscall 1066 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [send_signal userland__syscall 1066 14 none] [get_uid userland__process 459 14 none] +G r c none [send_signal userland__syscall 1066 14 none] [raise_signal userland__process 536 14 none] +G r c none [get_prio userland__syscall 1076 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_prio userland__syscall 1076 14 none] [get_capabilities userland__process 589 13 none] +G r c none [get_prio userland__syscall 1076 14 none] [convert userland__process 573 13 none] +G r c none [get_prio userland__syscall 1076 14 none] [image lib__messages 63 14 none] +G r c none [get_prio userland__syscall 1076 14 none] [get_enforcement userland__process 586 13 none] +G r c none [get_prio userland__syscall 1076 14 none] [put_line lib__messages 41 14 none] +G r c none [get_prio userland__syscall 1076 14 none] [make_active arch__mmu 81 13 none] +G r c none [get_prio userland__syscall 1076 14 none] [flush_threads userland__process 223 14 none] +G r c none [get_prio userland__syscall 1076 14 none] [flush_files userland__process 329 14 none] +G r c none [get_prio userland__syscall 1076 14 none] [get_current_thread arch__local 36 13 none] +G r c none [get_prio userland__syscall 1076 14 none] [remove_thread userland__process 218 14 none] +G r c none [get_prio userland__syscall 1076 14 none] [issue_exit userland__process 390 14 none] +G r c none [get_prio userland__syscall 1076 14 none] [bail scheduler 77 14 none] +G r c none [get_prio userland__syscall 1076 14 none] [convert userland__process 579 13 none] +G r c none [get_prio userland__syscall 1076 14 none] [get_niceness userland__process 232 13 none] +G r c none [get_prio userland__syscall 1076 14 none] [convert scheduler 134 13 none] +G r c none [get_prio userland__syscall 1076 14 none] [get_niceness scheduler 115 13 none] +G r c none [set_prio userland__syscall 1082 14 none] [get_current_process arch__local 37 13 none] +G r c none [set_prio userland__syscall 1082 14 none] [get_capabilities userland__process 589 13 none] +G r c none [set_prio userland__syscall 1082 14 none] [convert userland__process 573 13 none] +G r c none [set_prio userland__syscall 1082 14 none] [image lib__messages 63 14 none] +G r c none [set_prio userland__syscall 1082 14 none] [get_enforcement userland__process 586 13 none] +G r c none [set_prio userland__syscall 1082 14 none] [put_line lib__messages 41 14 none] +G r c none [set_prio userland__syscall 1082 14 none] [make_active arch__mmu 81 13 none] +G r c none [set_prio userland__syscall 1082 14 none] [flush_threads userland__process 223 14 none] +G r c none [set_prio userland__syscall 1082 14 none] [flush_files userland__process 329 14 none] +G r c none [set_prio userland__syscall 1082 14 none] [get_current_thread arch__local 36 13 none] +G r c none [set_prio userland__syscall 1082 14 none] [remove_thread userland__process 218 14 none] +G r c none [set_prio userland__syscall 1082 14 none] [issue_exit userland__process 390 14 none] +G r c none [set_prio userland__syscall 1082 14 none] [bail scheduler 77 14 none] +G r c none [set_prio userland__syscall 1082 14 none] [convert userland__process 579 13 none] +G r c none [set_prio userland__syscall 1082 14 none] [set_niceness userland__process 236 14 none] +G r c none [set_prio userland__syscall 1082 14 none] [convert scheduler 134 13 none] +G r c none [set_prio userland__syscall 1082 14 none] [set_niceness scheduler 116 14 none] +G r c none [get_gid userland__syscall 1089 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_gid userland__syscall 1089 14 none] [get_gid userland__process 479 14 none] +G r c none [get_egid userland__syscall 1091 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_egid userland__syscall 1091 14 none] [get_effective_gid userland__process 489 14 none] +G r c none [set_gids userland__syscall 1094 14 none] [get_current_process arch__local 37 13 none] +G r c none [set_gids userland__syscall 1094 14 none] [get_capabilities userland__process 589 13 none] +G r c none [set_gids userland__syscall 1094 14 none] [set_effective_gid userland__process 494 14 none] +G r c none [set_gids userland__syscall 1094 14 none] [set_gid userland__process 484 14 none] +G r c none [set_gids userland__syscall 1094 14 none] [get_gid userland__process 479 14 none] +G r c none [get_groups userland__syscall 1101 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_groups userland__syscall 1101 14 none] [get_common_map userland__process 344 13 none] +G r i none [get_groups userland__syscall 1101 14 none] [alignment lib 19 13 none] +G r c none [get_groups userland__syscall 1101 14 none] [translate_address arch__mmu 96 14 none] +G r c none [get_groups userland__syscall 1101 14 none] [get_supplementary_groups userland__process 499 14 none] +G r c none [set_groups userland__syscall 1108 14 none] [get_current_process arch__local 37 13 none] +G r c none [set_groups userland__syscall 1108 14 none] [get_common_map userland__process 344 13 none] +G r c none [set_groups userland__syscall 1108 14 none] [empty_supplementary_groups userland__process 509 14 none] +G r i none [set_groups userland__syscall 1108 14 none] [alignment lib 19 13 none] +G r c none [set_groups userland__syscall 1108 14 none] [translate_address arch__mmu 96 14 none] +G r c none [set_groups userland__syscall 1108 14 none] [set_supplementary_groups userland__process 504 14 none] +G r c none [tty_name userland__syscall 1115 14 none] [get_current_process arch__local 37 13 none] +G r c none [tty_name userland__syscall 1115 14 none] [get_common_map userland__process 344 13 none] +G r c none [tty_name userland__syscall 1115 14 none] [get_file userland__process 294 13 none] +G r i none [tty_name userland__syscall 1115 14 none] [alignment lib 19 13 none] +G r c none [tty_name userland__syscall 1115 14 none] [translate_address arch__mmu 96 14 none] +G r c none [tty_name userland__syscall 1115 14 none] [get_name ipc__pty 129 14 none] +G r c none [fadvise userland__syscall 1129 14 none] [get_current_process arch__local 37 13 none] +G r c none [fadvise userland__syscall 1129 14 none] [get_file userland__process 294 13 none] +G r c none [fadvise userland__syscall 1129 14 none] [synchronize vfs 511 13 none] +G r i none [shmat userland__syscall 1139 14 none] [alignment lib 19 13 none] +G r c none [shmat userland__syscall 1139 14 none] [get_current_process arch__local 37 13 none] +G r c none [shmat userland__syscall 1139 14 none] [get_capabilities userland__process 589 13 none] +G r c none [shmat userland__syscall 1139 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [shmat userland__syscall 1139 14 none] [get_effective_gid userland__process 489 14 none] +G r c none [shmat userland__syscall 1139 14 none] [check_permissions ipc__shm 59 13 none] +G r c none [shmat userland__syscall 1139 14 none] [get_address ipc__shm 54 14 none] +G r c none [shmat userland__syscall 1139 14 none] [bump_alloc_base userland__process 363 13 none] +G r c none [shmat userland__syscall 1139 14 none] [get_common_map userland__process 344 13 none] +G r c none [shmat userland__syscall 1139 14 none] [map_range arch__mmu 117 13 none] +G r c none [shmat userland__syscall 1139 14 none] [modify_attachment ipc__shm 68 14 none] +G r c none [shmctl userland__syscall 1170 14 none] [get_current_process arch__local 37 13 none] +G r c none [shmctl userland__syscall 1170 14 none] [get_common_map userland__process 344 13 none] +G r c none [shmctl userland__syscall 1170 14 none] [get_capabilities userland__process 589 13 none] +G r c none [shmctl userland__syscall 1170 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [shmctl userland__syscall 1170 14 none] [get_effective_gid userland__process 489 14 none] +G r c none [shmctl userland__syscall 1170 14 none] [check_permissions ipc__shm 59 13 none] +G r c none [shmctl userland__syscall 1170 14 none] [mark_refcounted ipc__shm 64 14 none] +G r i none [shmctl userland__syscall 1170 14 none] [alignment lib 19 13 none] +G r c none [shmctl userland__syscall 1170 14 none] [translate_address arch__mmu 96 14 none] +G r c none [shmctl userland__syscall 1170 14 none] [modify_permissions ipc__shm 70 14 none] +G r c none [shmctl userland__syscall 1170 14 none] [fetch_information ipc__shm 87 14 none] +G r c none [shmdt userland__syscall 1177 14 none] [get_current_process arch__local 37 13 none] +G r c none [shmdt userland__syscall 1177 14 none] [get_common_map userland__process 344 13 none] +G r c none [shmdt userland__syscall 1177 14 none] [translate_address arch__mmu 96 14 none] +G r c none [shmdt userland__syscall 1177 14 none] [get_segment_and_size ipc__shm 48 14 none] +G r c none [shmdt userland__syscall 1177 14 none] [unmap_range arch__mmu 175 13 none] +G r c none [shmdt userland__syscall 1177 14 none] [modify_attachment ipc__shm 68 14 none] +G r i none [shmget userland__syscall 1186 14 none] [alignment lib 19 13 none] +G r c none [shmget userland__syscall 1186 14 none] [get_current_process arch__local 37 13 none] +G r c none [shmget userland__syscall 1186 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [shmget userland__syscall 1186 14 none] [get_effective_gid userland__process 489 14 none] +G r c none [shmget userland__syscall 1186 14 none] [create_unkeyed_segment ipc__shm 38 13 none] +G r c none [shmget userland__syscall 1186 14 none] [create_segment ipc__shm 29 13 none] +G r c none [shmget userland__syscall 1186 14 none] [get_segment ipc__shm 45 13 none] +G r c none [getsockopt userland__syscall 1200 14 none] [get_current_process arch__local 37 13 none] +G r c none [getsockopt userland__syscall 1200 14 none] [get_common_map userland__process 344 13 none] +G r c none [getsockopt userland__syscall 1200 14 none] [get_file userland__process 294 13 none] +G r i none [getsockopt userland__syscall 1200 14 none] [alignment lib 19 13 none] +G r c none [getsockopt userland__syscall 1200 14 none] [translate_address arch__mmu 96 14 none] +G r c none [getsockopt userland__syscall 1200 14 none] [is_listening ipc__socket 144 13 none] +G r c none [getsockopt userland__syscall 1200 14 none] [get_type ipc__socket 70 13 none] +G r c none [setsockopt userland__syscall 1209 14 none] [get_current_process arch__local 37 13 none] +G r c none [setsockopt userland__syscall 1209 14 none] [get_common_map userland__process 344 13 none] +G r c none [setsockopt userland__syscall 1209 14 none] [get_file userland__process 294 13 none] +G r i none [setsockopt userland__syscall 1209 14 none] [alignment lib 19 13 none] +G r c none [setsockopt userland__syscall 1209 14 none] [translate_address arch__mmu 96 14 none] +G r c none [get_thread_name userland__syscall 1218 14 none] [get_current_process arch__local 37 13 none] +G r c none [get_thread_name userland__syscall 1218 14 none] [get_common_map userland__process 344 13 none] +G r c none [get_thread_name userland__syscall 1218 14 none] [convert scheduler 134 13 none] +G r i none [get_thread_name userland__syscall 1218 14 none] [alignment lib 19 13 none] +G r c none [get_thread_name userland__syscall 1218 14 none] [translate_address arch__mmu 96 14 none] +G r c none [get_thread_name userland__syscall 1218 14 none] [get_name scheduler 118 14 none] +G r c none [set_thread_name userland__syscall 1225 14 none] [get_current_process arch__local 37 13 none] +G r c none [set_thread_name userland__syscall 1225 14 none] [get_common_map userland__process 344 13 none] +G r c none [set_thread_name userland__syscall 1225 14 none] [convert scheduler 134 13 none] +G r i none [set_thread_name userland__syscall 1225 14 none] [alignment lib 19 13 none] +G r c none [set_thread_name userland__syscall 1225 14 none] [translate_address arch__mmu 96 14 none] +G r c none [set_thread_name userland__syscall 1225 14 none] [set_name scheduler 119 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [get_current_process arch__local 37 13 none] +G r c none [failure_policy userland__syscall 1241 14 none] [get_common_map userland__process 344 13 none] +G r i none [failure_policy userland__syscall 1241 14 none] [alignment lib 19 13 none] +G r c none [failure_policy userland__syscall 1241 14 none] [translate_address arch__mmu 96 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [get_system_policy userland__memory_failure 27 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [get_killing_config userland__oom_failure 22 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [get_capabilities userland__process 589 13 none] +G r c none [failure_policy userland__syscall 1241 14 none] [convert userland__process 573 13 none] +G r c none [failure_policy userland__syscall 1241 14 none] [image lib__messages 63 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [get_enforcement userland__process 586 13 none] +G r c none [failure_policy userland__syscall 1241 14 none] [put_line lib__messages 41 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [make_active arch__mmu 81 13 none] +G r c none [failure_policy userland__syscall 1241 14 none] [flush_threads userland__process 223 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [flush_files userland__process 329 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [get_current_thread arch__local 36 13 none] +G r c none [failure_policy userland__syscall 1241 14 none] [remove_thread userland__process 218 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [issue_exit userland__process 390 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [bail scheduler 77 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [set_system_policy userland__memory_failure 30 14 none] +G r c none [failure_policy userland__syscall 1241 14 none] [configure_killing userland__oom_failure 26 14 none] +G r c none [do_exit userland__syscall 1249 14 none] [make_active arch__mmu 81 13 none] +G r c none [do_exit userland__syscall 1249 14 none] [put_line lib__messages 41 14 none] +G r c none [do_exit userland__syscall 1249 14 none] [flush_threads userland__process 223 14 none] +G r c none [do_exit userland__syscall 1249 14 none] [flush_files userland__process 329 14 none] +G r c none [do_exit userland__syscall 1249 14 none] [get_current_thread arch__local 36 13 none] +G r c none [do_exit userland__syscall 1249 14 none] [remove_thread userland__process 218 14 none] +G r c none [do_exit userland__syscall 1249 14 none] [issue_exit userland__process 390 14 none] +G r c none [do_exit userland__syscall 1249 14 none] [bail scheduler 77 14 none] +G r c none [do_exit userland__syscall 1250 14 none] [make_active arch__mmu 81 13 none] +G r c none [do_exit userland__syscall 1250 14 none] [put_line lib__messages 41 14 none] +G r c none [do_exit userland__syscall 1250 14 none] [flush_threads userland__process 223 14 none] +G r c none [do_exit userland__syscall 1250 14 none] [flush_files userland__process 329 14 none] +G r c none [do_exit userland__syscall 1250 14 none] [get_current_thread arch__local 36 13 none] +G r c none [do_exit userland__syscall 1250 14 none] [remove_thread userland__process 218 14 none] +G r c none [do_exit userland__syscall 1250 14 none] [issue_exit userland__process 397 14 none] +G r c none [do_exit userland__syscall 1250 14 none] [bail scheduler 77 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [get_current_thread arch__local 36 13 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [signal_kernel_entry scheduler 87 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [get_current_process arch__local 37 13 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [get_raised_signal_actions userland__process 562 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [make_active arch__mmu 81 13 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [put_line lib__messages 41 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [flush_threads userland__process 223 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [flush_files userland__process 329 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [remove_thread userland__process 218 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [issue_exit userland__process 397 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [bail scheduler 77 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [get_traced_info userland__process 370 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [get_file userland__process 294 13 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [is_empty ipc__fifo 79 13 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [yield_if_able scheduler 74 14 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [convert scheduler 132 13 none] +G r c none [pre_syscall_hook userland__syscall 1253 14 none] [write ipc__fifo 125 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [get_current_thread arch__local 36 13 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [get_current_process arch__local 37 13 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [get_raised_signal_actions userland__process 562 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [make_active arch__mmu 81 13 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [put_line lib__messages 41 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [flush_threads userland__process 223 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [flush_files userland__process 329 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [remove_thread userland__process 218 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [issue_exit userland__process 397 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [bail scheduler 77 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [get_traced_info userland__process 370 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [get_file userland__process 294 13 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [is_empty ipc__fifo 79 13 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [yield_if_able scheduler 74 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [convert scheduler 132 13 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [write ipc__fifo 125 14 none] +G r c none [post_syscall_hook userland__syscall 1254 14 none] [signal_kernel_exit scheduler 88 14 none] +G r c none [check_userland_mappability userland__syscall 1257 13 none] [translate_address arch__mmu 96 14 none] +G r c none [do_remote_exit userland__syscall 1264 14 none] [flush_threads userland__process 223 14 none] +G r c none [do_remote_exit userland__syscall 1264 14 none] [flush_files userland__process 329 14 none] +G r c none [do_remote_exit userland__syscall 1264 14 none] [issue_exit userland__process 390 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [get_current_process arch__local 37 13 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [get_raised_signal_actions userland__process 562 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [make_active arch__mmu 81 13 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [put_line lib__messages 41 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [flush_threads userland__process 223 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [flush_files userland__process 329 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [get_current_thread arch__local 36 13 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [remove_thread userland__process 218 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [issue_exit userland__process 397 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [bail scheduler 77 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [get_traced_info userland__process 370 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [get_file userland__process 294 13 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [is_empty ipc__fifo 79 13 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [yield_if_able scheduler 74 14 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [convert scheduler 132 13 none] +G r c none [common_syscall_hook userland__syscall 1266 14 none] [write ipc__fifo 125 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [get_common_map userland__process 344 13 none] +G r i none [exec_into_process userland__syscall 1296 14 none] [alignment lib 19 13 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [translate_address arch__mmu 96 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [get_capabilities userland__process 589 13 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [convert userland__process 573 13 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [image lib__messages 63 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [get_enforcement userland__process 586 13 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [put_line lib__messages 41 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [make_active arch__mmu 81 13 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [flush_threads userland__process 223 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [flush_files userland__process 329 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [get_current_thread arch__local 36 13 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [remove_thread userland__process 218 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [issue_exit userland__process 390 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [bail scheduler 77 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [get_effective_uid userland__process 469 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [get_cwd userland__process 428 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [open vfs 255 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [check_permissions userland__process 592 13 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [close vfs 359 14 none] +G r s argument_arr [exec_into_process userland__syscall 1296 14 none] [argument_arrIP userland 20 9 none] +G r s environment_arr [exec_into_process userland__syscall 1296 14 none] [environment_arrIP userland 21 9 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [c_string_length lib 23 13 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [flush_exec_files userland__process 333 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [reassign_process_addresses userland__process 228 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [fork_table arch__mmu 70 13 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [set_common_map userland__process 338 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [set_identifier userland__process 443 14 none] +G r c none [exec_into_process userland__syscall 1296 14 none] [start_program userland__loader 41 13 none] +G r c none [to_string userland__syscall 1308 13 none] [c_string_length lib 23 13 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [convert userland__process 573 13 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [image lib__messages 63 14 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [get_enforcement userland__process 586 13 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [put_line lib__messages 41 14 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [make_active arch__mmu 81 13 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [flush_threads userland__process 223 14 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [flush_files userland__process 329 14 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [get_current_thread arch__local 36 13 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [remove_thread userland__process 218 14 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [issue_exit userland__process 390 14 none] +G r c none [execute_mac_failure userland__syscall 1314 14 none] [bail scheduler 77 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [get_termios ipc__pty 113 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [set_termios ipc__pty 117 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [get_winsize ipc__pty 121 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [set_winsize ipc__pty 125 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [flush_primary ipc__pty 133 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [flush_secondary ipc__pty 137 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [stop_primary ipc__pty 149 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [stop_secondary ipc__pty 153 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [start_primary ipc__pty 141 14 none] +G r c none [pty_ioctl userland__syscall 1317 14 none] [start_secondary ipc__pty 145 14 none] +G r c none [set_mac_capabilities userland__syscall 1325 14 none] [get_capabilities userland__process 589 13 none] +G r c none [set_mac_capabilities userland__syscall 1325 14 none] [set_capabilities userland__process 590 14 none] +G r c none [check_add_file userland__syscall 1334 14 none] [get_file_count userland__process 263 13 none] +G r c none [check_add_file userland__syscall 1334 14 none] [get_limit userland__process 604 13 none] +G r c none [check_add_file userland__syscall 1334 14 none] [add_file userland__process 252 14 none] +G r i none [check_userland_access userland__syscall 1341 13 none] [alignment lib 19 13 none] +G r c none [check_userland_access userland__syscall 1341 13 none] [translate_address arch__mmu 96 14 none] +G r c none [resolve_at_directive userland__syscall 1346 14 none] [get_cwd userland__process 428 14 none] +G r c none [resolve_at_directive userland__syscall 1346 14 none] [get_file userland__process 294 13 none] +X 1 ada.ads +11K9*Ada 12e8 53|17r6 18r6 32r6 1406r48 1409r33 1411r36 1413r36 1415r38 1485r46 +. 2291r29 2332r43 3114r26 3115r26 4510r26 4511r26 4951r39 5352r30 5685r29 +X 2 a-charac.ads +11K13*Characters 12e19 53|17r10 1406r52 1409r37 1411r40 1413r40 1415r42 1485r50 +. 2332r47 4951r43 5352r34 +X 3 a-chlat1.ads +11K24*Latin_1 247e27 53|17w21 1406r63 1409r48 1411r51 1413r51 1415r53 1485r61 +. 2332r58 4951r54 5352r45 +13e4*NUL{character} 53|1406r71 1409r56 1411r59 1413r59 1415r61 1485r69 2332r66 +. 4951r62 5352r53 +X 4 a-unccon.ads +14v14*Unchecked_Conversion 53|18w10 3114r30 3115r30 4510r30 4511r30 +X 5 a-uncdea.ads +14u15*Unchecked_Deallocation 53|32w10 2291r33 5685r33 +X 6 arch.ads +20K9*Arch 52e9 52|19r6 20r6 212r19 213r19 1253r40 1254r41 1258r21 1268r17 +. 1311r52 1342r21 53|27r6 27r20 28r6 29r6 33r6 39r6 54r16 63r43 72r17 92r49 +. 192r30 213r47 291r47 375r34 442r49 545r41 565r41 569r44 585r33 586r33 587r17 +. 606r21 608r10 623r19 624r19 630r24 692r26 719r48 793r7 811r36 864r33 905r36 +. 1060r47 1094r35 1152r30 1176r30 1214r30 1233r48 1289r44 1311r36 1543r30 +. 1547r16 1584r33 1636r41 1647r30 1703r28 1879r11 1879r43 1889r45 1917r31 +. 1919r24 1952r29 1961r43 1992r47 2059r31 2094r49 2173r36 2220r49 2297r40 +. 2379r49 2440r48 2482r37 2512r48 2577r49 2635r48 2697r47 2734r34 2765r35 +. 2823r31 2856r47 2884r46 2986r34 3013r27 3037r48 3117r48 3158r7 3236r13 +. 3253r30 3267r30 3303r49 3388r30 3403r37 3405r17 3415r41 3416r41 3417r41 +. 3427r18 3428r18 3447r49 3537r47 3594r47 3655r49 3727r49 3798r47 3838r44 +. 3932r43 3954r22 3957r22 3965r22 3968r22 3976r22 4003r46 4032r16 4034r16 +. 4042r16 4044r16 4064r43 4113r47 4204r47 4286r48 4364r49 4457r32 4483r32 +. 4513r45 4574r45 4641r33 4686r22 4711r22 4744r22 4780r22 4802r30 4811r30 +. 4825r30 4858r43 4887r43 4922r48 4972r48 5011r30 5035r46 5036r26 5046r13 +. 5076r30 5146r30 5154r7 5157r33 5167r13 5193r30 5196r60 5234r48 5294r48 +. 5333r43 5374r43 5415r46 5494r14 5494r36 5502r45 5511r14 5511r36 5519r45 +. 5524r40 5525r33 5531r41 5532r33 5547r17 5551r19 5554r39 5766r17 5766r38 +. 5805r52 5958r21 5968r46 5969r7 5983r21 5995r7 +X 7 arch-clocks.ads +19K14*Clocks 45e16 53|28w11 3158r12 3236r18 3954r27 3957r27 3965r27 3968r27 +. 3976r27 4032r21 4034r21 4042r21 4044r21 +27U14*Get_Monotonic_Resolution 53|3954s34 +31U14*Get_Monotonic_Time 53|3158s19 3236s25 3965s34 4032s28 4042s28 +35U14*Get_Real_Time_Resolution 53|3957s34 +39U14*Get_Real_Time 53|3968s34 4034s28 4044s28 +43U14*Set_Real_Time 53|3976s34 +X 8 arch-context.ads +20K14*Context 70e17 52|19w11 212r24 213r24 1253r45 1254r46 1268r22 53|623r24 +. 624r24 5524r45 5531r46 5547r22 5551r24 +22R15*GP_Context{10|21R9} 52|212r32 1253r53 1254r54 1268r30 53|623r32 5524r53 +. 5531r54 5547r30 5551r32 +23A15*FP_Context(19|16M9) 52|213r32 53|624r32 +X 9 arch-hooks.ads +17K14*Hooks 33e15 53|33w11 72r22 1311r41 +22V13*PRCTL_Hook{boolean} 53|72s28 +29V13*Get_Active_Core_Count{positive} 53|1311s47 +X 11 arch-local.ads +21K14*Local 40e15 53|29w11 54r21 63r48 92r54 192r35 213r52 291r52 375r39 +. 442r54 545r46 565r46 569r49 585r38 586r38 630r29 692r31 719r53 811r41 864r38 +. 905r41 1060r52 1094r40 1152r35 1176r35 1214r35 1233r53 1289r49 1584r38 +. 1636r46 1647r35 1703r33 1879r16 1879r48 1889r50 1917r36 1952r34 1961r48 +. 1992r52 2059r36 2094r54 2173r41 2220r54 2297r45 2379r54 2440r53 2482r42 +. 2512r53 2577r54 2635r53 2697r52 2734r39 2765r40 2823r36 2856r52 2884r51 +. 2986r39 3013r32 3037r53 3117r53 3253r35 3267r35 3303r54 3388r35 3403r42 +. 3447r54 3537r52 3594r52 3655r54 3727r54 3798r52 3838r49 3932r48 4003r51 +. 4064r48 4113r52 4204r52 4286r53 4364r54 4457r37 4483r37 4513r50 4574r50 +. 4641r38 4686r27 4711r27 4744r27 4780r27 4802r35 4811r35 4825r35 4858r48 +. 4887r48 4922r53 4972r53 5011r35 5076r35 5146r35 5193r35 5234r53 5294r53 +. 5333r48 5374r48 5415r51 5502r50 5519r50 5525r38 5532r38 5554r44 +27V13*Fetch_TCB{41|25M9} 53|692s37 +36V13*Get_Current_Thread{40|27I9} 53|585s44 1636s52 1879s54 4711s33 4780s33 +. 5502s56 5519s56 5525s44 5532s44 +37V13*Get_Current_Process{51|33I9} 53|54s27 63s54 92s60 192s41 213s58 291s58 +. 375s45 442s60 545s52 565s52 569s55 586s44 630s35 719s59 811s47 864s44 905s47 +. 1060s58 1094s46 1152s41 1176s41 1214s41 1233s59 1289s55 1584s44 1647s41 +. 1703s39 1879s22 1889s56 1917s42 1952s40 1961s54 1992s58 2059s42 2094s60 +. 2173s47 2220s60 2297s51 2379s60 2440s59 2482s48 2512s59 2577s60 2635s59 +. 2697s58 2734s45 2765s46 2823s42 2856s58 2884s57 2986s45 3013s38 3037s59 +. 3117s59 3253s41 3267s41 3303s60 3388s41 3403s48 3447s60 3537s58 3594s58 +. 3655s60 3727s60 3798s58 3838s55 3932s54 4003s57 4064s54 4113s58 4204s58 +. 4286s59 4364s60 4457s43 4483s43 4513s56 4574s56 4641s44 4686s33 4744s33 +. 4802s41 4811s41 4825s41 4858s54 4887s54 4922s59 4972s59 5011s41 5076s41 +. 5146s41 5193s41 5234s59 5294s59 5333s54 5374s54 5415s57 5554s50 +X 12 arch-mmu.ads +22K14*MMU 250e13 52|20w11 1258r26 1311r57 1342r26 53|27w11 27r25 587r22 606r26 +. 608r15 793r12 1543r35 1547r21 1919r29 5035r51 5036r31 5046r18 5154r12 5157r38 +. 5167r18 5196r65 5494r19 5494r41 5511r19 5511r41 5766r22 5766r43 5805r57 +. 5958r26 5968r51 5969r12 5983r26 5995r12 +26R9*Page_Permissions 32e14 52|1311r61 53|441r29 1919r33 5013r24 5805r61 +27b7*Is_User_Accesible{boolean} 53|5014m11 5808m18 5811m14 +28b7*Can_Read{boolean} 53|5015m11 5812m14 +29b7*Can_Write{boolean} 53|452r20 1927r20 5016m11 5813m14 +30b7*Can_Execute{boolean} 53|452r40 1927r40 5814m14 +31b7*Is_Global{boolean} 53|5815m14 +43P9*Page_Table_Acc(42R9) 52|1258r30 1342r30 53|64r25 93r31 214r31 292r31 +. 443r31 546r23 587r26 721r30 865r30 906r33 1095r32 1177r23 1234r30 1290r26 +. 1615r32 1704r36 1890r25 1918r24 1993r29 2095r31 2174r33 2221r32 2298r37 +. 2380r31 2441r30 2578r31 2698r29 2766r32 2885r28 3038r30 3118r30 3304r31 +. 3448r31 3538r31 3595r31 3656r31 3728r31 3839r26 3933r25 4004r28 4065r25 +. 4114r31 4205r31 4287r30 4365r31 4514r27 4575r27 4859r25 4888r25 4923r30 +. 5077r22 5147r22 5235r30 5295r30 5334r25 5375r25 5416r28 5688r30 5958r30 +. 5983r30 +49N7*Page_Size 53|453r25 454r25 1299r23 1306r50 1309r55 1314r51 1928r26 1929r26 +. 5035r55 5036r35 5157r42 5196r69 5968r55 +58p4*Kernel_Table{43P9} 53|5494r45 5511r45 5766r47 +70V13*Fork_Table{43P9} 53|680s33 5766s26 +75U14*Destroy_Table 53|608s19 793s16 +81V13*Make_Active{boolean} 53|606s30 5494s23 5511s23 +96U14*Translate_Address 53|5154s16 5969s16 5995s16 +97p8 Map{43P9} 53|5155r11 5970r11 5996r11 +98m8 Virtual{41|25M9} 53|5156r11 5971r11 5997r11 +99i8 Length{42|16I12} 53|5157r11 5972r11 5998r11 +100m8 Physical{41|25M9} 53|5158r11 5973r11 5999r11 +101b8 Is_Mapped{boolean} 53|5159r11 5974r11 6000r11 +102b8 Is_User_Accessible{boolean} 53|5160r11 5975r11 6001r11 +103b8 Is_Readable{boolean} 53|5161r11 5976r11 6002r11 +104b8 Is_Writeable{boolean} 53|5162r11 5977r11 6003r11 +105b8 Is_Executable{boolean} 53|5163r11 5978r11 6004r11 +117V13*Map_Range{boolean} 53|5046s22 +118p8 Map{43P9} 53|5047r14 +119m8 Physical_Start{41|25M9} 53|5049r14 +120m8 Virtual_Start{41|25M9} 53|5048r14 +121i8 Length{42|16I12} 53|5050r14 +122r8 Permissions{26R9} 53|5051r14 +139U14*Map_Allocated_Range 53|480s10 +140p8 Map{43P9} 53|481r14 +141m8 Physical_Start{41|25M9} 53|485r14 +142m8 Virtual_Start{41|25M9} 53|482r14 +143i8 Length{42|16I12} 53|483r14 +144r8 Permissions{26R9} 53|484r14 +145b8 Success{boolean} 53|486r14 +159V13*Remap_Range{boolean} 53|1936s14 +175V13*Unmap_Range{boolean} 53|553s13 5167s22 +176p8 Map{43P9} 53|5168r14 +177m8 Virtual_Start{41|25M9} 53|5169r14 +178i8 Length{42|16I12} 53|5170r14 +187V13*Get_User_Mapped_Size{19|19M9} 53|458s13 +191R9*Virtual_Statistics 195e14 53|1543r39 +192m7*Kernel_Usage{35|20M9} 53|1554r54 +193m7*Table_Usage{35|20M9} 53|1555r54 +198U14*Get_Statistics 53|1547s25 +X 13 arch-power.ads +17K14*Power 29e15 53|39w11 3405r22 3415r46 3416r46 3417r46 3427r23 3428r23 +19E9*Power_Status 19e49 53|3405r28 +19n26*Not_Supported{19E9} 53|3427r29 +19n41*Failure{19E9} 53|3428r29 +22V13*Halt{19E9} 53|3415s52 +25V13*Reboot{19E9} 53|3417s52 +28V13*Poweroff{19E9} 53|3416s52 +X 14 config.ads +17K9*Config 29e11 53|19w6 1408r38 1409r19 1410r34 1411r19 1412r34 1413r19 +. 1414r34 1415r19 +22a4*Name{string} 53|1408r45 1409r26 +23a4*Version{string} 53|1410r41 1411r26 1412r41 1413r26 +24a4*Arch_Name{string} 53|1414r41 1415r26 +X 15 cryptography.ads +17K9*Cryptography 18e17 53|34r6 1893r16 1904r10 +X 16 cryptography-random.ads +19K22*Random 40e24 53|34w19 1893r29 1904r23 +21A9*Crypto_Data(19|16M9) 53|1893r36 +22U14*Fill_Data 53|1904s30 +X 17 devices.ads +22K9*Devices 279e12 53|38r6 40w6 40r19 241r17 319r17 3562r17 3619r17 4137r17 +. 4228r17 4290r15 4316r16 5565r23 +29A9*Operation_Data(19|16M9) 53|241r25 319r25 3562r25 3619r25 4137r25 +. 4228r25 5565r31 +83I9*Device_Handle 53|4290r23 +130U14*Fetch_Name 53|1379s19 1484s19 +161V13*Get_Unique_ID{natural} 53|1014s13 1524s23 +165V13*From_Unique_ID{83I9} 53|4316s24 +X 18 devices-termios.ads +17K17*TermIOs 81e20 53|38w14 5843r11 5845r21 5846r21 +44R9*Main_Data 52e15 53|5845r29 +54R9*Win_Size 59e14 53|5846r29 +62N4*TCIFLUSH 53|5862r21 5863r36 +63N4*TCOFLUSH 53|5862r32 5864r36 +64N4*TCIOFLUSH 53|5862r43 5863r57 5864r57 +67N4*TCOOFF 53|5875r21 5876r36 +68N4*TCOON 53|5883r21 5884r36 +69N4*TCIOFF 53|5875r30 5877r36 +70N4*TCION 53|5883r29 5885r36 +73N4*TCGETS 53|5852r15 +74N4*TCSETS 53|5854r15 +75N4*TCSETSW 53|5854r24 +76N4*TCSETSF 53|5854r34 +77N4*TCXONC 53|5873r15 +78N4*TCFLSH 53|5860r15 +79N4*TIOCGWINSZ 53|5856r15 +80N4*TIOCSWINSZ 53|5858r15 +X 19 interfac.ads +11K9*Interfaces 120e15 52|17w6 17r22 +16M9*Unsigned_8 52|645r18 1249r42 1264r49 53|54r48 728r20 5490r42 5538r49 +17M9*Unsigned_16 52|377r21 378r21 379r21 413r21 414r21 415r21 416r21 421r20 +. 422r20 423r20 517r19 518r19 644r18 694r20 695r20 700r23 701r23 829r20 830r20 +. 53|1348r38 1349r38 1350r38 1431r38 1433r38 1434r38 1437r42 1439r42 1440r25 +. 1457r37 1459r37 5550r19 5592r23 +18M9*Unsigned_32 52|267r23 268r23 269r23 270r23 380r21 381r21 386r23 387r23 +. 389r23 391r23 441r16 442r16 450r39 521r19 693r20 699r23 702r23 704r23 707r20 +. 708r20 828r20 935r18 936r18 1057r17 1147r22 1148r22 1149r22 1150r22 1151r22 +. 1152r22 1153r22 1162r20 1163r20 53|109r21 221r19 299r19 379r18 729r20 733r36 +. 787r40 918r20 1018r28 1019r28 1064r14 1099r15 1215r14 1243r26 1519r37 1534r29 +. 1829r31 1996r19 2230r22 2304r20 2389r20 2447r20 2485r17 2586r20 2621r26 +. 2774r26 3044r20 3254r14 3268r18 3271r34 3272r55 3274r33 3275r45 3279r34 +. 3281r58 3310r21 3454r21 3521r11 3522r11 3542r19 3599r19 3847r43 3893r28 +. 4371r21 4645r33 4758r23 4758r42 4760r43 4803r14 4812r14 4826r18 4829r34 +. 4830r55 4832r33 4833r45 4837r34 4839r58 5012r28 5012r43 5019r20 5075r27 +. 5075r42 5082r20 5123r41 5194r28 5194r43 5198r14 5199r14 5244r52 5250r16 +. 5258r23 5304r52 5700r20 5820r29 5820r44 +19M9*Unsigned_64 52|99r19 100r23 105r19 106r19 107r23 118r20 119r20 120r20 +. 121r20 122r24 127r19 128r23 133r19 134r19 135r19 136r23 141r19 142r19 143r19 +. 144r23 152r19 153r19 154r19 155r23 169r21 170r21 171r21 172r21 173r21 174r21 +. 175r25 180r19 181r19 182r23 186r38 189r39 193r20 194r20 195r20 196r20 197r20 +. 198r20 199r24 206r19 207r19 208r19 209r19 210r19 211r19 214r23 222r21 223r21 +. 224r21 225r25 240r19 241r19 242r23 247r19 248r19 249r23 254r21 255r21 265r23 +. 266r23 271r23 272r23 276r23 277r23 296r20 297r20 298r20 299r20 300r20 301r24 +. 306r19 307r23 312r19 313r19 314r19 315r23 319r42 323r19 324r23 329r22 330r22 +. 331r26 335r38 340r22 341r22 342r22 343r22 344r22 345r22 346r22 347r26 392r23 +. 393r23 394r23 395r23 396r23 397r23 398r23 399r23 400r23 431r21 443r16 444r16 +. 445r16 446r16 453r24 454r24 455r24 456r24 457r24 458r24 459r24 463r19 464r19 +. 465r19 466r23 471r20 472r20 473r20 474r20 475r20 476r20 477r20 478r24 482r38 +. 489r21 490r21 491r21 492r21 493r25 519r19 520r19 525r19 526r19 527r19 528r23 +. 532r42 536r18 537r18 538r22 543r20 544r20 545r20 546r24 566r19 567r23 572r23 +. 583r20 584r20 585r20 586r24 594r19 595r23 606r22 607r22 608r22 609r22 610r22 +. 611r22 612r26 618r20 619r20 620r20 621r24 626r22 627r22 628r22 629r22 630r22 +. 631r26 642r18 643r18 655r27 657r22 658r22 659r22 660r26 664r35 668r20 669r20 +. 670r20 671r20 672r20 673r24 678r20 679r20 680r20 681r24 686r19 687r19 688r23 +. 712r20 713r20 714r20 715r24 720r22 721r22 722r22 723r22 724r22 725r22 726r26 +. 731r20 732r20 733r20 734r24 739r22 740r26 745r19 746r19 747r23 752r22 753r22 +. 754r22 755r22 756r22 757r22 758r26 764r22 765r22 766r22 767r22 768r26 773r19 +. 774r19 775r23 780r20 781r20 782r20 783r20 784r24 795r19 796r23 801r19 802r19 +. 803r23 812r20 813r20 814r20 815r20 816r20 817r24 832r28 834r20 835r20 836r20 +. 837r20 838r24 842r39 846r19 847r19 848r23 853r20 854r20 855r20 856r20 857r20 +. 858r24 863r19 864r23 872r19 873r19 874r23 879r20 880r20 881r20 882r20 883r20 +. 884r20 885r24 890r19 891r19 892r19 893r19 894r23 899r19 900r19 901r19 902r19 +. 903r23 907r20 908r20 909r20 910r24 914r20 915r20 916r20 917r24 924r19 925r19 +. 926r23 934r18 940r20 941r20 942r20 943r20 944r24 954r20 955r20 956r20 957r24 +. 963r23 964r23 965r23 966r23 967r27 979r21 980r21 981r25 985r20 986r20 987r20 +. 988r20 989r20 990r20 991r24 995r20 996r20 997r20 998r20 999r20 1000r20 +. 1001r24 1016r20 1017r20 1018r20 1019r24 1023r20 1024r20 1025r20 1026r20 +. 1027r20 1028r24 1032r23 1036r19 1037r19 1038r23 1045r19 1046r19 1047r19 +. 1048r23 1056r17 1060r19 1061r19 1062r19 1063r23 1067r19 1068r19 1069r23 +. 1077r19 1078r19 1079r23 1083r19 1084r19 1085r19 1086r23 1089r38 1091r39 +. 1095r19 1096r19 1097r23 1102r19 1103r19 1104r23 1109r19 1110r19 1111r23 +. 1116r19 1117r19 1118r19 1119r23 1130r19 1131r19 1132r19 1133r19 1134r23 +. 1140r19 1141r19 1142r19 1143r23 1158r20 1159r20 1160r20 1161r20 1164r20 +. 1171r19 1172r19 1173r19 1174r23 1178r19 1179r23 1187r19 1188r19 1189r19 +. 1190r23 1201r19 1202r19 1203r19 1204r19 1205r19 1206r23 1210r19 1211r19 +. 1212r19 1213r19 1214r19 1215r23 1219r19 1220r19 1221r19 1222r23 1226r19 +. 1227r19 1228r19 1229r23 1237r24 1238r24 1242r19 1243r19 1244r23 1260r21 +. 1273r25 1274r29 1279r25 1280r29 1285r25 1286r29 1291r25 1292r29 1297r20 +. 1298r20 1299r20 1300r20 1301r20 1302r20 1311r32 1320r21 1325r55 1329r18 +. 1344r21 1348r17 1353r18 53|47r19 48r23 58r19 59r19 60r23 69r22 71r20 74r22 +. 83r20 84r20 85r20 86r20 87r24 112r22 115r24 116r22 130r25 138r25 169r22 +. 177r25 179r22 182r22 188r19 189r23 199r22 205r19 206r19 207r19 208r23 225r22 +. 229r22 232r21 248r31 254r38 256r30 259r44 264r44 269r44 273r28 277r30 283r19 +. 284r19 285r19 286r23 304r22 308r22 310r21 326r31 328r43 329r19 332r31 340r38 +. 341r44 345r44 350r44 355r44 359r28 363r30 369r19 370r19 371r19 372r23 380r18 +. 385r22 422r19 427r19 432r21 433r21 434r21 435r21 436r21 437r21 438r25 459r10 +. 489r25 514r25 517r25 525r19 530r19 536r19 540r21 541r21 542r25 552r22 558r22 +. 562r38 565r19 568r39 572r19 576r20 577r20 578r20 579r20 580r20 581r20 582r24 +. 612r22 617r19 618r19 619r19 620r19 621r19 622r19 625r23 633r17 644r22 646r23 +. 648r22 656r25 670r17 693r17 710r19 714r41 715r45 733r23 780r25 797r19 802r19 +. 806r19 807r19 808r23 848r22 855r19 859r19 860r19 861r23 875r22 881r22 889r22 +. 897r20 898r20 899r20 900r20 901r20 902r24 924r22 934r25 984r28 1001r28 +. 1010r22 1016r28 1017r28 1022r28 1033r28 1056r19 1057r23 1068r22 1076r22 +. 1086r19 1087r19 1088r19 1089r23 1103r22 1107r22 1135r22 1139r42 1148r19 +. 1149r23 1157r22 1158r23 1162r22 1170r22 1171r22 1172r26 1185r22 1206r22 +. 1213r38 1219r19 1223r22 1224r22 1225r22 1226r22 1227r22 1228r22 1229r22 +. 1230r26 1249r22 1251r26 1252r26 1255r22 1273r25 1283r19 1284r19 1285r19 +. 1286r23 1294r16 1301r23 1303r23 1306r23 1309r23 1311r23 1314r23 1316r23 +. 1318r23 1320r23 1331r22 1361r26 1398r26 1444r26 1471r26 1498r26 1507r26 +. 1523r37 1525r37 1528r26 1544r30 1550r38 1551r38 1552r38 1554r38 1555r38 +. 1570r19 1574r20 1575r20 1576r20 1577r20 1578r20 1579r20 1580r20 1581r24 +. 1591r22 1609r22 1617r22 1619r52 1623r28 1630r19 1633r38 1636r19 1640r21 +. 1641r21 1642r21 1643r21 1644r25 1654r22 1656r23 1688r19 1693r19 1697r19 +. 1698r19 1699r19 1700r23 1723r42 1724r44 1870r19 1873r42 1884r18 1885r18 +. 1886r22 1899r22 1902r22 1911r20 1912r20 1913r20 1914r24 1925r22 1932r22 +. 1938r22 1947r19 1948r23 1958r23 1963r28 1986r20 1987r20 1988r20 1989r24 +. 2005r22 2009r22 2011r24 2013r22 2051r19 2055r19 2056r23 2065r22 2075r25 +. 2085r22 2086r22 2087r22 2088r22 2089r22 2090r22 2091r26 2110r22 2112r26 +. 2113r26 2116r22 2121r22 2149r31 2162r22 2167r20 2168r20 2169r20 2170r24 +. 2181r22 2183r24 2185r22 2190r22 2205r25 2212r22 2213r22 2214r22 2215r22 +. 2216r22 2217r26 2237r22 2239r26 2240r26 2243r22 2257r25 2266r25 2274r25 +. 2280r36 2285r22 2286r22 2287r22 2288r26 2296r29 2307r22 2310r22 2324r56 +. 2327r24 2329r52 2333r24 2335r24 2344r25 2347r25 2355r35 2364r22 2369r20 +. 2370r20 2371r20 2372r20 2373r20 2374r24 2393r22 2395r24 2397r22 2408r25 +. 2434r20 2435r20 2436r20 2437r24 2451r22 2453r24 2455r22 2466r25 2477r19 +. 2478r19 2479r23 2489r22 2501r25 2506r20 2507r20 2508r20 2509r24 2520r22 +. 2525r22 2563r22 2568r22 2569r22 2570r22 2571r22 2572r22 2573r22 2574r26 +. 2592r22 2594r26 2595r26 2598r22 2611r25 2629r20 2630r20 2631r20 2632r24 +. 2643r22 2648r22 2686r22 2691r22 2692r26 2706r22 2721r22 2729r19 2730r19 +. 2731r23 2741r22 2751r25 2756r22 2757r22 2758r22 2759r22 2760r22 2761r22 +. 2762r26 2780r22 2782r26 2783r26 2786r22 2803r25 2814r22 2815r22 2816r22 +. 2817r22 2818r26 2828r22 2833r22 2842r25 2851r19 2852r19 2853r23 2861r22 +. 2864r22 2871r25 2877r20 2878r20 2879r20 2880r20 2881r24 2900r22 2904r22 +. 2960r33 2962r25 2967r25 2971r22 2978r19 2982r19 2983r23 2993r22 2998r19 +. 3002r19 3003r19 3004r23 3025r19 3029r20 3030r20 3031r20 3032r20 3033r20 +. 3034r24 3048r22 3050r24 3052r22 3065r25 3084r25 3106r20 3107r20 3108r20 +. 3109r20 3110r24 3125r33 3128r20 3129r20 3130r20 3131r20 3139r22 3146r25 +. 3177r40 3249r19 3252r39 3258r19 3262r19 3263r19 3264r23 3271r21 3274r20 +. 3279r21 3280r23 3284r28 3295r20 3296r20 3297r20 3298r20 3299r20 3300r24 +. 3316r22 3318r24 3320r22 3331r25 3344r28 3361r28 3368r28 3378r41 3384r19 +. 3385r23 3394r19 3398r19 3399r19 3400r23 3410r22 3420r25 3430r22 3438r20 +. 3439r20 3440r20 3441r20 3442r20 3443r20 3444r24 3460r22 3462r24 3464r22 +. 3475r25 3488r28 3505r28 3512r28 3528r19 3529r19 3530r19 3531r19 3532r23 +. 3547r22 3551r22 3553r21 3569r31 3574r44 3578r28 3585r19 3586r19 3587r19 +. 3588r19 3589r23 3604r22 3608r22 3610r21 3626r31 3628r31 3629r19 3632r31 +. 3638r44 3642r28 3649r20 3650r20 3651r20 3652r24 3666r22 3675r53 3710r22 +. 3717r19 3721r20 3722r20 3723r20 3724r24 3738r22 3747r53 3782r22 3789r19 +. 3793r19 3794r19 3795r23 3804r22 3817r25 3826r22 3831r20 3832r20 3833r20 +. 3834r20 3835r24 3845r28 3846r28 3847r28 3871r21 3873r22 3905r31 3911r28 +. 3922r19 3926r20 3927r20 3928r20 3929r24 3937r22 3943r22 3991r19 3996r23 +. 3997r23 3998r23 3999r23 4000r27 4011r22 4017r22 4024r24 4025r24 4059r21 +. 4060r21 4061r25 4069r22 4088r28 4098r20 4099r20 4100r20 4101r20 4102r20 +. 4103r20 4104r24 4123r22 4127r22 4130r21 4184r37 4189r20 4190r20 4191r20 +. 4192r20 4193r20 4194r20 4195r24 4214r22 4218r22 4221r21 4275r37 4280r20 +. 4281r20 4282r20 4283r24 4302r22 4305r22 4312r22 4344r22 4351r19 4356r20 +. 4357r20 4358r20 4359r20 4360r20 4361r24 4379r22 4381r24 4383r22 4394r25 +. 4407r28 4424r28 4431r28 4454r23 4463r22 4470r22 4473r22 4478r19 4479r19 +. 4480r23 4490r22 4495r22 4503r19 4504r19 4505r19 4506r23 4552r31 4564r19 +. 4568r19 4569r19 4570r19 4571r23 4585r22 4632r19 4636r19 4637r19 4638r23 +. 4650r22 4656r22 4660r22 4670r25 4681r19 4682r19 4683r23 4693r22 4707r25 +. 4724r22 4726r22 4726r41 4734r19 4738r19 4739r19 4740r19 4741r23 4751r22 +. 4755r18 4758r10 4760r30 4776r25 4798r19 4801r38 4807r19 4810r39 4816r19 +. 4820r19 4821r19 4822r23 4829r21 4832r20 4837r21 4838r23 4842r28 4853r19 +. 4854r19 4855r23 4867r22 4874r22 4877r22 4882r19 4883r19 4884r23 4899r25 +. 4906r25 4916r19 4917r19 4918r19 4919r23 4932r22 4936r22 4959r19 4963r19 +. 4964r19 4965r19 4966r19 4967r23 5000r19 5004r19 5005r19 5006r19 5007r23 +. 5010r43 5018r35 5026r25 5058r25 5065r19 5069r19 5070r19 5071r19 5072r23 +. 5089r25 5100r28 5112r31 5125r38 5138r19 5142r19 5143r23 5152r14 5164r37 +. 5177r25 5181r22 5186r19 5187r19 5188r19 5189r23 5192r43 5195r23 5195r48 +. 5196r23 5216r22 5219r22 5224r19 5225r19 5226r19 5227r19 5228r19 5229r23 +. 5280r19 5284r19 5285r19 5286r19 5287r19 5288r19 5289r23 5323r19 5327r19 +. 5328r19 5329r19 5330r23 5341r23 5364r19 5368r19 5369r19 5370r19 5371r23 +. 5382r23 5404r19 5408r19 5409r19 5410r23 5451r25 5482r19 5487r19 5586r34 +. 5600r25 5601r29 5618r19 5623r25 5624r29 5636r19 5641r25 5642r29 5654r19 +. 5659r25 5660r29 5670r25 5675r20 5676r20 5677r20 5678r20 5679r20 5680r20 +. 5686r51 5805r32 5839r21 5899r55 5922r18 5947r10 5948r10 5960r21 5962r40 +. 5963r16 5985r21 6010r17 6031r18 +71V13*Shift_Left{18M9} 53|785s42 3172s34 +X 21 ipc.ads +17K9*IPC 18e8 52|21r6 29r6 29r28 30r6 30r28 31r5 1278r25 1284r25 1290r25 +. 1318r21 53|35r6 36r6 37r6 218r19 219r19 220r19 262r16 267r16 275r16 296r19 +. 297r19 298r19 348r16 353r16 361r16 814r20 815r20 816r20 819r34 820r34 821r34 +. 826r38 827r38 828r38 1179r19 1189r20 1514r23 1517r16 1548r16 1818r19 1832r22 +. 1841r22 2530r15 2539r15 2548r15 2653r15 2662r15 2671r15 2699r24 2710r18 +. 2862r45 2866r13 2902r45 2918r18 2929r18 2940r18 3191r22 3195r22 3199r22 +. 3203r22 3206r22 3681r15 3688r15 3695r15 3753r15 3760r15 3767r15 3810r21 +. 3812r21 3814r21 3881r20 3901r19 3909r16 4117r19 4140r61 4143r21 4147r22 +. 4155r21 4159r22 4167r21 4173r22 4182r13 4208r19 4231r61 4234r21 4238r22 +. 4246r21 4250r22 4258r21 4264r22 4273r13 4927r15 4946r7 5024r17 5031r7 5053r13 +. 5080r14 5087r17 5096r13 5108r19 5114r19 5151r12 5164r7 5166r30 5172r13 +. 5197r21 5205r25 5208r25 5211r25 5214r25 5258r36 5556r23 5622r25 5640r25 +. 5658r25 5665r15 5668r15 5837r21 5853r13 5855r13 5857r13 5859r13 5866r22 +. 5868r22 5879r22 5881r22 5887r22 5889r22 +X 22 ipc-fifo.ads +21K13*FIFO 156e13 52|30w10 30r32 1284r29 53|218r23 296r23 1179r23 1189r24 +. 3191r26 3195r26 5556r27 5640r29 +39P9*Inner_Acc(38R9) 53|1179r28 +47V13*Create{39P9} 53|1189s29 +51V13*Is_Read_Blocking{boolean} 53|1746s27 +53V13*Is_Write_Blocking{boolean} 53|1748s27 +55U14*Set_Read_Blocking 53|1763s19 +57U14*Set_Write_Blocking 53|1765s19 +61U14*Poll_Reader 53|3191s31 +70U14*Poll_Writer 53|3195s31 +79V13*Is_Empty{boolean} 53|5589s23 +94U14*Get_Size 53|1778s19 1780s19 +102U14*Set_Size 53|1787s19 1793s19 +106E9*Pipe_Status 106e75 52|1284r34 53|218r28 296r28 5556r32 5640r34 +106n25*Pipe_Success{106E9} 53|5647r15 +106n39*Broken_Failure{106E9} 53|5651r15 +106n55*Would_Block_Failure{106E9} 53|5652r15 +113U14*Read 53|258s16 +125U14*Write 53|344s16 5593s13 +X 23 ipc-filelock.ads +21K13*FileLock 111e17 53|36w10 1514r27 1517r20 1818r23 1832r26 1841r26 +33U14*Could_Acquire_Lock 53|1818s32 +34i8 Acquired_FS{54|74I9} 53|1819r23 +35m8 Acquired_Ino{54|28M9} 53|1820r23 +36m8 Start{19|19M9} 53|1821r23 +37m8 Length{19|19M9} 53|1822r23 +38i8 Acquirer{51|33I9} 53|1823r23 +39b8 Is_Write{boolean} 53|1824r23 +40b8 Success{boolean} 53|1825r23 +51U14*Acquire_Lock 53|1841s35 +52i8 Acquired_FS{54|74I9} 53|1842r26 +53m8 Acquired_Ino{54|28M9} 53|1843r26 +54m8 Start{19|19M9} 53|1844r26 +55m8 Length{19|19M9} 53|1845r26 +56i8 Acquirer{51|33I9} 53|1846r26 +57b8 Is_Write{boolean} 53|1847r26 +58b8 Is_Blocking{boolean} 53|1848r26 +59b8 Success{boolean} 53|1849r26 +68U14*Release_Lock 53|1832s35 +69i8 Acquired_FS{54|74I9} 53|1833r26 +70m8 Acquired_Ino{54|28M9} 53|1834r26 +71m8 Start{19|19M9} 53|1835r26 +72m8 Length{19|19M9} 53|1836r26 +73i8 Acquirer{51|33I9} 53|1837r26 +74b8 Success{boolean} 53|1838r26 +87i7*Acquirer{51|33I9} 53|1519r68 +88b7*Is_Writing{boolean} 53|1520r50 +89m7*Start{19|19M9} 53|1521r46 +90m7*Length{19|19M9} 53|1522r46 +91i7*FS{54|74I9} 53|1524r67 +92m7*Ino{54|28M9} 53|1525r59 +94A9*Lock_Arr(86R9) 53|1514r36 +99U14*List_All 53|1517s29 +X 24 ipc-futex.ads +19K13*Futex 47e14 53|35w10 3881r24 3901r23 3909r20 +32A9*Element_Arr(28R9) 53|3881r30 +39V13*Wait{boolean} 53|3901s29 +46U14*Wake 53|3909s26 +X 25 ipc-pty.ads +21K13*PTY 203e12 52|21w10 31r9 1290r29 1318r25 53|220r23 262r20 267r20 298r23 +. 348r20 353r20 2699r28 2710r22 3199r26 3203r26 4927r19 4946r11 5658r29 5665r19 +. 5668r19 5837r25 5853r17 5855r17 5857r17 5859r17 5866r26 5868r26 5879r26 +. 5881r26 5887r26 5889r26 +37P9*Inner_Acc(36R9) 52|1318r29 53|2699r32 4927r23 5837r29 +40E9*Status 40e49 52|1290r33 53|220r27 298r27 5658r33 +40n20*PTY_Success{40E9} 53|5665r23 +40n33*PTY_Would_Block{40E9} 53|5668r23 +43V13*Create{37P9} 53|2710s26 +47U14*Close 53|2716s10 2717s10 +50U14*Read_Primary 53|262s24 +58U14*Write_Primary 53|348s24 +66U14*Read_Secondary 53|267s24 +74U14*Write_Secondary 53|353s24 +82U14*Poll_Primary 53|3199s30 +90U14*Poll_Secondary 53|3203s30 +97U14*Is_Primary_Blocking 53|1752s19 +101U14*Set_Primary_Blocking 53|1769s19 +105U14*Is_Secondary_Blocking 53|1754s19 +109U14*Set_Secondary_Blocking 53|1771s19 +113U14*Get_TermIOs 53|5853s21 +117U14*Set_TermIOs 53|5855s21 +121U14*Get_WinSize 53|5857s21 +125U14*Set_WinSize 53|5859s21 +129U14*Get_Name 53|4946s15 +133U14*Flush_Primary 53|5866s30 +137U14*Flush_Secondary 53|5868s30 +141U14*Start_Primary 53|5887s30 +145U14*Start_Secondary 53|5889s30 +149U14*Stop_Primary 53|5879s30 +153U14*Stop_Secondary 53|5881s30 +X 26 ipc-shm.ads +19K13*SHM 98e12 53|37w10 1548r20 5024r21 5031r11 5053r17 5080r18 5087r21 +. 5096r17 5108r23 5114r23 5151r16 5164r11 5166r34 5172r17 5197r25 5205r29 +. 5208r29 5211r29 5214r29 +25M12*Segment_ID{19|18M9} 53|5151r20 5197r29 +26m4*Error_ID{25M12} 53|5166r38 5214r33 +29V13*Create_Segment{25M12} 53|5208s33 +38V13*Create_Unkeyed_Segment{25M12} 53|5205s33 +45V13*Get_Segment{25M12} 53|5211s33 +48U14*Get_Segment_And_Size 53|5164s15 +54U14*Get_Address 53|5031s15 +59V13*Check_Permissions{boolean} 53|5024s25 5087s25 +64U14*Mark_Refcounted 53|5096s21 +68U14*Modify_Attachment 53|5053s21 5172s21 +70U14*Modify_Permissions 53|5108s27 +71m8 ID{25M12} 53|5109r23 +72m8 UID{19|18M9} 53|5110r23 +73m8 GID{19|18M9} 53|5111r23 +74m8 Mode{19|19M9} 53|5112r23 +76R9*Segment_Information 85e14 53|5080r22 +77m7*Key{19|18M9} 53|5118r54 +78m7*Size{19|19M9} 53|5124r42 +79m7*Owner_UID{19|18M9} 53|5119r45 +80m7*Owner_GID{19|18M9} 53|5120r45 +81m7*Creator_UID{19|18M9} 53|5121r46 +82m7*Creator_GID{19|18M9} 53|5122r46 +83m7*Mode{19|19M9} 53|5123r59 +84i7*Refcount{natural} 53|5125r56 +87U14*Fetch_Information 53|5114s27 +93U14*Get_Total_Size 53|1548s24 +X 27 ipc-socket.ads +21K13*Socket 573e15 52|29w10 29r32 1278r29 53|219r23 275r20 297r23 361r20 +. 814r24 815r24 816r24 819r38 820r38 821r38 826r42 827r42 828r42 2530r19 +. 2539r19 2548r19 2653r19 2662r19 2671r19 2862r49 2866r17 2902r49 2918r22 +. 2929r22 2940r22 3206r26 3681r19 3688r19 3695r19 3753r19 3760r19 3767r19 +. 3810r25 3812r25 3814r25 4117r23 4140r65 4143r25 4147r26 4155r25 4159r26 +. 4167r25 4173r26 4182r17 4208r23 4231r65 4234r25 4238r26 4246r25 4250r26 +. 4258r25 4264r26 4273r17 5258r40 5622r29 +25E9*Domain 28e13 53|815r31 +26n8*IPv4{25E9} 53|819r45 2530r26 2653r26 2918r29 3681r26 3753r26 4143r32 +. 4234r32 +27n8*IPv6{25E9} 53|820r45 2539r26 2662r26 2929r29 3688r26 3760r26 4155r32 +. 4246r32 +28n8*UNIX{25E9} 53|821r45 2548r26 2671r26 2940r29 3695r26 3767r26 4167r32 +. 4258r32 +30E9*DataType 33e12 53|816r31 +31n8*Stream{30E9} 53|826r49 2862r56 2902r56 4140r72 4231r72 5261r24 +32n8*Datagram{30E9} 53|827r49 5263r24 +33n8*Raw{30E9} 53|828r49 5265r24 +37P9*Socket_Acc(36R9) 53|814r31 2894r15 +40E9*Socket_Status 43e20 52|1278r36 53|219r30 297r30 4117r30 4208r30 5622r36 +41n8*Plain_Success{40E9} 53|5629r15 +42n8*Is_Bad_Type{40E9} 53|5633r15 +43n8*Would_Block{40E9} 53|5634r15 +46i4*Default_Socket_Size{natural} 53|5258r47 +55V13*Create{37P9} 53|832s19 +63V13*Get_Domain{25E9} 53|2529s12 2652s12 2917s15 3680s12 3752s12 4142s18 +. 4233s18 +70V13*Get_Type{30E9} 53|2862s13 2902s13 4140s29 4231s29 5260s21 +75U14*Close 53|845s10 2964s13 +81V13*Is_Blocking{boolean} 53|1750s27 +87U14*Set_Blocking 53|1767s19 +96U14*Poll 53|3206s33 +109U14*Read 53|275s27 4182s24 +121U14*Write 53|361s27 4273s24 +136V13*Shutdown{boolean} 53|3810s32 3812s32 3814s32 +144V13*Is_Listening{boolean} 53|5254s27 +152V13*Listen{boolean} 53|2866s24 +159U14*Accept_Connection 53|2909s10 +173U14*Get_Bound 53|3685s16 +185U14*Get_Peer 53|3757s16 +197V13*Bind{boolean} 53|2534s24 +198p8 Sock{37P9} 53|2535r20 +199a8 Addr{37|23A9} 53|2536r20 +200m8 Port{37|25M9} 53|2537r20 +210V13*Connect{boolean} 53|2657s24 +211p8 Sock{37P9} 53|2658r20 +212a8 Addr{37|23A9} 53|2659r20 +213m8 Port{37|25M9} 53|2660r20 +222U14*Accept_Connection 53|2922s19 +223p8 Sock{37P9} 53|2923r23 +224b8 Is_Blocking{boolean} 53|2924r23 +225a8 Peer_Address{37|23A9} 53|2925r23 +226m8 Peer_Port{37|25M9} 53|2926r23 +227p8 Result{37P9} 53|2927r23 +239U14*Read 53|4147s33 +240p8 Sock{37P9} 53|4148r26 +241a8 Data{17|29A9} 53|4149r26 +242i8 Ret_Count{natural} 53|4150r26 +243a8 Addr{37|23A9} 53|4151r26 +244m8 Port{37|25M9} 53|4152r26 +245e8 Success{40E9} 53|4153r26 +257U14*Write 53|4238s33 +258p8 Sock{37P9} 53|4239r26 +259a8 Data{17|29A9} 53|4240r26 +260i8 Ret_Count{natural} 53|4241r26 +261a8 Addr{37|23A9} 53|4242r26 +262m8 Port{37|25M9} 53|4243r26 +263e8 Success{40E9} 53|4244r26 +276U14*Get_Bound 53|3692s16 +288U14*Get_Peer 53|3764s16 +300V13*Bind{boolean} 53|2543s24 +301p8 Sock{37P9} 53|2544r20 +302a8 Addr{37|24A9} 53|2545r20 +303m8 Port{37|26M9} 53|2546r20 +313V13*Connect{boolean} 53|2666s24 +314p8 Sock{37P9} 53|2667r20 +315a8 Addr{37|24A9} 53|2668r20 +316m8 Port{37|26M9} 53|2669r20 +326U14*Accept_Connection 53|2933s19 +327p8 Sock{37P9} 53|2934r23 +328b8 Is_Blocking{boolean} 53|2935r23 +329a8 Peer_Address{37|24A9} 53|2936r23 +330m8 Peer_Port{37|26M9} 53|2937r23 +331p8 Result{37P9} 53|2938r23 +343U14*Read 53|4159s33 +344p8 Sock{37P9} 53|4160r26 +345a8 Data{17|29A9} 53|4161r26 +346i8 Ret_Count{natural} 53|4162r26 +347a8 Addr{37|24A9} 53|4163r26 +348m8 Port{37|26M9} 53|4164r26 +349e8 Success{40E9} 53|4165r26 +361U14*Write 53|4250s33 +362p8 Sock{37P9} 53|4251r26 +363a8 Data{17|29A9} 53|4252r26 +364i8 Ret_Count{natural} 53|4253r26 +365a8 Addr{37|24A9} 53|4254r26 +366m8 Port{37|26M9} 53|4255r26 +367e8 Success{40E9} 53|4256r26 +381U14*Get_Bound 53|3701s16 +393U14*Get_Peer 53|3773s16 +405V13*Bind{boolean} 53|2554s24 +415V13*Connect{boolean} 53|2677s24 +425U14*Accept_Connection 53|2946s19 +426p8 Sock{37P9} 53|2947r23 +427b8 Is_Blocking{boolean} 53|2948r23 +428a8 Peer_Address{string} 53|2949r23 +429i8 Peer_Address_Length{natural} 53|2950r23 +430p8 Result{37P9} 53|2951r23 +441U14*Read 53|4173s33 +442p8 Sock{37P9} 53|4174r26 +443a8 Data{17|29A9} 53|4175r26 +444i8 Ret_Count{natural} 53|4176r26 +445a8 Path{string} 53|4177r26 +446e8 Success{40E9} 53|4178r26 +457U14*Write 53|4264s33 +458p8 Sock{37P9} 53|4265r26 +459a8 Data{17|29A9} 53|4266r26 +460i8 Ret_Count{natural} 53|4267r26 +461a8 Path{string} 53|4268r26 +462e8 Success{40E9} 53|4269r26 +X 28 lib.ads +19K9*Lib 35e8 53|21r6 22w6 23r6 24r6 25r6 1506r16 2551r43 2674r43 2943r37 +. 3164r10 3237r37 3433r10 3698r34 3770r34 4036r13 4046r23 4170r49 4261r49 +. 5010r28 5192r28 5495r10 5512r10 5799r40 5821r20 5824r7 5829r13 5831r13 +. 5962r25 +23V13*C_String_Length{natural} 53|2551s47 2674s47 2943s41 3698s38 3770s38 +. 4170s53 4261s53 5799s44 +X 29 lib-alignment.ads +19k13*Alignment 43e18 53|25w10 5010r32 5192r32 5962r29 +27V13 Align_Up{19|19M9} 53|5196s44[5192] 5968s20[5962] +35V13 Align_Down{19|19M9} 53|5035s28[5010] +X 31 lib-messages.ads +21K13*Messages 103e17 53|21w10 1506r20 5495r14 5512r14 5821r24 5824r11 5829r17 +. 5831r17 +41U14*Put_Line 53|5495s23 5512s23 5829s26 5831s26 +50U14*Dump_Logs 53|1506s29 +55A12*Translated_String{string} 53|5821r33 +63U14*Image 53|5824s20 +X 32 lib-panic.ads +21K13*Panic 39e14 53|24w10 3433r14 +32U14*Hard_Panic 53|3433s20 +X 34 lib-time.ads +19K13*Time 77e13 53|23w10 3164r14 3237r41 4036r17 4046r27 +37U14*Increment 53|3164s19 4036s22 +63V13*Is_Greater_Equal{boolean} 53|3237s46 4046s32 +X 35 memory.ads +19K9*Memory 36e11 52|25w6 1259r21 1343r21 53|30r6 31w6 31r18 1293r16 1305r13 +. 1308r13 1313r13 1546r16 5959r21 5984r21 +20M9*Size +29N4*Memory_Offset 53|5991r48 +35M12*Virtual_Address{42|49M9} 52|1259r28 1343r28 53|444r30 444r49 469r27 +. 547r53 5959r28 5984r28 5991r17 +X 36 memory-physical.ads +20K16*Physical 60e20 53|30w13 1293r23 1305r20 1308r20 1313r20 1546r23 +47R9*Statistics 51e14 53|1293r32 +48m7*Total{35|20M9} 53|1314r42 1550r57 +49m7*Available{35|20M9} 53|1309r42 1551r57 +50m7*Free{35|20M9} 53|1306r42 1552r57 +55U14*Get_Statistics 53|1305s29 1308s29 1313s29 1546s32 +X 37 networking.ads +20K9*Networking 55e15 52|26w6 432r21 433r21 434r21 435r21 436r21 696r20 703r23 +. 1008r13 1009r13 1012r13 1013r13 53|41r6 885r7 1303r36 1405r16 1478r23 1482r16 +. 2537r28 2546r28 2660r28 2669r28 2926r39 2937r39 3686r19 3693r19 3758r19 +. 3765r19 4152r39 4164r39 4243r39 4255r39 4323r13 4328r13 4334r13 +22A9*MAC_Address(19|16M9) 52|432r32 +23A9*IPv4_Address(19|16M9) 52|433r32 434r32 696r31 1008r24 1009r24 +24A9*IPv6_Address(19|16M9) 52|435r32 436r32 703r34 1012r24 1013r24 +25M9*IPv4_Port<19|17M9> 53|2537r39 2660r39 2926r50 3686r30 3758r30 4152r50 +. 4243r50 +26M9*IPv6_Port<19|17M9> 53|2546r39 2669r39 2937r50 3693r30 3765r30 4164r50 +. 4255r50 +33i4*Hostname_Max_Len{natural} 53|1303r47 +38U14*Get_Hostname 53|1405s27 +45U14*Set_Hostname 53|885s18 +X 39 networking-interfaces.ads +20K20*Interfaces 107e26 53|41w17 1478r34 1482r27 4323r24 4328r24 4334r24 +56U14*Block 53|4323s35 +72U14*Modify_Addresses 53|4328s35 +79U14*Modify_Addresses 53|4334s35 +88i7*Handle{17|83I9} 53|1484r40 +89b7*Is_Blocked{boolean} 53|1486r31 +90a7*MAC{37|22A9} 53|1491r43 +91a7*IPv4{37|23A9} 53|1492r44 +92a7*IPv4_Subnet{37|23A9} 53|1493r51 +93a7*IPv6{37|24A9} 53|1494r44 +94a7*IPv6_Subnet{37|24A9} 53|1495r51 +96A9*Interface_Arr(87R9) 53|1478r45 +101U14*List_Interfaces 53|1482s38 +X 40 scheduler.ads +25K9*Scheduler 183e14 52|23w6 23r21 53|609r10 632r17 668r28 670r30 686r21 +. 690r26 751r13 765r13 1142r7 1159r14 1424r23 1451r23 1537r16 1648r14 1649r14 +. 1661r18 1663r18 1669r18 1671r18 1688r32 1880r7 3240r13 4047r13 4458r16 +. 4467r17 5335r26 5335r43 5350r10 5376r26 5376r43 5391r10 5504r7 5521r7 5527r7 +. 5535r7 5590r16 +27I9*TID 52|1267r17 53|585r26 632r27 4485r25 4687r15 4745r15 5335r36 +. 5376r36 5525r26 5532r26 5546r17 +28I9*TCID 53|1648r24 4458r26 4484r24 +29i4*Error_TID{27I9} 53|696r20 4491r45 4714r24 4783r24 +30i4*Error_TCID{28I9} 53|1674r17 4468r20 4491r21 +52V13*Create_User_Thread{27I9} 53|663s21 +53m8 Address{35|35M12} 53|664r14 +54p8 Map{12|43P9} 53|665r14 +55m8 Stack_Addr{19|19M9} 53|666r14 +56m8 TLS_Addr{19|19M9} 53|667r14 +57i8 Cluster{28I9} 53|668r14 +58i8 PID{natural} 53|669r14 +61V13*Create_User_Thread{27I9} 53|686s31 +62r8 GP_State{8|22R15} 53|687r14 +63a8 FP_State{8|23A15} 53|688r14 +64p8 Map{12|43P9} 53|689r14 +65i8 Cluster{28I9} 53|690r14 +66i8 PID{natural} 53|691r14 +67m8 TCB{41|25M9} 53|692r14 +74U14*Yield_If_Able 53|751s23 765s23 1142s17 3240s23 4047s23 5590s26 +77U14*Bail 53|609s20 1880s17 5504s17 5521s17 +87U14*Signal_Kernel_Entry 53|5527s17 +88U14*Signal_Kernel_Exit 53|5535s17 +93E9*Cluster_Algorithm 95e28 53|1649r24 +94n8*Cluster_RR{93E9} 53|1461r27 1661r28 +95n8*Cluster_Cooperative{93E9} 53|1463r27 1663r28 +97V13*Set_Scheduling_Algorithm{boolean} 53|1678s14 +103V13*Set_Time_Slice{boolean} 53|1683s14 +105V13*Create_Cluster{28I9} 53|1669s28 4467s27 +106V13*Delete_Cluster{boolean} 53|1159s24 +108V13*Switch_Cluster{boolean} 53|4492s14 +112I12*Niceness{integer} 53|1426r23 4688r15 4746r15 4755r31 4756r19 4758r59 +. 4760r20 +115V13*Get_Niceness{112I12} 53|1435s24 4718s22 +116U14*Set_Niceness 53|4787s13 +118U14*Get_Name 53|5350s20 +119U14*Set_Name 53|5391s20 +125U14*Get_Load_Averages 53|1537s26 +132V13*Convert{natural} 53|670s40 1431s51 1636s32 5592s36 +133V13*Convert{natural} 53|1433s51 1457s50 1688s42 4470s35 +134V13*Convert{27I9} 53|4485s32 4713s22 4782s22 5335s53 5376s53 +135V13*Convert{28I9} 53|668s38 690s36 1159s40 1671s28 4484s32 +138i7*Thread{27I9} 53|1431r69 1435r47 +139i7*Cluster{28I9} 53|1433r69 +140i7*Proc{natural} 53|1434r60 +142A9*Thread_Listing_Arr(137R9) 53|1424r33 +145i7*Cluster{28I9} 53|1457r68 +146e7*Cluster_Algo{93E9} 53|1460r33 +147b7*Cluster_Int{boolean} 53|1466r31 +148i7*Cluster_Quan{natural} 53|1459r59 +150A9*Cluster_Listing_Arr(144R9) 53|1451r33 +155U14*List_All 53|1428s16 +156U14*List_All 53|1454s16 +X 41 system.ads +11K9*System 73e11 52|18r6 18r35 22w6 709r20 1055r17 1308r31 1321r21 53|20w6 +. 20r18 66r25 91r31 212r29 290r29 445r20 547r23 777r32 868r28 908r31 910r31 +. 1093r30 1236r30 1238r30 1292r26 1892r27 1920r23 2098r31 2099r31 2176r30 +. 2224r32 2225r32 2295r29 2382r31 2443r29 2515r30 2550r36 2580r31 2582r31 +. 2638r30 2673r36 2696r29 2768r30 2770r30 2891r29 2942r39 3040r30 3120r30 +. 3122r30 3124r30 3306r31 3450r31 3536r29 3593r29 3659r31 3661r31 3697r36 +. 3731r31 3733r31 3769r36 3841r26 3843r26 4110r29 4112r34 4169r41 4201r29 +. 4203r34 4260r41 4615r53 4925r30 5079r30 5148r14 5558r23 5578r27 5690r30 +. 5702r30 5704r30 5798r31 5840r21 5964r16 5987r16 +25M9*Address 52|709r27 1055r24 1308r38 1321r28 53|66r32 91r38 212r36 290r36 +. 445r27 547r30 868r35 908r38 910r38 1093r37 1236r37 1238r37 1292r33 1892r34 +. 1920r30 2098r38 2099r38 2176r37 2224r39 2225r39 2295r36 2382r38 2443r36 +. 2515r37 2550r43 2580r38 2582r38 2638r37 2673r43 2696r36 2768r37 2770r37 +. 2891r36 2942r46 3040r37 3120r37 3122r37 3124r37 3306r38 3450r38 3536r36 +. 3593r36 3659r38 3661r38 3697r43 3731r38 3733r38 3769r43 3841r33 3843r33 +. 4110r36 4112r41 4169r48 4201r36 4203r41 4260r48 4925r37 5079r37 5148r21 +. 5558r30 5690r37 5702r37 5704r37 5798r38 5840r28 5964r23 5987r23 +26m4*Null_Address{25M9} 53|777r39 4615r60 5578r34 +32V14*"="{boolean} 53|777r29 5578r25 +X 42 s-stoele.ads +11K16*Storage_Elements 60e28 52|18w13 18r42 +12I9*Storage_Offset +16I12*Storage_Count{12I9} 53|483r32 553r37 1936r38 5050r32 5170r31 5972r33 +. 5998r33 +23V14*"+"{41|25M9} 53|2550s60 2673s60 2942s65 3697s61 3769s61 4169s66 4260s66 +49M9*Integer_Address 52|1051r26 1052r26 1053r26 53|65r24 65r43 90r30 90r49 +. 211r28 211r47 289r28 289r47 664r28 718r29 718r48 867r27 867r46 907r30 907r49 +. 909r30 909r49 1092r29 1092r48 1175r23 1175r43 1235r29 1235r48 1237r29 1237r48 +. 1291r25 1291r44 1616r31 1616r50 1803r33 1803r52 1891r26 1891r45 1920r53 +. 1994r28 1994r47 2096r30 2096r49 2097r30 2097r49 2175r30 2175r49 2222r31 +. 2222r50 2223r31 2223r50 2294r29 2294r48 2381r30 2381r49 2442r29 2442r48 +. 2514r29 2514r48 2579r30 2579r49 2581r30 2581r49 2637r29 2637r48 2695r28 +. 2695r47 2767r29 2767r48 2769r29 2769r48 2890r28 2890r47 2892r28 2892r47 +. 3039r29 3039r48 3119r29 3119r48 3121r29 3121r48 3123r29 3123r48 3305r30 +. 3305r49 3449r30 3449r49 3535r28 3535r47 3592r28 3592r47 3658r30 3658r49 +. 3660r30 3660r49 3730r30 3730r49 3732r30 3732r49 3840r25 3840r44 3842r25 +. 3842r44 3882r20 3885r19 3934r24 3934r43 4005r27 4005r46 4006r27 4006r46 +. 4066r24 4066r43 4109r28 4109r47 4111r33 4111r52 4200r28 4200r47 4202r33 +. 4202r52 4289r29 4289r48 4366r30 4366r49 4367r30 4367r49 4515r26 4515r45 +. 4516r26 4516r45 4576r26 4576r45 4577r26 4577r45 4860r24 4860r43 4889r24 +. 4889r43 4924r29 4924r48 5048r44 5049r44 5078r29 5078r48 5156r45 5169r43 +. 5237r29 5237r48 5297r29 5297r48 5336r24 5336r43 5377r24 5377r43 5417r27 +. 5417r46 5418r27 5418r46 5689r29 5689r48 5701r29 5701r48 5703r29 5703r48 +. 5757r48 5760r47 +51V13*To_Address{41|25M9} 53|66s43 91s49 212s47 290s47 482s32 547s41 729s48 +. 868s46 908s49 910s49 1093s48 1178s64 1236s48 1238s48 1292s44 1617s58 1804s58 +. 1892s45 1920s41 2029s37 2098s49 2099s49 2176s49 2224s50 2225s50 2295s48 +. 2382s49 2443s48 2515s48 2580s49 2582s49 2638s48 2696s47 2768s48 2770s48 +. 2891s47 3040s48 3120s48 3122s48 3124s48 3306s49 3450s49 3536s47 3593s47 +. 3659s49 3661s49 3731s49 3733s49 3841s44 3843s44 3893s64 3948s51 4022s58 +. 4023s58 4075s49 4110s47 4112s52 4201s47 4203s52 4295s56 4296s56 4297s56 +. 4402s40 4439s51 4528s57 4541s55 4596s58 4611s58 4863s34 4892s34 4925s48 +. 5048s32 5049s32 5079s48 5156s33 5169s31 5250s52 5348s37 5389s37 5419s57 +. 5420s57 5690s48 5702s48 5704s48 5757s36 5760s35 5971s33 5997s33 +56V13*To_Integer{49M9} 53|4613s18 5164s50 +X 45 userland.ads +17K9*Userland 23e13 52|24r6 27r6 27r28 33r9 1356r5 53|26r6 42r6 43r6 45r14 +. 121r7 194r10 195r10 238r7 389r7 591r7 607r10 754r20 794r7 928r7 1072r7 +. 1111r7 1217r7 1265r10 1878r7 2025r7 2313r10 2419r10 2420r10 2493r7 3256r7 +. 3272r13 3275r13 3278r10 3281r16 3559r7 4805r7 4814r7 4830r13 4833r13 4836r10 +. 4839r16 5047r32 5413r27 5421r18 5500r7 5501r7 5502r7 5503r7 5517r7 5518r7 +. 5519r7 5520r7 5540r7 5541r7 5542r7 5557r23 5570r10 5584r7 5720r7 5721r7 +. 5753r17 5754r17 5764r10 5765r10 5771r18 6045r5 +19P9*String_Acc(string) 52|1308r54 53|5685r65 5798r54 +20A9*Argument_Arr(19P9) 53|5753r26 +21A9*Environment_Arr(19P9) 53|5754r26 +X 47 userland-loader.ads +20K18*Loader 65e20 53|26w15 5771r27 +41V13*Start_Program{boolean} 53|5771s34 +42a8 Exec_Path{string} 53|5772r14 +43i8 FS{54|74I9} 53|5773r14 +44m8 Ino{54|28M9} 53|5774r14 +45a8 Arguments{45|20A9} 53|5775r14 +46a8 Environment{45|21A9} 53|5776r14 +47i8 Proc{51|33I9} 53|5777r14 +X 48 userland-mac.ads +20K18*MAC 180e17 52|24w15 1331r22 53|107r21 329r49 459r40 1962r23 1995r19 +. 1997r19 2043r15 2047r15 2048r15 2060r15 2070r45 2071r45 2072r45 2248r23 +. 2988r18 3008r18 3015r27 3312r21 3456r21 3629r49 4373r21 5699r20 5826r15 +. 5828r15 5830r15 5900r23 5924r22 5928r41 5929r41 5930r41 5931r41 5932r41 +. 5933r41 5934r34 5948r43 +23R9*Capabilities 39e14 53|1962r27 5900r27 +24b7*Can_Change_Scheduling{boolean} 53|1154r38 1651r38 1965r15 4460r38 4487r38 +. 4690r38 4748r38 5904r17 +25b7*Can_Spawn_Others{boolean} 53|641r40 1966r15 5713r41 5905r17 +26b7*Can_Access_Entropy{boolean} 53|1896r38 1967r15 5906r17 +27b7*Can_Modify_Memory{boolean} 53|450r38 549r38 1922r38 1968r15 5907r17 +28b7*Can_Use_Networking{boolean} 53|1969r15 5908r17 +29b7*Can_Manage_Networking{boolean} 53|872r38 1970r15 4299r38 5909r17 +30b7*Can_Manage_Mounts{boolean} 53|1971r15 2118r41 2187r46 5910r17 +31b7*Can_Manage_Power{boolean} 53|1972r15 3407r38 5911r17 +32b7*Can_Trace_Children{boolean} 53|1973r15 2830r41 5912r17 +33b7*Can_Change_UIDs{boolean} 53|1974r15 3270r34 5913r17 +34b7*Can_Manage_MAC{boolean} 53|1975r15 2002r38 2062r38 5448r41 5914r17 +35b7*Can_Use_Clocks{boolean} 53|1976r15 3940r41 4014r41 5915r17 +36b7*Can_Signal_All{boolean} 53|1977r15 4664r38 5916r17 +37b7*Can_Change_GIDs{boolean} 53|1978r15 4828r34 5917r17 +38b7*Can_Bypass_IPC_Checks{boolean} 53|1979r15 5021r38 5084r38 5918r17 +42R9*Permissions 49e14 53|107r25 1995r23 2248r27 3312r25 3456r25 4373r25 +. 5699r24 +43b7*Includes_Contents{boolean} 53|2018m11 +44b7*Can_Read{boolean} 53|163r44 2019m11 2271r28 +45b7*Can_Write{boolean} 53|164r44 2020m11 3366r31 3510r31 4429r31 +46b7*Can_Execute{boolean} 53|2021m11 5740r25 +47b7*Can_Append_Only{boolean} 53|165r40 2022m11 +48b7*Can_Lock_Files{boolean} 53|2023m11 +52E9*Enforcement 55e13 53|2060r19 +53n8*Deny{52E9} 53|2070r49 5826r19 +54n8*Deny_And_Scream{52E9} 53|2071r49 5828r19 +55n8*Kill{52E9} 53|2072r49 5830r19 +58M9*Limit_Value<19|19M9> 53|3015r31 +59E9*Limit_Type 65e26 52|1331r26 53|2988r22 3008r22 5924r26 +60n8*Core_Size_Limit{59E9} 53|5928r45 +61n8*CPU_Time_Limit{59E9} 53|5929r45 +62n8*File_Size_Limit{59E9} 53|329r53 3629r53 5930r45 +63n8*Opened_File_Limit{59E9} 53|5931r45 5934r38 5948r47 +64n8*Stack_Size_Limit{59E9} 53|5932r45 +65n8*Memory_Size_Limit{59E9} 53|459r44 5933r45 +104E9*Addition_Status 104e63 53|1997r23 +104n29*Success{104E9} 53|2043r19 +104n38*No_Space{104E9} 53|2047r19 +104n48*Is_Conflicting{104E9} 53|2048r19 +X 49 userland-memory_failure.ads +19K18*Memory_Failure 39e28 53|42w15 5413r36 5421r27 5469r13 +21E9*Policy 24e18 53|5421r42 +22n8*Hard_Panic{21E9} 53|5428r25 5457r57 +23n8*Soft_Kill{21E9} 53|5430r25 5458r57 +24n8*Hard_Kill{21E9} 53|5432r25 5459r57 +27U14*Get_System_Policy 53|5426s17 +30U14*Set_System_Policy 53|5469s28 +X 50 userland-oom_failure.ads +19K18*OOM_Failure 35e25 53|43w15 5436r13 5470r13 +22U14*Get_Killing_Config 53|5436s25 +26U14*Configure_Killing 53|5470s25 +X 51 userland-process.ads +28K18*Process 677e21 52|27w15 27r37 53|121r16 176r10 194r19 195r19 238r16 +. 316r7 389r16 591r16 607r19 634r30 723r20 735r13 754r29 794r16 928r16 1072r16 +. 1111r16 1217r16 1265r19 1301r36 1316r36 1318r36 1724r16 1878r16 2025r16 +. 2254r10 2313r19 2405r10 2419r19 2420r19 2463r10 2493r16 2608r10 2796r10 +. 3012r10 3056r7 3069r10 3090r10 3256r16 3272r22 3275r22 3278r19 3281r25 +. 3324r7 3391r7 3392r7 3468r7 3559r16 3616r7 4079r16 4083r16 4387r7 4578r17 +. 4580r17 4644r17 4805r16 4814r16 4830r22 4833r22 4836r19 4839r25 5047r41 +. 5500r16 5501r16 5502r16 5503r16 5517r16 5518r16 5519r16 5520r16 5540r16 +. 5541r16 5542r16 5557r32 5570r19 5584r16 5720r16 5721r16 5764r19 5765r19 +. 6017r10 6037r17 6037r42 6038r17 6038r42 6040r17 6042r17 +33I9*PID 52|1249r30 1250r30 1264r37 1303r20 1314r62 1325r43 1335r18 +. 1347r17 53|63r36 92r42 192r23 213r40 291r40 375r27 442r42 545r34 569r25 +. 586r26 630r17 631r17 719r41 722r20 811r29 864r26 905r29 1060r40 1094r28 +. 1152r23 1176r23 1214r23 1233r41 1289r37 1584r26 1586r17 1647r23 1703r21 +. 1889r38 1917r24 1961r36 1992r40 2059r24 2094r42 2173r29 2220r42 2297r33 +. 2379r42 2440r41 2482r30 2512r41 2577r42 2635r41 2697r40 2734r27 2765r28 +. 2823r24 2824r24 2856r40 2884r39 2986r27 3037r41 3117r41 3253r23 3267r23 +. 3303r42 3388r23 3403r30 3447r42 3537r40 3594r40 3655r42 3727r42 3798r40 +. 3838r37 3932r36 4003r39 4064r36 4113r40 4204r40 4286r41 4364r42 4457r25 +. 4483r25 4513r38 4574r38 4641r26 4642r26 4686r15 4744r15 4802r23 4811r23 +. 4825r23 4858r36 4887r36 4922r41 4972r41 5011r23 5076r23 5146r23 5193r23 +. 5234r41 5294r41 5333r36 5374r36 5415r39 5490r30 5507r30 5538r37 5554r32 +. 5681r20 5819r62 5899r43 5940r18 6009r17 +34i4*Error_PID{33I9} 53|654r22 673r21 742r29 755r22 1589r18 2826r18 4654r16 +. 4700r26 4769r26 +35i4*Max_Process_Count{natural} 53|1316r44 +40i4*Max_Name_Length{natural} 53|634r38 +42i4*Max_File_Count{natural} 53|1301r44 +50n8*Description_Reader_FIFO{49E9} 53|257r18 357r18 942r18 1192r31 1745r21 +. 1762r21 1777r21 1786r21 3190r24 +51n8*Description_Writer_FIFO{49E9} 53|271r18 343r18 942r44 1197r31 1747r21 +. 1764r21 1779r21 1792r21 3194r24 5587r54 +52n8*Description_Primary_PTY{49E9} 53|261r18 347r18 943r18 1122r15 1751r21 +. 1768r21 2711r40 3198r24 4941r15 +53n8*Description_Secondary_PTY{49E9} 53|266r18 352r18 943r44 1124r15 1753r21 +. 1770r21 2712r40 3202r24 4942r15 +54n8*Description_Inode{49E9} 53|152r35 245r18 323r18 392r15 499r32 939r18 +. 1066r50 1114r15 1755r21 1772r21 1810r42 2309r53 2495r15 2746r15 3209r24 +. 3328r63 3472r63 3566r18 3623r18 4304r53 4391r63 4979r33 6020r55 +55n8*Description_Socket{49E9} 53|274r18 360r18 837r37 959r18 1749r21 1766r21 +. 2518r50 2641r50 2859r50 2898r50 2957r40 3205r24 3664r50 3736r50 3802r50 +. 4126r53 4217r53 5239r50 5299r50 +56R9*File_Description 80e14 53|150r28 837r19 1190r26 1195r26 2711r22 2712r22 +. 2957r22 +57P9*File_Description_Acc(56R9) 52|1336r18 53|106r21 215r28 293r28 376r18 +. 446r20 813r20 911r20 1061r23 1096r24 1181r34 1705r30 1707r21 2299r29 2483r26 +. 2513r24 2636r24 2700r24 2735r23 2857r23 2886r24 2893r15 3127r20 3311r21 +. 3455r21 3539r28 3596r28 3657r25 3729r25 3799r23 4115r28 4206r28 4288r24 +. 4372r21 4926r24 4973r24 5236r24 5296r24 5555r23 5941r18 6014r15 +58e27*Description{49E9} 53|152m14 244r20 322r20 391r17 499r18 938r25 1066r35 +. 1113r17 1192m10 1197m10 1744r23 1761r23 1776r23 1785r23 1810r27 2309r38 +. 2494r17 2518r35 2641r35 2745r17 2859r35 2898r35 3189r26 3328r48 3472r48 +. 3565r20 3622r20 3664r35 3736r35 3802r35 4126r38 4217r38 4304r38 4391r48 +. 4940r17 4979r18 5239r35 5299r35 5587r40 6020r40 +59i7*Children_Count{natural} 53|151m14 1191m10 1196m10 +62p13*Inner_Reader_FIFO{22|39P9} 53|258r27 1193m10 1746r50 1763r43 1778r34 +. 1787r34 3192r31 +64p13*Inner_Writer_FIFO{22|39P9} 53|344r28 1198m10 1748r51 1765r44 1780r34 +. 1793r34 3196r31 5589r38 5593r25 +66p13*Inner_Primary_PTY{25|37P9} 53|263r25 349r25 1123r29 1752r45 1769r46 +. 3200r31 4941r57 +68p13*Inner_Secondary_PTY{25|37P9} 53|268r25 354r25 1125r29 1754r47 1771r48 +. 3204r31 4942r57 +70b13*Inner_Is_Locked{boolean} 53|153m14 1839m27 1850m27 +71b13*Inner_Is_Blocking{boolean} 53|154m14 252r48 338r32 1756r32 1773m24 +. 3573r48 3637r49 +72b13*Inner_Ino_Read{boolean} 53|155m14 246r28 1115r21 3567r28 +73b13*Inner_Ino_Write{boolean} 53|156m14 324r28 1115r45 3624r28 +74m13*Inner_Ino_Pos{19|19M9} 53|158m14 251r66 253m21 253r43 328r27 337r32 +. 339m21 339r43 402m24 404m24 404r46 406m24 411r28 2318r41 2324m18 2324r40 +75i13*Inner_Ino_FS{54|74I9} 53|157m14 251r31 336r32 393r28 501r37 940r33 +. 1073r22 1080r27 1116r37 1819r44 1833r47 1842r47 2316r32 2497r22 2747r43 +. 3210r37 3334r27 3478r27 3572r31 3636r32 4310r22 4397r27 4990r42 6024r26 +76m13*Inner_Ino{54|28M9} 53|159m14 251r50 336r51 393r47 502r37 941r33 1073r41 +. 1080r46 1116r56 1820r44 1834r47 1843r47 2317r32 2497r41 2747r62 3210r56 +. 3335r27 3479r27 3572r50 3636r51 4310r41 4316r54 4398r27 4990r61 6025r26 +78p13*Inner_Socket{27|37P9} 53|275r38 361r39 1750r45 1767r38 2529r29 2535r33 +. 2544r33 2554r35 2652r29 2658r33 2667r33 2677r38 2862r28 2866r37 2902r28 +. 2909r34 2917r32 2923r44 2934r44 2947r51 3207r31 3680r29 3685r32 3692r32 +. 3701r32 3752r29 3757r31 3764r31 3773r31 3810r47 3812r47 3814r47 4140r44 +. 4142r35 4148r44 4160r44 4174r44 4182r35 4231r44 4233r35 4239r44 4251r44 +. 4265r44 4273r36 5254r46 5260r36 +82E9*Signal 110e34 52|1250r41 1354r22 53|727r20 4578r25 4644r25 5507r41 5557r40 +. 6032r22 6037r25 6037r50 6038r25 6038r50 6040r25 +92n8*Signal_Kill{82E9} 53|6042r25 +143A9*Signal_Bitmap(boolean)<82E9> 53|3114r52 3115r65 3132r20 4510r52 4511r65 +. 4517r17 4522r54 4528r19 4535r54 4580r25 +155A9*Children_Arr(33I9) 53|723r28 +156U14*Get_Children 53|735s21 +162R9*Process_Info 170e14 53|1339r38 +163a7*Identifier{string} 53|1347r48 +164i7*Identifier_Len{natural} 53|1348r61 +165i7*Process{33I9} 53|1350r70 +166i7*Parent{33I9} 53|1349r70 +167m7*User{19|18M9} 53|1351r48 +168b7*Is_Being_Traced{boolean} 53|1353r32 +169b7*Has_Exited{boolean} 53|1356r32 +171A9*Process_Info_Arr(162R9) 53|1341r24 +176U14*List_All 53|1344s16 +181U14*Create_Process 53|672s10 1588s7 +185U14*Delete_Process 53|794s24 +188U14*Get_Runtime_Times 53|4079s24 +194U14*Get_Children_Runtimes 53|4083s24 +203U14*Add_Thread 53|699s7 +218U14*Remove_Thread 53|607s27 1878s24 5502s24 5519s24 +223U14*Flush_Threads 53|591s24 5500s24 5517s24 5540s24 +228U14*Reassign_Process_Addresses 53|5765s27 +232V13*Get_Niceness{40|112I12} 53|4704s22 +236U14*Set_Niceness 53|4773s13 +243V13*Is_Valid_File{boolean} 53|194s27 +252U14*Add_File 53|5950s10 +263V13*Get_File_Count{natural} 53|5947s23 +269U14*Duplicate 53|1719s13 +277U14*Duplicate_FD_Table 53|685s10 1595s7 +288U14*Close 53|167s10 181s10 846s10 1203s10 1204s10 2718s10 2719s10 2965s13 +294V13*Get_File{57P9} 53|215s52 293s52 382s15 494s18 931s23 1061s47 1096s48 +. 1705s54 2299s53 2483s50 2513s48 2636s48 2735s47 2857s47 2886s48 3177s24 +. 3327s23 3471s23 3539s52 3596s52 3657s49 3729s49 3799s47 4115s52 4206s52 +. 4288s48 4390s23 4926s48 4973s48 5236s48 5296s48 5586s18 6019s19 +303U14*Get_FD_Flags 53|1731s13 +314U14*Set_FD_Flags 53|176s18 840s10 1724s24 1739s13 2960s13 +324U14*Remove_File 53|195s27 +329U14*Flush_Files 53|5501s24 5518s24 5541s24 +333U14*Flush_Exec_Files 53|5764s27 +338U14*Set_Common_Map 53|611s10 680s10 5767s10 +344V13*Get_Common_Map{12|43P9} 53|64s43 93s49 214s49 292s49 443s49 546s41 +. 592s18 606s43 665s28 680s45 681s13 689s26 721s48 792s14 865s48 906s51 1095s50 +. 1177s45 1234s48 1290s44 1615s50 1704s54 1890s47 1918s42 1993s47 2095s49 +. 2174s51 2221s50 2298s55 2380s49 2441s48 2522s40 2578s49 2645s40 2698s47 +. 2766s50 2885s46 3038s48 3118s48 3304s49 3448s49 3538s49 3595s49 3656s49 +. 3728s49 3839s44 3933s43 4004s46 4065s43 4114s49 4205s49 4287s48 4365s49 +. 4514s45 4575s45 4859s43 4888s43 4923s48 5047s49 5077s40 5147s40 5235s48 +. 5295s48 5334s43 5375s43 5416s46 5688s48 +363V13*Bump_Alloc_Base{19|19M9} 53|469s44 5042s19 +370U14*Get_Traced_Info 53|5584s24 +380U14*Set_Traced_Info 53|2839s13 +390U14*Issue_Exit 53|5503s24 5542s24 +397U14*Issue_Exit 53|5520s24 +406U14*Check_Exit 53|743s19 760s13 +418U14*Set_CWD 53|1080s7 +428U14*Get_CWD 53|5721s24 6017s18 +437V13*Get_Parent{33I9} 53|569s32 653s20 755s40 2826s44 +443U14*Set_Identifier 53|678s10 5768s10 +450U14*Get_Identifier 53|677s10 +459U14*Get_UID 53|1217s24 3090s18 3278s27 4666s10 +464U14*Set_UID 53|3275s30 +469U14*Get_Effective_UID 53|121s24 238s24 316s15 389s24 928s24 1072s24 1111s24 +. 1265s27 2025s24 2254s18 2313s27 2405s18 2420s27 2463s18 2493s24 2608s18 +. 2796s18 3056s15 3069s18 3256s24 3324s15 3468s15 3559s24 3616s15 4387s15 +. 4665s10 4667s10 5022s10 5085s10 5201s7 5720s24 +474U14*Set_Effective_UID 53|3272s30 3281s33 +479U14*Get_GID 53|4805s24 4836s27 +484U14*Set_GID 53|4833s30 +489U14*Get_Effective_GID 53|4814s24 5023s10 5086s10 5202s7 +494U14*Set_Effective_GID 53|4830s30 4839s33 +496N4*Max_Supplementary_Groups 53|1318r44 +497A9*Supplementary_GID_Arr(19|18M9) 53|4862r15 4891r15 +499U14*Get_Supplementary_Groups 53|4871s7 +504U14*Set_Supplementary_Groups 53|4903s10 +509U14*Empty_Supplementary_Groups 53|4895s10 +514U14*Get_Umask 53|2419s27 3391s15 +519U14*Set_Umask 53|3392s15 +525U14*Get_Masked_Signals 53|3153s13 4519s7 4617s19 +531U14*Set_Masked_Signals 53|3154s13 3245s10 4545s19 4547s19 4549s19 4619s19 +536U14*Raise_Signal 53|4675s7 +542U14*Get_Signal_Handler 53|4600s13 +551U14*Set_Signal_Handler 53|4615s19 4621s19 +562U14*Get_Raised_Signal_Actions 53|5570s27 +563i8 Proc{33I9} 53|5571r14 +564e8 Sig{82E9} 53|5572r14 +565m8 Addr{41|25M9} 53|5573r14 +566b8 No_Sig{boolean} 53|5574r14 +567b8 Ignore{boolean} 53|5575r14 +573V13*Convert{natural} 53|565s32 572s32 669s28 691s26 693s30 797s32 1349s51 +. 1350s51 1519s50 1630s32 1829s44 5820s57 +579V13*Convert{33I9} 53|754s37 1814s24 2824s31 4642s33 4699s24 4768s24 +586V13*Get_Enforcement{48|52E9} 53|5825s12 +587U14*Set_Enforcement 53|2079s7 +589V13*Get_Capabilities{48|23R9} 53|450s14 549s14 641s14 872s14 1154s14 1651s14 +. 1896s14 1922s14 1962s43 2002s14 2062s14 2118s17 2187s17 2830s17 3270s10 +. 3407s14 3940s17 4014s17 4299s14 4460s14 4487s14 4664s14 4690s14 4748s14 +. 4828s10 5021s14 5084s14 5448s17 5713s17 5900s43 +590U14*Set_Capabilities 53|5902s7 +592V13*Check_Permissions{48|42R9} 53|149s24 2270s24 3365s27 3509s27 4428s27 +. 5739s21 +597U14*Add_Entity 53|2039s7 +604V13*Get_Limit{48|58M9} 53|329s32 459s23 2993s35 3629s32 5948s23 +608U14*Set_Limit 53|3012s18 +609i8 Proc{33I9} 53|3013r14 +610e8 Resource{48|59E9} 53|3014r14 +611m8 Limit{48|58M9} 53|3015r14 +612b8 Could_Set{boolean} 53|3016r14 +X 52 userland-syscall.ads +33K18*Syscall 45|17k9 52|1264E14 1356l14 1356e21 53|45b23 6045l14 6045t21 +36E9*Errno_Value 62e23 63r8 101r23 108r23 123r24 129r23 137r23 145r23 156r23 +. 176r25 183r23 186r63 189r64 200r24 215r23 226r25 243r23 250r23 302r24 308r23 +. 316r23 319r67 325r23 332r26 335r63 348r26 467r23 479r24 482r63 494r25 529r23 +. 532r67 539r22 547r24 568r23 573r23 587r24 596r23 613r26 622r24 632r26 661r26 +. 664r60 674r24 682r24 689r23 716r24 727r26 735r24 741r26 748r23 759r26 769r26 +. 776r23 785r24 797r23 804r23 818r24 839r24 842r64 849r23 859r24 865r23 875r23 +. 886r24 895r23 904r23 911r24 918r24 927r23 945r24 958r24 968r27 982r25 992r24 +. 1002r24 1020r24 1029r24 1033r23 1039r23 1049r23 1064r23 1070r23 1080r23 +. 1087r23 1089r63 1091r64 1098r23 1105r23 1112r23 1120r23 1135r23 1144r23 +. 1175r23 1180r23 1191r23 1207r23 1216r23 1223r23 1230r23 1245r23 1275r29 +. 1281r29 1287r29 1293r29 1305r24 53|49r23 61r23 88r24 190r23 209r23 287r23 +. 373r23 439r25 543r25 562r63 568r64 583r24 626r23 716r45 809r23 862r23 903r24 +. 1058r23 1090r23 1139r67 1150r23 1173r26 1213r63 1231r26 1287r23 1582r24 +. 1633r63 1645r25 1701r23 1873r67 1887r22 1915r24 1949r23 1959r23 1990r24 +. 2057r23 2092r26 2171r24 2218r26 2289r26 2355r60 2375r24 2438r24 2480r23 +. 2510r24 2575r26 2633r24 2693r26 2732r23 2763r26 2819r26 2854r23 2882r24 +. 2984r23 3005r23 3035r24 3111r24 3252r64 3265r23 3301r24 3386r23 3401r23 +. 3445r24 3533r23 3590r23 3653r24 3725r24 3796r23 3836r24 3930r24 4001r27 +. 4062r25 4105r24 4196r24 4284r24 4362r24 4455r23 4481r23 4507r23 4572r23 +. 4639r23 4684r23 4742r23 4801r63 4810r64 4823r23 4856r23 4885r23 4920r23 +. 4968r23 5008r23 5073r23 5144r23 5190r23 5230r23 5290r23 5331r23 5372r23 +. 5411r23 5602r29 5625r29 5643r29 5661r29 5683r24 +37n8*Error_No_Error{36E9} 64r8 53|53r19 78r22 178r22 197r22 416r16 488r22 +. 513r22 554r19 564r16 571r16 704r16 771r19 796r19 843r19 891r19 1051r19 +. 1081r19 1131r19 1144r19 1164r22 1208r19 1218r16 1564r19 1629r19 1635r19 +. 1687r19 1863r16 1876r16 1905r19 1941r19 1953r16 1981r16 2044r25 2080r16 +. 2158r19 2201r22 2345r25 2360r22 2559r19 2682r19 2723r19 2846r16 2867r22 +. 2961r25 2992r19 3018r22 3248r19 3257r16 3290r16 3393r16 3706r19 3778r19 +. 3822r22 3903r31 3917r19 3987r16 4054r22 4093r22 4342r22 4469r22 4497r22 +. 4558r19 4626r19 4676r19 4729r16 4792r16 4806r16 4815r16 4848r16 4873r19 +. 4911r16 4953r16 4987r22 5054r22 5132r16 5173r22 5215r19 5273r16 5316r16 +. 5354r30 5394r25 5476r19 5607r25 5630r25 5648r25 5666r25 5787r22 +38n8*Error_Not_Big_Enough{36E9} 65r8 +39n8*Error_Bad_Access{36E9} 66r8 53|170r22 534r16 550r19 642r19 873r19 1155r19 +. 1608r22 1652r19 1897r19 1923r19 2003r19 2063r19 2119r19 2188r19 2272r22 +. 2831r19 3367r28 3408r19 3511r28 3941r19 4015r19 4300r19 4430r28 4461r19 +. 4488r19 4691r19 4749r19 5025r22 5088r22 5449r22 5714r19 5742r19 5791r22 +40n8*Error_Would_Block{36E9} 67r8 53|709r19 1590r22 1789r31 1795r31 1854r31 +. 2970r22 5634r41 5652r47 5669r25 +41n8*Error_Busy{36E9} 68r8 53|2204r22 +42n8*Error_Child{36E9} 69r8 53|801r19 +43n8*Error_Would_Fault{36E9} 70r8 53|70r22 113r22 226r22 303r19 779r25 880r19 +. 923r19 1102r19 1184r19 1248r19 1330r22 1622r28 1808r28 1901r19 1937r19 +. 2008r22 2109r19 2180r19 2236r19 2308r22 2392r19 2450r19 2524r19 2591r19 +. 2647r19 2705r19 2779r19 2977r19 3047r22 3138r22 3145r25 3315r22 3459r22 +. 3546r19 3603r19 3716r19 3788r19 3921r19 3938r22 4012r22 4070r22 4124r22 +. 4215r22 4352r19 4378r22 4563r19 4631r19 4866r19 4898r22 4931r19 5099r25 +. 5245r19 5305r19 5339r19 5380r19 5481r19 5710r19 +44n8*Error_File_Too_Big{36E9} 71r8 53|331r28 3631r28 +45n8*Error_Invalid_ID{36E9} 72r8 +46n8*Error_Invalid_Value{36E9} 73r8 53|75r22 247r28 272r28 325r28 358r25 +. 426r16 524r16 557r19 647r22 655r22 854r19 888r19 1161r22 1569r19 1692r19 +. 1867r16 1931r22 2012r22 2048r46 2074r22 2148r28 2750r25 2841r22 2870r22 +. 2997r16 3024r16 3419r22 3568r28 3577r25 3625r28 3641r25 3709r19 3816r25 +. 3872r22 3912r28 3992r19 4089r28 4345r22 4494r19 4551r31 4584r22 4649r22 +. 4659r22 4733r16 4797r16 4876r19 4905r22 4958r16 4993r22 5064r16 5137r16 +. 5180r19 5218r19 5278r16 5321r16 5362r16 5402r16 5486r19 5611r48 5633r41 +. 5651r42 +47n8*Error_IO{36E9} 74r8 53|2161r19 2363r22 2562r19 2685r19 3428r55 5614r48 +48n8*Error_Is_Directory{36E9} 75r8 53|5610r48 +49n8*Error_File_Loop{36E9} 76r8 53|5616r48 +50n8*Error_Too_Many_Files{36E9} 77r8 53|183r22 847r22 1205r19 1727r25 2720r19 +. 2966r25 +51n8*Error_String_Too_Long{36E9} 78r8 53|117r22 1254r19 2115r19 2184r19 2242r19 +. 2396r19 2454r19 2597r19 2785r19 3051r22 3319r22 3463r22 4382r22 +52n8*Error_No_Entity{36E9} 79r8 53|139r25 1000r28 2265r22 2348r25 3083r25 +. 3360r28 3504r28 4423r28 5734r19 +53n8*Error_No_Memory{36E9} 80r8 53|529r16 2047r46 3906r31 4472r22 5057r22 +. 5176r22 +54n8*Error_Not_Implemented{36E9} 81r8 53|3427r55 5612r48 +55n8*Error_Not_Connected{36E9} 82r8 53|3781r19 3825r22 +56n8*Error_Not_A_TTY{36E9} 83r8 53|1106r19 1134r19 +57n8*Error_Not_Supported{36E9} 84r8 53|2863r22 2903r22 4706r25 4775r25 +58n8*Error_Bad_Permissions{36E9} 85r8 53|2827r19 3283r25 4669r25 4841r25 +. 5615r48 +59n8*Error_Read_Only_FS{36E9} 86r8 53|5613r48 +60n8*Error_Invalid_Seek{36E9} 87r8 53|421r16 4980r19 +61n8*Error_Bad_Search{36E9} 88r8 53|4655r22 +62n8*Error_Bad_File{36E9} 89r8 53|131r25 200r22 230r22 307r19 384r19 516r22 +. 933r22 983r28 1009r19 1067r22 1075r22 1272r25 1711r19 2258r25 2311r22 2409r25 +. 2467r25 2488r19 2500r22 2519r19 2612r25 2642r19 2740r22 2804r25 2860r22 +. 2899r22 3064r25 3330r25 3343r28 3474r25 3487r28 3550r19 3607r19 3665r22 +. 3737r22 3803r22 4128r22 4219r22 4306r22 4313r22 4393r25 4406r28 4935r19 +. 4977r19 5240r19 5300r19 +92N4*AT_FDCWD 53|6016r19 +93N4*AT_EMPTY_PATH 53|930r21 3326r21 3470r21 4389r21 +94N4*AT_SYMLINK_NOFOLLOW 53|998r42 3081r39 3358r42 3502r42 4421r42 +95N4*AT_EACCESS 53|3089r21 +98U14*Sys_Exit 99>8 100<8 101<8 53|46b14 55l8 55t16 +99m8 Code{19|19M9} 53|47b8 54r60 +100m8 Returned{19|19M9} 53|48b8 52m7 +101e8 Errno{36E9} 53|49b8 53m7 +104U14*Arch_PRCtl 105>8 106>8 107<8 108<8 53|57b14 80l8 80t18 +105m8 Code{19|19M9} 53|58b8 71r13 72r49 +106m8 Argument{19|19M9} 53|59b8 65r60 +107m8 Returned{19|19M9} 53|60b8 69m10 74m10 77m10 +108e8 Errno{36E9} 53|61b8 70m10 75m10 78m10 +111N4*O_RDONLY 53|95r60 +112N4*O_WRONLY 53|96r60 +113N4*O_APPEND 53|98r60 +114N4*O_CLOEXEC 53|94r60 +115N4*O_NOFOLLOW 53|97r60 +116N4*O_NONBLOCK 53|99r60 1189r48 1758r46 1760r35 +117U14*Open 118>8 119>8 120>8 121>8 122<8 123<8 53|82b14 185l8 185t12 +118m8 Dir_FD{19|19M9} 53|83b8 128r43 +119m8 Path_Addr{19|19M9} 53|84b8 90r66 +120m8 Path_Len{19|19M9} 53|85b8 111r54 115r13 125r39 +121m8 Flags{19|19M9} 53|86b8 94r50 95r50 96r50 97r50 98r50 99r50 +122m8 Returned{19|19M9} 53|87b8 112m10 116m10 130m13 138m13 169m10 179m10 +. 182m10 +123e8 Errno{36E9} 53|88b8 113m10 117m10 131m13 139m13 170m10 178m10 183m10 +126U14*Close 127>8 128<8 129<8 53|187b14 202l8 202t13 +127m8 File_D{19|19M9} 53|188b8 194r48 195r55 +128m8 Returned{19|19M9} 53|189b8 196m10 199m10 +129e8 Errno{36E9} 53|190b8 197m10 200m10 +132U14*Read 133>8 134>8 135>8 136<8 137<8 53|204b14 280l8 280t12 +133m8 File_D{19|19M9} 53|205b8 215r68 +134m8 Buffer{19|19M9} 53|206b8 211r64 +135m8 Count{19|19M9} 53|207b8 224r53 232r13 235r32 +136m8 Returned{19|19M9} 53|208b8 225m10 229m10 248m19 256m55 259m69 264m69 +. 269m69 273m16 277m55 +137e8 Errno{36E9} 53|209b8 226m10 230m10 247m19 256m65 260m34 265m34 270m34 +. 272m16 277m65 +140U14*Write 141>8 142>8 143>8 144<8 145<8 53|282b14 366l8 366t13 +141m8 File_D{19|19M9} 53|283b8 293r68 +142m8 Buffer{19|19M9} 53|284b8 289r64 +143m8 Count{19|19M9} 53|285b8 302r53 310r13 313r32 +144m8 Returned{19|19M9} 53|286b8 304m10 308m10 326m19 332m19 341m69 345m69 +. 350m69 355m69 359m16 363m55 +145e8 Errno{36E9} 53|287b8 303m10 307m10 325m19 331m19 342m41 346m41 351m34 +. 356m34 358m16 363m65 +148N4*SEEK_SET 53|401r21 +149N4*SEEK_CURRENT 53|403r21 +150N4*SEEK_END 53|405r21 +151U14*Seek 152>8 153>8 154>8 155<8 156<8 53|368b14 429l8 429t12 +152m8 File_D{19|19M9} 53|369b8 382r31 +153m8 Offset{19|19M9} 53|370b8 402r41 404r62 406r62 +154m8 Whence{19|19M9} 53|371b8 400r18 +155m8 Returned{19|19M9} 53|372b8 385m10 417m7 422m7 427m7 +156e8 Errno{36E9} 53|373b8 384m10 416m7 421m7 426m7 +159N4*PROT_NONE 53|5807r14 +160N4*PROT_READ 53|5812r42 +161N4*PROT_WRITE 53|5813r42 +162N4*PROT_EXEC 53|5814r42 +163N4*MAP_PRIVATE +164N4*MAP_SHARED +165N4*MAP_FIXED 53|466r24 +166N4*MAP_ANON 53|479r21 +167N4*MAP_NORESERVE +168U14*Mmap 169>8 170>8 171>8 172>8 173>8 174>8 175<8 176<8 53|431b14 537l8 +. 537t12 +169m8 Hint{19|19M9} 53|432b8 444r66 453r14 465r10 +170m8 Length{19|19M9} 53|433b8 454r14 455r13 458r42 469r67 474r59 483r47 +. 506r32 +171m8 Protection{19|19M9} 53|434b8 441r64 +172m8 Flags{19|19M9} 53|435b8 466r14 479r11 +173m8 File_D{19|19M9} 53|436b8 494r34 +174m8 Offset{19|19M9} 53|437b8 504r32 +175m8 Returned{19|19M9} 53|438b8 489m13 514m13 517m13 525m7 530m7 536m7 +176e8 Errno{36E9} 53|439b8 488m13 513m13 516m13 524m7 529m7 534m7 +179U14*Munmap 180>8 181>8 182<8 183<8 53|539b14 560l8 560t14 +180m8 Address{19|19M9} 53|540b8 547r70 +181m8 Length{19|19M9} 53|541b8 553r52 +182m8 Returned{19|19M9} 53|542b8 552m10 555m10 558m10 +183e8 Errno{36E9} 53|543b8 550m10 554m10 557m10 +186U14*Get_PID 186<23 186<51 53|562b14 566l8 566t15 +186m23 Returned{19|19M9} 53|562b23 565m7 +186e51 Errno{36E9} 53|562b51 564m7 +189U14*Get_PPID 189<24 189<52 53|568b14 573l8 573t16 +189m24 Returned{19|19M9} 53|568b24 572m7 +189e52 Errno{36E9} 53|568b52 571m7 +192U14*Exec 193>8 194>8 195>8 196>8 197>8 198>8 199<8 200<8 53|575b14 614l8 +. 614t12 +193m8 Path_Addr{19|19M9} 53|576b8 595r24 +194m8 Path_Len{19|19M9} 53|577b8 596r24 +195m8 Argv_Addr{19|19M9} 53|578b8 597r24 +196m8 Argv_Len{19|19M9} 53|579b8 598r24 +197m8 Envp_Addr{19|19M9} 53|580b8 599r24 +198m8 Envp_Len{19|19M9} 53|581b8 600r24 +199m8 Returned{19|19M9} 53|582b8 612m10 +200e8 Errno{36E9} 53|583b8 603m24 +203N4*CLONE_PARENT 53|638r51 +204N4*CLONE_THREAD 53|639r51 +205U14*Clone 206>8 207>8 208>8 209>8 210>8 211>8 212>8 213>8 214<8 215<8 +. 53|616b14 711l8 711t13 +206m8 Callback{19|19M9} 53|617b8 664r45 +207m8 Call_Arg{19|19M9} 53|618b8 628r28 +208m8 Stack{19|19M9} 53|619b8 666r28 +209m8 Flags{19|19M9} 53|620b8 638r41 639r41 +210m8 TLS_Addr{19|19M9} 53|621b8 667r28 +211m8 Cluster{19|19M9} 53|622b8 646r13 668r56 690r54 +212r8 GP_State{8|22R15} 53|623b8 687r26 +213a8 FP_State{8|23A15} 53|624b8 688r26 +214m8 Returned{19|19M9} 53|625b8 644m10 648m10 656m13 705m7 710m7 +215e8 Errno{36E9} 53|626b8 642m10 647m10 655m13 704m7 709m7 +218N4*WNOHANG 53|720r61 +219N4*WIFEXITED 53|787r27 +220N4*WIFSIGNALED 53|785r27 +221U14*Wait 222>8 223>8 224>8 225<8 226<8 53|713b14 803l8 803t12 +222m8 Waited_PID{19|19M9} 53|714b8 733r10 754r55 +223m8 Exit_Addr{19|19M9} 53|714b20 718r65 +224m8 Options{19|19M9} 53|714b31 720r49 +225m8 Returned{19|19M9} 53|715b8 772m7 780m13 797m7 802m7 +226e8 Errno{36E9} 53|716b8 771m7 779m13 796m7 801m7 +229N4*AF_INET 53|819r15 +230N4*AF_INET6 53|820r15 +231N4*AF_UNIX 53|821r15 +232N4*SOCK_DGRAM 53|827r15 5264r29 +233N4*SOCK_RAW 53|828r15 5266r29 +234N4*SOCK_STREAM 53|826r15 5262r29 +235N4*SOCK_SEQPACKET +236N4*SOCK_NONBLOCK 53|832r52 2888r59 +237N4*SOCK_CLOEXEC 53|842r27 2887r59 +238N4*SOCK_CLOFORK 53|2889r59 +239U14*Socket 240>8 241>8 242<8 243<8 53|805b14 856l8 856t14 +240m8 Domain{19|19M9} 53|806b8 818r12 +241m8 DataType{19|19M9} 53|807b8 825r12 832r39 842r14 +242m8 Returned{19|19M9} 53|808b8 838m53 838r53 841r19 848m10 855m7 +243e8 Errno{36E9} 53|809b8 843m10 847m10 854m7 +246U14*Set_Hostname 247>8 248>8 249<8 250<8 53|858b14 894l8 894t20 +247m8 Address{19|19M9} 53|859b8 867r63 +248m8 Length{19|19M9} 53|860b8 866r55 879r49 +249m8 Returned{19|19M9} 53|861b8 875m10 881m10 889m10 892m10 +250e8 Errno{36E9} 53|862b8 873m10 880m10 888m10 891m10 +253R9*Time_Spec 256e15 273r23 274r23 275r23 972r21 973r21 53|3136r50 3162r17 +. 3846r43 3880r20 3936r49 3948r17 4008r52 4009r52 4022r24 4023r24 4376r55 +. 4438r45 +254m7*Seconds{19|19M9} 53|953m38 954m38 955m38 969m38 970m38 971m38 3164r58 +. 3901r49 3955m31 3958m31 3966m31 3969m31 3977r31 4028r30 4036r54 4050m20 +. 4079m67 4080m66 4084m44 4085m67 4444r46 4446r46 +255m7*Nanoseconds{19|19M9} 53|953m52 954m52 955m52 969m52 970m52 971m52 3165r35 +. 3901r63 3955m45 3958m45 3966m45 3969m45 3977r45 4029r30 4037r41 4051m20 +. 4080m37 4081m35 4085m38 4086m36 4445r46 4447r46 +257N4*Stat_IFIFO 53|947r37 +258N4*Stat_IFCHR 53|1045r47 +259N4*Stat_IFDIR 53|1041r47 2413r23 +260N4*Stat_IFBLK 53|1047r47 +261N4*Stat_IFREG 53|1039r47 +262N4*Stat_IFLNK 53|1043r47 +263N4*Stat_ISOCK 53|963r37 +264R9*Stat 278e14 279r8 294r8 53|917r20 920r54 +265m7*Device_Number{19|19M9} 280r7 53|945m20 961m20 1016m11 +266m7*Inode_Number{19|19M9} 281r7 53|946m20 962m20 1017m11 +267m7*Mode{19|18M9} 282r7 53|947m20 963m20 1018m11 1039m22 1039r39 1041m22 +. 1041r39 1043m22 1043r39 1045m22 1045r39 1047m22 1047r39 +268m7*Number_Links{19|18M9} 283r7 53|948m20 964m20 1019m11 +269m7*UID{19|18M9} 284r7 53|949m20 965m20 1020m11 +270m7*GID{19|18M9} 285r7 53|950m20 966m20 1021m11 +271m7*Inner_Device{19|19M9} 286r7 53|951m20 967m20 1022m11 +272m7*File_Size{19|19M9} 287r7 53|952m20 968m20 1023m11 +273r7*Access_Time{253R9} 288r7 53|953m20 969m20 1024m11 +274r7*Modify_Time{253R9} 289r7 53|954m20 970m20 1027m11 +275r7*Create_Time{253R9} 290r7 53|955m20 971m20 1030m11 +276m7*Block_Size{19|19M9} 291r7 53|956m20 972m20 1033m11 +277m7*Block_Count{19|19M9} 292r7 53|957m20 973m20 1034m11 +295U14*FStat 296>8 297>8 298>8 299>8 300>8 301<8 302<8 53|896b14 1053l8 1053t13 +296m8 Dir_FD{19|19M9} 53|897b8 931r39 981r41 +297m8 Path_Addr{19|19M9} 53|898b8 909r66 +298m8 Path_Len{19|19M9} 53|899b8 921r54 978r42 +299m8 Stat_Addr{19|19M9} 53|900b8 907r66 +300m8 Flags{19|19M9} 53|901b8 930r11 998r32 +301m8 Returned{19|19M9} 53|902b8 924m10 934m13 984m16 1001m16 1010m10 1052m7 +302e8 Errno{36E9} 53|903b8 923m10 933m13 983m16 1000m16 1009m10 1051m7 +305U14*Chdir 306>8 307<8 308<8 53|1055b14 1083l8 1083t13 +306m8 FD{19|19M9} 53|1056b8 1061r63 +307m8 Returned{19|19M9} 53|1057b8 1068m10 1076m10 1082m7 +308e8 Errno{36E9} 53|1058b8 1067m10 1075m10 1081m7 +311U14*IOCTL 312>8 313>8 314>8 315<8 316<8 53|1085b14 1137l8 1137t13 +312m8 FD{19|19M9} 53|1086b8 1096r64 +313m8 Request{19|19M9} 53|1087b8 1117r32 1123r54 1125r57 +314m8 Argument{19|19M9} 53|1088b8 1092r65 +315m8 Returned{19|19M9} 53|1089b8 1103m10 1107m10 1132m10 1135m10 +316e8 Errno{36E9} 53|1090b8 1102m10 1106m10 1131m10 1134m10 +319U14*Sched_Yield 319<27 319<55 53|1139b14 1145l8 1145t19 +319m27 Returned{19|19M9} 53|1139b27 1143m7 +319e55 Errno{36E9} 53|1139b55 1144m7 +322U14*Delete_Thread_Cluster 323>8 324<8 325<8 53|1147b14 1167l8 1167t29 +323m8 Cluster{19|19M9} 53|1148b8 1158r13 1159r58 +324m8 Returned{19|19M9} 53|1149b8 1157m10 1162m10 1165m10 +325e8 Errno{36E9} 53|1150b8 1155m10 1161m10 1164m10 +328U14*Pipe 329>8 330>8 331<8 332<8 53|1169b14 1211l8 1211t12 +329m8 Result_Addr{19|19M9} 53|1170b8 1175r60 +330m8 Flags{19|19M9} 53|1171b8 1189r38 +331m8 Returned{19|19M9} 53|1172b8 1185m10 1206m10 1209m10 +332e8 Errno{36E9} 53|1173b8 1184m10 1205m10 1208m10 +335U14*Get_UID 335<23 335<51 53|1213b14 1220l8 1220t15 +335m23 Returned{19|19M9} 53|1213b23 1219m7 +335e51 Errno{36E9} 53|1213b51 1218m7 +338N4*RENAME_NOREPLACE 53|1239r50 +339U14*Rename 340>8 341>8 342>8 343>8 344>8 345>8 346>8 347<8 348<8 53|1222b14 +. 1280l8 1280t14 +340m8 Source_FD{19|19M9} 53|1223b8 1266r38 +341m8 Source_Addr{19|19M9} 53|1224b8 1235r65 +342m8 Source_Len{19|19M9} 53|1225b8 1245r53 1251r13 1260r38 +343m8 Target_FD{19|19M9} 53|1226b8 1267r38 +344m8 Target_Addr{19|19M9} 53|1227b8 1237r65 +345m8 Target_Len{19|19M9} 53|1228b8 1246r53 1252r13 1262r38 +346m8 Flags{19|19M9} 53|1229b8 1239r40 +347m8 Returned{19|19M9} 53|1230b8 1249m10 1255m10 1273m13 1278m40 +348e8 Errno{36E9} 53|1231b8 1248m10 1254m10 1272m13 1278m50 +351N4*SC_PAGESIZE 53|1298r15 +352N4*SC_OPEN_MAX 53|1300r15 +353N4*SC_HOST_NAME_MAX 53|1302r15 +354N4*SC_AVPHYS_PAGES 53|1304r15 +355N4*SC_PHYS_PAGES 53|1307r15 +356N4*SC_NPROCESSORS_ONLN 53|1310r15 +357N4*SC_TOTAL_PAGES 53|1312r15 +358N4*SC_LIST_PROCS 53|1336r15 +359N4*SC_LIST_MOUNTS 53|1363r15 +360N4*SC_UNAME 53|1400r15 +361N4*SC_CHILD_MAX 53|1315r15 +362N4*SC_LIST_THREADS 53|1419r15 +363N4*SC_LIST_CLUSTERS 53|1446r15 +364N4*SC_LIST_NETINTER 53|1473r15 +365N4*SC_DUMPLOGS 53|1500r15 +366N4*SC_NGROUPS_MAX 53|1317r15 +367N4*SC_SYMLOOP_MAX 53|1319r15 +368N4*SC_LIST_FILELOCKS 53|1509r15 +369N4*SC_LOADAVG 53|1530r15 +370N4*SC_MEMINFO 53|1540r15 +371N4*SC_FAILURE_POLICIES +373N4*PROC_IS_TRACED 53|1354r60 +374N4*PROC_EXITED 53|1357r60 +375R9*Proc_Info 382e15 383r54 +376a7*Identifier{string} 53|1347m23 +377m7*Id_Len{19|17M9} 53|1348m23 +378m7*Parent_PID{19|17M9} 53|1349m23 +379m7*Process_PID{19|17M9} 53|1350m23 +380m7*UID{19|18M9} 53|1351m23 +381m7*Flags{19|18M9} 53|1352m23 1354m32 1354r51 1357m32 1357r51 +383A9*Proc_Info_Arr(375R9) 53|1340r24 +385R9*Mount_Info 401e14 402r55 53|1366r38 +386m7*FS_Type{19|18M9} 53|1374m46 1375m46 1376m46 +387m7*Flags{19|18M9} 53|1378m28 +388a7*Source{string} 53|1381m32 +389m7*Source_Len{19|18M9} 53|1382m41 +390a7*Location{string} 53|1385m32 +391m7*Location_Len{19|18M9} 53|1386m41 +392m7*Block_Size{19|19M9} 53|1387m55 +393m7*Fragment_Size{19|19M9} 53|1388m58 +394m7*Size_In_Frags{19|19M9} 53|1389m49 +395m7*Free_Blocks{19|19M9} 53|1393m43 1395m43 +396m7*Free_BlocksU{19|19M9} 53|1393m65 1395m65 +397m7*Inode_Count{19|19M9} 53|1390m56 +398m7*Free_Inodes{19|19M9} +399m7*Free_InodesU{19|19M9} +400m7*Max_File_Name{19|19M9} 53|1391m55 +402A9*Mount_Info_Arr(385R9) 53|1367r24 +404R9*UTS_Name 410e14 53|1402r27 +405a7*System_Name{string} 53|1408m20 +406a7*Node_Name{string} 53|1405m45 1406m20 +407a7*Release{string} 53|1410m20 +408a7*Version{string} 53|1412m20 +409a7*Machine{string} 53|1414m20 +412R9*Thread_Info 417e15 418r56 53|1422r38 1449r38 +413m7*Thread_Id{19|17M9} 53|1431m23 +414m7*Niceness{19|17M9} 53|1432m23 1437m30 1439m30 +415m7*Cluster_Id{19|17M9} 53|1433m23 +416m7*Process_PID{19|17M9} 53|1434m23 +418A9*Thread_Info_Arr(412R9) 53|1423r23 +420R9*Cluster_Info 424e15 425r57 +421m7*Cluster_Id{19|17M9} 53|1457m23 +422m7*Cluster_Fl{19|17M9} 53|1458m23 1462m33 1464m33 1467m30 1467r52 +423m7*Cluster_Q{19|17M9} 53|1459m23 +425A9*Cluster_Info_Arr(420R9) 53|1450r22 +427N4*NETINTR_BLOCKED 53|1487r39 +429R9*Interface_Info 437e15 438r54 53|1476r38 +430a7*Name{string} 53|1484m56 1484r56 1485m27 +431m7*Flags{19|19M9} 53|1487m30 1489m30 +432a7*MAC{37|22A9} 53|1491m27 +433a7*IPv4{37|23A9} 53|1492m27 +434a7*IPv4_Subnet{37|23A9} 53|1493m27 +435a7*IPv6{37|24A9} 53|1494m27 +436a7*IPv6_Subnet{37|24A9} 53|1495m27 +438A9*Interface_Arr(429R9) 53|1477r23 +440R9*Flock_Info 447e14 448r55 53|1512r38 +441m7*PID{19|18M9} 53|1519m27 +442m7*Mode{19|18M9} 53|1520m27 +443m7*Start{19|19M9} 53|1521m27 +444m7*Length{19|19M9} 53|1522m27 +445m7*FS{19|19M9} 53|1523m27 +446m7*Ino{19|19M9} 53|1525m27 +448A9*Flock_Info_Arr(440R9) 53|1513r23 +450A9*Load_Arr(19|18M9) 53|1532r22 +452R9*Mem_Info 460e14 53|1542r30 +453m7*Phys_Total{19|19M9} 53|1550m20 +454m7*Phys_Available{19|19M9} 53|1551m20 +455m7*Phys_Free{19|19M9} 53|1552m20 +456m7*Shared_Usage{19|19M9} 53|1553m20 +457m7*Kernel_Usage{19|19M9} 53|1554m20 +458m7*Table_Usage{19|19M9} 53|1555m20 +459m7*Poison_Usage{19|19M9} 53|1556m20 +462U14*Sysconf 463>8 464>8 465>8 466<8 467<8 53|1282b14 1571l8 1571t15 +463m8 Request{19|19M9} 53|1283b8 1297r12 1335r12 +464m8 Addr{19|19M9} 53|1284b8 1291r61 +465m8 Length{19|19M9} 53|1285b8 1329r49 1339r28 1366r28 1422r28 1449r28 1476r28 +. 1502r45 1512r28 1534r19 +466m8 Returned{19|19M9} 53|1286b8 1331m10 1565m7 1570m7 +467e8 Errno{36E9} 53|1287b8 1330m10 1564m7 1569m7 +470U14*Spawn 471>8 472>8 473>8 474>8 475>8 476>8 477>8 478<8 479<8 53|1573b14 +. 1631l8 1631t13 +471m8 Path_Addr{19|19M9} 53|1574b8 1598r24 +472m8 Path_Len{19|19M9} 53|1575b8 1599r24 +473m8 Argv_Addr{19|19M9} 53|1576b8 1600r24 +474m8 Argv_Len{19|19M9} 53|1577b8 1601r24 +475m8 Envp_Addr{19|19M9} 53|1578b8 1602r24 +476m8 Envp_Len{19|19M9} 53|1579b8 1603r24 +477m8 Caps_Addr{19|19M9} 53|1580b8 1613r10 1616r67 +478m8 Returned{19|19M9} 53|1581b8 1591m10 1609m10 1623m16 1630m7 +479e8 Errno{36E9} 53|1582b8 1590m10 1606m24 1608m10 1622m16 1629m7 +482U14*Get_TID 482<23 482<51 53|1633b14 1637l8 1637t15 +482m23 Returned{19|19M9} 53|1633b23 1636m7 +482e51 Errno{36E9} 53|1633b51 1635m7 +485N4*SCHED_RR 53|1462r47 1660r21 +486N4*SCHED_COOP 53|1464r47 1662r24 +487N4*SCHED_INTR 53|1467r66 1679r53 +488U14*Manage_Thread_Cluster 489>8 490>8 491>8 492>8 493<8 494<8 53|1639b14 +. 1694l8 1694t29 +489m8 Cluster{19|19M9} 53|1640b8 1656r13 1668r10 1671r46 +490m8 Flags{19|19M9} 53|1641b8 1660r11 1662r14 1679r43 +491m8 Quantum{19|19M9} 53|1642b8 1679r32 +492m8 Percentage{19|19M9} 53|1643b8 1683r45 +493m8 Returned{19|19M9} 53|1644b8 1654m10 1688m7 1693m7 +494e8 Errno{36E9} 53|1645b8 1652m10 1687m7 1692m7 +497N4*F_DUPFD 53|1718r15 +498N4*F_DUPFD_CLOEXEC 53|1718r25 1725r48 +499N4*F_GETFD 53|1730r15 +500N4*F_SETFD 53|1738r15 +501N4*F_GETFL 53|1743r15 +502N4*F_SETFL 53|1759r15 +503N4*F_GETPIPE_SZ 53|1775r15 +504N4*F_SETPIPE_SZ 53|1784r15 +505N4*F_GETLK 53|1801r15 1817r29 +506N4*F_SETLK 53|1801r25 +507N4*F_SETLKW 53|1801r35 1848r52 +509N4*FD_CLOEXEC 53|1733r40 1741r31 +510N4*FD_CLOFORK 53|1736r40 1742r31 +512N4*F_RDLCK +513N4*F_UNLCK 53|1827r40 1831r39 +514N4*F_WRLCK 53|1815r41 +516R9*Flock_Data 522e14 53|1804r23 +517m7*Lock_Type{19|17M9} 53|1815r29 1827m27 1831r27 +518m7*Whence{19|17M9} +519m7*Start{19|19M9} 53|1821m44 1835r47 1844r47 +520m7*Length{19|19M9} 53|1822m44 1836r47 1845r47 +521m7*PID{19|18M9} 53|1814r47 1829m24 +524U14*Fcntl 525>8 526>8 527>8 528<8 529<8 53|1696b14 1871l8 1871t13 +525m8 FD{19|19M9} 53|1697b8 1705r70 1731r33 1740r23 +526m8 Command{19|19M9} 53|1698b8 1717r12 1725r38 1817r19 1848r42 +527m8 Argument{19|19M9} 53|1699b8 1721r59 1741r18 1742r18 1760r22 1787r62 +. 1793r62 1803r69 +528m8 Returned{19|19M9} 53|1700b8 1715m7 1723m16 1733m16 1733r28 1736m16 +. 1736r28 1758m13 1778m62 1778r62 1780m62 1780r62 1870m7 +529e8 Errno{36E9} 53|1701b8 1711m10 1727m16 1789m22 1795m22 1808m19 1854m22 +. 1863m7 1867m7 +532U14*Exit_Thread 532<27 532<55 53|1873b14 1881l8 1881t19 +532m27 Returned{19|19M9} 53|1873b27 1877m7 +532e55 Errno{36E9} 53|1873b55 1876m7 +535U14*Get_Random 536>7 537>7 538<7 539<7 53|1883b14 1908l8 1908t18 +536m7 Address{19|19M9} 53|1884b7 1891r62 +537m7 Length{19|19M9} 53|1885b7 1893r63 1900r52 +538m7 Returned{19|19M9} 53|1886b7 1899m10 1902m10 1906m10 +539e7 Errno{36E9} 53|1887b7 1897m10 1901m10 1905m10 +542U14*MProtect 543>7 544>7 545>7 546<7 547<7 53|1910b14 1944l8 1944t16 +543m7 Address{19|19M9} 53|1911b7 1920r70 1928r14 +544m7 Length{19|19M9} 53|1912b7 1929r14 1936r53 +545m7 Protection{19|19M9} 53|1913b7 1919r68 +546m7 Returned{19|19M9} 53|1914b7 1925m10 1932m10 1938m10 1942m10 +547e7 Errno{36E9} 53|1915b7 1923m10 1931m10 1937m10 1941m10 +550N4*MAC_CAP_SCHED 53|1965r56 5904r54 +551N4*MAC_CAP_SPAWN 53|1966r56 5905r54 +552N4*MAC_CAP_ENTROPY 53|1967r56 5906r54 +553N4*MAC_CAP_SYS_MEM 53|1968r56 5907r54 +554N4*MAC_CAP_USE_NET 53|1969r56 5908r54 +555N4*MAC_CAP_SYS_NET 53|1970r56 5909r54 +556N4*MAC_CAP_SYS_MNT 53|1971r56 5910r54 +557N4*MAC_CAP_SYS_PWR 53|1972r56 5911r54 +558N4*MAC_CAP_PTRACE 53|1973r56 5912r54 +559N4*MAC_CAP_SETUID 53|1974r56 5913r54 +560N4*MAC_CAP_SYS_MAC 53|1975r56 5914r54 +561N4*MAC_CAP_CLOCK 53|1976r56 5915r54 +562N4*MAC_CAP_SIGNALALL 53|1977r54 5916r54 +563N4*MAC_CAP_SETGID 53|1978r56 5917r54 +564N4*MAC_CAP_IPC 53|1979r56 5918r54 +565U14*Set_MAC_Capabilities 566>8 567<8 568<8 53|1946b14 1955l8 1955t28 +566m8 Bits{19|19M9} 53|1947b8 1952r61 +567m8 Returned{19|19M9} 53|1948b8 1954m7 +568e8 Errno{36E9} 53|1949b8 1953m7 +571U14*Get_MAC_Capabilities 572<8 573<8 53|1957b14 1983l8 1983t28 +572m8 Returned{19|19M9} 53|1958b8 1982m7 +573e8 Errno{36E9} 53|1959b8 1981m7 +576N4*MAC_PERM_CONTENTS 53|2018r43 +577N4*MAC_PERM_READ 53|2019r43 +578N4*MAC_PERM_WRITE 53|2020r43 +579N4*MAC_PERM_EXEC 53|2021r43 +580N4*MAC_PERM_APPEND 53|2022r43 +581N4*MAC_PERM_FLOCK 53|2023r43 +582U14*Add_MAC_Permissions 583>8 584>8 585>8 586<8 587<8 53|1985b14 2052l8 +. 2052t27 +583m8 Path_Addr{19|19M9} 53|1986b8 1994r64 +584m8 Path_Len{19|19M9} 53|1987b8 2007r51 2011r13 2028r39 +585m8 Flags{19|19M9} 53|1988b8 2018r33 2019r33 2020r33 2021r33 2022r33 2023r33 +586m8 Returned{19|19M9} 53|1989b8 2005m10 2009m10 2013m10 2035m42 2045m13 +. 2051m7 +587e8 Errno{36E9} 53|1990b8 2003m10 2008m10 2012m10 2035m52 2044m13 2047m37 +. 2048m37 +590N4*MAC_DENY 53|2070r15 +591N4*MAC_DENY_AND_SCREAM 53|2071r15 +592N4*MAC_KILL 53|2072r15 +593U14*Set_MAC_Enforcement 594>8 595<8 596<8 53|2054b14 2082l8 2082t27 +594m8 Action{19|19M9} 53|2055b8 2069r12 +595m8 Returned{19|19M9} 53|2056b8 2065m10 2075m13 2081m7 +596e8 Errno{36E9} 53|2057b8 2063m10 2074m13 2080m7 +599N4*MNT_EXT 53|1375r57 2145r21 +600N4*MNT_FAT 53|1376r57 2146r21 +601N4*MNT_DEV 53|1374r57 +602N4*MS_RDONLY 53|2100r60 +603N4*MS_REMOUNT 53|2101r60 +604N4*MS_RELATIME 53|2102r60 +605U14*Mount 606>8 607>8 608>8 609>8 610>8 611>8 612<8 613<8 53|2084b14 2164l8 +. 2164t13 +606m8 Source_Addr{19|19M9} 53|2085b8 2096r66 +607m8 Source_Len{19|19M9} 53|2086b8 2106r53 2112r13 2126r41 +608m8 Target_Addr{19|19M9} 53|2087b8 2097r66 +609m8 Target_Len{19|19M9} 53|2088b8 2107r53 2113r13 2128r41 +610m8 FSType{19|19M9} 53|2089b8 2144r18 +611m8 Flags{19|19M9} 53|2090b8 2100r50 2101r50 2102r50 +612m8 Returned{19|19M9} 53|2091b8 2110m10 2116m10 2121m10 2149m19 2159m10 +. 2162m10 +613e8 Errno{36E9} 53|2092b8 2109m10 2115m10 2119m10 2148m19 2158m10 2161m10 +616N4*MNT_FORCE 53|2177r51 +617U14*Umount 618>8 619>8 620>8 621<8 622<8 53|2166b14 2209l8 2209t14 +618m8 Path_Addr{19|19M9} 53|2167b8 2175r66 +619m8 Path_Len{19|19M9} 53|2168b8 2179r54 2183r13 2196r42 +620m8 Flags{19|19M9} 53|2169b8 2177r41 +621m8 Returned{19|19M9} 53|2170b8 2181m10 2185m10 2190m10 2202m13 2205m13 +622e8 Errno{36E9} 53|2171b8 2180m10 2184m10 2188m10 2201m13 2204m13 +625U14*Readlink 626>8 627>8 628>8 629>8 630>8 631<8 632<8 53|2211b14 2282l8 +. 2282t16 +626m8 Dir_FD{19|19M9} 53|2212b8 2255r38 +627m8 Path_Addr{19|19M9} 53|2213b8 2222r67 +628m8 Path_Len{19|19M9} 53|2214b8 2233r54 2239r13 2249r41 +629m8 Buffer_Addr{19|19M9} 53|2215b8 2223r67 +630m8 Buffer_Len{19|19M9} 53|2216b8 2234r56 2240r13 2251r39 +631m8 Returned{19|19M9} 53|2217b8 2237m10 2243m10 2257m13 2266m13 2274m13 +. 2280m61 +632e8 Errno{36E9} 53|2218b8 2236m10 2242m10 2258m13 2265m13 2272m13 2280m71 +635N4*DT_FIFO +636N4*DT_CHR 53|2340r52 +637N4*DT_DIR 53|2338r52 +638N4*DT_BLK 53|2341r52 +639N4*DT_LNK 53|2339r52 +640N4*DT_REG 53|2337r52 +641R9*Dirent 647e15 648r8 655r52 53|2296r62 2329r33 2330r32 2344r50 +642m7*D_Ino{19|19M9} 649r7 53|2328m20 +643m7*D_Off{19|19M9} 650r7 53|2329m20 +644m7*D_Reclen{19|17M9} 651r7 53|2330m20 +645m7*D_Type{19|16M9} 652r7 53|2331m20 2335m41 +646a7*D_Name{string} 653r7 53|2332m20 2333m41 +655A9*Dirents(641R9)<19|19M9> 53|2301r20 +656U14*GetDEnts 657>8 658>8 659>8 660<8 661<8 53|2284b14 2353l8 2353t16 +657m8 FD{19|19M9} 53|2285b8 2299r69 +658m8 Buffer_Addr{19|19M9} 53|2286b8 2294r65 +659m8 Buffer_Len{19|19M9} 53|2287b8 2296r48 2306r54 +660m8 Returned{19|19M9} 53|2288b8 2307m10 2310m10 2344m13 2347m13 +661e8 Errno{36E9} 53|2289b8 2308m10 2311m10 2345m13 2348m13 +664U14*Sync 664<20 664<48 53|2355b14 2366l8 2366t12 +664m20 Returned{19|19M9} 53|2355b20 2361m10 2364m10 +664e48 Errno{36E9} 53|2355b48 2360m10 2363m10 +667U14*MakeNode 668>8 669>8 670>8 671>8 672>8 673<8 674<8 53|2368b14 2431l8 +. 2431t16 +668m8 Dir_FD{19|19M9} 53|2369b8 2406r38 +669m8 Path_Addr{19|19M9} 53|2370b8 2381r66 +670m8 Path_Len{19|19M9} 53|2371b8 2391r54 2395r13 2402r39 +671m8 Mode{19|19M9} 53|2372b8 2386r53 2413r14 +672m8 Dev{19|19M9} 53|2373b8 2377r28 +673m8 Returned{19|19M9} 53|2374b8 2393m10 2397m10 2408m13 2429m39 +674e8 Errno{36E9} 53|2375b8 2392m10 2396m10 2409m13 2429m49 +677U14*Unlink 678>8 679>8 680>8 681<8 682<8 53|2433b14 2474l8 2474t14 +678m8 Dir_FD{19|19M9} 53|2434b8 2464r43 +679m8 Path_Addr{19|19M9} 53|2435b8 2442r65 +680m8 Path_Len{19|19M9} 53|2436b8 2449r54 2453r13 2460r39 +681m8 Returned{19|19M9} 53|2437b8 2451m10 2455m10 2466m13 2472m40 +682e8 Errno{36E9} 53|2438b8 2450m10 2454m10 2467m13 2472m50 +685U14*Truncate 686>8 687>8 688<8 689<8 53|2476b14 2503l8 2503t16 +686m8 FD{19|19M9} 53|2477b8 2483r66 +687m8 New_Size{19|19M9} 53|2478b8 2497r52 +688m8 Returned{19|19M9} 53|2479b8 2489m10 2498m43 2501m13 +689e8 Errno{36E9} 53|2480b8 2488m10 2498m53 2500m13 +692R9*SockAddr_In 697e15 53|2532r23 2655r23 2920r26 3683r23 3755r23 4145r29 +. 4236r29 +693m7*Sin_Family{19|18M9} +694m7*Sin_Port{19|17M9} 53|2537r55 2660r55 2926m66 3686m46 3758m46 4152r66 +. 4243r66 +695m7*Padding{19|17M9} +696a7*Sin_Addr{37|23A9} 53|2536r33 2659r33 2925m44 3685m51 3757m50 4151r44 +. 4242r44 +698R9*SockAddr_In6 705e15 53|2541r23 2664r23 2931r26 3690r23 3762r23 4157r29 +. 4248r29 +699m7*Sin6_Family{19|18M9} +700m7*Sin6_Port{19|17M9} 53|2546r55 2669r55 2937m66 3693m46 3765m46 4164r66 +. 4255r66 +701m7*Padding{19|17M9} +702m7*Sin6_FlowInfo{19|18M9} +703a7*Sin6_Addr{37|24A9} 53|2545r33 2668r33 2936m44 3692m51 3764m50 4163r44 +. 4254r44 +704m7*Sin6_Scope_ID{19|18M9} +706R9*SockAddr_UNIX 710e15 +707m7*Sun_Family{19|18M9} +708m7*Length{19|18M9} +709m7*Path{41|25M9} +711U14*Bind 712>8 713>8 714>8 715<8 716<8 53|2505b14 2565l8 2565t12 +712m8 Sock_FD{19|19M9} 53|2506b8 2513r64 +713m8 Addr_Addr{19|19M9} 53|2507b8 2514r65 +714m8 Addr_Len{19|19M9} 53|2508b8 2522r70 +715m8 Returned{19|19M9} 53|2509b8 2520m10 2525m10 2560m10 2563m10 +716e8 Errno{36E9} 53|2510b8 2519m10 2524m10 2559m10 2562m10 +719U14*Symlink 720>8 721>8 722>8 723>8 724>8 725>8 726<8 727<8 53|2567b14 +. 2626l8 2626t15 +720m8 Dir_FD{19|19M9} 53|2568b8 2609r38 +721m8 Path_Addr{19|19M9} 53|2569b8 2579r66 +722m8 Path_Len{19|19M9} 53|2570b8 2588r54 2594r13 2603r41 +723m8 Target_Addr{19|19M9} 53|2571b8 2581r66 +724m8 Target_Len{19|19M9} 53|2572b8 2589r54 2595r13 2605r39 +725m8 Mode{19|19M9} 53|2573b8 2621r39 +726m8 Returned{19|19M9} 53|2574b8 2592m10 2598m10 2611m13 2624m40 +727e8 Errno{36E9} 53|2575b8 2591m10 2597m10 2612m13 2624m50 +730U14*Connect 731>8 732>8 733>8 734<8 735<8 53|2628b14 2688l8 2688t15 +731m8 Sock_FD{19|19M9} 53|2629b8 2636r64 +732m8 Addr_Addr{19|19M9} 53|2630b8 2637r65 +733m8 Addr_Len{19|19M9} 53|2631b8 2645r70 +734m8 Returned{19|19M9} 53|2632b8 2643m10 2648m10 2683m10 2686m10 +735e8 Errno{36E9} 53|2633b8 2642m10 2647m10 2682m10 2685m10 +738U14*Open_PTY 739>8 740<8 741<8 53|2690b14 2726l8 2726t16 +739m8 Result_Addr{19|19M9} 53|2691b8 2695r64 +740m8 Returned{19|19M9} 53|2692b8 2706m10 2721m10 2724m10 +741e8 Errno{36E9} 53|2693b8 2705m10 2720m10 2723m10 +744U14*FSync 745>8 746>8 747<8 748<8 53|2728b14 2753l8 2753t13 +745m8 FD{19|19M9} 53|2729b8 2735r63 +746m8 Flags{19|19M9} 53|2730b8 2736r47 +747m8 Returned{19|19M9} 53|2731b8 2741m10 2748m40 2751m13 +748e8 Errno{36E9} 53|2732b8 2740m10 2748m50 2750m13 +751U14*Link 752>8 753>8 754>8 755>8 756>8 757>8 758<8 759<8 53|2755b14 2811l8 +. 2811t12 +752m8 Source_Dir{19|19M9} 53|2756b8 2797r38 +753m8 Source_Addr{19|19M9} 53|2757b8 2767r65 +754m8 Source_Len{19|19M9} 53|2758b8 2776r53 2782r13 2791r38 +755m8 Desto_Dir{19|19M9} 53|2759b8 2798r38 +756m8 Desto_Addr{19|19M9} 53|2760b8 2769r65 +757m8 Desto_Len{19|19M9} 53|2761b8 2777r53 2783r13 2793r39 +758m8 Returned{19|19M9} 53|2762b8 2780m10 2786m10 2803m13 2809m40 +759e8 Errno{36E9} 53|2763b8 2779m10 2785m10 2804m13 2809m50 +762N4*PTRACE_SYSCALL_PIPE 53|2838r15 +763U14*PTrace 764>8 765>8 766>8 767>8 768<8 769<8 53|2813b14 2848l8 2848t14 +764m8 Request{19|19M9} 53|2814b8 2837r12 +765m8 Traced_PID{19|19M9} 53|2815b8 2824r50 +766m8 Traced_Addr{19|19M9} 53|2816b8 2821r28 +767m8 Result_Addr{19|19M9} 53|2817b8 2839r52 +768m8 Returned{19|19M9} 53|2818b8 2828m10 2833m10 2842m13 2847m7 +769e8 Errno{36E9} 53|2819b8 2827m10 2831m10 2841m13 2846m7 +772U14*Listen 773>8 774>8 775<8 776<8 53|2850b14 2874l8 2874t14 +773m8 Sock_FD{19|19M9} 53|2851b8 2857r63 +774m8 Backlog{19|19M9} 53|2852b8 2866r60 +775m8 Returned{19|19M9} 53|2853b8 2861m10 2864m10 2868m13 2871m13 +776e8 Errno{36E9} 53|2854b8 2860m10 2863m10 2867m13 2870m13 +779U14*Sys_Accept 780>8 781>8 782>8 783>8 784<8 785<8 53|2876b14 2979l8 2979t18 +780m8 Sock_FD{19|19M9} 53|2877b8 2886r64 +781m8 Addr_Addr{19|19M9} 53|2878b8 2890r64 +782m8 Addr_Len{19|19M9} 53|2879b8 2892r64 +783m8 Flags{19|19M9} 53|2880b8 2887r49 2888r49 2889r49 +784m8 Returned{19|19M9} 53|2881b8 2900m10 2904m10 2962m13 2967m13 2971m10 +. 2978m7 +785e8 Errno{36E9} 53|2882b8 2899m10 2903m10 2961m13 2966m13 2970m10 2977m7 +788N4*RLIMIT_CORE 53|5928r15 +789N4*RLIMIT_CPU 53|5929r15 +790N4*RLIMIT_FSIZE 53|5930r15 +791N4*RLIMIT_NOFILE 53|5931r15 +792N4*RLIMIT_STACK 53|5932r15 +793N4*RLIMIT_AS 53|5933r15 +794U14*Get_RLimit 795>8 796<8 797<8 53|2981b14 2999l8 2999t18 +795m8 Limit{19|19M9} 53|2982b8 2990r30 +796m8 Returned{19|19M9} 53|2983b8 2993m10 2998m7 +797e8 Errno{36E9} 53|2984b8 2992m10 2997m7 +800U14*Set_RLimit 801>8 802>8 803<8 804<8 53|3001b14 3026l8 3026t18 +801m8 Limit{19|19M9} 53|3002b8 3010r30 +802m8 Data{19|19M9} 53|3003b8 3015r44 +803m8 Returned{19|19M9} 53|3004b8 3019m13 3025m7 +804e8 Errno{36E9} 53|3005b8 3018m13 3024m7 +807N4*F_OK 53|3096r36 +808N4*R_OK 53|3097r36 +809N4*W_OK 53|3098r36 +810N4*X_OK 53|3099r36 +811U14*FAccess 812>8 813>8 814>8 815>8 816>8 817<8 818<8 53|3028b14 3103l8 +. 3103t15 +812m8 Dir_FD{19|19M9} 53|3029b8 3062r38 +813m8 Path_Addr{19|19M9} 53|3030b8 3039r65 +814m8 Path_Len{19|19M9} 53|3031b8 3046r54 3050r13 3059r39 +815m8 Mode{19|19M9} 53|3032b8 3096r27 3097r27 3098r27 3099r27 +816m8 Flags{19|19M9} 53|3033b8 3081r29 3089r11 +817m8 Returned{19|19M9} 53|3034b8 3048m10 3052m10 3065m13 3084m13 3102m34 +818e8 Errno{36E9} 53|3035b8 3047m10 3051m10 3064m13 3083m13 3102m44 +821N4*POLLIN 53|3214r51 3215r61 +822N4*POLLOUT 53|3217r52 3218r61 +823N4*POLLPRI 53|3220r55 3221r61 +824N4*POLLHUP 53|3227r61 +825N4*POLLERR 53|3224r61 +826N4*POLLNVAL 53|3179r40 +827R9*Poll_FD 831e15 832r53 53|3125r61 +828m7*FD{19|18M9} 53|3172r27 3177r60 +829m7*Events{19|17M9} 53|3214r40 3217r41 3220r44 +830m7*Out_Events{19|17M9} 53|3169m23 3179m26 3215m26 3215r47 3218m26 3218r47 +. 3221m26 3221r47 3224m26 3224r47 3227m26 3227r47 3231r26 +832A9*Poll_FDs(827R9)<19|19M9> 53|3161r17 +833U14*PPoll 834>8 835>8 836>8 837>8 838<8 839<8 53|3105b14 3250l8 3250t13 +834m8 FDs_Addr{19|19M9} 53|3106b8 3119r65 +835m8 FDs_Count{19|19M9} 53|3107b8 3125r48 3161r32 +836m8 Timeout{19|19M9} 53|3108b8 3121r65 +837m8 Sigmask{19|19M9} 53|3109b8 3123r65 +838m8 Returned{19|19M9} 53|3110b8 3139m10 3146m13 3249m7 +839e8 Errno{36E9} 53|3111b8 3138m10 3145m13 3248m7 +842U14*Get_EUID 842<24 842<52 53|3252b14 3259l8 3259t16 +842m24 Returned{19|19M9} 53|3252b24 3258m7 +842e52 Errno{36E9} 53|3252b52 3257m7 +845U14*Set_UIDs 846>8 847>8 848<8 849<8 53|3261b14 3292l8 3292t16 +846m8 UID{19|19M9} 53|3262b8 3274r13 3275r58 +847m8 EUID{19|19M9} 53|3263b8 3271r13 3272r68 3279r13 3280r16 3281r71 +848m8 Returned{19|19M9} 53|3264b8 3284m16 3291m7 +849e8 Errno{36E9} 53|3265b8 3283m16 3290m7 +852U14*Fchmod 853>8 854>8 855>8 856>8 857>8 858<8 859<8 53|3294b14 3381l8 +. 3381t14 +853m8 Dir_FD{19|19M9} 53|3295b8 3327r39 3341r41 +854m8 Path_Addr{19|19M9} 53|3296b8 3305r66 +855m8 Path_Len{19|19M9} 53|3297b8 3314r54 3318r13 3338r42 +856m8 Mode{19|19M9} 53|3298b8 3378r32 +857m8 Flags{19|19M9} 53|3299b8 3326r11 3358r32 +858m8 Returned{19|19M9} 53|3300b8 3316m10 3320m10 3331m13 3344m16 3361m16 +. 3368m16 3380m34 +859e8 Errno{36E9} 53|3301b8 3315m10 3319m10 3330m13 3343m16 3360m16 3367m16 +. 3380m44 +862U14*Umask 863>8 864<8 865<8 53|3383b14 3395l8 3395t13 +863m8 Mode{19|19M9} 53|3384b8 3392r43 +864m8 Returned{19|19M9} 53|3385b8 3394m7 +865e8 Errno{36E9} 53|3386b8 3393m7 +867N4*RB_HALT 53|3415r15 +868N4*RB_POWEROFF 53|3416r15 +869N4*RB_RESTART 53|3417r15 +870N4*RB_ERROR_RET 53|3404r48 +871U14*Reboot 872>8 873>8 874<8 875<8 53|3397b14 3435l8 3435t14 +872m8 Command{19|19M9} 53|3398b8 3414r12 +873m8 Flags{19|19M9} 53|3399b8 3404r38 +874m8 Returned{19|19M9} 53|3400b8 3410m10 3420m13 3430m10 +875e8 Errno{36E9} 53|3401b8 3408m10 3419m13 3427m46 3428m46 +878U14*Fchown 879>8 880>8 881>8 882>8 883>8 884>8 885<8 886<8 53|3437b14 +. 3525l8 3525t14 +879m8 Dir_FD{19|19M9} 53|3438b8 3471r39 3485r41 +880m8 Path_Addr{19|19M9} 53|3439b8 3449r66 +881m8 Path_Len{19|19M9} 53|3440b8 3458r54 3462r13 3482r42 +882m8 User{19|19M9} 53|3441b8 3521r24 +883m8 Group{19|19M9} 53|3442b8 3522r24 +884m8 Flags{19|19M9} 53|3443b8 3470r11 3502r32 +885m8 Returned{19|19M9} 53|3444b8 3460m10 3464m10 3475m13 3488m16 3505m16 +. 3512m16 3524m34 +886e8 Errno{36E9} 53|3445b8 3459m10 3463m10 3474m13 3487m16 3504m16 3511m16 +. 3524m44 +889U14*PRead 890>8 891>8 892>8 893>8 894<8 895<8 53|3527b14 3582l8 3582t13 +890m8 File_D{19|19M9} 53|3528b8 3539r68 +891m8 Buffer{19|19M9} 53|3529b8 3535r64 +892m8 Count{19|19M9} 53|3530b8 3545r53 3553r13 3556r32 +893m8 Offset{19|19M9} 53|3531b8 3572r61 +894m8 Returned{19|19M9} 53|3532b8 3547m10 3551m10 3569m19 3574m69 3578m16 +895e8 Errno{36E9} 53|3533b8 3546m10 3550m10 3568m19 3575m41 3577m16 +898U14*PWrite 899>8 900>8 901>8 902>8 903<8 904<8 53|3584b14 3646l8 3646t14 +899m8 File_D{19|19M9} 53|3585b8 3596r68 +900m8 Buffer{19|19M9} 53|3586b8 3592r64 +901m8 Count{19|19M9} 53|3587b8 3602r53 3610r13 3613r32 +902m8 Offset{19|19M9} 53|3588b8 3628r22 3636r62 +903m8 Returned{19|19M9} 53|3589b8 3604m10 3608m10 3626m19 3632m19 3638m69 +. 3642m16 +904e8 Errno{36E9} 53|3590b8 3603m10 3607m10 3625m19 3631m19 3639m41 3641m16 +906U14*Get_Sock_Name 907>8 908>8 909>8 910<8 911<8 53|3648b14 3718l8 3718t21 +907m8 Sock_FD{19|19M9} 53|3649b8 3657r65 +908m8 Addr_Addr{19|19M9} 53|3650b8 3658r66 +909m8 Addr_Len{19|19M9} 53|3651b8 3660r66 +910m8 Returned{19|19M9} 53|3652b8 3666m10 3707m10 3710m10 3717m7 +911e8 Errno{36E9} 53|3653b8 3665m10 3706m10 3709m10 3716m7 +913U14*Get_Peer_Name 914>8 915>8 916>8 917<8 918<8 53|3720b14 3790l8 3790t21 +914m8 Sock_FD{19|19M9} 53|3721b8 3729r65 +915m8 Addr_Addr{19|19M9} 53|3722b8 3730r66 +916m8 Addr_Len{19|19M9} 53|3723b8 3732r66 +917m8 Returned{19|19M9} 53|3724b8 3738m10 3779m10 3782m10 3789m7 +918e8 Errno{36E9} 53|3725b8 3737m10 3778m10 3781m10 3788m7 +920N4*SHUT_RD 53|3809r15 +921N4*SHUT_RDWR 53|3813r15 +922N4*SHUT_WR 53|3811r15 +923U14*Shutdown 924>8 925>8 926<8 927<8 53|3792b14 3828l8 3828t16 +924m8 Sock_FD{19|19M9} 53|3793b8 3799r63 +925m8 How{19|19M9} 53|3794b8 3808r12 +926m8 Returned{19|19M9} 53|3795b8 3804m10 3817m13 3823m10 3826m10 +927e8 Errno{36E9} 53|3796b8 3803m10 3816m13 3822m10 3825m10 +930N4*FUTEX_WAIT 53|3900r18 +931N4*FUTEX_WAKE 53|3908r18 +933R9*Futex_Item 937e14 938r55 53|3845r52 +934m7*Address{19|19M9} 53|3885r46 +935m7*Expected{19|18M9} 53|3895r62 +936m7*Flags{19|18M9} +938A9*Futex_Item_Arr(933R9) 53|3879r20 +939U14*Futex 940>8 941>8 942>8 943>8 944<8 945<8 53|3830b14 3923l8 3923t13 +940m8 Operation{19|19M9} 53|3831b8 3899r15 +941m8 Address{19|19M9} 53|3832b8 3840r61 +942m8 Count{19|19M9} 53|3833b8 3845r43 3871r13 3878r49 +943m8 Timeout{19|19M9} 53|3834b8 3842r61 +944m8 Returned{19|19M9} 53|3835b8 3873m10 3902m19 3905m19 3911m16 3916m7 +. 3922m7 +945e8 Errno{36E9} 53|3836b8 3872m10 3903m19 3906m19 3912m16 3917m7 3921m7 +948N4*CLOCK_REALTIME 53|3956r24 3967r24 3975r24 +949N4*CLOCK_MONOTONIC 53|3953r24 3964r24 4031r27 4041r27 +950N4*CLOCK_GETRES 53|3951r18 +951N4*CLOCK_GETTIME 53|3962r18 +952N4*CLOCK_SETTIME 53|3973r18 +953U14*Clock 954>8 955>8 956>8 957<8 958<8 53|3925b14 3993l8 3993t13 +954m8 Operation{19|19M9} 53|3926b8 3950r15 +955m8 Clock_ID{19|19M9} 53|3927b8 3952r21 3963r21 3974r21 +956m8 Address{19|19M9} 53|3928b8 3934r60 +957m8 Returned{19|19M9} 53|3929b8 3937m10 3943m10 3986m7 3991m7 +958e8 Errno{36E9} 53|3930b8 3938m10 3941m10 3987m7 3992m7 +961N4*TIMER_ABSTIME 53|4027r24 +962U14*Clock_Nanosleep 963>8 964>8 965>8 966>8 967<8 968<8 53|3995b14 4056l8 +. 4056t23 +963m8 Clock_ID{19|19M9} 53|3996b8 4031r16 4041r16 +964m8 Flags{19|19M9} 53|3997b8 4027r14 +965m8 Request_Addr{19|19M9} 53|3998b8 4005r63 +966m8 Remain_Addr{19|19M9} 53|3999b8 4006r63 +967m8 Returned{19|19M9} 53|4000b8 4011m10 4017m10 4053m10 +968e8 Errno{36E9} 53|4001b8 4012m10 4015m10 4054m10 +971R9*RUsage 974e14 53|4068r49 4075r18 +972r7*User_Time{253R9} 53|4080m56 4081m25 4085m57 4086m26 +973r7*System_Time{253R9} 53|4079m55 4080m25 4084m32 4085m26 +976N4*RUSAGE_SELF 53|4078r18 +977N4*RUSAGE_CHILDREN 53|4082r18 +978U14*Get_RUsage 979>8 980>8 981<8 982<8 53|4058b14 4095l8 4095t18 +979m8 Who{19|19M9} 53|4059b8 4077r15 +980m8 Usage_Addr{19|19M9} 53|4060b8 4066r60 +981m8 Returned{19|19M9} 53|4061b8 4069m10 4088m16 4092m10 +982e8 Errno{36E9} 53|4062b8 4070m10 4089m16 4093m10 +984U14*RecvFrom 985>8 986>8 987>8 988>8 989>8 990>8 991<8 992<8 53|4097b14 +. 4186l8 4186t16 +985m8 Sock_FD{19|19M9} 53|4098b8 4115r68 +986m8 Buffer{19|19M9} 53|4099b8 4109r64 +987m8 Count{19|19M9} 53|4100b8 4120r53 4130r13 4133r32 +988m8 Flags{19|19M9} 53|4101b8 4107r28 +989m8 Addr_Addr{19|19M9} 53|4102b8 4111r69 +990m8 Addr_Len{19|19M9} 53|4103b8 4121r67 +991m8 Returned{19|19M9} 53|4104b8 4123m10 4127m10 4184m62 +992e8 Errno{36E9} 53|4105b8 4124m10 4128m10 4184m72 +994U14*SendTo 995>8 996>8 997>8 998>8 999>8 1000>8 1001<8 1002<8 53|4188b14 +. 4277l8 4277t14 +995m8 Sock_FD{19|19M9} 53|4189b8 4206r68 +996m8 Buffer{19|19M9} 53|4190b8 4200r64 +997m8 Count{19|19M9} 53|4191b8 4211r53 4221r13 4224r32 +998m8 Flags{19|19M9} 53|4192b8 4198r28 +999m8 Addr_Addr{19|19M9} 53|4193b8 4202r69 +1000m8 Addr_Len{19|19M9} 53|4194b8 4212r67 +1001m8 Returned{19|19M9} 53|4195b8 4214m10 4218m10 4275m62 +1002e8 Errno{36E9} 53|4196b8 4215m10 4219m10 4275m72 +1004N4*NETINTER_SET_BLOCK 53|4319r15 +1005N4*NETINTER_SET_STATIC_IP4 53|4324r15 +1006N4*NETINTER_SET_STATIC_IP6 53|4330r15 +1007R9*Addr4_NetInterface 1010e15 53|4296r13 +1008a7*IP{37|23A9} 53|4329r28 +1009a7*Sub{37|23A9} 53|4329r36 +1011R9*Addr6_NetInterface 1014e15 53|4297r13 +1012a7*IP{37|24A9} 53|4335r28 +1013a7*Sub{37|24A9} 53|4335r36 +1015U14*Config_NetInterface 1016>8 1017>8 1018>8 1019<8 1020<8 53|4279b14 +. 4353l8 4353t27 +1016m8 InterDev{19|19M9} 53|4280b8 4288r64 +1017m8 Operation{19|19M9} 53|4281b8 4318r12 +1018m8 Arg_Addr{19|19M9} 53|4282b8 4289r65 +1019m8 Returned{19|19M9} 53|4283b8 4302m10 4305m10 4312m10 4341m10 4344m10 +. 4351m7 +1020e8 Errno{36E9} 53|4284b8 4300m10 4306m10 4313m10 4342m10 4345m10 4352m7 +1022U14*UTimes 1023>8 1024>8 1025>8 1026>8 1027>8 1028<8 1029<8 53|4355b14 +. 4451l8 4451t14 +1023m8 Dir_FD{19|19M9} 53|4356b8 4390r39 4404r41 +1024m8 Path_Addr{19|19M9} 53|4357b8 4366r66 +1025m8 Path_Len{19|19M9} 53|4358b8 4375r54 4381r13 4401r42 +1026m8 Time_Addr{19|19M9} 53|4359b8 4367r66 +1027m8 Flags{19|19M9} 53|4360b8 4389r11 4421r32 +1028m8 Returned{19|19M9} 53|4361b8 4379m10 4383m10 4394m13 4407m16 4424m16 +. 4431m16 4449m37 +1029e8 Errno{36E9} 53|4362b8 4378m10 4382m10 4393m13 4406m16 4423m16 4430m16 +. 4449m47 +1031U14*Create_TCluster 1032<8 1033<8 53|4453b14 4475l8 4475t23 +1032m8 Returned{19|19M9} 53|4454b8 4463m10 4470m10 4473m10 +1033e8 Errno{36E9} 53|4455b8 4461m10 4469m10 4472m10 +1035U14*Switch_TCluster 1036>8 1037>8 1038<8 1039<8 53|4477b14 4500l8 4500t23 +1036m8 Cluster{19|19M9} 53|4478b8 4484r50 +1037m8 Thread{19|19M9} 53|4479b8 4485r50 +1038m8 Returned{19|19M9} 53|4480b8 4490m10 4495m10 4498m10 +1039e8 Errno{36E9} 53|4481b8 4488m10 4494m10 4497m10 +1041N4*SIG_BLOCK 53|4544r21 +1042N4*SIG_UNBLOCK 53|4548r21 +1043N4*SIG_SETMASK 53|4546r21 +1044U14*Sigprocmask 1045>8 1046>8 1047>8 1048<8 1049<8 53|4502b14 4565l8 +. 4565t19 +1045m8 How{19|19M9} 53|4503b8 4543r18 +1046m8 Set_Addr{19|19M9} 53|4504b8 4515r62 +1047m8 Old_Addr{19|19M9} 53|4505b8 4516r62 +1048m8 Returned{19|19M9} 53|4506b8 4552m19 4559m7 4564m7 +1049e8 Errno{36E9} 53|4507b8 4551m19 4558m7 4563m7 +1051N4*SIG_ERR +1052N4*SIG_IGN 53|4616r21 +1053N4*SIG_DFL 53|4614r21 +1054R9*Sigaction_Info 1058e14 53|4590r54 4596r19 4605r54 4611r19 +1055m7*Handler{41|25M9} 53|4600m51 4613r34 4621r57 +1056m7*Mask{19|19M9} 53|4599m17 +1057m7*Flags{19|18M9} 53|4598m17 +1059U14*Sigaction 1060>8 1061>8 1062>8 1063<8 1064<8 53|4567b14 4633l8 4633t17 +1060m8 Signal{19|19M9} 53|4568b8 4582r25 +1061m8 Act_Addr{19|19M9} 53|4569b8 4576r62 +1062m8 Old_Addr{19|19M9} 53|4570b8 4577r62 +1063m8 Returned{19|19M9} 53|4571b8 4585m10 4627m7 4632m7 +1064e8 Errno{36E9} 53|4572b8 4584m10 4626m7 4631m7 +1066U14*Send_Signal 1067>8 1068>8 1069<8 1070<8 53|4635b14 4678l8 4678t19 +1067m8 Target{19|19M9} 53|4636b8 4642r51 +1068m8 Signal{19|19M9} 53|4637b8 4647r25 +1069m8 Returned{19|19M9} 53|4638b8 4650m10 4656m10 4660m10 4670m13 4677m7 +1070e8 Errno{36E9} 53|4639b8 4649m10 4655m10 4659m10 4669m13 4676m7 +1072N4*PRIO_PROCESS 53|4697r15 4766r15 +1073N4*PRIO_PGRP 53|4705r15 4774r15 +1074N4*PRIO_USER 53|4705r27 4774r27 +1075N4*PRIO_THREAD 53|4709r15 4778r15 +1076U14*Get_Prio 1077>8 1078>8 1079<8 1080<8 53|4680b14 4735l8 4735t16 +1077m8 Which{19|19M9} 53|4681b8 4696r12 +1078m8 Who{19|19M9} 53|4682b8 4698r16 4699r42 4710r16 4713r40 +1079m8 Returned{19|19M9} 53|4683b8 4693m10 4707m13 4724m10 4726m10 4734m7 +1080e8 Errno{36E9} 53|4684b8 4691m10 4706m13 4729m7 4733m7 +1082U14*Set_Prio 1083>8 1084>8 1085>8 1086<8 1087<8 53|4737b14 4799l8 4799t16 +1083m8 Which{19|19M9} 53|4738b8 4765r12 +1084m8 Who{19|19M9} 53|4739b8 4767r16 4768r42 4779r16 4782r40 +1085m8 Nice{19|19M9} 53|4740b8 4755r10 4756r29 4757r13 4760r63 +1086m8 Returned{19|19M9} 53|4741b8 4751m10 4776m13 4793m7 4798m7 +1087e8 Errno{36E9} 53|4742b8 4749m10 4775m13 4792m7 4797m7 +1089U14*Get_GID 1089<23 1089<51 53|4801b14 4808l8 4808t15 +1089m23 Returned{19|19M9} 53|4801b23 4807m7 +1089e51 Errno{36E9} 53|4801b51 4806m7 +1091U14*Get_EGID 1091<24 1091<52 53|4810b14 4817l8 4817t16 +1091m24 Returned{19|19M9} 53|4810b24 4816m7 +1091e52 Errno{36E9} 53|4810b52 4815m7 +1094U14*Set_GIDs 1095>8 1096>8 1097<8 1098<8 53|4819b14 4850l8 4850t16 +1095m8 GID{19|19M9} 53|4820b8 4832r13 4833r58 +1096m8 EGID{19|19M9} 53|4821b8 4829r13 4830r68 4837r13 4838r16 4839r71 +1097m8 Returned{19|19M9} 53|4822b8 4842m16 4849m7 +1098e8 Errno{36E9} 53|4823b8 4841m16 4848m7 +1101U14*Get_Groups 1102>8 1103>8 1104<8 1105<8 53|4852b14 4879l8 4879t18 +1102m8 Count{19|19M9} 53|4853b8 4862r52 +1103m8 Addr{19|19M9} 53|4854b8 4860r60 +1104m8 Returned{19|19M9} 53|4855b8 4867m10 4874m10 4877m10 +1105e8 Errno{36E9} 53|4856b8 4866m10 4873m10 4876m10 +1108U14*Set_Groups 1109>8 1110>8 1111<8 1112<8 53|4881b14 4913l8 4913t18 +1109m8 Count{19|19M9} 53|4882b8 4891r52 4894r10 +1110m8 Addr{19|19M9} 53|4883b8 4889r60 4894r24 +1111m8 Returned{19|19M9} 53|4884b8 4899m13 4906m13 4912m7 +1112e8 Errno{36E9} 53|4885b8 4898m13 4905m13 4911m7 +1115U14*TTY_Name 1116>8 1117>8 1118>8 1119<8 1120<8 53|4915b14 4960l8 4960t16 +1116m8 FD{19|19M9} 53|4916b8 4926r64 +1117m8 Addr{19|19M9} 53|4917b8 4924r65 +1118m8 Length{19|19M9} 53|4918b8 4928r37 4930r49 4947r22 +1119m8 Returned{19|19M9} 53|4919b8 4932m10 4936m10 4946m45 4946r45 4947r10 +. 4951r21 4954m7 4959m7 +1120e8 Errno{36E9} 53|4920b8 4931m10 4935m10 4953m7 4958m7 +1123N4*POSIX_FADV_NORMAL 53|4985r15 +1124N4*POSIX_FADV_SEQUENTIAL 53|4985r35 +1125N4*POSIX_FADV_NOREUSE 53|4985r59 +1126N4*POSIX_FADV_DONTNEED 53|4989r15 +1127N4*POSIX_FADV_WILLNEED 53|4986r15 +1128N4*POSIX_FADV_RANDOM 53|4986r37 +1129U14*FAdvise 1130>8 1131>8 1132>8 1133>8 1134<8 1135<8 53|4962b14 5001l8 +. 5001t15 +1130m8 FD{19|19M9} 53|4963b8 4973r64 +1131m8 Offset{19|19M9} 53|4964b8 4970r28 +1132m8 Length{19|19M9} 53|4965b8 4971r28 +1133m8 Advice{19|19M9} 53|4966b8 4984r12 +1134m8 Returned{19|19M9} 53|4967b8 4988m13 4991m39 5000m7 +1135e8 Errno{36E9} 53|4968b8 4977m10 4980m10 4987m13 4991m49 4993m13 +1137N4*SHM_RDONLY 53|5016r43 +1138N4*SHM_RND 53|5034r24 +1139U14*SHMAt 1140>8 1141>8 1142>8 1143<8 1144<8 53|5003b14 5066l8 5066t13 +1140m8 ID{19|19M9} 53|5004b8 5012r56 +1141m8 Addr{19|19M9} 53|5005b8 5033r10 5035r40 5036r17 5039r22 +1142m8 Flags{19|19M9} 53|5006b8 5016r33 5034r14 +1143m8 Returned{19|19M9} 53|5007b8 5026m13 5055m13 5058m13 5065m7 +1144e8 Errno{36E9} 53|5008b8 5025m13 5054m13 5057m13 5064m7 +1146R9*IPC_Perms 1154e14 1157r20 +1147m7*IPC_Perm_Key{19|18M9} 53|5118m33 +1148m7*UID{19|18M9} 53|5110r45 5119m33 +1149m7*GID{19|18M9} 53|5111r45 5120m33 +1150m7*CUID{19|18M9} 53|5121m33 +1151m7*CGID{19|18M9} 53|5122m33 +1152m7*Mode{19|18M9} 53|5112r58 5123m33 +1153m7*IPC_Perm_Seq{19|18M9} +1156R9*SHMID_DS 1165e14 53|5098r55 5105r23 +1157r7*SHM_Perm{1146R9} 53|5110r36 5111r36 5112r49 5118m24 5119m24 5120m24 +. 5121m24 5122m24 5123m24 +1158m7*SHM_SegSz{19|19M9} 53|5124m24 +1159m7*SHM_ATime{19|19M9} +1160m7*SHM_DTime{19|19M9} +1161m7*SHM_CTime{19|19M9} +1162m7*SHM_CPID{19|18M9} +1163m7*SHM_LPID{19|18M9} +1164m7*SHM_NAttch{19|19M9} 53|5125m24 +1167N4*IPC_RMID 53|5095r15 +1168N4*IPC_SET 53|5097r15 5107r25 +1169N4*IPC_STAT 53|5097r25 +1170U14*SHMCtl 1171>8 1172>8 1173>8 1174<8 1175<8 53|5068b14 5139l8 5139t14 +1171m8 ID{19|19M9} 53|5069b8 5075r55 +1172m8 CMD{19|19M9} 53|5070b8 5094r12 5107r19 +1173m8 Buffer{19|19M9} 53|5071b8 5078r65 +1174m8 Returned{19|19M9} 53|5072b8 5089m13 5100m16 5133m7 5138m7 +1175e8 Errno{36E9} 53|5073b8 5088m13 5099m16 5132m7 5137m7 +1177U14*SHMDt 1178>8 1179<8 1180<8 53|5141b14 5183l8 5183t13 +1178m8 Address{19|19M9} 53|5142b8 5156r62 5169r60 +1179m8 Returned{19|19M9} 53|5143b8 5174m13 5177m13 5181m10 +1180e8 Errno{36E9} 53|5144b8 5173m13 5176m13 5180m10 +1182N4*IPC_PRIVATE 53|5204r16 +1183N4*IPC_CREAT 53|5207r24 +1184N4*IPC_EXCL +1185N4*IPC_NOWAIT +1186U14*SHMGet 1187>8 1188>8 1189>8 1190<8 1191<8 53|5185b14 5221l8 5221t14 +1187m8 Key{19|19M9} 53|5186b8 5194r56 5204r10 +1188m8 Size{19|19M9} 53|5187b8 5196r54 +1189m8 Flags{19|19M9} 53|5188b8 5195r38 5207r14 +1190m8 Returned{19|19M9} 53|5189b8 5216m10 5219m10 +1191e8 Errno{36E9} 53|5190b8 5215m10 5218m10 +1193N4*SOL_SOCKET 53|5242r22 5302r22 +1195N4*SO_ACCEPTCONN 53|5253r18 +1196N4*SO_ERROR 53|5255r18 +1197N4*SO_SNDBUF 53|5257r18 5310r15 +1198N4*SO_TYPE 53|5259r18 +1200U14*GetSockOpt 1201>8 1202>8 1203>8 1204>8 1205>8 1206<8 1207<8 53|5223b14 +. 5281l8 5281t18 +1201m8 Sock{19|19M9} 53|5224b8 5236r64 +1202m8 Level{19|19M9} 53|5225b8 5242r13 +1203m8 Opt{19|19M9} 53|5226b8 5252r15 +1204m8 Addr{19|19M9} 53|5227b8 5237r65 +1205m8 Len{19|19M9} 53|5228b8 5232r28 +1206m8 Returned{19|19M9} 53|5229b8 5274m7 5280m7 +1207e8 Errno{36E9} 53|5230b8 5240m10 5245m10 5273m7 5278m7 +1209U14*SetSockOpt 1210>8 1211>8 1212>8 1213>8 1214>8 1215<8 1216<8 53|5283b14 +. 5324l8 5324t18 +1210m8 Sock{19|19M9} 53|5284b8 5296r64 +1211m8 Level{19|19M9} 53|5285b8 5302r13 +1212m8 Opt{19|19M9} 53|5286b8 5309r12 +1213m8 Addr{19|19M9} 53|5287b8 5297r65 +1214m8 Len{19|19M9} 53|5288b8 5292r28 +1215m8 Returned{19|19M9} 53|5289b8 5317m7 5323m7 +1216e8 Errno{36E9} 53|5290b8 5300m10 5305m10 5316m7 5321m7 +1218U14*Get_Thread_Name 1219>8 1220>8 1221>8 1222<8 1223<8 53|5326b14 5365l8 +. 5365t23 +1219m8 TID{19|19M9} 53|5327b8 5335r71 +1220m8 Addr{19|19M9} 53|5328b8 5336r60 +1221m8 Length{19|19M9} 53|5329b8 5338r49 5341r13 5347r38 +1222m8 Returned{19|19M9} 53|5330b8 5353m13 5364m7 +1223e8 Errno{36E9} 53|5331b8 5339m10 5354m13 5362m7 +1225U14*Set_Thread_Name 1226>8 1227>8 1228>8 1229<8 1230<8 53|5367b14 5405l8 +. 5405t23 +1226m8 TID{19|19M9} 53|5368b8 5376r71 +1227m8 Addr{19|19M9} 53|5369b8 5377r60 +1228m8 Length{19|19M9} 53|5370b8 5379r49 5382r13 5388r38 +1229m8 Returned{19|19M9} 53|5371b8 5393m13 5404m7 +1230e8 Errno{36E9} 53|5372b8 5380m10 5394m13 5402m7 +1232N4*MEMORY_FAIL_PANIC 53|5429r45 5457r21 +1233N4*MEMORY_FAIL_SOFT_KILL 53|5431r45 5458r21 +1234N4*MEMORY_FAIL_HARD_KILL 53|5433r45 5459r21 +1235N4*OOM_ALLOW_PROC_KILL 53|5438r39 5463r41 +1236R9*Failure_Struct 1239e14 53|5419r18 5420r18 5425r50 5455r50 +1237m7*Memory_Failure{19|19M9} 53|5429m27 5431m27 5433m27 5456r26 +1238m7*OOM_Failure{19|19M9} 53|5438m24 5440m24 5463r25 +1241U14*Failure_Policy 1242>8 1243>8 1244<8 1245<8 53|5407b14 5488l8 5488t22 +1242m8 Old_Addr{19|19M9} 53|5408b8 5417r63 +1243m8 New_Addr{19|19M9} 53|5409b8 5418r63 +1244m8 Returned{19|19M9} 53|5410b8 5451m13 5477m7 5482m7 5487m7 +1245e8 Errno{36E9} 53|5411b8 5449m13 5476m7 5481m7 5486m7 +1249U14*Do_Exit 1249>23 1249>35 53|54s7 5490b14 5505l8 5505t15 5832s13 +1249i23 Proc{51|33I9} 53|5490b23 5500r39 5501r39 5502r39 5503r39 +1249m35 Code{19|16M9} 53|5490b35 5503r45 +1250U14*Do_Exit 1250>23 1250>35 53|5507b14 5522l8 5522t15 5579s13 +1250i23 Proc{51|33I9} 53|5507b23 5517r39 5518r39 5519r39 5520r39 +1250e35 Sig{51|82E9} 53|5507b35 5520r45 +1253U14*Pre_Syscall_Hook 1253>32 53|5524b14 5529l8 5529t24 +1253r32 State{8|22R15} 53|5524b32 5528r36 +1254U14*Post_Syscall_Hook 1254>33 53|5531b14 5536l8 5536t25 +1254r33 State{8|22R15} 53|5531b33 5534r36 +1257V13*Check_Userland_Mappability{boolean} 1258>8 1259>8 1260>8 53|474s14 +. 3866s17 3867s17 3887s20 5982b13 6006l8 6006t34 +1258p8 Map{12|43P9} 53|5983b8 5996r33 +1259m8 Addr{35|35M12} 53|5984b8 5991r10 5997r45 +1260m8 Byte_Count{19|19M9} 53|5985b8 5991r34 5998r48 +1264U14 Do_Remote_Exit 1264>30 1264>42 53|5538b14 5543l8 5543t22 +1264i30 Proc{51|33I9} 53|5538b30 5540r39 5541r39 5542r39 +1264m42 Code{19|16M9} 53|5538b42 5542r45 +1266U14 Common_Syscall_Hook 1267>8 1268>8 53|5528s7 5534s7 5545b14 5596l8 +. 5596t27 +1267i8 Thread{40|27I9} 53|5546b8 5592r45 +1268r8 State{8|22R15} 53|5547b8 5592r55 +1271U14 Translate_Status 1272>8 1273>8 1274<8 1275<8 53|255s16 341s16 1278s10 +. 2035s10 2280s10 2429s10 2472s10 2498s13 2624s10 2748s13 2809s10 3102s7 +. 3380s7 3524s7 3574s16 3638s16 4449s10 4991s13 5598b14 5619l8 5619t24 +1272e8 Status{54|234E9} 53|5599b8 5605r12 +1273m8 Success_Return{19|19M9} 53|5600b8 5608r25 +1274m8 Returned{19|19M9} 53|5601b8 5608m13 5618m7 +1275e8 Errno{36E9} 53|5602b8 5607m13 5610m39 5611m39 5612m39 5613m39 5614m39 +. 5615m39 5616m39 +1277U14 Translate_Status 1278>8 1279>8 1280<8 1281<8 53|276s16 362s16 4184s10 +. 4275s10 5621b14 5637l8 5637t24 +1278e8 Status{27|40E9} 53|5622b8 5628r12 +1279m8 Success_Return{19|19M9} 53|5623b8 5631r25 +1280m8 Returned{19|19M9} 53|5624b8 5631m13 5636m7 +1281e8 Errno{36E9} 53|5625b8 5630m13 5633m32 5634m32 +1283U14 Translate_Status 1284>8 1285>8 1286<8 1287<8 53|259s16 345s16 5639b14 +. 5655l8 5655t24 +1284e8 Status{22|106E9} 53|5640b8 5646r12 +1285m8 Success_Return{19|19M9} 53|5641b8 5649r25 +1286m8 Returned{19|19M9} 53|5642b8 5649m13 5654m7 +1287e8 Errno{36E9} 53|5643b8 5648m13 5651m33 5652m38 +1289U14 Translate_Status 1290>8 1291>8 1292<8 1293<8 53|264s16 269s16 350s16 +. 355s16 5657b14 5672l8 5672t24 +1290e8 Status{25|40E9} 53|5658b8 5664r12 +1291m8 Success_Return{19|19M9} 53|5659b8 5667r25 +1292m8 Returned{19|19M9} 53|5660b8 5667m13 5670m13 +1293e8 Errno{36E9} 53|5661b8 5666m13 5669m13 +1296U14 Exec_Into_Process 1297>8 1298>8 1299>8 1300>8 1301>8 1302>8 1303>8 +. 1304<8 1305<8 53|594s7 1597s7 5674b14 5796l8 5796t25 +1297m8 Path_Addr{19|19M9} 53|595r11 1598r11 5675b8 5689r65 +1298m8 Path_Len{19|19M9} 53|596r11 1599r11 5676b8 5691r42 5706r54 +1299m8 Argv_Addr{19|19M9} 53|597r11 1600r11 5677b8 5701r65 +1300m8 Argv_Len{19|19M9} 53|598r11 1601r11 5678b8 5707r54 5749r40 +1301m8 Envp_Addr{19|19M9} 53|599r11 1602r11 5679b8 5703r65 +1302m8 Envp_Len{19|19M9} 53|600r11 1603r11 5680b8 5708r54 5751r40 +1303i8 Proc{51|33I9} 53|601r11 1604r11 5681b8 5688r64 5713r35 5715r40 5720r43 +. 5721r33 5739r40 5743r39 5764r45 5765r55 5767r26 5768r26 5777r29 +1304b8 Success{boolean} 53|602r11 1605r11 5682b8 5711m10 5716m10 5735m10 +. 5744m10 5788m13 5792m13 +1305e8 Errno{36E9} 53|603r11 1606r11 5683b8 5710m10 5714m10 5734m10 5742m10 +. 5787m13 5791m13 +1308V13 To_String{45|19P9} 1308>24 53|5757s25 5760s24 5798b13 5803l8 5803t17 +1308m24 Addr{41|25M9} 53|5798b24 5799r61 5800r69 +1311V13 Get_Mmap_Prot{12|26R9} 1311>28 53|441s49 1919s53 5805b13 5817l8 5817t21 +1311m28 P{19|19M9} 53|5805b28 5807r10 5812r36 5813r36 5814r36 +1314U14 Execute_MAC_Failure 1314>35 1314>50 53|168s10 535s7 551s10 643s10 +. 874s10 1156s10 1653s10 1898s10 1924s10 2004s10 2064s10 2120s10 2189s10 +. 2273s13 2832s10 3409s10 3942s10 4016s10 4301s10 4462s10 4489s10 4692s10 +. 4750s10 5450s13 5715s10 5743s10 5819b14 5834l8 5834t27 +1314a35 Name{string} 53|5819b35 5829r67 5831r67 +1314i50 Curr_Proc{51|33I9} 53|5819b50 5820r66 5825r29 5832r22 +1317U14 PTY_IOCTL 1318>8 1319>8 1320>8 1321>8 1322<8 53|1123s13 1125s13 5836b14 +. 5897l8 5897t17 +1318p8 P{25|37P9} 53|5837b8 5853r34 5855r34 5857r34 5859r34 5866r45 5868r47 +. 5879r44 5881r46 5887r45 5889r47 +1319b8 Is_Primary{boolean} 53|5838b8 5865r22 5878r22 5886r22 +1320m8 Request{19|19M9} 53|5839b8 5851r12 +1321m8 Argument{41|25M9} 53|5840b8 5845r63 5846r63 5847r63 +1322b8 Success{boolean} 53|5841b8 5850m7 5871m19 5892m19 5895m13 +1325U14 Set_MAC_Capabilities 1325>36 1325>48 53|1620s16 1952s7 5899b14 5919l8 +. 5919t28 +1325i36 Proc{51|33I9} 53|5899b36 5900r61 5903r11 +1325m48 Bits{19|19M9} 53|5899b48 5904r45 5905r45 5906r45 5907r45 5908r45 +. 5909r45 5910r45 5911r45 5912r45 5913r45 5914r45 5915r45 5916r45 5917r45 +. 5918r45 +1328U14 MAC_Syscall_To_Kernel 1329>8 1330<8 1331<8 53|2990s7 3010s7 5921b14 +. 5937l8 5937t29 +1329m8 Val{19|19M9} 53|5922b8 5927r12 +1330b8 Success{boolean} 53|5923b8 5934m57 5936m7 +1331e8 Limit{48|59E9} 53|5924b8 5928m32 5929m32 5930m32 5931m32 5932m32 5933m32 +. 5934m25 +1334U14 Check_Add_File 1335>8 1336>8 1337<8 1338<8 1339>8 53|174s7 838s7 +. 1200s7 1201s7 1720s13 2713s7 2714s7 2958s10 5939b14 5955l8 5955t22 +1335i8 Process{51|33I9} 53|5940b8 5947r39 5948r34 5950r20 +1336p8 File{51|57P9} 53|5941b8 5950r29 +1337b8 Success{boolean} 53|5942b8 5950m39 5953m10 +1338i8 FD{natural} 53|5943b8 5950m35 5952m10 +1339i8 Start{natural} 53|5944b8 5950r48 +1341V13 Check_Userland_Access{boolean} 1342>8 1343>8 1344>8 53|68s14 111s14 +. 224s14 302s14 778s17 879s14 920s14 921s14 1101s14 1183s14 1245s14 1246s14 +. 1329s14 1619s16 1807s23 1900s17 2007s17 2106s14 2107s14 2179s14 2233s14 +. 2234s14 2306s14 2391s14 2449s14 2522s17 2588s14 2589s14 2645s17 2704s14 +. 2776s14 2777s14 2911s17 2912s17 3046s14 3135s14 3136s14 3144s17 3314s14 +. 3458s14 3545s14 3602s14 3668s17 3675s17 3740s17 3747s17 3863s14 3864s14 +. 3886s20 3936s14 4008s14 4009s14 4068s14 4120s14 4121s31 4211s14 4212s31 +. 4320s20 4325s20 4331s20 4375s14 4376s14 4522s17 4535s17 4590s17 4605s17 +. 4865s14 4897s17 4930s14 5098s20 5244s17 5304s17 5338s14 5379s14 5425s13 +. 5455s13 5706s14 5707s14 5708s14 5957b13 5980l8 5980t29 +1342p8 Map{12|43P9} 53|5958b8 5970r33 +1343m8 Addr{35|35M12} 53|5959b8 5971r45 +1344m8 Byte_Count{19|19M9} 53|5960b8 5968r30 +1346U14 Resolve_AT_Directive 1347>8 1348>8 1349<8 1350<8 53|128s10 981s13 +. 1266s10 1267s10 2255s10 2406s10 2464s10 2609s10 2797s10 2798s10 3062s10 +. 3341s13 3485s13 4404s13 6008b14 6028l8 6028t28 +1347i8 Proc{51|33I9} 53|6009b8 6017r27 6019r29 +1348m8 Dir_FD{19|19M9} 53|6010b8 6016r10 6019r35 +1349i8 FS{54|74I9} 53|6011b8 6017m33 6021m13 6024m13 +1350m8 Ino{54|28M9} 53|6012b8 6017m37 6022m13 6025m13 +1352U14 Translate_Signal 1353>8 1354<8 1355<8 53|4582s7 4647s7 6030b14 6044l8 +. 6044t24 +1353m8 Val{19|19M9} 53|6031b8 6037r10 6038r10 6040r42 +1354e8 Sig{51|82E9} 53|6032b8 6040m10 6042m10 +1355b8 Success{boolean} 53|6033b8 6036m7 6039r10 +X 53 userland-syscall.adb +63i7 Proc{51|33I9} 64r59 +64p7 Map{12|43P9} 68r37 +65m7 I_Arg{42|49M9} 66r55 68r42 +66m7 S_Arg{41|25M9} 72r56 +90m7 Path_IAddr{42|49M9} 91r61 111r42 +91m7 Path_SAddr{41|25M9} 126r37 +92i7 Curr_Proc{51|33I9} 93r65 121r43 128r32 149r43 168r39 174r23 177r14 +93p7 Map{12|43P9} 111r37 +94b7 Do_Cloexec{boolean} 177r52 +95b7 Do_Read{boolean} 136r26 155r35 162r15 163r11 +96b7 Do_Write{boolean} 136r35 156r35 162r33 164r11 +97b7 Dont_Follow{boolean} 136r49 +98b7 Do_Append{boolean} 143r13 165r15 +99b7 Do_Block{boolean} 154r35 +100b7 Discard{boolean} 174m45 175r10 +101e7 Success{54|234E9} 135m64 137r13 144m56 +102i7 CWD_FS{54|74I9} 135m44 144r23 149r54 157r35 +103m7 CWD_Ino{54|28M9} 128m60 135r29 +104m7 Opened_Ino{54|28M9} 135m52 144r31 149r62 159r35 +105r7 Opened_Stat{54|41R9} 144m43 146m13 158r35 +106p7 New_Descr{51|57P9} 150m10 167m17 167r17 174r34 181m17 181r17 +107r7 File_Perms{48|42R9} 149m10 163r33 164r33 165r29 +108i7 Returned_FD{natural} 174m54 177r38 179r35 +109m7 User{19|18M9} 121m54 136r20 +124i10 Rela_FS{54|74I9} 128m51 129r13 135r20 +125a10 Path{string} 135r38 +192i7 Curr{51|33I9} 194r42 195r40 +211m7 Buf_IAddr{42|49M9} 212r59 224r42 +212m7 Buf_SAddr{41|25M9} 242r37 +213i7 Proc{51|33I9} 214r65 215r62 238r43 +214p7 Map{12|43P9} 224r37 +215p7 File{51|57P9} 228r13 244r15 246r23 251r26 251r45 251r61 252r43 253r16 +. 253r38 258r22 263r20 268r20 275r33 +216i7 Ret_Count{natural} 252m32 254r51 256r43 258m52 259r57 263m50 264r57 +. 268m52 269r57 275m58 277r43 +217e7 Success1{54|234E9} 252m67 256r20 +218e7 Success2{22|106E9} 258m63 259r34 +219e7 Success4{27|40E9} 275m69 277r20 +220e7 Success5{25|40E9} 263m61 264r34 268m63 269r34 +221m7 User{19|18M9} 238m49 +222i7 Final_Cnt{natural} 233m10 235m10 241r46 +241a10 Data{17|29A9} 252m26 258m46 263m44 268m46 275m52 +289m7 Buf_IAddr{42|49M9} 290r59 302r42 +290m7 Buf_SAddr{41|25M9} 320r37 +291i7 Proc{51|33I9} 292r65 293r62 316r34 329r43 +292p7 Map{12|43P9} 302r37 +293p7 File{51|57P9} 306r13 322r15 324r23 328r22 336r27 336r46 337r27 338r27 +. 339r16 339r38 344r23 349r20 354r20 361r34 +294i7 Ret_Count{natural} 337m53 340r51 341r57 344m53 345r57 349m50 350r57 +. 354m52 355r57 361m59 363r43 +295e7 Success1{54|234E9} 338m51 341r34 +296e7 Success2{22|106E9} 344m64 345r34 +297e7 Success4{27|40E9} 361m70 363r20 +298e7 Success5{25|40E9} 349m61 350r34 354m63 355r34 +299m7 User{19|18M9} 316m40 +300i7 Final_Cnt{natural} 311m10 313m10 319r46 328r56 +319a10 Data{17|29A9} 337r47 344r47 349r44 354r46 361r53 +375i7 Proc{51|33I9} 382r25 389r43 +376p7 File{51|57P9} 382m7 383r10 391r12 393r23 393r42 402r19 404r19 404r41 +. 406r19 411r23 +377r7 Stat_Val{54|41R9} 393m58 395r16 406r41 +378e7 Success{54|234E9} 393m68 394r16 +379m7 User{19|18M9} 389m49 +380m7 Result{19|19M9} 411m13 417r19 +420L6 Invalid_Seek_Error 397r21 413r18 +425L6 Invalid_Value_Error 408r24 +441r7 Perms{12|26R9} 452r14 452r34 484r32 507r32 +442i7 Proc{51|33I9} 443r65 450r32 459r34 469r61 494r28 535r36 +443p7 Map{12|43P9} 458r35 474r42 481r32 503r32 +444m7 Final_Hint{35|35M12} 469m13 474r47 482r44 489r38 505r32 514r38 +445m7 Ignored{41|25M9} 485m32 +446p7 File{51|57P9} 494m10 495r13 499r13 501r32 502r32 +447b7 Success{boolean} 486m32 487r13 +448e7 Status{54|234E9} 508m32 509r16 +523L6 Invalid_Value_Return 457r15 467r18 475r15 496r18 +528L6 No_Memory_Return 461r15 491r18 510r21 +533L6 Bad_MAC_Return 451r15 +545i7 Proc{51|33I9} 546r57 549r32 551r41 +546p7 Map{12|43P9} 553r26 +547m7 Addr{41|25M9} 553r31 +569i7 Parent{51|33I9} 572r41 +585i7 Th{40|27I9} 607r48 +586i7 Proc{51|33I9} 591r39 592r34 601r24 606r59 607r42 611r26 +587p7 Tmp_Map{12|43P9} 592m7 608m34 608r34 611r32 +588b7 Success{boolean} 602m24 604r10 606m10 +630i7 Parent{51|33I9} 641r32 643r40 653m10 653r32 654r13 662r21 672r26 677r26 +. 680r61 685r30 +631i7 Child{51|33I9} 662m10 665r44 669r37 672m34 673r13 678r26 680r26 681r29 +. 685r38 689r42 691r35 693r39 699r19 +632i7 New_TID{40|27I9} 663m10 670r49 686m10 696r10 699r26 +633m7 Ret{19|19M9} 670m10 693m10 705r19 +634a7 Id{string} 677m34 678r33 +635i7 Id_Len{natural} 677m38 678r42 +636b7 Success{boolean} 699m35 700r14 +638b7 Use_Parent{boolean} 652r10 +639b7 Do_Thread{boolean} 661r10 +708L6 Block_Error 674r18 682r18 697r15 701r15 +718m7 Addr{42|49M9} 729r60 778r45 +719i7 Proc{51|33I9} 721r64 735r35 755r63 +720b7 Dont_Hang{boolean} 750r23 764r23 +721p7 Map{12|43P9} 778r40 792m7 793m40 793r40 +722i7 Waited{51|33I9} 741m16 742r19 743r31 754m10 755r13 755r52 760r25 792r30 +. 794r40 797r41 +723a7 Children{51|155A9} 735m41 740r29 +724i7 Count{natural} 735m51 736r16 740r44 +725b7 Did_Exit{boolean} 743m39 744r22 760m33 761r16 +726b7 Was_Signal{boolean} 743m61 760m55 784r13 +727e7 Cause{51|82E9} 743m73 760m67 785r54 +728m7 Error_Code{19|16M9} 743m49 760m43 787r53 +729m7 Exit_Value{19|18M9} 777r10 785m13 787m13 +740i17 PID_Item=740:17{51|33I9} 741r26 +775L6 Waited_Exited 745r27 762r21 +800L6 Child_Error 737r21 756r18 +811i7 Proc{51|33I9} 838r23 841r13 +812b7 Success{boolean} 838m35 839r10 +813p7 Desc{51|57P9} 837m7 838r29 846m17 846r17 +814p7 New_Sock{27|37P9} 832m7 833r10 837r60 845m17 845r17 +815e7 Dom{27|25E9} 819m27 820m27 821m27 832r27 +816e7 Data{27|30E9} 826m30 827m30 828m30 832r32 +853L6 Invalid_Value_Return 822r32 829r35 834r15 +864i7 Proc{51|33I9} 865r64 872r32 874r47 +865p7 Map{12|43P9} 879r37 +866i7 Len{natural} 869r30 +867m7 IAddr{42|49M9} 868r58 879r42 +868m7 SAddr{41|25M9} 869r59 +869a7 Name{string} 885r32 +870b7 Success{boolean} 885m38 887r14 +905i7 Proc{51|33I9} 906r67 928r43 931r33 981r35 +906p7 Map{12|43P9} 920r37 921r37 +907m7 Stat_IAddr{42|49M9} 908r61 920r42 +908m7 Stat_SAddr{41|25M9} 917r49 +909m7 Path_IAddr{42|49M9} 910r61 921r42 +910m7 Path_SAddr{41|25M9} 979r40 +911p7 File_Desc{51|57P9} 931m10 932r13 938r15 940r23 941r23 +912r7 Stat_Val{54|41R9} 1007m26 1017r41 1018r41 1019r41 1020r28 1021r28 1023r28 +. 1025r15 1026r15 1028r15 1029r15 1031r15 1032r15 1033r41 1034r28 1037r12 +913i7 ID{natural} 1014m7 1016r41 1022r41 +914i7 Rel_FS{54|74I9} 981m49 982r16 989r31 +914i15 FS{54|74I9} 940m16 992m31 1007r17 1014r48 +915m7 D_Ino{54|28M9} 981m57 990r31 +915m14 Ino{54|28M9} 941m16 993m31 1007r21 +916e7 Success{54|234E9} 994m31 999r16 1007m36 1008r10 +917r7 Stat_Buf{52|264R9} 944m16 960m16 1015m7 1039m13 1039r30 1041m13 1041r30 +. 1043m13 1043r30 1045m13 1045r30 1047m13 1047r30 +918m7 User{19|18M9} 928m49 995r31 +978a13 Path{string} 991r31 +1050L6 Success_Return 958r21 974r21 +1060i7 Proc{51|33I9} 1061r57 1072r43 1080r16 +1061p7 Desc{51|57P9} 1066r10 1066r30 1073r17 1073r36 1080r22 1080r41 +1062r7 St{54|41R9} 1073m52 1074r41 +1063e7 Succ{54|234E9} 1073m56 1074r10 +1064m7 User{19|18M9} 1072m49 +1092m7 I_Arg{42|49M9} 1093r60 1101r42 +1093m7 S_Arg{41|25M9} 1117r41 1123r63 1125r66 +1094i7 Proc{51|33I9} 1095r66 1096r58 1111r43 +1095p7 Map{12|43P9} 1101r37 +1096p7 File{51|57P9} 1105r13 1113r12 1115r16 1115r40 1116r32 1116r51 1123r24 +. 1125r24 +1097b7 Succ{boolean} 1118m16 1120m16 1123m70 1125m73 1127m13 1130r10 +1098e7 FSSuc{54|234E9} 1117m48 1118r24 +1099m7 User{19|18M9} 1111m49 +1152i7 Proc{51|33I9} 1154r32 1156r56 +1175m7 Ad{42|49M9} 1178r76 1183r42 +1176i7 Proc{51|33I9} 1177r61 1200r23 1201r23 +1177p7 Map{12|43P9} 1183r37 +1178a7 Res(integer) 1183r46 1200m49 1200r49 1201m49 1201r49 +1179p7 Returned2{22|39P9} 1189m7 1193r31 1198r31 +1180b7 Succ1{boolean} 1200m42 1202r14 +1180b14 Succ2{boolean} 1201m42 1202r27 +1181p7 Reader_Desc{51|57P9} 1190m7 1200r29 1203m17 1203r17 +1181p20 Writer_Desc{51|57P9} 1195m7 1201r29 1204m17 1204r17 +1214i7 Proc{51|33I9} 1217r33 +1215m7 Ret{19|18M9} 1217m39 1219r32 +1233i7 Proc{51|33I9} 1234r64 1265r46 1266r32 1267r32 +1234p7 Map{12|43P9} 1245r37 1246r37 +1235m7 Src_IAddr{42|49M9} 1236r60 1245r42 +1236m7 Src_SAddr{41|25M9} 1261r37 +1237m7 Tgt_IAddr{42|49M9} 1238r60 1246r42 +1238m7 Tgt_SAddr{41|25M9} 1263r37 +1239b7 Do_Keep{boolean} 1277r54 +1240i7 Src_FS{54|74I9} 1266m49 1268r13 1270r13 1277r18 +1240i15 Tgt_FS{54|74I9} 1267m49 1269r13 1270r23 +1241m7 Src_Ino{54|28M9} 1266m57 1277r26 +1241m16 Tgt_Ino{54|28M9} 1267m57 1277r40 +1242e7 Success{54|234E9} 1277m69 1278r28 +1243m7 User{19|18M9} 1265m52 1277r63 +1260a10 Src{string} 1277r35 +1262a10 Tgt{string} 1277r49 +1289i7 Proc{51|33I9} 1290r60 +1290p7 Map{12|43P9} 1329r37 +1291m7 IAddr{42|49M9} 1292r56 1329r42 +1292m7 SAddr{41|25M9} 1340r73 1367r74 1402r60 1423r74 1450r74 1477r72 1503r43 +. 1513r73 1532r55 1542r63 +1293r7 Stats{36|47R9} 1305m45 1306r36 1308m45 1309r36 1313m45 1314r36 1546m48 +. 1550r51 1551r51 1552r51 +1294m7 Result{19|19M9} 1299m13 1301m13 1303m13 1306m13 1309m13 1311m13 1314m13 +. 1316m13 1318m13 1320m13 1361m16 1398m16 1417m16 1444m16 1471m16 1498m16 +. 1507m16 1528m16 1538m16 1557m16 1565r19 +1327L6 Not_Matched 1322r18 +1338i16 Len{natural} 1340r44 1341r47 +1340a16 Procs{52|383A9} 1346m19 1354m22 1354r41 1357m22 1357r41 +1341a16 KProc{51|171A9} 1344m26 1347r38 1348r51 1349r60 1350r60 1351r38 1353r22 +. 1356r22 +1342i16 Ret{natural} 1344m33 1345r30 1361r39 +1345i20 I{integer} 1346r26 1347r45 1348r58 1349r67 1350r67 1351r45 1353r29 +. 1354r29 1354r48 1356r29 1357r29 1357r48 +1365i16 Len{natural} 1367r45 1368r45 +1367a16 Mnts{52|402A9} 1374m37 1375m37 1376m37 1378m19 1381m23 1381r23 1382m32 +. 1382r32 1385m23 1385r23 1386m32 1386r32 1387m46 1387r46 1388m49 1388r49 +. 1389m40 1389r40 1390m47 1390r47 1391m46 1391r46 1393m34 1393r34 1393m56 +. 1393r56 1395m34 1395r34 1395m56 1395r56 +1368a16 KMnts{54|133A9} 1371m26 1373r40 1380r43 1384r23 1387r35 1388r38 1389r29 +. 1390r36 1391r35 1393r23 1395r23 +1369i16 Ret{natural} 1371m33 1372r30 1398r39 +1372i20 I{integer} 1373r47 1374r43 1375r43 1376r43 1378r25 1380r50 1381r29 +. 1382r38 1384r30 1385r29 1386r38 1387r42 1387r52 1388r45 1388r55 1389r36 +. 1389r46 1390r43 1390r53 1391r42 1391r52 1393r30 1393r40 1393r62 1395r30 +. 1395r40 1395r62 +1402r16 UTS{52|404R9} 1405m41 1405r41 1406m16 1408m16 1410m16 1412m16 1414m16 +1403i16 Host_Len{natural} 1405m56 1406r31 +1421i16 Len{natural} 1423r45 1424r58 +1423a16 Ths{52|418A9} 1430m19 1437m22 1439m22 +1424a16 KThs{40|142A9} 1428m26 1431r60 1433r60 1434r51 1435r38 +1425i16 Ret{natural} 1428m32 1429r30 1444r39 +1426i16 N{40|112I12} 1435m19 1436r22 1437r55 1440r42 +1429i20 I{integer} 1430r24 1431r66 1433r66 1434r57 1435r44 1437r27 1439r27 +1448i16 Len{natural} 1450r45 1451r59 +1450a16 Ths{52|425A9} 1456m19 1462m25 1464m25 1467m22 1467r44 +1451a16 KThs{40|150A9} 1454m26 1457r59 1459r50 1460r24 1466r22 +1452i16 Ret{natural} 1454m32 1455r30 1471r39 +1455i20 I{integer} 1456r24 1457r65 1459r56 1460r30 1462r30 1464r30 1466r28 +. 1467r27 1467r49 +1475i16 Len{natural} 1477r43 1478r65 +1477a16 Ths{52|438A9} 1484m48 1484r48 1485m19 1487m22 1489m22 1491m19 1492m19 +. 1493m19 1494m19 1495m19 +1478a16 KThs{39|96A9} 1482m55 1484r31 1486r22 1491r34 1492r35 1493r42 1494r35 +. 1495r42 +1479i16 Ret{natural} 1482m61 1483r30 1498r39 +1480i16 NLen{natural} 1484m72 1485r33 +1483i20 I{integer} 1484r37 1484r53 1485r24 1486r28 1487r27 1489r27 1491r24 +. 1491r40 1492r24 1492r41 1493r24 1493r48 1494r24 1494r41 1495r24 1495r48 +1502a16 Log{string} 1506m40 +1504i16 Ret{natural} 1506m45 1507r39 +1511i16 Len{natural} 1513r44 1514r51 +1513a16 Lks{52|448A9} 1519m19 1520m19 1521m19 1522m19 1523m19 1525m19 +1514a16 KLks{23|94A9} 1517m39 1519r59 1520r41 1521r37 1522r37 1524r58 1525r50 +1515i16 Ret{natural} 1517m45 1518r30 1528r39 +1518i20 I{integer} 1519r24 1519r65 1520r24 1520r47 1521r24 1521r43 1522r24 +. 1522r43 1523r24 1524r64 1525r24 1525r56 +1532a16 Lks{52|450A9} 1534r53 1537m45 1537r45 1537m54 1537r54 1537m63 1537r63 +1542r16 Lks{52|452R9} 1549m16 +1543r16 St{12|191R9} 1547m41 1554r51 1555r51 +1544m16 Shared_Size{19|19M9} 1548m40 1553r38 +1563L6 Success_Return 1325r12 +1568L6 Invalid_Value_Error 1535r24 1560r18 +1584i7 Proc{51|33I9} 1588r23 1595r27 1615r66 +1585b7 Success{boolean} 1605m24 1607r14 +1586i7 Child{51|33I9} 1588m29 1589r10 1595r33 1604r24 1620r38 1630r41 +1615p13 Map{12|43P9} 1619r39 +1616m13 CIAddr{42|49M9} 1617r70 1619r44 +1617m13 Caps{19|19M9} 1620r45 +1647i7 Proc{51|33I9} 1651r32 1653r56 +1648i7 Clsr{40|28I9} 1669m10 1671m10 1674r10 1679r11 1683r30 1688r51 +1649e7 Algo{40|93E9} 1661m10 1663m10 1679r17 +1691L6 Invalid_Value_Error 1657r15 1665r15 1675r15 1681r15 1684r15 +1703i7 Proc{51|33I9} 1704r70 1705r64 1721r17 1724r38 1731r27 1740r17 1814m16 +. 1823m39 1823r39 1829r53 1837r42 1846r42 +1704p7 Map{12|43P9} 1807r46 +1705p7 File{51|57P9} 1710r10 1719r24 1744r18 1746r45 1748r46 1750r40 1752r40 +. 1754r42 1756r27 1761r18 1763r38 1765r39 1767r33 1769r41 1771r43 1773r19 +. 1776r18 1778r29 1780r29 1785r18 1787r29 1793r29 1810r22 1819r39 1820r39 +. 1833r42 1834r42 1839r22 1842r42 1843r42 1850r22 +1706b7 Temp{boolean} 1721m33 1722r16 1731m37 1732r16 1746m19 1748m19 1750m19 +. 1752m64 1754m68 1756m19 1758r29 1760m13 1763r62 1765r63 1767r52 1769r65 +. 1771r69 1773r45 1787m73 1788r26 1793m73 1794r26 1825m39 1826r22 1838m42 +. 1839r50 1849m42 1850r46 1853r26 +1706b13 Temp2{boolean} 1731m43 1735r16 +1707p7 New_File{51|57P9} 1719m30 1719r30 1721r23 +1708i7 Result_FD{natural} 1721m39 1723r55 1724r57 +1803m16 IAddr{42|49M9} 1804r70 1807r51 +1804r16 Lock{52|516R9} 1807r58 1814r42 1815r24 1821m39 1821r39 1822m39 1822r39 +. 1827m22 1829m19 1831r22 1835r42 1836r42 1844r42 1845r42 +1805b16 IW{boolean} 1815m16 1824m39 1824r39 1847r42 +1866L6 Invalid_Return 1782r24 1799r24 1811r24 1860r18 +1869L6 Error_Return 1712r15 1728r21 1790r27 1796r27 1809r24 1855r27 +1889i7 Proc{51|33I9} 1890r63 1896r32 1898r44 +1890p7 Map{12|43P9} 1900r40 +1891m7 IAddr{42|49M9} 1892r57 1900r45 +1892m7 SAddr{41|25M9} 1894r34 +1893a7 Result{16|21A9} 1904m41 1906r22 +1917i7 Proc{51|33I9} 1918r58 1922r32 1924r43 +1918p7 Map{12|43P9} 1936r27 +1919r7 Flags{12|26R9} 1927r14 1927r34 1936r62 +1920m7 Addr{41|25M9} 1936r32 +1961i7 Pro{51|33I9} 1962r61 +1962r7 Caps{48|23R9} 1965r10 1966r10 1967r10 1968r10 1969r10 1970r10 1971r10 +. 1972r10 1973r10 1974r10 1975r10 1976r10 1977r10 1978r10 1979r10 +1963m7 Res{19|19M9} 1965m42 1965r49 1966m42 1966r49 1967m42 1967r49 1968m42 +. 1968r49 1969m42 1969r49 1970m42 1970r49 1971m42 1971r49 1972m42 1972r49 +. 1973m42 1973r49 1974m42 1974r49 1975m42 1975r49 1976m42 1976r49 1977m40 +. 1977r47 1978m42 1978r49 1979m42 1979r49 1982r19 +1992i7 Proc{51|33I9} 1993r63 2002r32 2004r48 2025r43 2039r19 +1993p7 Map{12|43P9} 2007r40 +1994m7 Addr{42|49M9} 2007r45 2029r49 +1995r7 Perms{48|42R9} 2017m7 2039r34 +1996m7 User{19|18M9} 2025m49 2031r46 +1997e7 Status{48|104E9} 2039m41 2042r12 +1998e7 FS_Status{54|234E9} 2031m35 2034r10 2035r28 +1999i7 FS{54|74I9} 2031m26 2039r25 2040r18 +2000m7 Ino{54|28M9} 2031m30 2039r29 2040r22 +2028a10 Path{string} 2031r20 +2059i7 Proc{51|33I9} 2062r32 2064r54 2079r24 +2060e7 Act{48|52E9} 2070m38 2071m38 2072m38 2079r30 +2094i7 Proc{51|33I9} 2095r65 2118r35 2120r40 +2095p7 Map{12|43P9} 2106r37 2107r37 +2096m7 Src_IAddr{42|49M9} 2098r61 2106r42 +2097m7 Tgt_IAddr{42|49M9} 2099r61 2107r42 +2098m7 Src_Addr{41|25M9} 2127r37 +2099m7 Tgt_Addr{41|25M9} 2129r37 +2100b7 Do_RO{boolean} 2138r40 2153r52 +2101b7 Do_Remount{boolean} 2131r13 +2102b7 Do_Relatim{boolean} 2138r47 2153r59 +2103e7 Parsed_Typ{54|73E9} 2145m32 2146m32 2153r40 +2104b7 Success{boolean} 2138m59 2140m19 2153m71 2157r10 +2126a10 Source{string} 2153r24 +2128a10 Target{string} 2136r31 2153r32 +2133i16 Handle{54|74I9} 2136m48 2137r19 2138r32 +2134i16 Matched{natural} 2136m39 +2173i7 Curr_Proc{51|33I9} 2174r67 2187r35 2189r41 +2174p7 Map{12|43P9} 2179r37 +2175m7 Path_IAddr{42|49M9} 2176r61 2179r42 +2176m7 Path_SAddr{41|25M9} 2197r37 +2177b7 Flag_Force{boolean} 2199r29 +2195b10 Success{boolean} 2199m41 2200r13 +2196a10 Path{string} 2199r23 +2220i7 Proc{51|33I9} 2221r66 2254r37 2255r32 2270r43 2273r46 +2221p7 Map{12|43P9} 2233r37 2234r37 +2222m7 Path_IAddr{42|49M9} 2224r62 2233r42 +2223m7 Buffer_IAddr{42|49M9} 2225r62 2234r42 +2224m7 Path_Add{41|25M9} 2250r37 +2225m7 Buffer_Add{41|25M9} 2252r37 +2226i7 R_FS{54|74I9} 2255m46 2256r13 2262r20 +2226i13 CWD_FS{54|74I9} 2262m41 2270r49 2278r34 2279r17 +2227m7 CWD_Ino{54|28M9} 2255m52 2262r26 +2228m7 Opened_Ino{54|28M9} 2262m49 2270r57 2278r42 2279r25 +2229i7 Ret_Count{natural} 2278m60 2280r49 +2230m7 User{19|18M9} 2254m43 2262r69 +2231e7 Status{54|234E9} 2262m61 2264r13 2278m71 2280r28 +2248r10 File_Perms{48|42R9} 2270m10 2271r17 +2249a10 Path{string} 2262r35 +2251a10 Data{string} 2278m54 +2291U17 Free[5|14] 2351s10 +2294m7 Buff_IAddr{42|49M9} 2295r60 2306r42 +2295m7 Buff_Addr{41|25M9} 2301r68 +2296m7 Buff_Len{19|19M9} 2301r34 2314r66 +2297i7 Proc{51|33I9} 2298r71 2299r63 2313r46 +2298p7 Map{12|43P9} 2306r37 +2299p7 File{51|57P9} 2309r13 2309r33 2316r27 2317r27 2318r36 2324r13 2324r35 +2300p7 Tmp_Buffer{54|64P9} 2314m10 2319r27 2328r32 2333r54 2334r22 2334r55 +. 2336r25 2351m16 2351r16 +2301a7 Buffer{52|655A9} 2327m16 2333m16 2335m16 +2302i7 Read_Len{natural} 2320m27 2324r69 2326r27 2344r38 +2303e7 Success{54|234E9} 2321m27 2323r13 +2304m7 User{19|18M9} 2313m52 +2326i17 I{integer} 2327r37 2328r44 2329r65 2333r37 2333r66 2334r34 2334r67 +. 2335r37 2336r37 +2356b7 Success{boolean} 2358m24 2359r10 +2379i7 Proc{51|33I9} 2380r65 2405r37 2406r32 2419r46 2420r46 +2380p7 Map{12|43P9} 2391r37 +2381m7 Path_IAddr{42|49M9} 2382r61 2391r42 +2382m7 Path_SAddr{41|25M9} 2403r37 +2383i7 CWD_FS{54|74I9} 2406m46 2407r13 2422r26 +2384m7 CWD_Ino{54|28M9} 2406m54 2423r26 +2385e7 Node_Type{54|39E9} 2414m13 2416m13 2425r26 +2386m7 Tmp_Mode{54|32M12} 2426r43 +2387e7 Status{54|234E9} 2428m26 2429r28 +2388m7 Umask{54|32M12} 2419m52 2426r53 +2389m7 User{19|18M9} 2405m43 2420m52 2427r26 +2402a10 Path{string} 2424r26 +2440i7 Curr_Proc{51|33I9} 2441r64 2463r37 2464r32 +2441p7 Map{12|43P9} 2449r37 +2442m7 Path_IAddr{42|49M9} 2443r60 2449r42 +2443m7 Path_SAddr{41|25M9} 2461r37 +2444i7 CWD_FS{54|74I9} 2464m51 2465r13 2471r22 +2445m7 CWD_Ino{54|28M9} 2464m59 2471r30 +2446e7 Success{54|234E9} 2471m51 2472r28 +2447m7 User{19|18M9} 2463m48 2471r45 +2460a10 Path{string} 2471r39 +2482i7 Proc{51|33I9} 2483r60 2493r43 +2483p7 File{51|57P9} 2487r10 2494r12 2497r17 2497r36 +2484e7 Success{54|234E9} 2497m62 2498r31 +2485m7 User{19|18M9} 2493m49 +2512i7 Proc{51|33I9} 2513r58 2522r56 +2513p7 File{51|57P9} 2518r10 2518r30 2529r24 2535r28 2544r28 2554r30 +2514m7 IAddr{42|49M9} 2515r60 2522r63 +2515m7 SAddr{41|25M9} 2532r59 2541r60 2550r54 +2516b7 Succ{boolean} 2534m16 2543m16 2554m16 2558r10 +2532r16 Addr{52|692R9} 2536r28 2537r50 +2541r16 Addr{52|698R9} 2545r28 2546r50 +2550m16 A_SAddr2{41|25M9} 2551r64 2552r66 +2551i16 CLen{natural} 2552r36 +2552a16 Addr{string} 2554r49 +2577i7 Proc{51|33I9} 2578r65 2608r37 2609r32 +2578p7 Map{12|43P9} 2588r37 2589r37 +2579m7 Path_IAddr{42|49M9} 2580r61 2588r42 +2580m7 Path_SAddr{41|25M9} 2604r37 +2581m7 Targ_IAddr{42|49M9} 2582r61 2589r42 +2582m7 Targ_SAddr{41|25M9} 2606r37 +2583i7 CWD_FS{54|74I9} 2609m46 2610r13 2617r21 +2584m7 CWD_Ino{54|28M9} 2609m54 2618r26 +2585e7 Success{54|234E9} 2623m26 2624r28 +2586m7 User{19|18M9} 2608m43 2622r26 +2603a10 Path{string} 2619r26 +2605a10 Targ{string} 2620r26 +2635i7 Proc{51|33I9} 2636r58 2645r56 +2636p7 File{51|57P9} 2641r10 2641r30 2652r24 2658r28 2667r28 2677r33 +2637m7 IAddr{42|49M9} 2638r60 2645r63 +2638m7 SAddr{41|25M9} 2655r59 2664r60 2673r54 +2639b7 Succ{boolean} 2657m16 2666m16 2677m16 2681r10 +2655r16 Addr{52|692R9} 2659r28 2660r50 +2664r16 Addr{52|698R9} 2668r28 2669r50 +2673m16 A_SAddr2{41|25M9} 2674r64 2675r66 +2674i16 CLen{natural} 2675r36 +2675a16 Addr{string} 2677r52 +2695m7 Res_IAddr{42|49M9} 2696r59 2704r42 +2696m7 Res_SAddr{41|25M9} 2702r66 +2697i7 Proc{51|33I9} 2698r63 2713r23 2714r23 +2698p7 Map{12|43P9} 2704r37 +2699p7 Res_PTY{25|37P9} 2710m7 2711r68 2712r70 2716m17 2716r17 2717m17 2717r17 +2700p7 P_Desc{51|57P9} 2711m7 2713r29 2718m17 2718r17 +2700p15 S_Desc{51|57P9} 2712m7 2714r29 2719m17 2719r17 +2701b7 Succ1{boolean} 2713m37 2715r14 +2701b14 Succ2{boolean} 2714m37 2715r27 +2702a7 Result(integer) 2704r53 2713m44 2713r44 2714m44 2714r44 +2734i7 Proc{51|33I9} 2735r57 +2735p7 File{51|57P9} 2739r10 2745r12 2747r38 2747r57 +2736b7 Data{boolean} 2747r73 +2737e7 Succ{54|234E9} 2747m13 2748r31 +2765i7 Proc{51|33I9} 2766r66 2796r37 2797r32 2798r32 +2766p7 Map{12|43P9} 2776r37 2777r37 +2767m7 Src_IAddr{42|49M9} 2768r60 2776r42 +2768m7 Src_SAddr{41|25M9} 2792r37 +2769m7 Dst_IAddr{42|49M9} 2770r60 2777r42 +2770m7 Dst_SAddr{41|25M9} 2794r37 +2771i7 Src_FS{54|74I9} 2797m50 2799r13 2801r13 2808r28 +2771i15 Dst_FS{54|74I9} 2798m50 2800r13 2801r23 +2772m7 Src_Ino{54|28M9} 2797m58 2808r36 +2772m16 Dst_Ino{54|28M9} 2798m58 2808r50 +2773e7 Success{54|234E9} 2808m70 2809r28 +2774m7 User{19|18M9} 2796m43 2808r64 +2791a10 Src{string} 2808r45 +2793a10 Dst{string} 2808r59 +2823i7 Proc{51|33I9} 2826r36 2830r35 2832r41 +2824i7 TProc{51|33I9} 2826r10 2826r56 2839r30 +2856i7 Proc{51|33I9} 2857r57 +2857p7 File{51|57P9} 2859r10 2859r30 2862r23 2866r32 +2884i7 Proc{51|33I9} 2885r62 2886r58 2958r26 2960r27 +2885p7 Map{12|43P9} 2911r40 2912r40 +2886p7 File{51|57P9} 2898r10 2898r30 2902r23 2909r29 2917r27 2923r39 2934r39 +. 2947r46 +2887b7 CExec{boolean} 2960r52 +2888b7 Block{boolean} 2909r52 2924r43 2935r43 2948r50 +2889b7 CloFork{boolean} 2960r59 +2890m7 A_IAddr{42|49M9} 2891r59 2908r10 2911r45 +2891m7 A_SAddr{41|25M9} 2920r62 2931r63 2942r57 +2892m7 AL_IAddr{42|49M9} 2908r25 2912r45 +2893p7 Desc{51|57P9} 2957m10 2958r32 2965m20 2965r20 +2894p7 Sock{27|37P9} 2909m59 2909r59 2927m39 2927r39 2938m39 2938r39 2951m46 +. 2951r46 2956r10 2957r63 2964m20 2964r20 +2895i7 Ret{natural} 2958m44 2960r46 2962r38 +2896b7 Succ{boolean} 2958m38 2959r13 +2920r19 Addr{52|692R9} 2925m39 2925r39 2926m61 2926r61 +2931r19 Addr{52|698R9} 2936m39 2936r39 2937m61 2937r61 +2942m19 A_SAddr2{41|25M9} 2943r58 2944r69 +2943i19 CLen{natural} 2944r39 2950m46 +2944a19 Addr{string} 2949m46 +2976L6 Would_Fault_Error 2914r18 +2986i7 Proc{51|33I9} 2993r46 +2987b7 Success{boolean} 2990m37 2991r10 +2988e7 Resource{48|59E9} 2990m46 2993r52 +3007b7 Success{boolean} 3010m37 3011r10 3016m27 3017r13 +3008e7 Resource{48|59E9} 3010m46 3014r27 +3037i7 Proc{51|33I9} 3038r64 3056r34 3062r32 3069r37 3090r27 +3038p7 Map{12|43P9} 3046r37 +3039m7 Path_IAddr{42|49M9} 3040r60 3046r42 +3040m7 Path_SAddr{41|25M9} 3060r40 +3041i7 Rel_FS{54|74I9} 3062m46 3063r13 3072r28 +3041i15 FS{54|74I9} 3075m28 3094r26 +3042m7 D_Ino{54|28M9} 3062m54 3073r28 +3042m14 Ino{54|28M9} 3076m28 3095r26 +3043e7 Succ{54|234E9} 3077m28 3082r13 3101m26 3102r25 +3044m7 User{19|18M9} 3056m40 3069m43 3078r28 3090m33 3100r26 +3059a10 Path{string} 3074r28 +3113M12 Unsigned_28 3114r67 3115r52 3144r54 3151r26 +3114V16 C1[4|14]{3113M12} 3154s62 +3115V16 C2[4|14]{51|143A9} 3154s39 +3117i7 Proc{51|33I9} 3118r64 3153r33 3154r33 3177r34 3245r30 +3118p7 Map{12|43P9} 3135r37 3136r37 3144r40 +3119m7 FIAddr{42|49M9} 3120r60 3135r42 +3120m7 FSAddr{41|25M9} 3161r67 +3121m7 TIAddr{42|49M9} 3122r60 3136r42 +3122m7 TSAddr{41|25M9} 3162r67 +3123m7 S_IAddr{42|49M9} 3124r60 3143r10 3144r45 3244r10 +3124m7 S_SAddr{41|25M9} 3151r62 +3125m7 Size_FD{19|19M9} 3135r50 +3126i7 Count{natural} 3232m19 3232r28 3237r23 3249r32 +3127p7 File{51|57P9} 3177m16 3178r19 3189r21 3192r26 3196r26 3200r26 3204r26 +. 3207r26 3210r32 3210r51 +3128m7 Curr_Sec{19|19M9} 3236m45 3237r64 +3129m7 Curr_NSec{19|19M9} 3236m55 3238r16 +3130m7 Final_Sec{19|19M9} 3158m39 3164m30 3164r30 3238r27 +3131m7 Final_NSec{19|19M9} 3158m50 3164m41 3164r41 3238r38 +3132a7 Old_Set{51|143A9} 3153m39 3154r66 3245r36 +3133b7 Can_Read{boolean} 3184m16 3193m26 3197m26 3200m50 3204m52 3207m45 +. 3210m67 3214r19 +3133b17 Can_Write{boolean} 3185m16 3193m36 3197m36 3200m60 3204m62 3207m55 +. 3211m25 3217r19 +3133b28 Can_PrioRead{boolean} 3186m16 3201m26 3220r19 +3133b42 Is_Error{boolean} 3187m16 3193m47 3197m47 3208m26 3211m36 3223r19 +3133b52 Is_Broken{boolean} 3188m16 3193m57 3197m57 3207m66 3226r19 +3151m13 Passed_Set{3113M12} 3154r43 +3161a10 FDs{52|832A9} 3168m27 3168r27 +3162r10 Time{52|253R9} 3164r53 3165r30 +3168r17 Polled=3168:27{52|827R9} 3169r16 3172r20 3177r53 3179r19 3214r33 +. 3215r19 3215r40 3217r34 3218r19 3218r40 3220r37 3221r19 3221r40 3224r19 +. 3224r40 3227r19 3227r40 3231r19 +3230L15 End_Iter 3173r24 3180r24 +3253i7 Proc{51|33I9} 3256r43 +3254m7 Ret{19|18M9} 3256m49 3258r32 +3267i7 Proc{51|33I9} 3270r28 3272r49 3275r39 3278r36 3281r52 +3268m7 Curr_UID{19|18M9} 3278m42 3280r36 +3303i7 Proc{51|33I9} 3304r65 3324r34 3327r33 3341r35 3365r46 +3304p7 Map{12|43P9} 3314r37 +3305m7 Path_IAddr{42|49M9} 3306r61 3314r42 +3306m7 Path_SAddr{41|25M9} 3339r40 +3307i7 Rel_FS{54|74I9} 3341m49 3342r16 3349r31 +3307i15 FS{54|74I9} 3334m10 3352m31 3365r52 3376r21 +3308m7 D_Ino{54|28M9} 3341m57 3350r31 +3308m14 Ino{54|28M9} 3335m10 3353m31 3365r56 3377r21 +3309e7 Succ{54|234E9} 3354m31 3359r16 3379m21 3380r25 +3310m7 User{19|18M9} 3324m40 3355r31 +3311p7 File_Desc{51|57P9} 3327m10 3328r13 3328r38 3334r17 3335r17 +3312r7 File_Perms{48|42R9} 3365m13 3366r20 +3338a13 Path{string} 3351r31 +3388i7 Proc{51|33I9} 3391r26 3392r26 +3389m7 Old{54|32M12} 3391m32 3394r32 +3403i7 Proc{51|33I9} 3407r32 3409r41 +3404b7 Do_Ret{boolean} 3425r10 +3405e7 Success{13|19E9} 3415m30 3416m30 3417m30 3426r15 +3447i7 Proc{51|33I9} 3448r65 3468r34 3471r33 3485r35 3509r46 +3448p7 Map{12|43P9} 3458r37 +3449m7 Path_IAddr{42|49M9} 3450r61 3458r42 +3450m7 Path_SAddr{41|25M9} 3483r40 +3451i7 Rel_FS{54|74I9} 3485m49 3486r16 3493r31 +3451i15 FS{54|74I9} 3478m10 3496m31 3509r52 3519r11 +3452m7 D_Ino{54|28M9} 3485m57 3494r31 +3452m14 Ino{54|28M9} 3479m10 3497m31 3509r56 3520r11 +3453e7 Succ{54|234E9} 3498m31 3503r16 3523m11 3524r25 +3454m7 Usr{19|18M9} 3468m40 3499r31 +3455p7 File_Desc{51|57P9} 3471m10 3472r13 3472r38 3478r17 3479r17 +3456r7 File_Perms{48|42R9} 3509m13 3510r20 +3482a13 Path{string} 3495r31 +3535m7 Buf_IAddr{42|49M9} 3536r59 3545r42 +3536m7 Buf_SAddr{41|25M9} 3563r37 +3537i7 Proc{51|33I9} 3538r65 3539r62 3559r43 +3538p7 Map{12|43P9} 3545r37 +3539p7 File{51|57P9} 3549r13 3565r15 3567r23 3572r26 3572r45 3573r43 +3540i7 Ret_Count{natural} 3573m32 3574r57 +3541e7 Success1{54|234E9} 3573m67 3574r34 +3542m7 User{19|18M9} 3559m49 +3543i7 Final_Cnt{natural} 3554m10 3556m10 3562r46 +3562a10 Data{17|29A9} 3573m26 +3592m7 Buf_IAddr{42|49M9} 3593r59 3602r42 +3593m7 Buf_SAddr{41|25M9} 3620r37 +3594i7 Proc{51|33I9} 3595r65 3596r62 3616r34 3629r43 +3595p7 Map{12|43P9} 3602r37 +3596p7 File{51|57P9} 3606r13 3622r15 3624r23 3636r27 3636r46 3637r44 +3597i7 Ret_Count{natural} 3637m33 3638r57 +3598e7 Success1{54|234E9} 3637m68 3638r34 +3599m7 User{19|18M9} 3616m40 +3600i7 Final_Cnt{natural} 3611m10 3613m10 3619r46 3628r44 +3619a10 Data{17|29A9} 3637r27 +3655i7 Proc{51|33I9} 3656r65 3657r59 +3656p7 Map{12|43P9} 3668r40 3675r40 +3657p7 File{51|57P9} 3664r10 3664r30 3680r24 3685r27 3692r27 3701r27 +3658m7 AIAddr{42|49M9} 3659r61 3675r45 +3659m7 ASAddr{41|25M9} 3683r59 3690r60 3697r54 +3660m7 LIAddr{42|49M9} 3661r61 3668r45 +3661m7 LSAddr{41|25M9} 3673r51 +3662b7 Succ{boolean} 3686m57 3693m58 3701m58 3705r10 +3673i10 Length{natural} 3675r66 +3683r16 Addr{52|692R9} 3685m46 3685r46 3686m41 3686r41 +3690r16 Addr{52|698R9} 3692m46 3692r46 3693m41 3693r41 +3697m16 A_SAddr2{41|25M9} 3698r55 3699r66 +3698i16 CLen{natural} 3699r36 3701m52 +3699a16 Addr{string} 3701m46 +3715L6 Would_Fault_Error 3669r15 3676r18 +3727i7 Proc{51|33I9} 3728r65 3729r59 +3728p7 Map{12|43P9} 3740r40 3747r40 +3729p7 File{51|57P9} 3736r10 3736r30 3752r24 3757r26 3764r26 3773r26 +3730m7 AIAddr{42|49M9} 3731r61 3747r45 +3731m7 ASAddr{41|25M9} 3755r59 3762r60 3769r54 +3732m7 LIAddr{42|49M9} 3733r61 3740r45 +3733m7 LSAddr{41|25M9} 3745r51 +3734b7 Succ{boolean} 3758m57 3765m58 3773m57 3777r10 +3745i10 Length{natural} 3747r66 +3755r16 Addr{52|692R9} 3757m45 3757r45 3758m41 3758r41 +3762r16 Addr{52|698R9} 3764m45 3764r45 3765m41 3765r41 +3769m16 A_SAddr2{41|25M9} 3770r55 3771r66 +3770i16 CLen{natural} 3771r36 3773m51 +3771a16 Addr{string} 3773m45 +3787L6 Would_Fault_Error 3741r15 3748r18 +3798i7 Proc{51|33I9} 3799r57 +3799p7 File{51|57P9} 3802r10 3802r30 3810r42 3812r42 3814r42 +3800b7 Succ{boolean} 3810m13 3812m13 3814m13 3821r10 +3838i7 Proc{51|33I9} 3839r60 +3839p7 Map{12|43P9} 3863r37 3864r37 3866r45 3867r45 3886r43 3887r48 +3840m7 IAddr{42|49M9} 3841r56 3863r42 3866r50 +3841m7 SAddr{41|25M9} 3879r70 +3842m7 TIAddr{42|49M9} 3843r56 3864r42 3867r50 +3843m7 TSAddr{41|25M9} 3880r70 +3845m7 Futex_Len{19|19M9} 3863r49 3866r57 +3846m7 Time_Len{19|19M9} 3864r50 3867r58 +3847m7 U32_Len{19|19M9} 3886r52 3887r57 +3878i10 Cnt{natural} 3879r41 3881r48 +3879a10 Items{52|938A9} 3884r19 3885r36 3895r52 +3880r10 Time{52|253R9} 3901r44 3901r58 +3881a10 Futexes{24|32A9} 3895m16 3901r35 3909r32 +3882m10 IA{42|49M9} 3885m13 3886r48 3887r53 3893r76 +3884i14 I{integer} 3885r43 3895r25 3895r59 +3893m16 V{19|18M9} 3895m32 3895r32 +3920L6 Would_Fault_Error 3869r18 3889r21 +3932i7 Proc{51|33I9} 3933r59 3940r35 3942r40 +3933p7 Map{12|43P9} 3936r37 +3934m7 IAddr{42|49M9} 3936r42 3948r63 +3948r10 Spec{52|253R9} 3955m26 3955r26 3955m40 3955r40 3958m26 3958r26 3958m40 +. 3958r40 3966m26 3966r26 3966m40 3966r40 3969m26 3969r26 3969m40 3969r40 +. 3977r26 3977r40 +3990L6 Invalid_Value_Error 3960r27 3971r27 3979r27 3982r21 +4003i7 Proc{51|33I9} 4004r62 4014r35 4016r50 +4004p7 Map{12|43P9} 4008r37 4009r37 +4005m7 ReqIAddr{42|49M9} 4008r42 4022r70 +4006m7 RemIAddr{42|49M9} 4009r42 4023r70 +4022r10 Request{52|253R9} 4028r22 4029r22 4036r46 4037r33 +4023r10 Remaining{52|253R9} 4050m10 4051m10 +4024m10 CSec{19|19M9} 4042m48 4044m43 4046r50 +4024m16 CNSec{19|19M9} 4042m54 4044m49 4046r56 +4025m10 FSec{19|19M9} 4028m13 4032m48 4034m43 4036m33 4036r33 4046r63 +4025m16 FNSec{19|19M9} 4029m13 4032m54 4034m49 4036m39 4036r39 4046r69 +4064i7 Proc{51|33I9} 4065r59 4079r43 4084r20 +4065p7 Map{12|43P9} 4068r37 +4066m7 IAddr{42|49M9} 4068r42 4075r61 +4075r10 Usage{52|971R9} 4079m49 4079r49 4080m19 4080r19 4080m50 4080r50 4081m19 +. 4081r19 4084m26 4084r26 4085m20 4085r20 4085m51 4085r51 4086m20 4086r20 +4109m7 Buf_IAddr{42|49M9} 4110r59 4120r42 +4110m7 Buf_SAddr{41|25M9} 4138r37 +4111m7 AIAddr{42|49M9} 4112r64 4121r11 4121r59 4140r13 +4112m7 ASAddr{41|25M9} 4145r65 4157r66 4169r59 +4113i7 Proc{51|33I9} 4114r65 4115r62 +4114p7 Map{12|43P9} 4120r37 4121r54 +4115p7 File{51|57P9} 4126r13 4126r33 4140r39 4142r30 4148r39 4160r39 4174r39 +. 4182r30 +4116i7 Ret_Count{natural} 4150m39 4162m39 4176m39 4182m55 4184r50 +4117e7 Success{27|40E9} 4153m39 4165m39 4178m39 4182m66 4184r28 +4118i7 Final_Cnt{natural} 4131m10 4133m10 4137r46 +4137a10 Data{17|29A9} 4149m39 4161m39 4175m39 4182m49 +4145r22 Addr{52|692R9} 4151r39 4152r61 +4157r22 Addr{52|698R9} 4163r39 4164r61 +4169m22 A_SAddr{41|25M9} 4170r70 4171r72 +4170i22 CLen{natural} 4171r42 +4171a22 Addr{string} 4177r39 +4200m7 Buf_IAddr{42|49M9} 4201r59 4211r42 +4201m7 Buf_SAddr{41|25M9} 4229r37 +4202m7 AIAddr{42|49M9} 4203r64 4212r11 4212r59 4231r13 +4203m7 ASAddr{41|25M9} 4236r65 4248r66 4260r59 +4204i7 Proc{51|33I9} 4205r65 4206r62 +4205p7 Map{12|43P9} 4211r37 4212r54 +4206p7 File{51|57P9} 4217r13 4217r33 4231r39 4233r30 4239r39 4251r39 4265r39 +. 4273r31 +4207i7 Ret_Count{natural} 4241m39 4253m39 4267m39 4273m56 4275r50 +4208e7 Success{27|40E9} 4244m39 4256m39 4269m39 4273m67 4275r28 +4209i7 Final_Cnt{natural} 4222m10 4224m10 4228r46 +4228a10 Data{17|29A9} 4240r39 4252r39 4266r39 4273r50 +4236r22 Addr{52|692R9} 4242r39 4243r61 +4248r22 Addr{52|698R9} 4254r39 4255r61 +4260m22 A_SAddr{41|25M9} 4261r70 4262r72 +4261i22 CLen{natural} 4262r42 +4262a22 Addr{string} 4268r39 +4286i7 Proc{51|33I9} 4287r64 4288r58 4299r32 4301r50 +4287p7 Map{12|43P9} 4320r43 4325r43 4331r43 +4288p7 File{51|57P9} 4304r13 4304r33 4310r17 4310r36 4316r49 +4289m7 IAddr{42|49M9} 4295r68 4296r68 4297r68 4320r48 4325r48 4331r48 +4290i7 Handl{17|83I9} 4316m7 4323r42 4329r17 4335r17 +4291r7 Stat{54|41R9} 4310m52 4311r32 +4292b7 Suc{boolean} 4323m54 4329m41 4335m41 4337m13 4340r10 +4293e7 Suc2{54|234E9} 4310m58 4311r10 +4295b7 Blk{boolean} 4320r55 4323r49 +4296r7 IP4{52|1007R9} 4325r55 4329r24 4329r32 +4297r7 IP6{52|1011R9} 4331r55 4335r24 4335r32 +4350L6 Would_Fault_Error 4321r21 4326r21 4332r21 +4364i7 Proc{51|33I9} 4365r65 4387r34 4390r33 4404r35 4428r46 +4365p7 Map{12|43P9} 4375r37 4376r37 +4366m7 Path_IAddr{42|49M9} 4375r42 4402r52 +4367m7 Time_IAddr{42|49M9} 4376r42 4439r63 +4368i7 Rel_FS{54|74I9} 4404m49 4405r16 4412r31 +4368i15 FS{54|74I9} 4397m10 4415m31 4428r52 4442r36 +4369m7 D_Ino{54|28M9} 4404m57 4413r31 +4369m14 Ino{54|28M9} 4398m10 4416m31 4428r56 4443r36 +4370e7 Succ{54|234E9} 4417m31 4422r16 4448m36 4449r28 +4371m7 User{19|18M9} 4387m40 4418r31 +4372p7 File_Desc{51|57P9} 4390m10 4391r13 4391r38 4397r17 4398r17 +4373r7 File_Perms{48|42R9} 4428m13 4429r20 +4401a13 Path{string} 4414r31 +4438A15 Time_Arr(52|253R9) 4439r18 +4439a10 Times{4438A15} 4444r36 4445r36 4446r36 4447r36 +4457i7 Proc{51|33I9} 4460r32 4462r50 +4458i7 Result{40|28I9} 4467m7 4468r10 4470r44 +4483i7 Proc{51|33I9} 4487r32 4489r50 +4484i7 Clust{40|28I9} 4491r13 4492r30 +4485i7 Th{40|27I9} 4491r40 4492r37 +4509M12 Unsigned_28 4510r67 4511r52 4541r19 +4510V16 C1[4|14]{4509M12} 4545s57 4547s61 +4511V16 C2[4|14]{51|143A9} 4545s45 4547s45 4549s45 +4513i7 Proc{51|33I9} 4514r61 4519r27 4545r39 4547r39 4549r39 +4514p7 Map{12|43P9} 4522r40 4535r40 +4515m7 S_IAddr{42|49M9} 4534r10 4535r45 4541r67 +4516m7 O_IAddr{42|49M9} 4521r10 4522r45 4528r69 +4517a7 Old_Set{51|143A9} 4519m33 4530r20 4545r61 4547r65 +4528a13 Old{51|143A9} 4530m13 +4541m13 Set{4509M12} 4545r49 4547r49 4549r49 +4562L6 Would_Fault_Error 4524r18 4537r18 +4574i7 Proc{51|33I9} 4575r61 4600r33 4615r39 4617r39 4619r39 4621r39 +4575p7 Map{12|43P9} 4590r40 4605r40 +4576m7 A_IAddr{42|49M9} 4604r10 4605r45 4611r70 +4577m7 O_IAddr{42|49M9} 4589r10 4590r45 4596r70 +4578e7 Actual{51|82E9} 4582m33 4600r39 4615r45 4618r25 4621r45 +4579b7 Success{boolean} 4582m41 4583r14 +4580a7 Mask{51|143A9} 4617m45 4618m19 4619r45 +4596r13 Old{52|1054R9} 4598m13 4599m13 4600m47 4600r47 +4611r13 Act{52|1054R9} 4613r30 4621r53 +4630L6 Would_Fault_Error 4592r18 4607r18 +4641i7 Proc{51|33I9} 4664r32 4665r29 +4642i7 Tgt{51|33I9} 4654r10 4666r19 4667r29 4675r21 +4643b7 Success{boolean} 4647m41 4648r14 +4644e7 Actual{51|82E9} 4647m33 4658r17 4675r26 +4645m7 EUID{19|18M9} 4665m35 4668r13 4668r33 +4645m13 Tgt_UID{19|18M9} 4666m24 4668r21 +4645m22 Tgt_EUID{19|18M9} 4667m34 4668r41 +4686i7 Proc{51|33I9} 4690r32 4692r42 4699m16 4700r19 4704r36 +4687i7 Th{40|27I9} 4711m16 4713m16 4714r19 4718r36 +4688i7 FNice{40|112I12} 4704m13 4718m13 4723r10 4724r35 4726r58 +4732L6 Invalid_Value_Return 4701r24 4715r24 4720r18 +4744i7 Proc{51|33I9} 4748r32 4750r42 4768m16 4769r19 4773r27 +4745i7 Th{40|27I9} 4780m16 4782m16 4783r19 4787r27 +4746i7 FNice{40|112I12} 4756m10 4760m10 4773r33 4787r31 +4796L6 Invalid_Value_Return 4762r15 4770r24 4784r24 4789r18 +4802i7 Proc{51|33I9} 4805r33 +4803m7 Ret{19|18M9} 4805m39 4807r32 +4811i7 Proc{51|33I9} 4814r43 +4812m7 Ret{19|18M9} 4814m49 4816r32 +4825i7 Proc{51|33I9} 4828r28 4830r49 4833r39 4836r36 4839r52 +4826m7 Curr_GID{19|18M9} 4836m42 4838r36 +4858i7 Proc{51|33I9} 4859r59 4871r33 +4859p7 Map{12|43P9} 4865r37 +4860m7 IAddr{42|49M9} 4863r46 4865r42 +4861i7 Ret{natural} 4871m44 4872r10 4874r35 +4862a7 Arr{51|497A9} 4865r49 4871m39 4872r17 +4887i7 Proc{51|33I9} 4888r59 4895r38 4903r36 +4888p7 Map{12|43P9} 4897r40 +4889m7 IAddr{42|49M9} 4892r46 4897r45 +4890b7 Succ{boolean} 4903m47 4904r17 +4891a7 Arr{51|497A9} 4897r52 4903r42 +4922i7 Proc{51|33I9} 4923r64 4926r58 +4923p7 Map{12|43P9} 4930r37 +4924m7 IAddr{42|49M9} 4925r60 4930r42 +4925m7 SAddr{41|25M9} 4928r70 +4926p7 File{51|57P9} 4934r13 4940r12 4941r52 4942r52 +4927p7 Data{25|37P9} 4941m44 4942m44 4946r25 +4928a7 Str{string} 4946m31 4951m7 +4957L6 Invalid_Error 4943r30 4948r15 +4972i7 Proc{51|33I9} 4973r58 +4973p7 File{51|57P9} 4976r10 4979r13 4990r37 4990r56 +4974e7 Tmp{54|234E9} 4990m13 4991r31 +4999L6 Error_Return 4978r15 4981r15 4994r18 +5010K15 Align[29|19] 5035r22 +5011i7 Proc{51|33I9} 5021r32 5022r29 5023r29 5042r36 5047r65 +5012m7 Truncated{19|18M9} 5024r44 5031r28 5053r40 +5013r7 Perms{12|26R9} 5051r32 +5018m7 Ret_Addr{19|19M9} 5031m39 5049r61 +5018m17 Ret_Size{19|19M9} 5031m49 5042r42 5045r10 5050r47 +5018m27 VAddr{19|19M9} 5035m13 5039m13 5042m10 5048r61 5055r25 +5019m7 EUID{19|18M9} 5022m35 5024r55 +5019m13 EGID{19|18M9} 5023m35 5024r61 +5063L6 Invalid_Error 5037r18 +5075m7 Trunc_ID{19|18M9} 5087r44 5096r38 5109r31 5114r46 +5076i7 Proc{51|33I9} 5077r56 5084r32 5085r29 5086r29 +5077p7 Map{12|43P9} 5098r43 +5078m7 IAddr{42|49M9} 5079r60 5098r48 +5079m7 SAddr{41|25M9} 5105r56 +5080r7 Info{26|76R9} 5114m56 5118r49 5119r40 5120r40 5121r41 5122r41 5123r54 +. 5124r37 5125r51 +5081b7 Found{boolean} 5114m62 5115r26 +5082m7 EUID{19|18M9} 5085m35 5087r54 +5082m13 EGID{19|18M9} 5086m35 5087r60 +5105r16 Orig{52|1156R9} 5110r31 5111r31 5112r44 5118m19 5119m19 5120m19 5121m19 +. 5122m19 5123m19 5124m19 5125m19 +5136L6 Invalid_Error 5116r27 5129r18 +5146i7 Proc{51|33I9} 5147r56 +5147p7 Map{12|43P9} 5155r33 5168r31 +5148m7 Phys{41|25M9} 5158m33 5164r62 +5149b7 Is_Mapped{boolean} 5159m33 5166r10 +5149b18 Is_Readable{boolean} 5161m33 +5149b31 Is_Writeable{boolean} 5162m33 +5149b45 Is_Executable{boolean} 5163m33 +5150b7 Is_User_Accessible{boolean} 5160m33 +5151m7 ID{26|25M12} 5164m76 5166r24 5172r40 +5152m7 Size{19|19M9} 5164m70 5170r46 +5192K15 Align[29|19] 5196r38 +5193i7 Proc{51|33I9} 5201r26 5202r26 +5194m7 Truncated{19|18M9} 5209r14 5211r46 +5195m7 Mode{19|19M9} 5206r32 5209r43 +5196m7 AlSz{19|19M9} 5206r14 5209r25 +5197m7 Created_Key{26|25M12} 5205m10 5208m10 5211m10 5214r10 5216r35 +5198m7 EUID{19|18M9} 5201m32 5206r20 5209r31 +5199m7 EGID{19|18M9} 5202m32 5206r26 5209r37 +5234i7 Proc{51|33I9} 5235r64 5236r58 +5235p7 Map{12|43P9} 5244r40 +5236p7 File{51|57P9} 5239r10 5239r30 5254r41 5260r31 +5237m7 IAddr{42|49M9} 5244r45 5250r64 +5250m10 Val{19|18M9} 5254m16 5256m16 5258m16 5262m22 5264m22 5266m22 +5277L6 Invalid_Value_Error 5243r15 5269r21 +5279L6 Generic_Error 5241r15 5246r15 +5294i7 Proc{51|33I9} 5295r64 5296r58 +5295p7 Map{12|43P9} 5304r40 +5296p7 File{51|57P9} 5299r10 5299r30 +5297m7 IAddr{42|49M9} 5304r45 +5320L6 Invalid_Value_Error 5303r15 5313r18 +5322L6 Generic_Error 5301r15 5306r15 +5333i7 Proc{51|33I9} 5334r59 +5334p7 Map{12|43P9} 5338r37 +5335i7 Th{40|27I9} 5350r30 +5336m7 IAddr{42|49M9} 5338r42 5348r49 +5346i10 Ret{natural} 5350m39 5351r13 5351r26 5352r18 +5347a10 Str{string} 5350m34 5351r32 5352m13 +5361L6 Invalid_Value_Error 5342r15 5356r18 +5363L6 Generic_Error 5340r15 +5374i7 Proc{51|33I9} 5375r59 +5375p7 Map{12|43P9} 5379r37 +5376i7 Th{40|27I9} 5391r30 +5377m7 IAddr{42|49M9} 5379r42 5389r49 +5387b10 Suc{boolean} 5391m39 5392r13 +5388a10 Str{string} 5391r34 +5401L6 Invalid_Value_Error 5383r15 5396r18 +5403L6 Generic_Error 5381r15 +5413K15 FAL=5413:36 5426r13 5428r21 5430r21 5432r21 5457r53 5458r53 5459r53 +5415i7 Proc{51|33I9} 5416r62 5448r35 5450r52 +5416p7 Map{12|43P9} 5425r36 5455r36 +5417m7 O_IAddr{42|49M9} 5419r69 5424r10 5425r41 +5418m7 N_IAddr{42|49M9} 5420r69 5447r10 5455r41 +5419r7 Old_Val{52|1236R9} 5429m19 5431m19 5433m19 5438m16 5440m16 +5420r7 New_Val{52|1236R9} 5456r18 5463r17 +5421e7 Pol{49|21E9} 5426m36 5427r18 5457m46 5458m46 5459m46 5469r47 +5422b7 OOM_Kill{boolean} 5436m45 5437r16 5464m16 5466m16 5470r44 +5480L6 Would_Fault_Error 5443r18 5472r18 +5485L6 Invalid_Value_Error 5460r51 +5525i7 Thread{40|27I9} 5527r38 5528r28 +5532i7 Thread{40|27I9} 5534r28 5535r37 +5549R12 Trace_Info 5552e18 5564r23 +5550m10 Thread{19|17M9} +5551r10 State{8|22R15} +5554i7 Proc{51|33I9} 5571r24 5579r22 5584r41 5586r28 +5555p7 File{51|57P9} 5586m10 5587r13 5587r35 5589r33 5593r20 +5556e7 Success{22|106E9} 5593m67 +5557e7 Raised_Signal{51|82E9} 5572m24 5579r28 +5558m7 Signal_Addr{41|25M9} 5573m24 5578r13 +5559b7 No_Signal{boolean} 5574m24 5576r20 +5560b7 Ignore_Signal{boolean} 5575m24 5578r55 +5561i7 Ret_Count{natural} 5593m56 +5562i7 Tracer_FD{natural} 5584m58 5586r47 +5563b7 Is_Traced{boolean} 5584m47 5585r10 +5564r7 TInfo{5549R12} 5565r52 5566m34 5566r34 5592m13 +5565a7 TInfo_Data{17|29A9} 5593r44 +5685U17 Free[5|14] 5780s13 5783s13 +5686A12 Arg_Arr(19|19M9) 5749r17 5751r17 +5688p7 Map{12|43P9} 5706r37 5707r37 5708r37 5766m10 5767r32 +5689m7 Path_IAddr{42|49M9} 5690r60 5706r42 +5690m7 Path_SAddr{41|25M9} 5692r34 +5691a7 Path{string} 5726r25 5772r29 +5693i7 Path_FS{54|74I9} 5727m25 5739r46 5741r21 5773r29 +5694m7 Path_Ino{54|28M9} 5728m25 5739r55 5741r30 5774r29 +5695i7 Rela_FS{54|74I9} 5721m39 5724r25 +5696m7 Rela_Ino{54|28M9} 5721m48 5725r25 +5697e7 Success2{54|234E9} 5729m25 5733r10 +5698b7 Succ{boolean} 5771m10 5786r13 +5699r7 File_Perms{48|42R9} 5739m7 5740r14 +5700m7 User{19|18M9} 5720m49 5730r25 +5701m7 Argv_IAddr{42|49M9} 5702r60 5707r42 +5702m7 Argv_SAddr{41|25M9} 5750r37 +5703m7 Envp_IAddr{42|49M9} 5704r60 5708r42 +5704m7 Envp_SAddr{41|25M9} 5752r37 +5749a10 Argv{5686A12} 5753r48 5756r19 5757r65 +5751a10 Envp{5686A12} 5754r48 5759r19 5760r64 +5753a10 Args{45|20A9} 5757m13 5768r32 5775r29 5779m21 5779r21 +5754a10 Env{45|21A9} 5760m13 5776r29 5782m20 5782r20 +5756i14 I{integer} 5757r19 5757r71 +5759i14 I{integer} 5760r18 5760r70 +5779p14 Arg=5779:21{45|19P9} 5780r19 +5782p14 En=5782:20{45|19P9} 5783r19 +5799i7 Arg_Length{natural} 5800r33 +5800a7 Arg_String{string} 5802r26 +5820m7 Curr_PID{19|18M9} 5824r27 +5821a7 PID_Buffer{31|55A12} 5824m37 5829r36 5831r36 +5822i7 PID_Len{natural} 5824m49 +5845r7 Result_Info{18|44R9} 5853m37 5855r37 +5846r7 Result_Size{18|54R9} 5857m37 5859r37 +5847i7 Action{integer} 5861r18 5863r27 5863r48 5864r27 5864r48 5874r18 5876r27 +. 5877r27 5884r27 5885r27 +5848b7 Do_R{boolean} 5863m19 5866r48 5868r50 5876m19 5879r47 5881r49 5884m19 +. 5887r48 5889r50 +5848b13 Do_T{boolean} 5864m19 5866r54 5868r56 5877m19 5879r53 5881r55 5885m19 +. 5887r54 5889r56 +5900r7 Caps{48|23R9} 5904r12 5905r12 5906r12 5907r12 5908r12 5909r12 5910r12 +. 5911r12 5912r12 5913r12 5914r12 5915r12 5916r12 5917r12 5918r12 +5962K15 Al[29|19] 5968r17 +5963m7 Length{19|19M9} 5968m7 5972r48 +5964m7 Result{41|25M9} 5973m33 +5965b7 Is_Mapped{boolean} 5974m33 +5965b18 Is_Readable{boolean} 5976m33 +5965b31 Is_Writeable{boolean} 5977m33 +5965b45 Is_Executable{boolean} 5978m33 +5966b7 Is_User_Accessible{boolean} 5975m33 5979r14 +5987m7 Result{41|25M9} 5999m33 +5988b7 Is_Mapped{boolean} 6000m33 6005r18 +5988b18 Is_Readable{boolean} 6002m33 +5988b31 Is_Writeable{boolean} 6003m33 +5988b45 Is_Executable{boolean} 6004m33 +5989b7 Is_User_Accessible{boolean} 6001m33 +6014p7 Descr{51|57P9} 6019m10 6020r13 6020r34 6024r20 6025r20 +X 54 vfs.ads +24K9*VFS 52|28w6 28r28 1272r25 1349r21 1350r21 53|101r21 102r21 103r21 104r21 +. 105r21 124r20 129r23 135r10 137r24 144r13 217r19 251r16 295r19 336r16 377r18 +. 378r18 393r13 394r27 500r13 509r26 912r20 914r20 915r20 916r20 982r25 988r13 +. 999r27 1007r7 1008r21 1038r15 1040r15 1042r15 1044r15 1046r15 1062r14 1073r7 +. 1074r18 1098r15 1116r16 1118r32 1240r26 1241r26 1242r26 1268r22 1269r22 +. 1320r36 1998r19 1999r19 2000r19 2031r10 2034r23 2040r7 2103r20 2136r16 +. 2137r29 2138r19 2145r46 2146r46 2153r13 2199r10 2226r22 2227r22 2231r22 +. 2256r20 2262r10 2264r23 2278r10 2300r20 2303r20 2314r28 2315r10 2323r23 +. 2358r7 2383r20 2384r20 2387r20 2388r20 2407r22 2426r26 2444r20 2445r20 +. 2446r20 2465r22 2471r10 2484r17 2496r13 2583r20 2584r20 2585r20 2610r22 +. 2616r10 2737r14 2747r21 2771r26 2772r26 2773r26 2799r22 2800r22 3041r20 +. 3042r20 3043r20 3063r22 3071r10 3082r21 3093r7 3210r22 3307r21 3308r21 +. 3309r21 3342r25 3348r13 3359r24 3375r7 3451r21 3452r21 3453r21 3486r25 +. 3492r13 3503r24 3518r7 3541r19 3572r16 3598r19 3636r16 4291r15 4293r15 +. 4310r7 4368r21 4369r21 4370r21 4405r25 4411r13 4422r24 4441r10 4990r20 +. 5599r25 5606r15 5610r15 5611r15 5612r15 5613r15 5614r15 5615r15 5616r15 +. 5733r22 5741r10 6011r21 6012r21 6021r20 54|674e8 +28M9*File_Inode_Number<19|19M9> 52|1350r25 53|103r25 104r25 915r24 1241r30 +. 2000r23 2227r26 2228r22 2384r24 2445r24 2584r24 2772r30 3042r24 3308r25 +. 3452r25 4369r25 5694r20 5696r20 6012r25 +32M12*File_Mode{19|18M9} 53|2386r29 2386r42 2388r24 3378r21 3378r54 3389r14 +. 3392r32 5195r61 +36m7*Seconds_Since_Epoch{19|19M9} 53|1025r36 1028r42 1031r38 +37m7*Additional_Nanoseconds{19|19M9} 53|1026r36 1029r42 1032r38 +39E9*File_Type 53|2385r20 54|40e64 +39n23*File_Regular{39E9} 53|1038r19 2337r27 2416r26 +39n37*File_Directory{39E9} 53|1040r19 1074r60 2338r27 2414r26 +39n53*File_Symbolic_Link{39E9} 53|1042r19 2339r27 +40n23*File_Character_Device{39E9} 53|395r40 1044r19 2340r27 4311r53 +40n46*File_Block_Device{39E9} 53|1046r19 2341r27 +41R9*File_Stat 53|105r25 377r22 912r24 1062r18 4291r19 54|54e14 +42m7*Unique_Identifier{28M9} 53|1017r50 +43e7*Type_Of_File{39E9} 53|395r25 1037r21 1074r44 4311r37 +44m7*Mode{32M12} 53|1018r50 +45m7*UID{19|18M9} 53|1020r37 +46m7*GID{19|18M9} 53|1021r37 +47i7*Hard_Link_Count{positive} 53|1019r50 +48m7*Byte_Size{19|19M9} 53|146m25 158r47 406r50 1023r37 +49i7*IO_Block_Size{natural} 53|1033r50 +50m7*IO_Block_Count{19|19M9} 53|1034r37 +51r7*Creation_Time{35R9} 53|1031r24 1032r24 +52r7*Modification_Time{35R9} 53|1028r24 1029r24 +53r7*Access_Time{35R9} 53|1025r24 1026r24 +58m7*Inode_Number{19|19M9} 53|2328r47 +59a7*Name_Buffer{string} 53|2334r37 +60i7*Name_Len{natural} 53|2333r69 2334r70 +61e7*Type_Of_File{39E9} 53|2336r40 +63A9*Directory_Entities(57R9) 53|2292r11 2314r32 +64P9*Directory_Entities_Acc(63A9) 53|2292r31 2300r24 +70i4*Max_Symlink_Loop{natural} 53|1320r40 +73E9*FS_Type 53|2103r24 54|73e46 +73n23*FS_DEV{73E9} 53|1374r27 +73n31*FS_EXT{73E9} 53|1375r27 2145r50 +73n39*FS_FAT{73E9} 53|1376r27 2146r50 +74I9*FS_Handle 52|1349r25 53|102r25 124r24 914r24 1240r30 1999r23 +. 2133r26 2226r26 2383r24 2444r24 2583r24 2771r30 3041r24 3307r25 3451r25 +. 4368r25 5693r20 5695r20 6011r25 +75i4*Error_Handle{74I9} 53|129r27 982r29 1268r26 1269r26 2137r33 2256r24 +. 2407r26 2465r26 2610r26 2799r26 2800r26 3063r26 3342r29 3486r29 4405r29 +. 6021r24 +104U14*Mount 53|2153s17 +119U14*Unmount 53|2199s14 +126U14*Get_Mount 53|2136s20 +133A9*Mountpoint_Arr(74I9) 53|1368r24 +138U14*List_All 53|1371s16 +144V13*Get_Backing_FS{73E9} 53|1373s24 +156V13*Get_Backing_Device{17|83I9} 53|1014s28 1380s23 1524s38 +162U14*Get_Mount_Point 53|1383s19 +174U14*Remount 53|2138s23 +185U14*Get_Block_Size 53|1387s19 +192U14*Get_Fragment_Size 53|1388s19 +198U14*Get_Size 53|1389s19 +204U14*Get_Inode_Count 53|1390s19 +211U14*Get_Free_Blocks 53|1392s19 1394s19 +230U14*Get_Max_Length 53|1391s19 +234E9*FS_Status 52|1272r29 53|101r25 217r23 295r23 378r22 448r20 916r24 1063r14 +. 1098r19 1242r30 1998r23 2231r26 2303r24 2387r24 2446r24 2484r21 2585r24 +. 2737r18 2773r30 3043r24 3309r25 3453r25 3541r23 3598r23 4293r19 4370r25 +. 4974r15 5599r29 5697r20 54|242e16 +235n8*FS_Success{234E9} 53|137r28 394r31 509r30 999r31 1008r25 1074r22 1118r36 +. 2034r27 2264r27 2323r27 3082r25 3359r28 3503r28 4311r18 4422r28 5606r19 +. 5733r26 +236n8*FS_Invalid_Value{234E9} 53|5611r19 +237n8*FS_Is_Directory{234E9} 53|5610r19 +238n8*FS_Not_Supported{234E9} 53|5612r19 +239n8*FS_Not_Allowed{234E9} 53|5615r19 +240n8*FS_RO_Failure{234E9} 53|5613r19 +241n8*FS_IO_Failure{234E9} 53|5614r19 +242n8*FS_Loop{234E9} 53|5616r19 +255U14*Open 53|135s14 988s17 2262s14 3071s14 3348s17 3492s17 4411s17 5723s7 +256i8 Key{74I9} 53|989r17 3072r14 3349r17 3493r17 4412r17 5724r11 +257m8 Relative{28M9} 53|990r17 3073r14 3350r17 3494r17 4413r17 5725r11 +258a8 Path{string} 53|991r17 3074r14 3351r17 3495r17 4414r17 5726r11 +259i8 Final_Key{74I9} 53|992r17 3075r14 3352r17 3496r17 4415r17 5727r11 +260m8 Ino{28M9} 53|993r17 3076r14 3353r17 3497r17 4416r17 5728r11 +261e8 Success{234E9} 53|994r17 3077r14 3354r17 3498r17 4417r17 5729r11 +262m8 User{19|18M9} 53|995r17 3078r14 3355r17 3499r17 4418r17 5730r11 +263b8 Want_Read{boolean} 53|996r17 3079r14 3356r17 3500r17 4419r17 5731r11 +264b8 Want_Write{boolean} 53|997r17 3080r14 3357r17 3501r17 4420r17 5732r11 +265b8 Do_Follow{boolean} 53|998r17 3081r14 3358r17 3502r17 4421r17 +276U14*Create_Node 53|2421s10 +277i8 Key{74I9} 53|2422r14 +278m8 Relative{28M9} 53|2423r14 +279a8 Path{string} 53|2424r14 +280e8 Typ{39E9} 53|2425r14 +281m8 Mode{32M12} 53|2426r14 +282m8 User{19|18M9} 53|2427r14 +283e8 Status{234E9} 53|2428r14 +294U14*Create_Symbolic_Link 53|2616s14 +295i8 Key{74I9} 53|2617r14 +296m8 Relative{28M9} 53|2618r14 +297a8 Path{string} 53|2619r14 +298a8 Target{string} 53|2620r14 +299m8 Mode{19|18M9} 53|2621r14 +300m8 User{19|18M9} 53|2622r14 +301e8 Status{234E9} 53|2623r14 +312U14*Create_Hard_Link 53|2808s10 +331U14*Rename 53|1277s10 +348U14*Unlink 53|2471s14 +359U14*Close 53|2040s11 2279s10 5741s14 +369U14*Read_Entries 53|2315s14 +370i8 Key{74I9} 53|2316r14 +371m8 Ino{28M9} 53|2317r14 +372i8 Offset{natural} 53|2318r14 +373a8 Entities{63A9} 53|2319r14 +374i8 Ret_Count{natural} 53|2320r14 +375e8 Success{234E9} 53|2321r14 +384U14*Read_Symbolic_Link 53|2278s14 +400U14*Read 53|251s20 3572s20 +418U14*Write 53|336s20 3636s20 +433U14*Stat 53|144s17 393s17 1007s11 1073s11 4310s11 +445U14*Truncate 53|2496s17 +458U14*IO_Control 53|1116s20 +475U14*Mmap 53|500s17 +476i8 Key{74I9} 53|501r17 +477m8 Ino{28M9} 53|502r17 +478p8 Map{12|43P9} 53|503r17 +479m8 Offset{19|19M9} 53|504r17 +480m8 Address{35|35M12} 53|505r17 +481m8 Length{19|19M9} 53|506r17 +482r8 Flags{12|26R9} 53|507r17 +483e8 Status{234E9} 53|508r17 +492U14*Poll 53|3210s26 +511V13*Synchronize{234E9} 53|2747s25 4990s24 +522U14*Change_Mode 53|3375s11 +523i8 Key{74I9} 53|3376r11 +524m8 Ino{28M9} 53|3377r11 +525m8 Mode{32M12} 53|3378r11 +526e8 Status{234E9} 53|3379r11 +535U14*Change_Owner 53|3518s11 +552U14*Check_Access 53|3093s11 +553i8 Key{74I9} 53|3094r11 +554m8 Ino{28M9} 53|3095r11 +555b8 Exists_Only{boolean} 53|3096r11 +556b8 Can_Read{boolean} 53|3097r11 +557b8 Can_Write{boolean} 53|3098r11 +558b8 Can_Exec{boolean} 53|3099r11 +559m8 Real_UID{19|18M9} 53|3100r11 +560e8 Status{234E9} 53|3101r11 +571U14*Change_Access_Times 53|4441s14 +572i8 Key{74I9} 53|4442r14 +573m8 Ino{28M9} 53|4443r14 +574m8 Access_Seconds{19|19M9} 53|4444r14 +575m8 Access_Nanoseconds{19|19M9} 53|4445r14 +576m8 Modify_Seconds{19|19M9} 53|4446r14 +577m8 Modify_Nanoseconds{19|19M9} 53|4447r14 +578e8 Status{234E9} 53|4448r14 +593U14*Open 53|2031s14 +609U14*Synchronize 53|2358s11 +635V13*Apply_Umask{32M12} 53|2426s30 + diff --git a/obj/userland-syscall.o b/obj/userland-syscall.o new file mode 100644 index 0000000000000000000000000000000000000000..06b797b955f13c81192ee62006aafe3b2997eb4f GIT binary patch literal 1329544 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

    $t?tWU^T8XBj+nt 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[&EBCDqp5u3W_P7p? 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

    1dA{f+RK1T}UfwRl+fqN@5pP3Ptmieri_wr* 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 BOe#e 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͇kh&1$X{8J*A;Gd}A(0 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 22r36 +21A9*Environment_Arr(19P9) +22P9*Argument_Arr_Acc(20A9) + diff --git a/obj/userland.o b/obj/userland.o new file mode 100644 index 0000000000000000000000000000000000000000..b8295525c6d8ed875ed0b1793d898ef33c649a6f GIT binary patch literal 5008 zcmb_fNo*WN6s`8yafperW0q{-iIadMn4TrZS)_?PI4d}gMI06hY0}fvp6O(IQFl+` zAOsN-2aYI*0G9-b12+yxh$Dwct^{k5vA zYRa!2SvWdi7>vkZKeLWTC}U$Ag^ad2F3z#7Yzuq4@^!_&@#DZd*CwtG4_tZvGvms- zA!FY#V;^6g7#?Oj3qx%4_m!bzDtXx2P!Idw>lwV?AmE_>%pg$e1xW#F?-& zV;374IW&?P1>bRF_vpk(W^&u)*hAp69UdOfcq)wQq9SNRV8eQbVf;3_5gCpe9uOu) zFz5py-^ZuQu$xw7*@+V|*H4@V@MDW-vX#1(EzX!Fvyjc5DrIvG-%2i8f>*M+m1mbv zm-EfQbMl@G8Jt$$w!%0Gd}k>N&N+6HccZ|!TUI?EC2`%2@(?S+FG08;$$$uaadS5HGgVx;l=V%s}(z9;Gt`0a~{k<f@jt*-k!;tcGXBrd5Z^e8#-g8ndE? z=f*JYp<|azh2nu?skj%Lgt3+*7^CZ1cJ*b~jw5)lIKJ(;%*+S1bMTh+aKc)aU*|K2 z0#uIsIWh9)PVCtH{K4!rEWtf;{lRLz7oIyn8D_j-0 z8{#7=g~h5@3JX;WB^xC^Fd>MsaoO|QtzuY6tEpnRp$6GccT|jI=$*tao{>Ac3j`$t ze`%C~3Od120o036^ufvB3I@Kt~HO_XcAjpJ2-UlzI;=QZ&8Sd9RKT8}RWKU>$mL;Cm z@E5qguE+l+iR=DnIo>FFdpG?1!iB)Y^@zRjWnL1+-UAADt0QY8W7#TJXao!IE&nM8f9!D?wqc+iKN{ z8g0+<6A+>kONznqFW~RCV#7(IlLdFsRs!LD~k7icfPC?qkv>)vo*$ zi?;ug|6xiFoOTqRz>g?6UBeKcRB&2Jh-Vd?`ayh$g43KJKBeH~gZNGbr+Gkpmx9v@ zLtH&$C@10%DE^O18FA_jp@M?ry^)Ac9Q5Bzpd#b-ka|FK7GFTvBh4Y|S$qNEI8=W+ zpY;6H59U|*`hH9Tg!$FeoN&yq`ZF`WN4!%sYp#6vFSR(hg8CUcb4_sZNTF zzA8Ni3a+!ejmQ6g{;L1Ab6XbG`^WW*XWg8%6Kl$!oU;CulF70W7V)FXR5M z{*uf)C;f@tOsS9GNUx8-%UE9@*LA><$X{r^I{r@U-voU>kO4W#iRr$V!H_n8({dA2 z9-KcM67@s#_ZDD!PJq}~_yWT9sgmydJ{WZj{cp>ltmMRW-)mq<>;DVcKlO?I<9Vg` z{|R7vPJq~$1fN7jA>H>Qu%*?%CF>uTu~>f;9=-kzz%VDBw;*ylA`2bX76#QP{yBK3 z#lI;xh_&HP*qWL4} zR}j+XzaX#1pGrrZfBY?_cv=@5pg5EYrP~^t#-u 11|67r26 76r22 12|163r26 186r22 +34A9*UUID(4|16M9) 12|266r32 +83I9*Device_Handle 11|21r23 12|24r23 169r23 192r23 212r22 267r28 +. 291r22 308r22 334r22 +84A9*Device_List(83I9) 12|118r28 315r28 +88i4*Max_Name_Length{natural} 12|105r35 +123V13*Fetch{34A9} 12|270s28 +130U14*Fetch_Name 12|147s21 +141U14*List 12|130s15 318s15 +150V13*Is_Block_Device{boolean} 12|143s24 243s21 +152V13*Get_Block_Count{4|19M9} 12|238s43 +154V13*Get_Block_Size{natural} 12|237s43 +161V13*Get_Unique_ID{natural} 12|139s40 +165V13*From_Unique_ID{83I9} 12|169s40 192s40 212s39 267s45 291s39 308s39 +. 334s39 +171V13*Synchronize{boolean} 12|320s25 336s18 +193U14*Read 12|172s7 +194i8 Handle{83I9} 12|173r11 +195m8 Offset{4|19M9} 12|174r11 +196a8 Data{29A9} 12|175r11 +197i8 Ret_Count{natural} 12|176r11 +198b8 Success{boolean} 12|177r11 +199b8 Is_Blocking{boolean} 12|178r11 +210U14*Write 12|195s7 +211i8 Handle{83I9} 12|196r11 +212m8 Offset{4|19M9} 12|197r11 +213a8 Data{29A9} 12|198r11 +214i8 Ret_Count{natural} 12|199r11 +215b8 Success{boolean} 12|200r11 +216b8 Is_Blocking{boolean} 12|201r11 +224V13*IO_Control{boolean} 12|272s19 +236V13*Mmap{boolean} 12|293s18 +249U14*Poll 12|310s15 +X 4 interfac.ads +16M9*Unsigned_8 +18M9*Unsigned_32 +19M9*Unsigned_64 11|35r62 37r65 39r56 41r64 45r33 46r33 50r33 51r33 53r57 +. 66r22 75r22 90r17 99r18 12|56r62 62r65 68r56 74r64 82r33 83r33 93r33 94r33 +. 102r57 105r14 139r19 162r22 185r22 242r25 254r17 286r18 +X 7 memory.ads +19K9*Memory 36e11 11|98r18 12|285r18 +35M12*Virtual_Address{9|49M9} 11|98r25 12|285r25 +X 8 system.ads +11K9*System 73e11 11|17w6 24r27 28r23 33r35 35r35 37r38 39r29 41r36 44r29 +. 49r29 53r34 56r20 64r22 73r22 82r18 88r17 91r17 95r18 104r20 110r33 113r20 +. 12|27r27 34r20 39r23 51r35 53r13 56r35 62r38 68r29 74r36 81r29 92r29 102r34 +. 109r20 160r22 183r22 206r18 252r17 255r17 282r18 301r20 313r33 328r20 +25M9*Address 11|24r34 28r30 33r42 35r42 37r45 39r36 41r43 44r36 49r36 53r41 +. 56r27 64r29 73r29 82r25 88r24 91r24 95r25 104r27 110r40 113r27 12|27r34 +. 34r20 39r30 51r42 56r42 62r45 68r36 74r43 81r36 92r36 102r41 109r27 160r29 +. 183r29 206r25 252r24 255r24 282r25 301r27 313r40 328r27 +26m4*Null_Address{25M9} 12|53r20 +X 9 s-stoele.ads +49M9*Integer_Address +X 10 vfs.ads +24K9*VFS 674e8 11|19r9 116r5 12|17r14 342r5 +28M9*File_Inode_Number<4|19M9> 11|25r27 57r20 65r22 74r22 83r18 89r17 96r18 +. 105r20 114r20 12|28r27 110r20 161r22 184r22 207r18 253r17 283r18 302r20 +. 329r20 +32M12*File_Mode{4|18M9} +39n37*File_Directory{39E9} 12|217r35 +40n23*File_Character_Device{39E9} 12|142r33 231r35 +40n46*File_Block_Device{39E9} 12|145r19 244r31 +41R9*File_Stat 54e14 11|84r22 12|208r22 +42m7*Unique_Identifier{28M9} 12|216m14 230m14 +43e7*Type_Of_File{39E9} 12|217m14 231m14 244m15 +44m7*Mode{32M12} 12|218m14 232m14 +45m7*UID{4|18M9} 12|219m14 233m14 +46m7*GID{4|18M9} 12|220m14 234m14 +47i7*Hard_Link_Count{positive} 12|221m14 235m14 +48m7*Byte_Size{4|19M9} 12|222m14 236m14 242m12 +49i7*IO_Block_Size{natural} 12|223m14 237m14 242r40 +50m7*IO_Block_Count{4|19M9} 12|224m14 238m14 242r59 +51r7*Creation_Time{35R9} 12|225m14 239m14 +52r7*Modification_Time{35R9} 12|226m14 240m14 +53r7*Access_Time{35R9} 12|227m14 241m14 +58m7*Inode_Number{4|19M9} 12|138m17 +59a7*Name_Buffer{string} 12|140m17 149m49 +60i7*Name_Len{natural} 12|141m17 150m49 +61e7*Type_Of_File{39E9} 12|142m17 144m48 +63A9*Directory_Entities(57R9) 11|59r24 12|112r24 +234E9*FS_Status 242e16 11|61r24 70r26 79r26 85r22 92r21 101r22 110r56 115r36 +. 12|114r24 166r26 189r26 209r22 256r21 288r22 313r56 330r36 +235n8*FS_Success{234E9} 12|156r18 179r32 202r32 248r18 271r28 273r26 294r20 +. 324r14 337r17 +236n8*FS_Invalid_Value{234E9} 12|124r23 263r20 +241n8*FS_IO_Failure{234E9} 12|179r48 202r48 275r26 296r20 321r20 339r17 +X 11 vfs-dev.ads +19K13*Dev 10|24k9 11|116l9 116e12 12|17b18 342l9 342t12 +20U14*Probe 21>8 22>8 23>8 24<8 25<8 12|23b14 36l8 36t13 +21i8 Handle{3|83I9} 12|24b8 30r28 +22b8 Do_Read_Only{boolean} 12|25b8 31r28 +23b8 Do_Relatime{boolean} 12|26b8 32r28 +24m8 Data_Addr{8|25M9} 12|27b8 34m7 +25m8 Root_Ino{10|28M9} 12|28b8 35m7 +27U14*Remount 28>8 29>8 30>8 31<8 12|38b14 49l8 49t15 +28m8 FS{8|25M9} 12|39b8 44r28 +29b8 Do_Read_Only{boolean} 12|40b8 45r28 +30b8 Do_Relatime{boolean} 12|41b8 46r28 +31b8 Success{boolean} 12|42b8 48m7 +33U14*Unmount 33=23 12|51b14 54l8 54t15 +33m23 FS{8|25M9} 12|51b23 53m7 +35U14*Get_Block_Size 35>30 35<51 12|56b14 60l8 60t22 +35m30 FS{8|25M9} 12|56b30 57r28 +35m51 Size{4|19M9} 12|56b51 59m7 +37U14*Get_Fragment_Size 37>33 37<54 12|62b14 66l8 66t25 +37m33 FS{8|25M9} 12|62b33 63r28 +37m54 Size{4|19M9} 12|62b54 65m7 +39U14*Get_Size 39>24 39<45 12|68b14 72l8 72t16 +39m24 FS{8|25M9} 12|68b24 69r28 +39m45 Size{4|19M9} 12|68b45 71m7 +41U14*Get_Inode_Count 41>31 41<52 12|74b14 78l8 78t23 +41m31 FS{8|25M9} 12|74b31 75r28 +41m52 Count{4|19M9} 12|74b52 77m7 +43U14*Get_Free_Blocks 44>8 45<8 46<8 12|80b14 89l8 89t23 +44m8 FS{8|25M9} 12|81b8 85r28 +45m8 Free_Blocks{4|19M9} 12|82b8 87m7 +46m8 Free_Unpriviledged{4|19M9} 12|83b8 88m7 +48U14*Get_Free_Inodes 49>8 50<8 51<8 12|91b14 100l8 100t23 +49m8 FS{8|25M9} 12|92b8 96r28 +50m8 Free_Inodes{4|19M9} 12|93b8 98m7 +51m8 Free_Unpriviledged{4|19M9} 12|94b8 99m7 +53V13*Get_Max_Length{4|19M9} 53>29 12|102b13 106l8 106t22 +53m29 FS{8|25M9} 12|102b29 103r28 +55U14*Read_Entries 56>8 57>8 58>8 59<8 60<8 61<8 12|108b14 157l8 157t20 +56m8 FS_Data{8|25M9} 12|109b8 116r28 +57m8 Ino{10|28M9} 12|110b8 122r10 +58i8 Offset{natural} 12|111b8 132r22 +59a8 Entities{10|63A9} 12|112b8 133r28 137m13 137r23 144m16 144r26 149m17 +. 149r17 149r27 150m17 150r17 150r27 +60i8 Ret_Count{natural} 12|113b8 123m10 128m7 133r16 151m13 151r26 +61e8 Success{10|234E9} 12|114b8 124m10 156m7 +63U14*Read 64>8 65>8 66>8 67<8 68<8 69>8 70<8 12|159b14 180l8 180t12 +64m8 FS_Data{8|25M9} 12|160b8 168r28 +65m8 Ino{10|28M9} 12|161b8 169r65 +66m8 Offset{4|19M9} 12|162b8 174r26 +67a8 Data{3|29A9} 12|163b8 175m26 +68i8 Ret_Count{natural} 12|164b8 176m26 +69b8 Is_Blocking{boolean} 12|165b8 178r26 +70e8 Success{10|234E9} 12|166b8 179m7 +72U14*Write 73>8 74>8 75>8 76>8 77<8 78>8 79<8 12|182b14 203l8 203t13 +73m8 FS_Data{8|25M9} 12|183b8 191r28 +74m8 Ino{10|28M9} 12|184b8 192r65 +75m8 Offset{4|19M9} 12|185b8 197r26 +76a8 Data{3|29A9} 12|186b8 198r26 +77i8 Ret_Count{natural} 12|187b8 199m26 +78b8 Is_Blocking{boolean} 12|188b8 201r26 +79e8 Success{10|234E9} 12|189b8 202m7 +81U14*Stat 82>8 83>8 84<8 85<8 12|205b14 249l8 249t12 +82m8 Data{8|25M9} 12|206b8 211r28 +83m8 Ino{10|28M9} 12|207b8 212r64 214r10 230r35 +84r8 S{10|41R9} 12|208b8 215m10 229m10 242m10 242r38 242r57 244m13 +85e8 Success{10|234E9} 12|209b8 248m7 +87U14*IO_Control 88>8 89>8 90>8 91>8 92<8 12|251b14 279l8 279t18 +88m8 Data{8|25M9} 12|252b8 258r28 +89m8 Ino{10|28M9} 12|253b8 262r10 267r70 +90m8 Req{4|19M9} 12|254b8 269r16 272r36 +91m8 Arg{8|25M9} 12|255b8 266r61 272r41 +92e8 Status{10|234E9} 12|256b8 263m10 271m16 273m16 275m16 +94U14*Mmap 95>8 96>8 97>8 98>8 99>8 100>8 101<8 12|281b14 298l8 298t12 +95m8 Data{8|25M9} 12|282b8 290r28 +96m8 Ino{10|28M9} 12|283b8 291r64 +97p8 Map{2|43P9} 12|284b8 293r29 +98m8 Address{7|35M12} 12|285b8 293r34 +99m8 Length{4|19M9} 12|286b8 293r43 +100r8 Flags{2|26R9} 12|287b8 293r51 +101e8 Status{10|234E9} 12|288b8 294m10 296m10 +103U14*Poll 104>8 105>8 106<8 107<8 108<8 12|300b14 311l8 311t12 +104m8 Data{8|25M9} 12|301b8 307r28 +105m8 Ino{10|28M9} 12|302b8 308r64 +106b8 Can_Read{boolean} 12|303b8 310m26 +107b8 Can_Write{boolean} 12|304b8 310m36 +108b8 Is_Error{boolean} 12|305b8 310m47 +110V13*Synchronize{10|234E9} 110>26 12|313b13 325l8 325t19 +110m26 Data{8|25M9} 12|313b26 314r28 +112V13*Synchronize{10|234E9} 113>8 114>8 115>8 12|327b13 341l8 341t19 +113m8 Data{8|25M9} 12|328b8 332r28 +114m8 Ino{10|28M9} 12|329b8 334r64 +115b8 Data_Only{boolean} 12|330b8 333r28 +X 12 vfs-dev.adb +20N4 Root_Inode 35r20 122r17 214r16 216r35 262r16 +21N4 Device_Permissions 218r35 232r35 +118a7 Buffer{3|84A9} 130m21 139r55 143r41 148r17 +119i7 Idx{natural} 129m7 137r40 144r43 149r44 150r44 152m13 152r32 +120i7 Buffer_Len{natural} 130m29 131r21 +131i11 I{integer} 132r13 139r63 143r49 148r25 +169i7 Dev{3|83I9} 173r26 +170b7 Succ{boolean} 177m26 179r22 +192i7 Dev{3|83I9} 196r26 +193b7 Succ{boolean} 200m26 202r22 +212i7 Dev{3|83I9} 237r59 238r60 243r38 +260N7 DEV_UUID 269r22 +266a13 Arg_UUID{3|34A9} 270m16 +267i13 Dev{3|83I9} 270r35 272r31 +291i7 Dev{3|83I9} 293r24 +308i7 Dev{3|83I9} 310r21 +315a7 Buffer{3|84A9} 318m21 320r38 +316i7 Buffer_Len{natural} 318m29 319r21 +319i11 I{integer} 320r46 +334i7 Dev{3|83I9} 336r31 + diff --git a/obj/vfs-dev.o b/obj/vfs-dev.o new file mode 100644 index 0000000000000000000000000000000000000000..1a6222e437d230ce7c4441813fa51910f2f92b94 GIT binary patch literal 72224 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

      YAF?)Y^>A z4b8Ru%dgZYZFP#SwYq6lDwDM~t;!ZQ)HhMTb&051bdhnDU9W9!Y@~KGB~8uksggq% z95arpvi78m+^ADFl1poSTkYDC>UL`6nvQnL{eREI*MhwJ;A%JAm&=d8A|ibyah{THmVWiqFQqME`RldB zSEX-_NWVaG{HpYuBhu@&!&jxhJ0ktDUo-!m5$U;Jc>1dR_mC#6{+8R++5OV5fBp<0 zEPdVAOwY%_u=H!bX8OY=eYxm$)*=ft6v&+WI!~M@PirIczsqeli@gGStL9`%&viUg z^g5e)rCZYP&)M@TLYjX+5ndIMe_VFRwQ4AHKmRQe`TzD>m*6%@$NBf9e?Nb|519V4 z#-DXxGk?DSE3EwM<)Rn!FAT~5xrqEfko@snost{B{Le(>Kk7PG(|aOZIGVWpedymW z|GN?Se<(Z7JDeCMKmRu(@?Rkr$N7+dU-I$u&m%*Y_~YbDIWE&0$eS1a{Nn_|>VNeO zE+N)`e?or#LnHFn?_pFpoAj%nKVO%J<=%`J>!8bLrPf zzB<$Rb^Y9k^gASd4;9MXPtVWTlq$+lJ}T)S;6Vc>U(3%74J-fZ?Jm*W;cm|DUqt_! zzm9*`MdW`vcUGE?lyShVWyiWBBK@-iU5d$?p&0n_^D_j);@|OCq zd2{K0^5=>3=lA9P{P}(^-;?!SIar#`)&y=fOZ(@D@_)G7CCC>a&Y#aU)lTdGGs(YH z{B`zi0cUnm;^rEw&U2`L@v@&jU*2TDFEe>MeofyeBK;$ho{xDrX*!+nC+Shc%ey4K z&o!NL{yjmT@wVSe`U_|~PFjD;N@#mn`+xF 21|118r24 126r20 439r26 449r22 22|30r8 +. 229r19 231r19 798r24 848r20 1427r22 1456r19 1475r22 1523r20 1555r21 1599r21 +. 1655r36 1657r29 1659r26 1739r26 1797r22 1961r36 1963r29 1965r21 2162r17 +. 2268r17 2374r21 2461r21 +30P9*Operation_Data_Acc(29A9) 22|30r24 2161r20 2267r20 2367r20 2458r36 +83I9*Device_Handle 21|22r23 366r31 409r26 22|33r23 1516r26 +154V13*Get_Block_Size{natural} 22|909s52 933s35 2226s45 +156V13*Is_Read_Only{boolean} 22|69s18 +171V13*Synchronize{boolean} 22|1229s18 +193U14*Read 22|1534s18 1572s18 1626s18 1683s21 1690s21 1697s21 1707s18 1714s18 +. 1724s15 1770s18 2007s21 2032s21 2087s18 2179s18 2285s18 +194i8 Handle{83I9} 22|1535r14 1573r14 1627r14 1684r17 1691r17 1698r17 1708r14 +. 1715r14 1725r11 1771r14 2008r17 2033r17 2088r14 2180r14 2286r14 +195m8 Offset{9|19M9} 22|1536r14 1574r14 1628r14 1685r17 1692r17 1699r17 1709r14 +. 1716r14 1726r11 1772r14 2009r17 2034r17 2089r14 2181r14 2287r14 +196a8 Data{29A9} 22|1537r14 1575r14 1629r14 1687r17 1694r17 1701r17 1711r14 +. 1718r14 1728r11 1774r14 2011r17 2036r17 2091r14 2183r14 2289r14 +197i8 Ret_Count{natural} 22|1538r14 1576r14 1630r14 1688r17 1695r17 1702r17 +. 1712r14 1719r14 1729r11 1777r14 2012r17 2037r17 2092r14 2184r14 2290r14 +198b8 Success{boolean} 22|1539r14 1577r14 1631r14 1689r17 1696r17 1703r17 +. 1713r14 1720r14 1730r11 1778r14 2013r17 2038r17 2093r14 2185r14 2291r14 +210U14*Write 22|1527s18 1565s18 1619s18 1849s18 2023s24 2048s24 2060s21 2103s21 +. 2113s18 2140s15 2210s18 2320s18 +211i8 Handle{83I9} 22|1528r14 1566r14 1620r14 1850r14 2024r19 2049r20 2061r17 +. 2104r17 2114r14 2141r11 2211r14 2321r14 +212m8 Offset{9|19M9} 22|1529r14 1567r14 1621r14 1851r14 2025r19 2050r20 2062r17 +. 2105r17 2115r14 2142r11 2212r14 2322r14 +213a8 Data{29A9} 22|1530r14 1568r14 1622r14 1853r14 2027r19 2053r19 2064r17 +. 2108r17 2117r14 2144r11 2214r14 2324r14 +214i8 Ret_Count{natural} 22|1531r14 1569r14 1623r14 1856r14 2028r19 2054r19 +. 2065r17 2109r17 2118r14 2145r11 2215r14 2325r14 +215b8 Success{boolean} 22|1532r14 1570r14 1624r14 1857r14 2029r19 2055r19 +. 2066r17 2110r17 2119r14 2146r11 2216r14 2326r14 +X 9 interfac.ads +16M9*Unsigned_8 21|230r33 231r33 354r21 355r21 495r22 507r38 509r49 22|218r29 +. 2363r22 2512r38 2523r49 +17M9*Unsigned_16 21|207r33 208r33 209r33 210r33 211r33 212r33 217r33 218r33 +. 220r33 221r33 232r33 286r59 291r34 292r34 293r34 310r29 311r29 317r29 318r29 +. 353r21 511r52 513r37 517r35 22|124r43 217r28 274r43 275r34 331r29 1109r55 +. 1156r22 1157r22 2402r35 2420r38 2534r52 2545r37 2559r35 2561r22 2561r37 +18M9*Unsigned_32 21|61r19 69r19 70r19 79r26 89r26 96r19 158r17 159r17 194r33 +. 195r33 196r33 197r33 198r33 199r33 200r33 201r33 202r33 203r33 204r33 205r33 +. 206r33 213r33 214r33 215r33 216r33 219r33 222r33 223r33 224r33 229r33 235r33 +. 236r33 237r33 288r34 289r34 290r34 308r56 312r29 313r29 314r29 315r29 316r29 +. 319r29 320r29 321r29 323r29 324r29 325r29 326r29 352r21 370r31 371r31 384r25 +. 387r29 389r29 417r27 424r26 432r22 432r42 446r22 456r22 464r22 465r22 466r22 +. 472r22 473r22 474r22 480r21 481r25 486r24 493r22 494r22 503r22 504r22 517r15 +. 536r22 22|213r19 221r36 224r36 247r29 399r19 400r19 425r26 430r48 447r29 +. 465r29 532r26 537r50 538r50 556r27 567r27 633r19 638r34 654r27 710r30 771r30 +. 812r30 870r30 887r25 918r30 929r35 930r35 971r30 991r32 1004r39 1032r17 +. 1047r30 1062r39 1101r30 1112r33 1127r17 1128r17 1149r30 1160r33 1203r30 +. 1210r38 1211r38 1214r33 1249r25 1252r29 1254r29 1355r32 1547r27 1553r21 +. 1562r27 1590r26 1595r39 1597r21 1616r31 1644r22 1644r42 1646r31 1647r40 +. 1648r31 1649r31 1650r31 1651r31 1652r31 1653r31 1746r24 1769r35 1794r22 +. 1803r24 1848r35 1878r22 1895r26 1896r26 1903r22 1904r22 1905r22 1908r17 +. 1946r22 1947r22 1948r22 1951r31 1952r40 1953r31 1954r31 1955r31 1956r31 +. 1957r31 1958r31 1959r31 2154r21 2155r25 2160r20 2199r34 2199r56 2226r32 +. 2261r24 2266r20 2304r34 2304r56 2361r22 2362r22 2454r22 2455r22 2559r15 +. 2588r22 2588r37 2589r22 2589r37 2617r22 2625r13 +19M9*Unsigned_64 21|35r62 37r65 39r56 41r64 45r33 46r33 50r33 51r33 53r57 +. 117r20 125r20 139r19 145r17 165r29 166r29 167r29 168r29 225r33 226r33 233r33 +. 234r33 395r20 401r22 403r22 405r26 410r26 437r22 438r22 447r22 448r22 457r22 +. 458r22 492r22 502r22 519r65 523r21 22|142r62 146r15 150r65 154r15 158r56 +. 162r15 167r64 171r16 177r33 178r33 183r22 184r29 190r33 191r33 196r22 197r29 +. 201r57 541r50 698r23 699r23 700r23 740r28 797r20 847r20 907r43 909r23 909r39 +. 910r14 935r36 936r36 937r36 950r19 955r22 1022r17 1175r29 1176r29 1177r29 +. 1178r29 1186r17 1187r17 1260r32 1263r32 1422r20 1445r22 1447r22 1449r26 +. 1454r19 1500r30 1505r38 1517r26 1567r27 1574r27 1621r27 1628r27 1685r30 +. 1692r30 1699r30 1709r27 1716r27 1726r24 1737r22 1738r22 1744r24 1745r24 +. 1747r24 1759r38 1760r43 1761r45 1762r27 1762r55 1764r25 1765r26 1772r27 +. 1773r27 1795r22 1796r22 1801r24 1802r24 1804r24 1807r19 1813r29 1820r37 +. 1838r38 1839r43 1840r45 1841r27 1841r55 1843r25 1844r26 1851r27 1852r27 +. 1879r22 1880r22 1883r25 1884r37 1886r25 1887r34 1888r31 2009r30 2025r32 +. 2034r30 2050r33 2062r30 2089r27 2105r30 2115r27 2142r24 2181r27 2212r27 +. 2287r27 2322r27 2360r22 2368r20 2370r20 2371r20 2398r17 2399r26 2453r22 +. 2572r65 2575r29 2576r29 2578r17 2584r21 +71V13*Shift_Left{18M9} 22|84s28 85s28 +96V13*Shift_Left{19M9} 22|2575s17 2576s17 +101V13*Shift_Right{19M9} 22|1884s10 1887s10 2589s50 +X 10 lib.ads +19K9*Lib 35e8 21|18r6 365r39 22|17r6 18r6 19r6 74r10 79r28 110r7 113r7 121r7 +. 145r7 147r7 153r7 155r7 161r7 164r7 170r7 172r7 182r7 185r7 195r7 198r7 +. 234r7 388r7 408r7 416r7 434r7 518r7 544r7 621r7 642r7 682r7 704r7 752r7 +. 767r7 790r7 807r7 840r7 856r7 897r7 907r28 914r7 943r7 958r7 1015r7 1034r7 +. 1073r7 1088r7 1120r7 1140r7 1168r7 1190r7 1222r7 2605r13 2607r13 2610r13 +. 2612r13 +X 11 lib-alignment.ads +19k13*Alignment 43e18 22|19w10 907r32 +40V13 Divide_Round_Up{9|19M9} 22|934s41[907] +X 13 lib-messages.ads +21K13*Messages 103e17 22|17w10 74r14 2605r17 2607r17 +41U14*Put_Line 22|74s23 2605s26 2607s26 +X 14 lib-panic.ads +21K13*Panic 39e14 22|18w10 2610r17 2612r17 +32U14*Hard_Panic 22|2610s23 2612s23 +X 15 lib-synchronization.ads +20K13*Synchronization 66e24 21|18w10 365r43 22|79r32 110r11 113r11 121r11 +. 145r11 147r11 153r11 155r11 161r11 164r11 170r11 172r11 182r11 185r11 195r11 +. 198r11 234r11 388r11 408r11 416r11 434r11 518r11 544r11 621r11 642r11 682r11 +. 704r11 752r11 767r11 790r11 807r11 840r11 856r11 897r11 914r11 943r11 958r11 +. 1015r11 1034r11 1073r11 1088r11 1120r11 1140r11 1168r11 1190r11 1222r11 +22R9*Binary_Semaphore 57e14 21|365r59 +23r4*Unlocked_Semaphore{22R9} 22|79r48 +27U14*Seize 22|110s27 121s27 145s27 153s27 161s27 170s27 182s27 195s27 234s27 +. 408s27 434s27 544s27 642s27 704s27 767s27 807s27 856s27 914s27 958s27 1034s27 +. 1088s27 1140s27 1190s27 +31U14*Release 22|113s27 147s27 155s27 164s27 172s27 185s27 198s27 388s27 +. 416s27 518s27 621s27 682s27 752s27 790s27 840s27 897s27 943s27 1015s27 +. 1073s27 1120s27 1168s27 1222s27 +X 17 system.ads +11K9*System 73e11 21|17w6 25r27 28r23 33r35 35r35 37r38 39r29 41r36 44r29 +. 49r29 53r34 56r19 65r19 74r26 83r26 93r19 100r20 108r20 115r20 123r20 131r18 +. 137r19 143r17 146r17 150r17 156r17 163r29 171r33 174r20 22|20r6 25r26 36r27 +. 103r23 117r35 139r13 142r35 150r38 158r29 167r36 176r29 189r29 201r34 208r19 +. 395r19 420r26 526r26 630r19 689r20 757r20 795r20 845r20 902r18 948r19 1020r17 +. 1023r17 1078r17 1125r17 1173r29 1226r33 1237r20 +25M9*Address 21|25r34 28r30 33r42 35r42 37r45 39r36 41r43 44r36 49r36 53r41 +. 56r26 65r26 74r33 83r33 93r26 100r27 108r27 115r27 123r27 131r25 137r26 +. 143r24 146r24 150r24 156r24 163r36 171r40 174r27 22|36r34 103r30 117r42 +. 142r42 150r45 158r36 167r43 176r36 189r36 201r41 208r26 395r26 420r33 526r33 +. 630r26 689r27 757r27 795r27 845r27 902r25 948r26 1020r24 1023r24 1078r24 +. 1125r24 1173r36 1226r40 1237r27 +26m4*Null_Address{25M9} 22|50r23 62r23 139r20 +X 18 s-atacco.ads +13k16*Address_To_Access_Conversions 27e41 22|20w13 25r33 +19P9*Object_Pointer(21|364R9) 22|99r42[25] +21V13*To_Pointer{19P9[22|25]} 22|108s58[25] 118s52[25] 143s58[25] 151s58[25] +. 159s58[25] 168s58[25] 180s58[25] 193s59[25] 216s62[25] 406s58[25] 428s58[25] +. 535s58[25] 636s58[25] 696s56[25] 763s56[25] 802s56[25] 852s56[25] 908s58[25] +. 953s56[25] 1029s61[25] 1083s61[25] 1131s61[25] 1184s61[25] 1227s61[25] +22V13*To_Address{17|25M9} 22|99s25[25] +X 20 vfs.ads +24K9*VFS 674e8 21|20r9 542r5 22|24r14 2644r5 +28M9*File_Inode_Number<9|19M9> 21|57r19 66r19 75r26 77r26 84r26 86r26 94r19 +. 101r20 109r20 116r20 124r20 132r18 138r19 144r17 151r17 157r17 164r29 175r20 +. 22|209r19 396r19 421r26 423r26 527r26 529r26 631r19 690r20 758r20 796r20 +. 846r20 903r18 949r19 1021r17 1079r17 1126r17 1174r29 1238r20 +32M12*File_Mode{9|18M9} 21|60r19 152r17 22|212r19 928r35 1080r17 +39E9*File_Type 40e64 21|59r19 507r57 509r31 511r34 513r57 516r15 22|211r19 +. 803r23 1086r17 1259r32 1455r19 2512r57 2523r31 2534r34 2545r57 2558r15 +39n23*File_Regular{39E9} 22|511r40 614r40 823r15 878r63 976r54 1484r26 2515r32 +. 2526r15 2540r15 2551r34 2553r34 +39n37*File_Directory{39E9} 22|307r16 717r63 824r15 1275r26 1291r58 1300r26 +. 1323r28 2516r32 2527r15 2538r15 2549r34 2565r15 +39n53*File_Symbolic_Link{39E9} 22|776r59 1368r56 2519r32 2541r15 2552r34 +. 2567r15 +40n23*File_Character_Device{39E9} 22|2517r32 2528r15 2537r15 2548r34 2564r15 +40n46*File_Block_Device{39E9} 22|2518r32 2529r15 2539r15 2550r34 2566r15 +41R9*File_Stat 54e14 21|133r22 22|904r22 +42m7*Unique_Identifier{28M9} 22|926m14 +43e7*Type_Of_File{39E9} 22|927m14 +44m7*Mode{32M12} 22|928m14 +45m7*UID{9|18M9} 22|929m14 +46m7*GID{9|18M9} 22|930m14 +47i7*Hard_Link_Count{positive} 22|931m14 +48m7*Byte_Size{9|19M9} 22|932m14 +49i7*IO_Block_Size{natural} 22|933m14 +50m7*IO_Block_Count{9|19M9} 22|934m14 +51r7*Creation_Time{35R9} 22|935m14 +52r7*Modification_Time{35R9} 22|936m14 +53r7*Access_Time{35R9} 22|937m14 +57R9*Directory_Entity 62e14 21|404r26 22|701r23 1261r32 1448r26 +58m7*Inode_Number{9|19M9} 22|1355r52 1500m14 +59a7*Name_Buffer{string} 22|1352r23 1504m17 +60i7*Name_Len{natural} 22|1352r48 1502m14 +61e7*Type_Of_File{39E9} 22|1503m14 +63A9*Directory_Entities(57R9) 21|103r24 22|692r24 +234E9*FS_Status 242e16 21|62r23 71r23 80r30 90r30 97r23 105r24 112r24 120r24 +. 128r24 134r22 140r23 147r21 153r21 160r21 169r33 171r56 176r36 22|214r23 +. 401r23 426r30 533r30 634r23 694r24 761r24 800r24 850r24 905r22 951r23 1024r21 +. 1081r21 1129r21 1179r33 1226r56 1239r36 +235n8*FS_Success{234E9} 22|385r34 515r34 618r35 679r34 707r20 783r45 837r32 +. 894r32 938r21 1012r34 1057r26 1066r43 1116r37 1164r37 1218r37 1230r17 +236n8*FS_Invalid_Value{234E9} 22|240r20 256r20 412r20 440r20 474r20 550r20 +. 580r20 648r20 663r20 719r21 787r23 880r21 979r20 1068r26 +237n8*FS_Is_Directory{234E9} 22|824r44 +238n8*FS_Not_Supported{234E9} 22|414r20 825r44 +239n8*FS_Not_Allowed{234E9} 22|260r20 478r20 585r20 667r20 +240n8*FS_RO_Failure{234E9} 22|237r20 410r20 437r20 547r20 645r20 860r21 961r20 +. 1041r20 1095r20 1143r20 1193r20 +241n8*FS_IO_Failure{234E9} 22|269r20 303r20 385r50 456r20 490r20 501r20 515r50 +. 602r23 618r51 679r50 715r21 783r61 817r21 837r48 875r21 894r48 940r21 1012r50 +. 1052r20 1066r59 1106r20 1116r53 1154r20 1164r53 1208r20 1218r53 1232r17 +629V13*Is_Absolute{boolean} 22|1269s10 +X 21 vfs-ext.ads +20K13*EXT 20|24k9 21|180E4 542l9 542e12 22|24b18 2644l9 2644t12 +21U14*Probe 22>8 23>8 24>8 25<8 22|32b14 100l8 100t13 +22i8 Handle{8|83I9} 22|33b8 44r30 69r32 80r28 +23b8 Do_Read_Only{boolean} 22|34b8 68r10 +24b8 Do_Relatime{boolean} 22|35b8 83r28 +25m8 Data_Addr{17|25M9} 22|36b8 50m10 62m10 99m7 +27U14*Remount 28>8 29>8 30>8 31<8 22|102b14 115l8 115t15 +28m8 FS{17|25M9} 22|103b8 108r70 +29b8 Do_Read_Only{boolean} 22|104b8 111r28 +30b8 Do_Relatime{boolean} 22|105b8 112r28 +31b8 Success{boolean} 22|106b8 114m7 +33U14*Unmount 33=23 22|117b14 140l8 140t15 +33m23 FS{17|25M9} 22|117b23 118r64 139m7 +35U14*Get_Block_Size 35>30 35<51 22|142b14 148l8 148t22 +35m30 FS{17|25M9} 22|142b30 143r70 +35m51 Size{9|19M9} 22|142b51 146m7 +37U14*Get_Fragment_Size 37>33 37<54 22|150b14 156l8 156t25 +37m33 FS{17|25M9} 22|150b33 151r70 +37m54 Size{9|19M9} 22|150b54 154m7 +39U14*Get_Size 39>24 39<45 22|158b14 165l8 165t16 +39m24 FS{17|25M9} 22|158b24 159r70 +39m45 Size{9|19M9} 22|158b45 162m7 +41U14*Get_Inode_Count 41>31 41<52 22|167b14 173l8 173t23 +41m31 FS{17|25M9} 22|167b31 168r70 +41m52 Count{9|19M9} 22|167b52 171m7 +43U14*Get_Free_Blocks 44>8 45<8 46<8 22|175b14 186l8 186t23 +44m8 FS{17|25M9} 22|176b8 180r70 +45m8 Free_Blocks{9|19M9} 22|177b8 183m7 +46m8 Free_Unpriviledged{9|19M9} 22|178b8 184m7 +48U14*Get_Free_Inodes 49>8 50<8 51<8 22|188b14 199l8 199t23 +49m8 FS{17|25M9} 22|189b8 193r71 +50m8 Free_Inodes{9|19M9} 22|190b8 196m7 +51m8 Free_Unpriviledged{9|19M9} 22|191b8 197m7 +53V13*Get_Max_Length{9|19M9} 53>29 22|201b13 205l8 205t22 +53m29 FS{17|25M9} 22|201b29 202r28 +55U14*Create_Node 56>8 57>8 58>8 59>8 60>8 61>8 62<8 22|207b14 392l8 392t19 +56m8 FS{17|25M9} 22|208b8 216r74 +57m8 Relative{20|28M9} 22|209b8 247r42 +58a8 Path{string} 22|210b8 239r13 248r29 +59e8 Typ{20|39E9} 22|211b8 217r60 218r57 307r10 +60m8 Mode{20|32M12} 22|212b8 274r56 +61m8 User{9|18M9} 22|213b8 258r36 275r47 +62e8 Status{20|234E9} 22|214b8 237m10 240m10 256m10 260m10 269m10 303m10 +. 385m7 +64U14*Create_Symbolic_Link 65>8 66>8 67>8 68>8 69>8 70>8 71<8 22|394b14 417l8 +. 417t28 +65m8 FS{17|25M9} 22|395b8 406r70 +66m8 Relative{20|28M9} 22|396b8 404r28 +67a8 Path{string} 22|397b8 411r13 +68a8 Target{string} 22|398b8 411r32 +69m8 Mode{9|18M9} 22|399b8 403r28 +70m8 User{9|18M9} 22|400b8 405r28 +71e8 Status{20|234E9} 22|401b8 410m10 412m10 414m10 +73U14*Create_Hard_Link 74>8 75>8 76>8 77>8 78>8 79>8 80<8 22|419b14 523l8 +. 523t24 +74m8 FS{17|25M9} 22|420b8 428r70 +75m8 Relative_Path{20|28M9} 22|421b8 447r42 +76a8 Path{string} 22|422b8 439r13 448r29 +77m8 Relative_Target{20|28M9} 22|423b8 465r42 +78a8 Target{string} 22|424b8 439r32 466r29 +79m8 User{9|18M9} 22|425b8 476r36 +80e8 Status{20|234E9} 22|426b8 437m10 440m10 456m10 474m10 478m10 490m10 +. 501m10 515m7 +82U14*Rename 83>8 84>8 85>8 86>8 87>8 88>8 89>8 90<8 22|525b14 627l8 627t14 +83m8 FS{17|25M9} 22|526b8 535r70 +84m8 Relative_Source{20|28M9} 22|527b8 556r40 +85a8 Source{string} 22|528b8 549r13 557r27 +86m8 Relative_Target{20|28M9} 22|529b8 567r40 +87a8 Target{string} 22|530b8 549r34 568r27 +88b8 Keep{boolean} 22|531b8 579r54 +89m8 User{9|18M9} 22|532b8 582r36 +90e8 Status{20|234E9} 22|533b8 547m10 550m10 580m10 585m10 602m13 618m7 +92U14*Unlink 93>8 94>8 95>8 96>8 97<8 22|629b14 686l8 686t14 +93m8 FS{17|25M9} 22|630b8 636r70 +94m8 Relative{20|28M9} 22|631b8 654r40 +95a8 Path{string} 22|632b8 647r13 655r27 +96m8 User{9|18M9} 22|633b8 665r36 +97e8 Status{20|234E9} 22|634b8 645m10 648m10 663m10 667m10 679m7 +99U14*Read_Entries 100>8 101>8 102>8 103<8 104<8 105<8 22|688b14 754l8 754t20 +100m8 FS_Data{17|25M9} 22|689b8 696r68 +101m8 Ino{20|28M9} 22|690b8 710r43 +102i8 Offset{natural} 22|691b8 740r41 +103a8 Entities{20|63A9} 22|692b8 741r28 742m16 742r26 +104i8 Ret_Count{natural} 22|693b8 706m7 741r16 742r43 746m13 746r26 +105e8 Success{20|234E9} 22|694b8 707m7 715m10 719m10 +107U14*Read_Symbolic_Link 108>8 109>8 110<8 111<8 112<8 22|756b14 792l8 792t26 +108m8 FS_Data{17|25M9} 22|757b8 763r68 +109m8 Ino{20|28M9} 22|758b8 771r43 +110a8 Path{string} 22|759b8 781m27 785m10 +111i8 Ret_Count{natural} 22|760b8 768m7 782m27 783r25 786m10 +112e8 Success{20|234E9} 22|761b8 783m10 787m10 +114U14*Read 115>8 116>8 117>8 118<8 119<8 120<8 22|794b14 842l8 842t12 +115m8 FS_Data{17|25M9} 22|795b8 802r68 +116m8 Ino{20|28M9} 22|796b8 812r43 +117m8 Offset{9|19M9} 22|797b8 832r25 +118a8 Data{8|29A9} 22|798b8 833m25 +119i8 Ret_Count{natural} 22|799b8 809m7 834m25 +120e8 Success{20|234E9} 22|800b8 817m10 824m33 825m33 837m7 +122U14*Write 123>8 124>8 125>8 126>8 127<8 128<8 22|844b14 899l8 899t13 +123m8 FS_Data{17|25M9} 22|845b8 852r68 +124m8 Ino{20|28M9} 22|846b8 870r43 887r38 +125m8 Offset{9|19M9} 22|847b8 889r25 +126a8 Data{8|29A9} 22|848b8 890r25 +127i8 Ret_Count{natural} 22|849b8 858m7 891m25 +128e8 Success{20|234E9} 22|850b8 860m10 875m10 880m10 894m7 +130U14*Stat 131>8 132>8 133<8 134<8 22|901b14 945l8 945t12 +131m8 Data{17|25M9} 22|902b8 908r70 +132m8 Ino{20|28M9} 22|903b8 918r43 926r35 +133r8 S{20|41R9} 22|904b8 925m10 +134e8 Success{20|234E9} 22|905b8 938m10 940m10 +136U14*Truncate 137>8 138>8 139>8 140<8 22|947b14 1017l8 1017t16 +137m8 Data{17|25M9} 22|948b8 953r68 +138m8 Ino{20|28M9} 22|949b8 971r43 991r45 1004r52 +139m8 New_Size{9|19M9} 22|950b8 984r25 987r28 993r32 1000r36 +140e8 Status{20|234E9} 22|951b8 961m10 979m10 1012m7 +142U14*IO_Control 143>8 144>8 145>8 146>8 147<8 22|1019b14 1075l8 1075t18 +143m8 Data{17|25M9} 22|1020b8 1029r73 +144m8 Ino{20|28M9} 22|1021b8 1047r43 1062r52 +145m8 Req{9|19M9} 22|1022b8 1054r15 +146m8 Arg{17|25M9} 22|1023b8 1032r53 +147e8 Status{20|234E9} 22|1024b8 1041m10 1052m10 1057m16 1066m16 1068m16 +149U14*Change_Mode 150>8 151>8 152>8 153<8 22|1077b14 1122l8 1122t19 +150m8 Data{17|25M9} 22|1078b8 1083r73 +151m8 Ino{20|28M9} 22|1079b8 1101r43 1112r46 +152m8 Mode{20|32M12} 22|1080b8 1109r68 +153e8 Status{20|234E9} 22|1081b8 1095m10 1106m10 1116m10 +155U14*Change_Owner 156>8 157>8 158>8 159>8 160<8 22|1124b14 1170l8 1170t20 +156m8 Data{17|25M9} 22|1125b8 1131r73 +157m8 Ino{20|28M9} 22|1126b8 1149r43 1160r46 +158m8 Owner{9|18M9} 22|1127b8 1156r35 +159m8 Group{9|18M9} 22|1128b8 1157r35 +160e8 Status{20|234E9} 22|1129b8 1143m10 1154m10 1164m10 +162U14*Change_Access_Times 163>8 164>8 165>8 166>8 167>8 168>8 169<8 22|1172b14 +. 1224l8 1224t27 +163m8 Data{17|25M9} 22|1173b8 1184r73 +164m8 Ino{20|28M9} 22|1174b8 1203r43 1214r46 +165m8 Access_Seconds{9|19M9} 22|1175b8 1186r37 +166m8 Access_Nanoseconds{9|19M9} 22|1176b8 1181r28 +167m8 Modify_Seconds{9|19M9} 22|1177b8 1187r37 +168m8 Modify_Nanoseconds{9|19M9} 22|1178b8 1182r28 +169e8 Status{20|234E9} 22|1179b8 1193m10 1208m10 1218m10 +171V13*Synchronize{20|234E9} 171>26 22|1226b13 1234l8 1234t19 1244s14 +171m26 Data{17|25M9} 22|1226b26 1227r73 +173V13*Synchronize{20|234E9} 174>8 175>8 176>8 22|1236b13 1245l8 1245t19 +174m8 Data{17|25M9} 22|1237b8 1244r27 +175m8 Ino{20|28M9} 22|1238b8 1241r28 +176b8 Data_Only{boolean} 22|1239b8 1242r28 +180N4 State_Clean 22|70r34 +181N4 Policy_Ignore 22|2604r15 +182N4 Policy_Remount_RO 22|2606r15 +183N4 Policy_Panic 22|2609r15 +184N4 EXT_Signature 22|55r27 +185N4 Main_Superblock_Offset 22|45r30 129r33 +186N4 Required_Compression 22|58r37 +187N4 Required_Directory_Types 22|1479r50 +188N4 Required_Journal_Replay 22|59r37 +189N4 Required_Journal_Device 22|60r37 +190N4 RO_Sparse_Superblocks 22|88r41 +191N4 RO_64bit_Filesize 22|90r41 +192N4 RO_Binary_Trees 22|72r38 +193R9 Superblock 238e15 239r8 367r31 411r33 22|38r17 1518r33 1523r41 +194m7*Inode_Count{9|18M9} 240r7 22|171r40 2270r35 +195m7*Block_Count{9|18M9} 241r7 22|162r39 2164r35 +196m7*Reserved_Count{9|18M9} 242r7 +197m7*Unallocated_Block_Count{9|18M9} 243r7 22|183r46 184r53 2221m24 2222r27 +198m7*Unallocated_Inode_Count{9|18M9} 244r7 22|196r46 197r53 2331m24 2332r27 +199m7*Block_Containing_Super{9|18M9} 245r7 +200m7*Block_Size_Log{9|18M9} 246r7 22|56r14 84r59 1885r51 1889r51 +201m7*Fragment_Size_Log{9|18M9} 247r7 22|56r35 85r59 +202m7*Blocks_Per_Group{9|18M9} 248r7 22|2198r52 +203m7*Fragments_Per_Group{9|18M9} 249r7 +204m7*Inodes_Per_Group{9|18M9} 250r7 22|354r54 1602r60 1603r58 2303r52 +205m7*Last_Mount_Epoch{9|18M9} 251r7 +206m7*Last_Write_Epoch{9|18M9} 252r7 +207m7*Mounts_Since_Check{9|17M9} 253r7 22|71r14 124r21 126m21 126r54 +208m7*Max_Mounts_Since_Check{9|17M9} 254r7 22|71r39 +209m7*Signature{9|17M9} 255r7 22|55r14 +210m7*Filesystem_State{9|17M9} 256r7 22|70r14 +211m7*Error_Policy{9|17M9} 257r7 22|2603r23 +212m7*Minor_Version{9|17M9} 258r7 +213m7*Last_Check_Epoch{9|18M9} 259r7 +214m7*Interval_Between_Checks{9|18M9} 260r7 +215m7*Operating_System_ID{9|18M9} 261r7 +216m7*Major_Version{9|18M9} 262r7 22|57r14 +217m7*Reserved_Blocks_User_ID{9|17M9} 263r7 +218m7*Reserved_Blocks_Group{9|17M9} 264r7 +219m7*First_Non_Reserved{9|18M9} 265r7 22|2305r49 +220m7*Inode_Size{9|17M9} 266r7 22|1616r55 +221m7*Block_Group_Of_Super{9|17M9} 267r7 +222m7*Optional_Features{9|18M9} 268r7 +223m7*Required_Features{9|18M9} 269r7 22|58r15 59r15 60r15 1479r28 +224m7*RO_If_Not_Features{9|18M9} 270r7 22|72r15 88r18 90r18 +225m7*FS_ID_High{9|19M9} 271r7 +226m7*FS_ID_Low{9|19M9} 272r7 +227a7*Volume_Name{string} 273r7 +228a7*Last_Mountpoint{string} 274r7 +229m7*Compression_Algorithm{9|18M9} 275r7 +230m7*Preallocate_Files{9|16M9} 276r7 +231m7*Preallocate_Dirs{9|16M9} 277r7 +232m7*Unused{9|17M9} 278r7 +233m7*Journal_ID_High{9|19M9} 279r7 +234m7*Journal_ID_Low{9|19M9} 280r7 +235m7*Journal_Inode{9|18M9} 281r7 +236m7*Journal_Device{9|18M9} 282r7 +237m7*Head_Of_Orphan_Inodes{9|18M9} 283r7 +286A9 Descriptor_Padding(9|17M9) 294r34 +287R9 Block_Group_Descriptor 295e15 296r8 418r34 22|223r36 1548r34 1552r41 +. 1596r26 2159r20 2265r20 +288m7*Block_Usage_Bitmap_Block{9|18M9} 297r7 22|2181r45 2212r45 +289m7*Inode_Usage_Bitmap_Block{9|18M9} 298r7 22|2287r45 2322r45 +290m7*Inode_Table_Block{9|18M9} 299r7 22|1615r34 +291m7*Unallocated_Blocks{9|17M9} 300r7 22|2175r18 2223m15 2223r42 +292m7*Unallocated_Inodes{9|17M9} 301r7 22|2281r18 2333m15 2333r42 +293m7*Directory_Count{9|17M9} 302r7 22|361m21 361r51 +294a7*Padding{286A9} 303r7 +306N4 Flags_Immutable 528r23 +307N4 Flags_Append_Only 531r23 +308A9 Inode_Block_Arr(9|18M9) 322r29 327r29 +309R9 Inode 328e15 329r8 349r29 372r31 388r29 390r29 394r20 402r22 425r33 +. 431r22 436r22 445r29 455r29 463r29 471r29 479r28 491r29 501r29 519r29 522r28 +. 527r33 530r35 537r22 22|28r54 222r53 431r65 539r67 540r67 639r51 697r40 +. 764r40 804r40 853r40 911r31 954r39 1030r34 1084r34 1132r34 1185r34 1253r29 +. 1255r29 1421r20 1446r22 1591r33 1599r42 1643r22 1736r22 1793r29 1877r29 +. 1902r29 1945r29 2153r28 2359r29 2452r29 2572r29 2583r28 2618r22 +310m7*Permissions{9|17M9} 330r7 22|274m11 717r47 776r44 821r57 878r47 927r56 +. 928r51 976r38 1108r51 1109m15 1291r42 1363r60 2626r45 2627r45 2628r45 2633r45 +. 2634r45 2635r45 +311m7*UID{9|17M9} 331r7 22|275m11 929r53 1156m15 2625r31 +312m7*Size_Low{9|18M9} 332r7 22|276m11 2576r46 2578r34 2592m14 2596m14 +313m7*Access_Time_Epoch{9|18M9} 333r7 22|277m11 937r54 1210m15 +314m7*Creation_Time_Epoch{9|18M9} 334r7 22|278m11 935r54 +315m7*Modified_Time_Epoch{9|18M9} 335r7 22|279m11 936r54 1211m15 +316m7*Deleted_Time_Epoch{9|18M9} 336r7 22|280m11 +317m7*GID{9|17M9} 337r7 22|281m11 930r53 1157m15 +318m7*Hard_Link_Count{9|17M9} 338r7 22|282m11 368m23 368r55 369m23 369r55 +. 493m18 493r48 931r50 +319m7*Sectors{9|18M9} 339r7 22|283m11 2225m21 2225r43 +320m7*Flags{9|18M9} 340r7 528r13 531r13 22|284m11 1056r31 1059m21 +321m7*OS_Specific_Value_1{9|18M9} 341r7 22|285m11 +322a7*Blocks{308A9} 342r7 22|286m11 1428m38 1666r28 1685r54 1709r51 1726r48 +. 1972m21 1991r27 1998m27 2009r54 2025r56 2071r24 2078m24 2089r51 2105r54 +. 2124r21 2131m21 2142r48 +323m7*Generation_Number{9|18M9} 343r7 22|287m11 +324m7*EAB{9|18M9} 344r7 22|288m11 +325m7*Size_High{9|18M9} 345r7 22|289m11 2575r46 2593m14 +326m7*Fragment_Address{9|18M9} 346r7 22|290m11 +327a7*OS_Specific_Value_2{308A9} 347r7 22|291m11 +349P9 Inode_Acc(309R9) 22|28r64 222r36 431r48 539r50 540r50 639r34 697r23 +. 764r23 804r23 853r23 911r14 954r22 1030r17 1084r17 1132r17 1185r17 +351R9 Directory_Entry 356e15 357r8 22|225r36 1453r19 1456r40 1478r38 2388r21 +. 2393r19 2397r18 2411r26 2416r31 2480r19 2482r20 +352m7*Inode_Index{9|18M9} 358r7 22|330m14 1468r14 1500r47 2419m23 2485r20 +353m7*Entry_Count{9|17M9} 359r7 22|331m14 1505r55 2399r43 2402m20 2420m23 +. 2440r45 2486m21 2486r41 2486r59 2502r46 +354m7*Name_Length{9|16M9} 360r7 22|332m14 1474r48 2398r34 2421m23 +355m7*Dir_Type{9|16M9} 361r7 22|333m14 1481r43 2422m23 +364R9 EXT_Data 375e14 376r36 22|25r64 27r54 78r19 +365r7*Mutex{15|22R9} 22|79m11 110m39 113m41 121m39 145m39 147m41 153m39 155m41 +. 161m39 164m41 170m39 172m41 182m39 185m41 195m39 198m41 234m39 388m41 408m39 +. 416m41 434m39 518m41 544m39 621m41 642m39 682m41 704m37 752m39 767m37 790m39 +. 807m37 840m39 856m37 897m39 914m37 943m39 958m37 1015m39 1034m37 1073m39 +. 1088m37 1120m39 1140m37 1168m39 1190m37 1222m39 +366i7*Handle{8|83I9} 22|80m11 128r38 909r71 933r54 1229r39 1566r32 1573r32 +. 1620r32 1627r32 1684r38 1691r38 1698r38 1708r35 1715r35 1725r32 1771r35 +. 1850r35 2008r38 2024r40 2033r38 2049r40 2061r38 2088r35 2104r38 2114r35 +. 2141r32 2180r35 2211r35 2226r69 2286r35 2321r35 +367r7*Super{193R9} 22|81m11 124r15 126m15 126r48 130m38 162r33 171r34 183r40 +. 184r47 196r40 197r47 354r48 1479r22 1602r54 1603r52 1616r49 1885r45 1889r45 +. 2164r29 2198r46 2221m18 2222r21 2270r29 2303r46 2305r43 2331m18 2332r21 +. 2603r17 +368b7*Is_Read_Only{boolean} 22|82m11 111m12 123r19 236r15 409r15 436r15 546r15 +. 644r15 859r13 960r13 1040r13 1094r13 1142r13 1192r13 2608m18 +369b7*Do_Relatime{boolean} 22|83m11 112m12 +370m7*Block_Size{9|18M9} 22|84m11 146r33 163r15 331r47 1553r41 1558r15 1615r59 +. 1647r63 1686r38 1692r69 1699r68 1710r48 1716r65 1726r70 1760r64 1761r66 +. 1764r46 1765r47 1773r48 1839r64 1840r66 1843r46 1844r47 1852r48 1884r58 +. 1887r55 1888r52 1952r63 2010r38 2026r40 2034r69 2051r54 2062r68 2090r48 +. 2106r51 2115r65 2142r70 2162r55 2182r48 2213r48 2225r62 2268r55 2288r48 +. 2323r48 +371m7*Fragment_Size{9|18M9} 22|85m11 154r33 163r33 +372r7*Root{309R9} 22|96m35 1271r31 1273r31 +373b7*Has_Sparse_Superblock{boolean} 22|87m11 +374b7*Has_64bit_Filesizes{boolean} 22|89m11 219m43 508r59 590r44 674r59 729r59 +. 780r59 831r57 888r57 924r41 983r49 1000r49 1274r55 1299r55 1362r58 1821r36 +376P9 EXT_Data_Acc(364R9) 383r25 400r22 416r27 423r26 430r22 435r22 444r22 +. 454r22 462r22 470r22 478r21 485r20 490r22 500r22 533r36 22|27r64 39r17 +. 108r23 108r39 118r17 118r33 143r23 143r39 151r23 151r39 159r23 159r39 168r23 +. 168r39 180r23 180r39 193r24 193r40 216r27 216r43 406r23 406r39 428r23 428r39 +. 535r23 535r39 636r23 636r39 696r21 696r37 763r21 763r37 802r21 802r37 852r21 +. 852r37 908r23 908r39 953r21 953r37 1029r26 1029r42 1083r26 1083r42 1131r26 +. 1131r42 1184r26 1184r42 1227r26 1227r42 1248r25 1444r22 1546r27 1589r26 +. 1642r22 1735r22 1792r22 1876r22 1901r22 1944r22 2152r21 2260r20 2358r22 +. 2451r22 2601r36 +378N4 Root_Inode 22|1270r26 1272r26 +379N4 Max_File_Name_Size 22|204r14 +381P9 String_Acc(string) 386r29 22|26r64 220r36 429r48 536r50 637r34 1251r29 +382U14 Inner_Open_Inode 383>8 384>8 385>8 386<8 387<8 388<8 389<8 390<8 391<8 +. 22|245s7 445s7 463s7 554s7 565s7 652s7 1247b14 1378s19 1418l8 1418t24 +383p8 Data{376P9} 22|246r11 446r11 464r11 555r11 566r11 653r11 1248b8 1271r26 +. 1273r26 1274r50 1285r33 1299r50 1335r32 1357r39 1362r53 1379r23 +384m8 Relative{9|18M9} 22|247r11 447r11 465r11 556r11 567r11 654r11 1249b8 +. 1286r33 1296r26 1297r26 +385a8 Path{string} 22|248r11 448r11 466r11 557r11 568r11 655r11 1250b8 1269r23 +. 1277r13 1281r21 1282r21 1283r13 1302r13 1306r21 1307r21 1312r23 1314r26 +. 1314r45 1317r44 1343r29 1353r16 1368r28 1381r52 1381r68 1415r10 1415r53 +. 1416r40 1416r60 +386p8 Last_Component{381P9} 22|249r11 449r11 467r11 558r11 569r11 656r11 +. 1251b8 1267m7 1382m23 1416m10 +387m8 Target_Index{9|18M9} 22|250r11 450r11 468r11 559r11 570r11 657r11 1252b8 +. 1270m10 1296m10 1330r26 1355m16 1358r39 1383m23 1404m7 1409m7 +388r8 Target_Inode{309R9} 22|251r11 451r11 469r11 560r11 571r11 658r11 1253b8 +. 1271m10 1274r36 1287m33 1291r29 1298r26 1299r36 1331r26 1359m39 1362r39 +. 1363r47 1370r23 1384m23 +389m8 Parent_Index{9|18M9} 22|252r11 452r11 470r11 561r11 572r11 659r11 1254b8 +. 1272m10 1297m10 1330m10 1380r23 1385m23 1410m7 +390r8 Parent_Inode{309R9} 22|253r11 453r11 471r11 562r11 573r11 660r11 1255b8 +. 1273m10 1298m10 1331m10 1337r32 1386m23 +391b8 Success{boolean} 22|254r11 454r11 472r11 563r11 574r11 661r11 1256b8 +. 1289m33 1290r17 1341m32 1342r20 1361m39 1364r23 1387m23 1400m7 1405m7 1411m7 +393U14 Inner_Read_Symbolic_Link 394>8 395>8 396<8 397<8 22|778s10 1369s19 +. 1420b14 1441l8 1441t32 +394r8 Ino{309R9} 22|779r14 1421b8 1428r34 +395m8 File_Size{9|19M9} 22|780r14 1422b8 1430r32 +396a8 Path{string} 22|781r14 1423b8 1427r43 1432m10 1438m10 1438r16 +397i8 Ret_Count{natural} 22|782r14 1424b8 1433m10 1440m7 +399U14 Inner_Read_Entry 400>8 401>8 402>8 403>8 404<8 405<8 406<8 22|727s10 +. 1334s13 1443b14 1513l8 1513t24 +400p8 FS_Data{376P9} 22|728r14 1335r17 1444b8 1460r25 1479r14 1488r28 +401m8 Inode_Sz{9|19M9} 22|729r14 1336r17 1445b8 1462r25 1490r28 +402r8 File_Ino{309R9} 22|730r14 1337r17 1446b8 1461r25 1489r28 +403m8 Inode_Index{9|19M9} 22|731r14 1338r17 1447b8 1463r25 1478r23 1505r24 +404r8 Entity{20|57R9} 22|732r14 1339r17 1448b8 1499m10 1504m10 +405m8 Next_Index{9|19M9} 22|733r14 1340r17 1449b8 1505m10 1511m7 +406b8 Success{boolean} 22|734r14 1341r17 1450b8 1466m25 1467r15 1494m28 1495r17 +. 1506m10 1512m7 +408U14 RW_Superblock 409>8 410>8 411=8 412>8 413<8 22|43s7 127s10 1515b14 +. 1543l8 1543t21 +409i8 Handle{8|83I9} 22|44r11 128r14 1516b8 1528r27 1535r27 +410m8 Offset{9|19M9} 22|45r11 129r14 1517b8 1529r27 1536r27 +411r8 Super{193R9} 22|46r11 130r14 1518b8 1524m34 1524r34 +412b8 Write_Operation{boolean} 22|47r11 131r14 1519b8 1526r10 +413b8 Success{boolean} 22|48r11 132r14 1520b8 1532m27 1539m27 1542m7 1542r18 +415U14 RW_Block_Group_Descriptor 416>8 417>8 418=8 419>8 420<8 22|355s10 +. 362s10 1545b14 1586l8 1586t33 1605s7 2165s10 2237s10 2271s10 2335s10 +416p8 Data{376P9} 22|356r14 363r14 1546b8 1553r36 1558r10 1566r27 1573r27 +. 1583r25 1606r11 2166r14 2238r14 2272r14 2336r14 +417m8 Descriptor_Index{9|18M9} 22|357r14 364r14 1547b8 1562r54 1607r11 2167r14 +. 2239r14 2273r14 2337r14 +418r8 Result{287R9} 22|358r14 365r14 1548b8 1556m34 1556r34 1608r11 2168r14 +. 2240r14 2274r14 2338r14 +419b8 Write_Operation{boolean} 22|359r14 366r14 1549b8 1564r10 1609r11 2169r14 +. 2241r14 2275r14 2339r14 +420b8 Success{boolean} 22|360r14 367r14 1550b8 1570m27 1577m27 1580r10 1581m10 +. 1584m10 1610r11 2170r14 2242r14 2276r14 2340r14 +422U14 RW_Inode 423>8 424>8 425=8 426>8 427<8 22|93s7 372s7 378s7 483s7 494s7 +. 708s7 769s7 810s7 868s7 916s7 969s7 1002s16 1045s7 1060s16 1099s7 1110s10 +. 1147s7 1158s10 1201s7 1212s10 1284s10 1356s16 1588b14 1639l8 1639t16 1826s10 +. 1935s7 1999s16 2079s13 2132s10 2227s10 +423p8 Data{376P9} 22|94r11 373r11 379r11 484r11 495r11 709r11 770r11 811r11 +. 869r11 917r11 970r11 1003r20 1046r11 1061r20 1100r11 1111r14 1148r11 1159r14 +. 1202r11 1213r14 1285r14 1357r20 1589b8 1602r49 1603r47 1606r31 1615r54 +. 1616r44 1620r27 1627r27 1636r25 1827r14 1936r11 2000r20 2080r17 2133r14 +. 2228r14 +424m8 Inode_Index{9|18M9} 22|95r11 374r11 380r11 485r11 496r11 710r11 771r11 +. 812r11 870r11 918r11 971r11 1004r20 1047r11 1062r20 1101r11 1112r14 1149r11 +. 1160r14 1203r11 1214r14 1286r14 1358r20 1590b8 1602r28 1603r28 1828r14 +. 1937r11 2001r20 2081r17 2134r14 2229r14 +425r8 Result{309R9} 22|96r11 375r11 381r11 486r11 497r11 711r11 772r11 813r11 +. 871r11 919r11 972r11 1005r20 1048r11 1063r20 1102r11 1113r14 1150r11 1161r14 +. 1204r11 1215r14 1287r14 1359r20 1591b8 1600m34 1600r34 1829r14 1938r11 +. 2002r20 2082r17 2135r14 2230r14 +426b8 Write_Operation{boolean} 22|97r11 376r11 382r11 487r11 498r11 712r11 +. 773r11 814r11 872r11 920r11 973r11 1006r20 1049r11 1064r20 1103r11 1114r14 +. 1151r11 1162r14 1205r11 1216r14 1288r14 1360r20 1592b8 1618r10 1830r14 +. 1939r11 2003r20 2083r17 2136r14 2231r14 +427b8 Success{boolean} 22|98r11 377r11 383r11 488r11 499r11 713r11 774r11 +. 815r11 873r11 921r11 974r11 1007r20 1050r11 1065r20 1104r11 1115r14 1152r11 +. 1163r14 1206r11 1217r14 1289r14 1361r20 1593b8 1610m31 1611r14 1624m27 +. 1631m27 1633r10 1634m10 1637m10 1831r14 1940r11 2004r20 2084r17 2137r14 +. 2232r14 +429V13 Get_Block_Index{9|18M9} 430>8 431>8 432>8 22|1641b13 1732l8 1732t23 +. 1768s25 1847s25 1911s21 +430p8 FS_Data{376P9} 22|1642b8 1647r55 1684r30 1686r30 1691r30 1692r61 1698r30 +. 1699r60 1708r27 1710r40 1715r27 1716r57 1725r24 1726r62 +431r8 Inode_Data{309R9} 22|1643b8 1666r17 1685r43 1709r40 1726r37 +432m8 Searched{9|18M9} 22|1644b8 1646r46 1666r45 1668r28 +434U14 Read_From_Inode 435>8 436>8 437>8 438>8 439<8 440<8 441<8 22|828s7 +. 1459s7 1487s10 1734b14 1789l8 1789t23 2375s7 2462s7 +435p8 FS_Data{376P9} 22|829r11 1460r11 1488r14 1735b8 1760r56 1761r58 1764r38 +. 1765r39 1769r14 1771r27 1773r40 1780r28 2376r11 2463r11 +436r8 Inode_Data{309R9} 22|830r11 1461r11 1489r14 1736b8 1769r23 2377r11 +. 2464r11 +437m8 Inode_Size{9|19M9} 22|831r11 1462r11 1490r14 1737b8 1750r19 1754r36 +. 1755r34 2378r11 2465r11 +438m8 Offset{9|19M9} 22|832r11 1463r11 1491r14 1738b8 1744r39 1750r10 1754r13 +. 1755r47 1759r29 2379r11 2466r11 +439a8 Data{8|29A9} 22|833r11 1464r11 1492r14 1739b8 1743r39 1754r22 1774m27 +. 1774r27 1774r33 1775r33 2380r11 2467r11 +440i8 Ret_Count{natural} 22|834r11 1465r11 1493r14 1740b8 1751m10 1777m27 +. 1787m7 2381r11 2468r11 +441b8 Success{boolean} 22|835r11 1466r11 1494r14 1741b8 1752m10 1778m27 1779r17 +. 1788m7 2382r11 2469r11 +443U14 Write_To_Inode 444>8 445=8 446>8 447>8 448>8 449>8 450<8 451<8 22|309s10 +. 319s10 334s10 344s10 884s7 1791b14 1873l8 1873t22 2425s19 2487s16 +444p8 FS_Data{376P9} 22|310r14 320r14 335r14 345r14 885r11 1792b8 1809r29 +. 1821r28 1827r33 1839r56 1840r58 1843r38 1844r39 1848r14 1850r27 1852r40 +. 1870r22 2426r23 2488r20 +445r8 Inode_Data{309R9} 22|311r14 321r14 336r14 346r14 886r11 1793b8 1810m29 +. 1819m28 1829m33 1848r23 2428r23 2490r20 +446m8 Inode_Num{9|18M9} 22|312r14 322r14 337r14 347r14 887r11 1794b8 1811r29 +. 1828r33 2427r23 2489r20 +447m8 Inode_Size{9|19M9} 22|313r14 323r14 338r14 348r14 888r11 1795b8 1807r47 +. 2429r23 2491r20 +448m8 Offset{9|19M9} 22|314r14 324r14 339r14 349r14 889r11 1796b8 1801r39 +. 1807r10 1812r29 1820r28 1838r29 2430r23 2492r20 +449a8 Data{8|29A9} 22|315r14 325r14 340r14 350r14 890r11 1797b8 1807r32 1813r42 +. 1820r50 1837r26 1841r40 1853r27 1853r33 1854r33 1865r20 2431r23 2493r20 +450i8 Ret_Count{natural} 22|316r14 326r14 341r14 351r14 891r11 1798b8 1856m27 +. 1865m7 1871m7 2432r23 2494r20 +451b8 Success{boolean} 22|317r14 327r14 342r14 352r14 892r11 1799b8 1814m29 +. 1815r17 1822m28 1823r17 1831m33 1832r17 1857m27 1858r17 1866m7 1872m7 2433r23 +. 2495r20 +453U14 Grow_Inode 454>8 455=8 456>8 457>8 458>8 459<8 22|988s13 1808s10 1875b14 +. 1898l8 1898t18 +454p8 FS_Data{376P9} 22|989r17 1809r14 1876b8 1884r50 1885r37 1887r47 1888r44 +. 1889r37 1892r26 +455r8 Inode_Data{309R9} 22|990r17 1810r14 1877b8 1893m26 +456m8 Inode_Num{9|18M9} 22|991r17 1811r14 1878b8 1894r26 +457m8 Start{9|19M9} 22|992r17 1812r14 1879b8 1884r23 1887r24 +458m8 Count{9|19M9} 22|993r17 1813r14 1880b8 1888r23 +459b8 Success{boolean} 22|994r17 1814r14 1881b8 1897m26 +461U14 Assign_Inode_Blocks 462>8 463=8 464>8 465>8 466>8 467<8 22|1891s7 +. 1900b14 1941l8 1941t27 +462p8 FS_Data{376P9} 22|1892r11 1901b8 1911r38 1914r31 1923r32 1936r30 +463r8 Inode_Data{309R9} 22|1893r11 1902b8 1911r47 1915m31 1924m32 1938m30 +464m8 Inode_Num{9|18M9} 22|1894r11 1903b8 1916r31 1925r32 1937r30 +465m8 Start_Blk{9|18M9} 22|1895r11 1904b8 1911r59 1926r32 +466m8 Block_Count{9|18M9} 22|1896r11 1905b8 1910r21 +467b8 Success{boolean} 22|1897r11 1906b8 1918m31 1919r20 1928m32 1929r20 +. 1940m30 +469U14 Wire_Inode_Blocks 470>8 471=8 472>8 473>8 474>8 475<8 22|1922s13 1943b14 +. 2149l8 2149t25 +470p8 FS_Data{376P9} 22|1923r17 1944b8 1952r55 1993r34 2000r39 2008r30 2010r30 +. 2017r34 2024r32 2026r32 2033r30 2034r61 2042r34 2049r32 2051r46 2061r30 +. 2062r60 2073r31 2080r36 2088r27 2090r40 2097r31 2104r30 2106r43 2114r27 +. 2115r57 2126r28 2133r33 2141r24 2142r62 +471r8 Inode_Data{309R9} 22|1924r17 1945b8 1972m10 1991r16 1994m34 1998m16 +. 2002m39 2009r43 2018m34 2025r45 2043m34 2071r13 2074m31 2078m13 2082m36 +. 2089r40 2098m31 2105r43 2124r10 2127m28 2131m10 2135m33 2142r37 +472m8 Inode_Num{9|18M9} 22|1925r17 1946b8 1995r34 2001r39 2019r34 2044r34 +. 2075r31 2081r36 2099r31 2128r28 2134r33 +473m8 Block_Index{9|18M9} 22|1926r17 1947b8 1951r46 +474m8 Wired_Block{9|18M9} 22|1927r17 1948b8 1953r46 1972r58 +475b8 Success{boolean} 22|1928r17 1949b8 1973m10 2067m13 2120m10 2147m7 +477U14 Allocate_Block_For_Inode 478>8 479=8 480>8 481<8 482<8 22|1913s13 +. 1992s16 2016s16 2041s16 2072s13 2096s13 2125s10 2151b14 2257l8 2257t32 +478p8 FS_Data{376P9} 22|1914r17 1993r20 2017r20 2042r20 2073r17 2097r17 2126r14 +. 2152b8 2162r47 2164r21 2166r34 2180r27 2182r40 2198r38 2211r27 2213r40 +. 2221r10 2222r13 2225r54 2226r61 2228r33 2238r34 +479r8 Inode_Data{309R9} 22|1915r17 1994r20 2018r20 2043r20 2074r17 2098r17 +. 2127r14 2153b8 2225m10 2225r32 2230m33 +480m8 Inode_Num{9|18M9} 22|1916r17 1995r20 2019r20 2044r20 2075r17 2099r17 +. 2128r14 2154b8 2229r33 +481m8 Ret_Block{9|18M9} 22|1917r17 1996r20 2020r20 2045r20 2076r17 2100r17 +. 2129r14 2155b8 2246m10 2255m7 +482b8 Success{boolean} 22|1918r17 1997r20 2021r20 2046r20 2077r17 2101r17 +. 2130r14 2156b8 2170m34 2171r17 2185m27 2186r17 2216m27 2217r17 2232m33 +. 2233r17 2242m34 2243r17 2248m10 2256m7 +484U14 Allocate_Inode 485>8 486<8 487<8 22|264s7 2259b14 2355l8 2355t22 +485p8 FS_Data{376P9} 22|265r11 2260b8 2268r47 2270r21 2272r34 2286r27 2288r40 +. 2303r38 2305r35 2321r27 2323r40 2331r10 2332r13 2336r34 +486m8 Inode_Num{9|18M9} 22|266r11 2261b8 2344m10 2352m7 +487b8 Success{boolean} 22|267r11 2262b8 2276m34 2277r17 2291m27 2292r17 2326m27 +. 2327r17 2340m34 2341r17 2346m10 2354m7 +489U14 Add_Directory_Entry 490>8 491=8 492>8 493>8 494>8 495>8 496>8 497<8 +. 22|293s7 505s7 608s7 2357b14 2448l8 2448t27 +490p8 FS_Data{376P9} 22|294r11 506r11 609r11 2358b8 2376r25 2426r37 +491r8 Inode_Data{309R9} 22|295r11 507r11 610r11 2359b8 2377r25 2428m37 +492m8 Inode_Size{9|19M9} 22|296r11 508r11 611r11 2360b8 2374r51 2378r25 2391r31 +. 2429r37 +493m8 Inode_Index{9|18M9} 22|297r11 509r11 612r11 2361b8 2427r37 +494m8 Added_Index{9|18M9} 22|298r11 510r11 613r11 2362b8 2419r38 +495m8 Dir_Type{9|16M9} 22|299r11 511r11 614r11 2363b8 2422r38 +496a8 Name{string} 22|300r11 512r11 615r11 2364b8 2388r49 2414r43 2421r38 +. 2423r31 +497b8 Success{boolean} 22|301r11 513r11 616r11 2365b8 2382m25 2383r14 2384m10 +. 2406m19 2433m37 2434r26 2435m22 2444m7 +499U14 Delete_Directory_Entry 500>8 501=8 502>8 503>8 504>8 505<8 22|594s10 +. 671s7 2450b14 2510l8 2510t30 +500p8 FS_Data{376P9} 22|595r14 672r11 2451b8 2463r25 2488r34 +501r8 Inode_Data{309R9} 22|596r14 673r11 2452b8 2464r25 2490m34 +502m8 Inode_Size{9|19M9} 22|597r14 674r11 2453b8 2461r51 2465r25 2478r31 +. 2491r34 +503m8 Inode_Index{9|18M9} 22|598r14 675r11 2454b8 2489r34 +504m8 Added_Index{9|18M9} 22|599r14 676r11 2455b8 2485r34 +505b8 Success{boolean} 22|600r14 677r11 2456b8 2469m25 2470r14 2471m10 2495m34 +. 2496r23 2497m19 2506m7 +507V13 Get_Dir_Type{20|39E9} 507>27 22|1481s25 2512b13 2521l8 2521t20 +507m27 Dir_Type{9|16M9} 22|2512b27 2514r12 +509V13 Get_Dir_Type{9|16M9} 509>27 22|218s43 511s26 614s26 2523b13 2532l8 +. 2532t20 +509e27 T{20|39E9} 22|2523b27 2525r12 +511V13 Get_Permissions{9|17M9} 511>30 22|217s43 1109s30 2534b13 2543l8 2543t23 +511e30 T{20|39E9} 22|2534b30 2536r12 +513V13 Get_Inode_Type{20|39E9} 513>29 22|717s13 776s10 821s23 878s13 927s35 +. 976s10 1108s30 1291s13 1363s31 2545b13 2555l8 2555t22 +513m29 Perms{9|17M9} 22|2545b29 2547r12 +515V13 Get_Inode_Type{9|17M9} 516>8 517>8 22|2557b13 2570l8 2570t22 +516e8 T{20|39E9} 22|2558b8 2563r12 +517m8 Mode{9|18M9} 22|2559b8 2561r50 +519V13 Get_Size{9|19M9} 519>23 519>36 22|296s26 313s29 323s29 338s29 348s29 +. 508s26 589s29 674s26 729s27 780s27 831s25 888s25 924s18 983s23 1274s26 +. 1299s26 1362s29 2572b13 2580l8 2580t16 +519r23 Ino{309R9} 22|2572b23 2575r42 2576r42 2578r30 +519b36 Is_64_Bits{boolean} 22|2572b36 2574r10 +521U14 Set_Size 522=8 523>8 524>8 525<8 22|1000s13 1818s10 2582b14 2599l8 +. 2599t16 +522r8 Ino{309R9} 22|1819r14 2583b8 2592m10 2593m10 2596m10 +523m8 New_Size{9|19M9} 22|1820r14 2584b8 2588r50 2589r63 +524b8 Is_64_Bits{boolean} 22|1821r14 2585b8 2591r10 +525b8 Success{boolean} 22|1822r14 2586b8 2594m10 2597m10 +527V13 Is_Immutable{boolean} 527>27 22|877s13 977s10 +527r27 Ino{309R9} 528r9 +530V13 Is_Append_Only{boolean} 530>29 +530r29 Ino{309R9} 531r9 +533U14 Act_On_Policy 533>29 533>50 22|134s13 1583s10 1636s10 1780s13 1870s7 +. 2601b14 2614l8 2614t21 +533p29 Data{376P9} 22|2601b29 2603r12 2608r13 +533a50 Message{string} 22|2601b50 2605r36 2607r36 2610r35 +535V13 Check_User_Access{boolean} 536>8 537>8 538>8 539>8 540>8 22|258s17 +. 476s17 582s17 665s17 2616b13 2643l8 2643t25 +536m8 User{9|18M9} 22|2617b8 2624r10 2625r38 +537r8 Inod{309R9} 22|2618b8 2625r26 2626r40 2627r40 2628r40 2633r40 2634r40 +. 2635r40 +538b8 Check_Read{boolean} 541r19 22|2619b8 2626r17 2633r17 +539b8 Check_Write{boolean} 541r33 22|2620b8 2627r17 2634r17 +540b8 Check_Exec{boolean} 22|2621b8 2628r17 2635r17 +X 22 vfs-ext.adb +25K14 Conv[18|13] 99r20 99r37 108r53 118r47 143r53 151r53 159r53 168r53 180r53 +. 193r54 216r57 406r53 428r53 535r53 636r53 696r51 763r51 802r51 852r51 908r53 +. 953r51 1029r56 1083r56 1131r56 1184r56 1227r56 +26U14 Free[4|14] 391s7 459s7 522s7 564s7 626s7 685s7 +27U14 Free[4|14] 138s7 +28U14 Free[4|14] 389s7 390s7 519s7 520s7 521s7 622s7 623s7 624s7 625s7 683s7 +. 684s7 753s7 791s7 841s7 898s7 944s7 1016s7 1074s7 1121s7 1169s7 1223s7 +29U14 Free[4|14] 2247s10 2254s7 2345s10 2353s7 2447s7 2509s7 +38r7 Sup{21|193R9} 46m30 46r30 55r10 56r10 56r31 57r10 58r11 59r11 60r11 +. 70r10 71r10 71r35 72r11 81r28 84r55 85r55 88r14 90r14 +39p7 Data{21|376P9} 78m7 94r30 96r30 99r58 +40b7 Success{boolean} 48m30 49r14 98m30 +41b7 Is_RO{boolean} 67m7 73r10 82r28 +108p7 Data{21|376P9} 110r34 111r7 112r7 113r36 +118p7 Data{21|376P9} 121r34 123r14 124r10 126r10 126r43 128r33 130r33 134r28 +. 138m13 138r13 +119b7 Success{boolean} 132m33 133r17 +143p7 Data{21|376P9} 145r34 146r28 147r36 +151p7 Data{21|376P9} 153r34 154r28 155r36 +159p7 Data{21|376P9} 161r34 162r28 163r10 163r28 164r36 +168p7 Data{21|376P9} 170r34 171r29 172r36 +180p7 Data{21|376P9} 182r34 183r35 184r42 185r36 +193p7 Data{21|376P9} 195r34 196r35 197r42 198r36 +216p7 Data{21|376P9} 219r38 234r34 236r10 246r29 265r24 294r26 310r29 320r29 +. 331r42 335r29 345r29 354r43 356r34 363r34 373r30 379r30 388r36 +217m7 Perms{9|17M9} 274r34 +218m7 Dir_Type{9|16M9} 299r26 308r39 333r29 +219b7 Has_64bit_Sz{boolean} 296r54 313r57 323r57 338r57 348r57 +220p7 Last_Component{21|381P9} 249m29 249r29 300r26 391m13 391r13 +221m7 Target_Index{9|18M9} 250m29 255r51 266m24 298r26 308r18 312r29 322r29 +. 337r29 347r29 354r24 374r30 +221m21 Parent_Index{9|18M9} 252m29 255r26 297r26 330r29 380r30 +222p7 Target_Inode{21|349P9} 251r29 273r7 311r29 313r39 321r29 323r39 336r29 +. 338r39 346r29 348r39 369r10 369r42 375r30 389m13 389r13 +222p21 Parent_Inode{21|349P9} 253r29 258r42 295r26 296r36 368r10 368r42 381r30 +. 390m13 390r13 +223r7 Descriptor{21|287R9} 358m34 358r34 361m10 361r40 365m34 365r34 +224m7 Desc_Index{9|18M9} 354m10 357r34 364r34 +225r7 Ent{21|351R9} 229r40 230m34 230r34 308m10 329m10 349r35 +226a7 Name{string} 232m34 232r34 318m10 343m10 +227i7 Temp{natural} 316m29 326m29 341m29 351m29 +228b7 Success{boolean} 254m29 255r10 267m24 268r14 301m26 302r14 317m29 327m29 +. 342m29 352m29 360m34 367m34 377m30 383m30 385r21 +229a7 Ent_Data{8|29A9} 315r29 340r29 +231a7 Name_Data{8|29A9} 325r29 350r29 +387L6 Cleanup 238r15 241r15 257r15 261r15 270r15 304r15 +406p7 Data{21|376P9} 408r34 409r10 416r36 +428p7 Data{21|376P9} 434r34 436r10 446r29 464r29 484r30 495r30 506r26 508r54 +. 518r36 +429p7 Last_Component{21|381P9} 449m29 449r29 459m13 459r13 467m29 467r29 +. 512r26 522m13 522r13 +430m7 Path_Index{9|18M9} 450m29 485r30 496r30 510r26 +430m19 Target_Index{9|18M9} 468m29 473r51 +430m33 Parent_Index{9|18M9} 452m29 470m29 473r26 509r26 +431p7 Path_Inode{21|349P9} 451r29 486r30 493r7 493r37 497r30 519m13 519r13 +431p19 Target_Inode{21|349P9} 469r29 520m13 520r13 +431p33 Parent_Inode{21|349P9} 453r29 471r29 476r42 507r26 508r36 521m13 521r13 +432b7 Success{boolean} 454m29 455r14 472m29 473r10 488m30 489r14 499m30 500r14 +. 513m26 515r21 +517L6 Cleanup 438r15 441r15 457r15 475r15 479r15 491r15 502r15 +535p7 Data{21|376P9} 544r34 546r10 555r27 566r27 590r39 595r29 609r26 621r36 +536p7 Last_Component{21|381P9} 558m31 558r31 564m13 564r13 569m31 569r31 +. 615r26 626m13 626r13 +537m7 Source_Index{9|18M9} 559m27 +537m21 Target_Index{9|18M9} 570m27 599r29 613r26 +538m7 Source_Parent_Index{9|18M9} 561m27 +538m28 Target_Parent_Index{9|18M9} 572m27 579r26 598r29 612r26 +539p7 Source_Inode{21|349P9} 560r27 622m13 622r13 +539p21 Target_Inode{21|349P9} 571r27 623m13 623r13 +540p7 Source_Parent_Inode{21|349P9} 562r27 624m13 624r13 +540p28 Target_Parent_Inode{21|349P9} 573r27 582r42 589r39 596r29 610r26 625m13 +. 625r13 +541m7 Target_Parent_Size{9|19M9} 589m7 597r29 611r26 +542b7 Success1{boolean} 563m27 579r14 600m29 601r17 616m26 618r21 +542b17 Success2{boolean} 574m27 579r63 593r10 +620L6 Cleanup 548r15 551r15 581r15 586r15 603r18 +636p7 Data{21|376P9} 642r34 644r10 653r27 672r26 674r54 682r36 +637p7 Last_Component{21|381P9} 656m31 656r31 685m13 685r13 +638m7 Path_Index{9|18M9} 657m27 676r26 +638m19 Parent_Index{9|18M9} 659m27 675r26 +639p7 Path_Inode{21|349P9} 658r27 683m13 683r13 +639p19 Parent_Inode{21|349P9} 660r27 665r42 673r26 674r36 684m13 684r13 +640b7 Success{boolean} 661m27 662r14 677m26 679r21 +681L6 Cleanup 646r15 649r15 664r15 668r15 +696p7 FS{21|376P9} 704r34 709r30 728r29 729r56 752r36 +697p7 Fetched_Inode{21|349P9} 711r30 717r29 729r37 730r29 753m13 753r13 +698m7 Curr_Index{9|19M9} 723m7 731r29 739m10 +699m7 Next_Index{9|19M9} 724m7 733m29 739r24 +700m7 Entry_Count{9|19M9} 725m7 740r13 748m10 748r25 +701r7 Entity{20|57R9} 732m29 742r57 +702b7 Succ{boolean} 713m30 714r14 734m29 735r17 +751L6 Cleanup 716r15 720r15 +763p7 FS{21|376P9} 767r34 770r30 780r56 790r36 +764p7 Fetched_Inode{21|349P9} 772r30 776r26 779r27 780r37 791m13 791r13 +765b7 Succ{boolean} 774m30 775r10 +802p7 FS{21|376P9} 807r34 811r30 829r25 831r54 840r36 +803e7 Fetched_Type{20|39E9} 821m7 822r12 +804p7 Fetched_Inode{21|349P9} 813r30 821r39 830r25 831r35 841m13 841r13 +805b7 Succ{boolean} 815m30 816r14 835m25 837r22 +839L6 Cleanup 818r15 824r67 825r67 +852p7 FS{21|376P9} 856r34 859r10 869r30 885r25 888r54 897r36 +853p7 Fetched_Inode{21|349P9} 871r30 877r27 878r29 886r25 888r35 898m13 898r13 +854b7 Succ{boolean} 873m30 874r14 892m25 894r22 +896L6 Cleanup 861r15 876r15 881r15 +907K15 Align[11|19] 934r35 +908p7 FS{21|376P9} 909r68 914r34 917r30 924r38 933r51 943r36 +909m7 Blk{9|19M9} 934r64 +910m7 Size{9|19M9} 924m10 932r35 934r58 +911p7 Inod{21|349P9} 919r30 924r28 927r51 928r46 929r48 930r48 931r45 935r49 +. 936r49 937r49 944m13 944r13 +912b7 Succ{boolean} 921m30 923r10 +953p7 FS{21|376P9} 958r34 960r10 970r30 983r46 989r32 1000r46 1003r39 1015r36 +954p7 Fetched{21|349P9} 972r30 976r26 977r24 983r33 990r32 1000r23 1005r39 +. 1016m13 1016r13 +955m7 Fetched_Size{9|19M9} 983m7 984r10 987r13 +956b7 Success{boolean} 974m30 975r14 985m10 994m32 996m13 999r13 1000m70 +. 1001r16 1007m39 1012r21 +1014L6 Cleanup 962r15 980r15 +1026N7 EXT_GETFLAGS 1055r18 +1027N7 EXT_SETFLAGS 1058r18 +1029p7 FS{21|376P9} 1034r34 1040r10 1046r30 1061r39 1073r36 +1030p7 Inod{21|349P9} 1048r30 1056r26 1059r16 1063r39 1074m13 1074r13 +1031b7 Success{boolean} 1050m30 1051r14 1065m39 1066r30 +1032m7 Flags{9|18M9} 1056m16 1059r30 +1072L6 Cleanup 1042r15 +1083p7 FS{21|376P9} 1088r34 1094r10 1100r30 1111r33 1120r36 +1084p7 Inod{21|349P9} 1102r30 1108r46 1109r10 1113r33 1121m13 1121r13 +1085b7 Success{boolean} 1104m30 1105r14 1115m33 1116r24 +1086e7 Typ{20|39E9} 1108m10 1109r47 +1119L6 Cleanup 1096r15 +1131p7 FS{21|376P9} 1140r34 1142r10 1148r30 1159r33 1168r36 +1132p7 Inod{21|349P9} 1150r30 1156r10 1157r10 1161r33 1169m13 1169r13 +1133b7 Success{boolean} 1152m30 1153r14 1163m33 1164r24 +1167L6 Cleanup 1144r15 +1184p7 FS{21|376P9} 1190r34 1192r10 1202r30 1213r33 1222r36 +1185p7 Inod{21|349P9} 1204r30 1210r10 1211r10 1215r33 1223m13 1223r13 +1186m7 AS=1186:37{9|19M9} 1210r51 +1187m7 MS=1187:37{9|19M9} 1211r51 +1188b7 Success{boolean} 1206m30 1207r14 1217m33 1218r24 +1221L6 Cleanup 1194r15 +1227p7 FS_Data{21|376P9} 1229r31 +1258i7 Name_Start{natural} 1268m7 1327m10 1415r24 1415r39 1416r46 +1259e7 Target_Type{20|39E9} 1275m10 1300m10 1323r13 1363m16 1368r42 +1260m7 Target_Sz{9|19M9} 1274m10 1299m10 1336r32 1362m16 1371r23 +1261r7 Entity{20|57R9} 1339m32 1352r16 1352r41 1355r45 +1262i7 First_I{natural} 1281m10 1306m10 1317r13 1317r34 1319m13 1319r24 1327r26 +. 1353r22 1396m10 +1262i16 Last_I{natural} 1282m10 1307m10 1312r13 1314r16 1314r51 1315m13 1315r23 +. 1317r23 1318m13 1318r24 1343r19 1353r33 1368r19 1381r58 1395m10 1395r21 +. 1396r21 +1263m7 Curr_Index{9|19M9} 1328m10 1338r32 1350m13 +1263m19 Next_Index{9|19M9} 1329m10 1340m32 1350r27 +1264a7 Symlink{string} 1372m23 1381r23 +1265i7 Symlink_Len{natural} 1373m23 1374r22 1381r37 +1313L9 Retry_Component 1320r18 +1394L9 Next_Iteration 1390r21 +1399L6 Perfect_Hit_Return 1278r18 1303r18 +1403L6 Target_Miss_Parent_Hit_Return 1344r24 +1408L6 Absolute_Miss_Return 1293r18 1309r15 1324r18 1346r24 1365r24 1375r27 +1414L6 Fix_Last_Component 1401r12 1406r12 +1426i7 Final_Length{natural} 1430m7 1431r10 1437r21 1440r20 +1427a7 Str_Data{8|29A9} 1438r54 +1437i11 I{integer} 1438r29 1438r64 +1452i7 Ret_Count{natural} 1465m25 1467r26 1493m28 1495r28 +1453r7 Dir{21|351R9} 1457m34 1457r34 1468r10 1474r44 1481r39 1500r43 1505r51 +1454m7 Tmp_Index{9|19M9} 1478m10 1483m13 1483r26 1491r28 +1455e7 Tmp_Type{20|39E9} 1481m13 1484m13 1503r30 +1456a7 Dir_Data{8|29A9} 1464m25 1467r39 +1474a10 Dir_Name{string} 1475r43 1476m37 1476r37 1502r30 1504r35 1504r55 +1475a10 Name_Data{8|29A9} 1492m28 1495r41 +1510L6 Error_Return 1470r15 1496r18 +1522i7 Ret_Count{natural} 1531m27 1538m27 1542r31 +1523a7 Super_Data{8|29A9} 1530r27 1537m27 1542r43 +1552i7 Descr_Size{natural} 1555r42 1562r40 +1553m7 Offset{9|18M9} 1559m10 1559r20 1562m7 1562r17 1567r40 1574r40 +1554i7 Ret_Count{natural} 1569m27 1576m27 1580r23 +1555a7 Result_Data{8|29A9} 1568r27 1575m27 1580r35 +1595m7 Table_Index{9|18M9} 1602m7 1616r17 +1595m20 Descriptor_Index{9|18M9} 1603m7 1607r31 +1596r7 Block_Descriptor{21|287R9} 1608m31 1608r31 1615r17 +1597m7 Offset{9|18M9} 1615m7 1621r40 1628r40 +1598i7 Ret_Count{natural} 1623m27 1630m27 1633r23 +1599a7 Result_Data{8|29A9} 1622r27 1629m27 1633r35 +1646m7 Adjusted_Block{9|18M9} 1665r10 1668m10 1671r10 1672m10 1672r29 1673r29 +. 1674r29 1678m13 1678r39 1679r39 1680r39 1727r39 +1647m7 Block_Level{9|18M9} 1671r28 1672r46 1673r46 1674r48 1677r29 1678r57 +. 1679r56 1680r58 +1648m7 Block_Index{9|18M9} 1660m34 1660r34 1704r20 1721r17 1731r14 +1649m7 Single_Index{9|18M9} 1673m10 1677r13 1710r61 +1650m7 Indirect_Offset{9|18M9} 1674m10 1680m13 1700r30 1717r40 +1651m7 Indirect_Block{9|18M9} 1658m34 1658r34 1675m10 1699r43 1716r40 +1652m7 Double_Indirect{9|18M9} 1679m13 1686r51 1692r43 +1653m7 Single_Indirect_Index{9|18M9} 1656m34 1656r34 1681m13 1693r45 +1655a7 Single_Indirect_Index_Data{8|29A9} 1687m30 +1657a7 Indirect_Block_Data{8|29A9} 1694m30 1711m27 +1659a7 Block_Index_Data{8|29A9} 1701m30 1718m27 1728m24 +1662i7 Discard_1{natural} 1688m30 1695m30 1702m30 1712m27 1719m27 1729m24 +1663b7 Discard_2{boolean} 1689m30 1696m30 1703m30 1713m27 1720m27 1730m24 +1743i7 Final_Count{natural} 1755m10 1758r26 1762r40 1787r20 +1744m7 Final_Offset{9|19M9} 1759m10 1760r28 1761m10 1761r28 1764r60 1765r61 +. 1773r62 +1745m7 Block_Searched{9|19M9} 1760m10 1769r48 +1746m7 Block_Index{9|18M9} 1768m10 1772r40 +1747m7 Step_Size{9|19M9} 1762m10 1764r13 1765m13 1776r42 1784r46 +1748i7 Bytes_Read{natural} 1758r13 1759r51 1762r68 1774r46 1775r46 1784m10 +. 1784r24 +1801m7 Final_Offset{9|19M9} 1838m10 1839r28 1840m10 1840r28 1843r60 1844r61 +. 1852r62 +1802m7 Block_Searched{9|19M9} 1839m10 1848r48 +1803m7 Block_Index{9|18M9} 1847m10 1851r40 +1804m7 Step_Size{9|19M9} 1841m10 1843r13 1844m13 1855r42 1862r46 +1805i7 Bytes_Read{natural} 1837r13 1838r51 1841r68 1853r46 1854r46 1862m10 +. 1862r24 +1869L6 Error_Return 1816r18 1824r18 1833r18 1859r18 +1883m7 Offset{9|19M9} 1895r39 +1886m7 BCount{9|19M9} 1896r39 +1908m7 Ret_Blk{9|18M9} 1911m10 1912r13 1917m31 1927r32 +1910m11 I{9|18M9} 1911r71 1926r44 +1951m7 Adjusted_Block{9|18M9} 1971r10 1972r38 1976m10 1976r28 1979r10 1980m10 +. 1980r29 1981r29 1982r29 1986m13 1986r39 1987r39 1988r39 2143r39 +1952m7 Block_Level{9|18M9} 1979r28 1980r46 1981r46 1982r48 1985r29 1986r57 +. 1987r56 1988r58 +1953m7 DBlock{9|18M9} 1966m34 1966r34 +1954m7 Single_Index{9|18M9} 1981m10 1985r13 2090r61 2107r43 +1955m7 Indirect_Offset{9|18M9} 1982m10 1988m13 2063r30 2116r40 +1956m7 Indirect_Block{9|18M9} 1964m34 1964r34 1983m10 2040r16 2057m16 2062r43 +. 2095r13 2100m31 2115r40 +1957m7 Double_Indirect{9|18M9} 1987m13 2010r51 2026r53 2034r43 2050r46 +1958m7 Single_Indirect_Index{9|18M9} 1962m34 1962r34 1989m13 2015r16 2020m34 +. 2035r45 2052r46 +1959m7 Temp{9|18M9} 1996m34 1998r42 2045m34 2057r34 2076m31 2078r39 2129m28 +. 2131r36 +1961a7 Single_Indirect_Index_Data{8|29A9} 2011m30 2027r32 +1963a7 Indirect_Block_Data{8|29A9} 2036m30 2053r32 2091m27 2108r30 +1965a7 DBlock_Data{8|29A9} 2064r30 2117r27 2144r24 +1968i7 Discard_1{natural} 2012m30 2028m32 2037m30 2054m32 2065m30 2092m27 +. 2109m30 2118m27 2145m24 +1969b7 Discard_2{boolean} 1997m34 2004m39 2013m30 2021m34 2029m32 2038m30 +. 2046m34 2055m32 2066m30 2077m31 2084m36 2093m27 2101m31 2110m30 2119m27 +. 2130m28 2137m33 2146m24 +2158i7 Ret_Count{natural} 2184m27 2215m27 +2159r7 Desc{21|287R9} 2168m34 2168r34 2175r13 2181r40 2212r40 2223m10 2223r37 +. 2240m34 2240r34 +2160m7 Curr_Block{9|18M9} 2190m10 2198m19 2206r13 2246r23 +2161p7 Bitmap{8|30P9} 2183r27 2191r19 2192r16 2196r20 2197r19 2197r33 2214r27 +. 2247m16 2247r16 2254m13 2254r13 +2164m11 I{9|18M9} 2167r34 2198r34 2239r34 +2191i14 J{integer} 2192r24 2196r28 2197r27 2197r41 2199r47 +2195i17 Bit{integer} 2196r40 2197r52 2199r69 +2203L12 Next_Next_Iteration 2193r21 +2205L9 End_Search_Loop 2200r24 +2250L6 Next_Iteration 2176r18 2207r18 +2253L6 Error_Return 2172r18 2187r18 2218r18 2234r18 2244r18 +2264i7 Ret_Count{natural} 2290m27 2325m27 +2265r7 Desc{21|287R9} 2274m34 2274r34 2281r13 2287r40 2322r40 2333m10 2333r37 +. 2338m34 2338r34 +2266m7 Curr_Block{9|18M9} 2296m10 2303m19 2305r22 2306r22 2316r13 2344r23 +2267p7 Bitmap{8|30P9} 2289r27 2297r19 2298r16 2302r20 2308r22 2308r36 2324r27 +. 2345m16 2345r16 2353m13 2353r13 +2270m11 I{9|18M9} 2273r34 2303r34 2337r34 +2297i14 J{integer} 2298r24 2302r28 2304r47 2308r30 2308r44 +2301i17 Bit{integer} 2302r40 2304r69 2308r55 +2313L12 Next_Next_Iteration 2299r21 +2315L9 End_Search_Loop 2309r27 +2348L6 Next_Iteration 2282r18 2317r18 +2351L6 Error_Return 2278r18 2293r18 2328r18 2342r18 +2367p7 Buffer{8|30P9} 2374m7 2380r25 2383r38 2394r40 2394r48 2403r28 2404r19 +. 2412r22 2412r30 2415r22 2415r30 2431r37 2434r50 2447m13 2447r13 +2368m7 Required{9|19M9} 2388m7 2401r29 +2369i7 Offset{natural} 2389m7 2391r13 2394r63 2403r19 2403r43 2412r45 2415r45 +. 2440m13 2440r23 +2370m7 Contracted{9|19M9} 2396m13 2399r58 2402r48 2403r61 2413r44 2415r63 +2371m7 Available{9|19M9} 2399m13 2401r16 2420r51 +2372i7 Ret_Count{natural} 2381m25 2383r25 2432m37 2434r37 +2393r13 Ent{21|351R9} 2398r30 2399r39 2402m16 2440r41 +2411r19 Ent2{21|351R9} 2418m19 +2414a19 Name_Buf{string} 2423m19 +2446L6 Cleanup 2385r15 2407r24 2437r24 +2458p7 Buffer{8|30P9} 2461m7 2467r25 2470r38 2481r40 2481r48 2483r40 2483r48 +. 2493r34 2496r47 2509m13 2509r13 +2459i7 Offset{natural} 2475m7 2478r13 2481r63 2501r24 2502m13 2502r24 +2459i15 Offset2{natural} 2476m7 2483r63 2501m13 +2459i24 Ret_Count{natural} 2468m25 2470r25 2494m34 2496r34 +2480r13 Ent{21|351R9} 2485r16 2486r55 2502r42 +2482r13 Ent2{21|351R9} 2486m16 2486r36 +2508L6 Cleanup 2472r15 2499r21 +2561m7 Ret{9|17M9} 2564r47 2565r47 2566r47 2567r47 2568r47 +2588m7 L32{9|18M9} 2592r27 2596r26 +2589m7 H32{9|18M9} 2593r27 2597r26 + diff --git a/obj/vfs-ext.o b/obj/vfs-ext.o new file mode 100644 index 0000000000000000000000000000000000000000..fa846f29260ea396706cd7c5e9f036dda3b8f385 GIT binary patch literal 499920 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 z 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 YD_>uKCMp{LX 18|72r24 19|39r19 299r24 402r21 427r23 +83I9*Device_Handle 18|19r23 190r24 19|29r23 +154V13*Get_Block_Size{natural} 19|373s52 385s40 +156V13*Is_Read_Only{boolean} 19|52s29 +193U14*Read 19|42s15 340s18 410s15 436s18 +194i8 Handle{83I9} 19|341r14 411r11 437r14 +195m8 Offset{7|19M9} 19|342r14 412r11 438r14 +196a8 Data{29A9} 19|343r14 413r11 439r14 +197i8 Ret_Count{natural} 19|345r14 414r11 440r14 +198b8 Success{boolean} 19|346r14 415r11 441r14 +X 7 interfac.ads +16M9*Unsigned_8 18|87r52 92r31 94r31 97r31 110r31 111r31 112r31 161r28 162r28 +. 163r28 238r36 +17M9*Unsigned_16 18|91r31 93r31 95r31 96r31 98r31 99r31 100r31 104r31 105r31 +. 107r31 108r31 117r31 164r28 165r28 166r28 167r28 168r28 169r28 170r28 +18M9*Unsigned_32 18|101r31 102r31 103r31 106r31 113r31 171r28 193r24 194r24 +. 195r24 200r23 208r18 215r24 216r28 228r45 232r30 233r30 234r30 19|54r29 +. 55r29 56r29 57r29 145r20 196r39 197r30 240r17 307r24 308r33 309r10 338r37 +. 369r43 373r23 373r39 374r23 395r18 408r34 421r24 422r28 +19M9*Unsigned_64 18|32r57 34r60 36r51 38r58 42r33 43r33 47r33 48r33 50r57 +. 71r20 90r31 209r18 228r65 229r11 234r50 19|85r57 91r60 97r51 103r58 111r33 +. 112r33 122r33 123r33 131r57 147r20 179r24 241r17 262r21 275r22 282r19 298r20 +. 306r24 310r24 322r33 323r34 328r32 329r23 330r13 330r39 332r35 384r32 386r32 +. 396r18 400r21 425r23 429r18 432r10 438r37 +71V13*Shift_Left{18M9} 19|196s27 +X 8 lib.ads +19K9*Lib 35e8 19|20r6 369r28 +X 9 lib-alignment.ads +19k13*Alignment 43e18 19|20w10 369r32 +40V13 Divide_Round_Up{7|18M9} 19|375s16[369] +X 13 system.ads +11K9*System 73e11 18|21r27 25r23 30r35 32r34 34r37 36r28 38r35 41r29 46r29 +. 50r34 53r18 58r26 61r20 69r20 77r18 19|17r6 17r35 18r6 23r28 24r28 31r27 +. 46r23 66r23 78r35 82r13 85r34 91r37 97r28 103r35 110r29 121r29 131r34 138r18 +. 221r26 230r20 296r20 364r18 +25M9*Address 18|21r34 25r30 30r42 32r41 34r44 36r35 38r42 41r36 46r36 50r41 +. 53r25 58r33 61r27 69r27 77r25 19|31r34 66r30 78r42 85r41 91r44 97r35 103r42 +. 110r36 121r36 131r41 138r25 221r33 230r27 296r27 364r25 +26m4*Null_Address{25M9} 19|46r30 82r20 +X 14 s-atacco.ads +13k16*Address_To_Access_Conversions 27e41 19|18w13 23r35 24r35 +19P9*Object_Pointer(18|189R9) 19|62r46[23] 212r37[24] +21V13*To_Pointer{19P9[19|23]} 19|79s51[23] 143s60[23] 224s18[24] 237s58[23] +. 239s18[24] 303s58[23] 305s18[24] 370s60[23] 372s18[24] +22V13*To_Address{13|25M9} 19|62s27[23] 212s18[24] +X 15 s-stoele.ads +11K16*Storage_Elements 60e28 19|17w13 17r42 +49M9*Integer_Address 19|224r42 239r42 305r42 372r42 +51V13*To_Address{13|25M9} 19|224s30 239s30 305s30 372s30 +56V13*To_Integer{49M9} 19|211s33 +X 17 vfs.ads +24K9*VFS 674e8 18|17r9 241r5 19|22r14 505r5 +28M9*File_Inode_Number<7|19M9> 18|55r22 58r48 62r20 70r20 78r18 19|140r22 +. 211r14 221r48 231r20 297r20 365r18 378r32 +39E9*File_Type 40e64 18|201r23 238r55 19|146r20 +39n23*File_Regular{39E9} 18|240r13 19|317r29 +39n37*File_Directory{39E9} 18|239r58 19|146r35 168r27 249r29 +41R9*File_Stat 54e14 18|79r22 19|366r22 +42m7*Unique_Identifier{28M9} 19|378m11 +43e7*Type_Of_File{39E9} 19|379m11 +44m7*Mode{32M12} 19|380m11 +45m7*UID{7|18M9} 19|381m11 +46m7*GID{7|18M9} 19|382m11 +47i7*Hard_Link_Count{positive} 19|383m11 +48m7*Byte_Size{7|19M9} 19|384m11 +49i7*IO_Block_Size{natural} 19|385m11 +50m7*IO_Block_Count{7|19M9} 19|386m11 +51r7*Creation_Time{35R9} 19|387m11 +52r7*Modification_Time{35R9} 19|388m11 +53r7*Access_Time{35R9} 19|389m11 +58m7*Inode_Number{7|19M9} 19|281m32 +59a7*Name_Buffer{string} 19|283m32 +60i7*Name_Len{natural} 19|285m32 +61e7*Type_Of_File{39E9} 19|286m32 +63A9*Directory_Entities(57R9) 18|64r24 19|233r24 +234E9*FS_Status 242e16 18|56r22 66r24 74r24 80r22 19|141r22 235r24 301r24 +. 367r22 +235n8*FS_Success{234E9} 19|213r18 254r18 326r18 390r18 +236n8*FS_Invalid_Value{234E9} 19|218r18 250r21 318r21 +241n8*FS_IO_Failure{234E9} 19|258r24 348r24 355r24 +X 18 vfs-fat.ads +17K13*FAT 17|24k9 18|84E4 241l9 241e12 19|22b18 505l9 505t12 +18U14*Probe 19>8 20>8 21<8 19|28b14 63l8 63t13 +19i8 Handle{6|83I9} 19|29b8 42r21 51r29 52r43 +20b8 Do_Read_Only{boolean} 19|30b8 33r28 +21m8 Data_Addr{13|25M9} 19|31b8 46m10 62m7 +24U14*Remount 25>8 26>8 27>8 28<8 19|65b14 76l8 76t15 +25m8 FS{13|25M9} 19|66b8 71r28 +26b8 Do_Read_Only{boolean} 19|67b8 72r28 +27b8 Do_Relatime{boolean} 19|68b8 73r28 +28b8 Success{boolean} 19|69b8 75m7 +30U14*Unmount 30=23 19|78b14 83l8 83t15 +30m23 FS{13|25M9} 19|78b23 79r63 82m7 +32V13*Get_Block_Size{7|19M9} 32>29 19|85b13 89l8 89t22 +32m29 FS{13|25M9} 19|85b29 86r28 +34V13*Get_Fragment_Size{7|19M9} 34>32 19|91b13 95l8 95t25 +34m32 FS{13|25M9} 19|91b32 92r28 +36V13*Get_Size{7|19M9} 36>23 19|97b13 101l8 101t16 +36m23 FS{13|25M9} 19|97b23 98r28 +38V13*Get_Inode_Count{7|19M9} 38>30 19|103b13 107l8 107t23 +38m30 FS{13|25M9} 19|103b30 104r28 +40U14*Get_Free_Blocks 41>8 42<8 43<8 19|109b14 118l8 118t23 +41m8 FS{13|25M9} 19|110b8 114r28 +42m8 Free_Blocks{7|19M9} 19|111b8 116m7 +43m8 Free_Unpriviledged{7|19M9} 19|112b8 117m7 +45U14*Get_Free_Inodes 46>8 47<8 48<8 19|120b14 129l8 129t23 +46m8 FS{13|25M9} 19|121b8 125r28 +47m8 Free_Inodes{7|19M9} 19|122b8 127m7 +48m8 Free_Unpriviledged{7|19M9} 19|123b8 128m7 +50V13*Get_Max_Length{7|19M9} 50>29 19|131b13 135l8 135t22 +50m29 FS{13|25M9} 19|131b29 132r28 +52U14*Open 53>8 54>8 55<8 56<8 19|137b14 219l8 219t12 +53m8 FS{13|25M9} 19|138b8 143r72 +54a8 Path{string} 19|139b8 153r10 157r18 158r18 161r23 164r26 164r45 193r33 +55m8 Ino{17|28M9} 19|140b8 211m7 217m7 +56e8 Success{17|234E9} 19|141b8 213m7 218m7 +58U14*Close 58>21 58>42 19|221b14 227l8 227t13 +58m21 FS{13|25M9} 19|221b21 222r28 +58m42 Ino{17|28M9} 19|221b42 224r59 +60U14*Read_Entries 61>8 62>8 63>8 64<8 65<8 66<8 19|229b14 293l8 293t20 +61m8 FS_Data{13|25M9} 19|230b8 237r70 +62m8 Ino{17|28M9} 19|231b8 239r59 +63i8 Offset{natural} 19|232b8 275r35 +64a8 Entities{17|63A9} 19|233b8 278r28 280r24 281m16 283m16 285m16 286m16 +65i8 Ret_Count{natural} 19|234b8 248m7 278r16 280r41 288m13 288r26 +66e8 Success{17|234E9} 19|235b8 250m10 254m7 258m13 +68U14*Read 69>8 70>8 71>8 72<8 73<8 74<8 19|295b14 361l8 361t12 +69m8 FS_Data{13|25M9} 19|296b8 303r70 +70m8 Ino{17|28M9} 19|297b8 305r59 +71m8 Offset{7|19M9} 19|298b8 310r39 322r10 323r69 +72a8 Data{6|29A9} 19|299b8 313r39 322r19 343m27 343r27 343r33 344r33 +73i8 Ret_Count{natural} 19|300b8 316m7 327r13 329r36 343r46 344r46 359m10 +. 359r23 +74e8 Success{17|234E9} 19|301b8 318m10 326m7 348m13 355m13 +76U14*Stat 77>8 78>8 79<8 80<8 19|363b14 391l8 391t12 +77m8 Data{13|25M9} 19|364b8 370r72 +78m8 Ino{17|28M9} 19|365b8 372r59 +79r8 S{17|41R9} 19|366b8 377m7 +80e8 Success{17|234E9} 19|367b8 390m7 +84N4 Sector_Size 229r34 19|309r53 429r59 +85N4 Boot_Signature 19|44r31 +87A9 FAT32_Bytes(7|16M9) 89r31 109r31 116r31 +88R9 BIOS_Parameter_Block 118e15 119r8 192r24 19|36r19 +89a7*Infinite_Loop{87A9} 120r7 +90m7*OEM_Identifier{7|19M9} 121r7 +91m7*Bytes_Per_Sector{7|17M9} 122r7 +92m7*Sectors_Per_Cluster{7|16M9} 123r7 19|179r46 262r41 309r30 338r57 408r56 +93m7*Reserved_Sectors{7|17M9} 124r7 19|55r45 56r45 +94m7*FAT_Count{7|16M9} 125r7 19|57r45 +95m7*Root_Entry_Count{7|17M9} 126r7 +96m7*Sector_Count{7|17M9} 127r7 19|54r45 +97m7*Media_Descriptor_Type{7|16M9} 128r7 +98m7*Sectors_Per_FAT_Old{7|17M9} 129r7 +99m7*Sectors_Per_Track{7|17M9} 130r7 +100m7*Head_Count{7|17M9} 131r7 +101m7*Hidden_Sector_Count{7|18M9} 132r7 +102m7*Large_Sector_Count{7|18M9} 133r7 19|59r34 +103m7*Sectors_Per_FAT{7|18M9} 134r7 19|57r61 429r40 +104m7*Flags{7|17M9} 135r7 +105m7*FAT_Version_Number{7|17M9} 136r7 +106m7*Root_Entry_Cluster{7|18M9} 137r7 19|145r44 +107m7*FSInfo_Sector{7|17M9} 138r7 +108m7*Backup_MBR_Sector{7|17M9} 139r7 +109a7*Reserved{87A9} 140r7 +110m7*Drive_Number{7|16M9} 141r7 +111m7*NT_FLags{7|16M9} 142r7 +112m7*Signature{7|16M9} 143r7 +113m7*Volume_ID_Serial{7|18M9} 144r7 +114a7*Volume_Label{string} 145r7 +115a7*System_Identifier{string} 146r7 +116a7*Boot_Code{87A9} 147r7 +117m7*Boot_Signature{7|17M9} 148r7 19|44r13 +151N4 Directory_Read_Only +152N4 Directory_Hidden +153N4 Directory_System +154N4 Directory_Volume_ID +155N4 Directory_Directory 239r27 +156N4 Directory_Archive +157N4 Directory_LFN 19|192r36 192r54 276r33 276r51 +158R9 Directory_Entry 172e15 173r8 202r23 210r22 221r15 224r17 19|148r20 +. 242r17 397r22 402r42 452r15 470r17 +159a7*File_Name{string} 174r7 19|478r20 495r17 500r17 +160a7*File_Extension{string} 175r7 19|485r20 496r17 +161m7*Attributes{7|16M9} 176r7 19|187r20 192r21 195r44 270r17 276r18 286r62 +162m7*Reserved_NT{7|16M9} 177r7 +163m7*Creation_Time_1{7|16M9} 178r7 +164m7*Creation_Time_2{7|17M9} 179r7 +165m7*Creation_Time_3{7|17M9} 180r7 +166m7*Access_Time{7|17M9} 181r7 +167m7*First_Cluster_High{7|17M9} 182r7 19|196r56 +168m7*Modification_Time{7|17M9} 183r7 +169m7*Modification_Date{7|17M9} 184r7 +170m7*First_Cluster_Low{7|17M9} 185r7 19|197r47 282r36 +171m7*Size{7|18M9} 186r7 19|322r60 323r61 375r47 384r59 +189R9 FAT_Data 196e14 197r36 19|23r66 25r56 50r19 +190i7*Handle{6|83I9} 19|51m11 341r30 373r71 385r59 411r29 437r32 +191b7*Is_Read_Only{boolean} 19|52m11 +192r7*BPB{88R9} 19|53m11 145r40 179r42 262r37 309r26 338r53 408r52 429r36 +193m7*Sector_Count{7|18M9} 19|54m11 58r15 59m15 +194m7*FAT_Offset{7|18M9} 19|55m11 430r45 +195m7*Cluster_Offset{7|18M9} 19|56m11 337r40 407r39 +197P9 FAT_Data_Acc(189R9) 207r18 214r24 19|25r66 35r19 79r14 79r30 143r23 +. 143r39 237r21 237r37 303r21 303r37 370r23 370r39 394r18 420r24 +199R9 FAT_File 203e14 204r36 19|24r66 26r56 210r21 +200m7*Begin_Cluster{7|18M9} 19|240r37 307r44 378r56 +201e7*Inner_Type{17|39E9} 19|249r15 317r15 379r37 +202r7*FS_Entry{158R9} 19|322r51 323r52 375r38 384r50 +204P9 FAT_File_Acc(199R9) 19|26r66 144r20 223r14 223r30 238r23 238r39 304r24 +. 304r40 371r23 371r39 +206U14 Read_Directory_Entry 207>8 208>8 209>8 210<8 211<8 19|174s13 256s10 +. 393b14 417l8 417t28 +207p8 Data{197P9} 19|394b8 407r34 408r47 411r24 +208m8 Cluster{7|18M9} 19|395b8 406r34 +209m8 Index{7|19M9} 19|396b8 412r33 +210r8 Result{158R9} 19|397b8 403m26 403r26 +211b8 Success{boolean} 19|398b8 415m24 416m7 416r18 +213U14 Get_Next_Cluster 214>8 215>8 216<8 217<8 19|181s16 264s13 353s10 419b14 +. 448l8 448t24 +214p8 Data{197P9} 19|420b8 429r31 430r40 437r27 +215m8 Cluster_Index{7|18M9} 19|421b8 432r23 438r50 +216m8 Returned{7|18M9} 19|422b8 427m63 427r63 433m10 445r24 +217b8 Success{boolean} 19|423b8 434m10 441m27 442r17 443m13 445m13 +219V13 Are_Paths_Equal{boolean} 220>8 221>8 19|193s16 450b13 467l8 467t23 +220a8 Base{string} 19|451b8 455r34 +221r8 Ent{158R9} 19|452b8 465r21 +223U14 Compose_Path 224>8 225<8 226<8 19|279s16 465s7 469b14 504l8 504t20 +224r8 Ent{158R9} 19|470b8 478r16 485r16 495r13 496r13 500r13 +225a8 Result{string} 19|471b8 494m10 494r18 494r34 499m10 499r18 499r34 +226i8 Length{natural} 19|472b8 503m7 +228V13 Sector_To_Disk_Offset{7|19M9} 228>36 235s8 19|430s17 +228m36 Sector{7|18M9} 229r24 +231V13 Cluster_To_Disk_Offset{7|19M9} 232>8 233>8 234>8 19|335s28 405s17 +232m8 Cluster{7|18M9} 235r48 19|336r14 406r11 +233m8 Cluster_Begin{7|18M9} 235r31 19|337r14 407r11 +234m8 Sectors_Per_Cluster{7|18M9} 236r31 19|338r14 408r11 +238V13 Get_Type{17|39E9} 238>23 19|195s30 286s48 +238m23 Attributes{7|16M9} 239r12 +X 19 vfs-fat.adb +23K14 Conv_1[14|13] 62r20 62r39 79r44 143r53 237r51 303r51 370r53 +24K14 Conv_2[14|13] 212r11 212r30 224r11 239r11 305r11 372r11 +25U14 Free_1[3|14] 81s7 +26U14 Free_2[3|14] 226s7 +35p7 Data{18|197P9} 50m7 58r10 59r10 62r62 +36r7 BP{18|88R9} 39r40 40m34 40r34 44r10 53r29 54r42 55r42 56r42 57r42 57r58 +. 59r31 +37i7 Ret_Count{natural} 42m41 43r25 +38b7 Success{boolean} 42m52 43r14 +39a7 BP_Data{6|29A9} 42m32 43r38 +79p7 Data{18|197P9} 81m15 81r15 +143p7 Data{18|197P9} 145r35 174r35 179r37 181r34 +144p7 Result{18|204P9} 210m7 212r53 +145m7 Cluster{7|18M9} 174r41 181r40 181m49 196m16 210r31 +146e7 Inner_Type{17|39E9} 168r13 195m16 210r40 +147m7 Index{7|19M9} 172m10 174r50 179r16 180m16 201m13 201r22 +148r7 Ent{18|158R9} 174m57 187r16 192r17 193r63 195r40 196r52 197r43 210r52 +149i7 First_I{natural} 157m7 193r39 206m10 +150i7 Last_I{natural} 158m7 161r13 164r16 164r51 165m13 165r23 193r50 205m10 +. 205r21 206r21 +151b7 Success2{boolean} 174m62 175r20 181m58 182r23 +204L9 Next_Iteration 198r21 +209L6 End_Return 154r15 +216L6 Error_Return 169r18 176r21 183r24 188r21 +223p7 File{18|204P9} 226m15 226r15 +237p7 FS{18|197P9} 256r32 262r34 264r31 +238p7 File{18|204P9} 240r32 249r10 +240m7 Cluster{7|18M9} 256r36 264r35 264m44 +241m7 Index{7|19M9} 256r45 262r13 263m13 275r13 291m10 291r19 +242r7 Ent{18|158R9} 256m52 270r13 276r14 279r30 282r32 286r58 +243a7 Composed{string} 279m35 284r19 +244i7 Composed_Len{natural} 279m45 283r50 284r34 285r48 +245i7 Temp{natural} 280m16 281r26 283r26 285r26 286r26 +246b7 Success2{boolean} 256m57 257r17 264m53 265r20 +303p7 FS{18|197P9} 309r23 337r37 338r50 341r27 353r28 +304p7 File{18|204P9} 307r39 317r10 322r46 323r47 +306m7 Cluster_Offset{7|19M9} 335m10 342r27 +307m7 Cluster{7|18M9} 336r37 353r32 353m41 +308m7 Cluster_Sz{7|18M9} 330r52 332r48 +310m7 Final_Offset{7|19M9} 330r66 332r62 342r44 352m10 +311i7 Step_Size{natural} 328m10 330r26 332m13 344r62 359r35 +312i7 Discard{natural} 345m27 +313i7 Final_Count{natural} 323m10 327r25 328r45 +314b7 Succ{boolean} 346m27 347r17 353m50 354r17 +369K15 Align[9|19] 375r10 +370p7 FS{18|197P9} 373r68 385r56 +371p7 File{18|204P9} 375r33 378r51 379r32 384r45 +373m7 Blk{7|18M9} 375r53 +374m7 Cnt{7|18M9} 386r45 +400m7 Offset{7|19M9} 405m7 412r24 +401i7 Ret_Count{natural} 414m24 416r30 +402a7 Result_Data{6|29A9} 413m24 416r42 +425m7 Limit{7|19M9} 429m7 432r41 +425m14 Offset{7|19M9} 430m7 438r27 +426i7 Ret_Count{natural} 440m27 442r28 +427a7 Returned_Data{6|29A9} 439m27 442r41 +454N7 Offset 461r53 +455a7 Base_Copy{string} 459m16 459r16 466r14 +456a7 Composed{string} 465m26 466r26 +457i7 Composed_Len{natural} 465m36 466r41 +459e11 C=459:16{character} 460r13 461r13 461r48 +474i7 Ret{natural} 493m10 494r49 498m10 499r49 503r17 +475i7 Ent_Name_Len{natural} 482m10 482r26 493r17 495r33 498r17 500r33 +476i7 Ent_Ext_Len{natural} 489m10 489r25 492r10 493r36 496r38 +478e11 C{character} 479r13 +485e11 C{character} 486r13 + diff --git a/obj/vfs-fat.o b/obj/vfs-fat.o new file mode 100644 index 0000000000000000000000000000000000000000..f0dd1ac73d9107925d62c97e4bd4a897f806d3e0 GIT binary patch literal 125360 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

      R~<<7mK`N*RkOctbOa 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 UwR&mO*MBoHPu0f3kU9PT0ge+LqW}N^ literal 0 HcmV?d00001 diff --git a/obj/vfs.adb.stderr b/obj/vfs.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/vfs.adb.stdout b/obj/vfs.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/vfs.ali b/obj/vfs.ali new file mode 100644 index 0000000..6123b87 --- /dev/null +++ b/obj/vfs.ali @@ -0,0 +1,809 @@ +V "GNAT Lib v14" +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g0a370c9" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -gnateDALLOCONLY=False +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RV NO_IMPLICIT_CONDITIONALS +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RV NO_RECURSION +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RV NO_IMPLICIT_LOOPS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U vfs%b vfs.adb 96e1e2f7 NE OO PK IU +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s +W vfs%s vfs.adb vfs.ali +W vfs.dev%s vfs-dev.adb vfs-dev.ali +W vfs.ext%s vfs-ext.adb vfs-ext.ali +W vfs.fat%s vfs-fat.adb vfs-fat.ali +N A194:7 gnatprove false_positive "range check might fail" "in List? how?" + +U vfs%s vfs.ads 1b23f56c NE OO PK IU +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W devices%s devices.adb devices.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-uncdea.ads 20241115151050 f341340f ada.unchecked_deallocation%s +D arch.ads 20241115151036 7fd82c9e arch%s +D arch-mmu.ads 20241115151036 1ac94a0b arch.mmu%s +D devices.ads 20241115151036 f45ecf09 devices%s +D interfac.ads 20241115151050 f8f85574 interfaces%s +D lib.ads 20241115151036 8d95f6f9 lib%s +D lib-synchronization.ads 20241115151036 9c09bc37 lib.synchronization%s +D memory.ads 20241115151036 335640bf memory%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D vfs.ads 20241115151036 63b4365d vfs%s +D vfs.adb 20241115151036 50a9d4ff vfs%b +D vfs-dev.ads 20241115151036 f8e32356 vfs.dev%s +D vfs-ext.ads 20241115151036 f0d56b8d vfs.ext%s +D vfs-fat.ads 20241115151036 5e8b7c81 vfs.fat%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [init vfs 79 14 none] +G c Z s b [mount vfs 87 14 none] +G c Z s b [mount vfs 104 14 none] +G c Z s b [unmount vfs 119 14 none] +G c Z s b [get_mount vfs 126 14 none] +G c Z s b [list_all vfs 138 14 none] +G c Z s b [get_backing_fs vfs 144 13 none] +G c Z s b [get_backing_fs_data vfs 150 13 none] +G c Z s b [get_backing_device vfs 156 13 none] +G c Z s b [get_mount_point vfs 162 14 none] +G c Z s b [remount vfs 174 14 none] +G c Z s b [get_block_size vfs 185 14 none] +G c Z s b [get_fragment_size vfs 192 14 none] +G c Z s b [get_size vfs 198 14 none] +G c Z s b [get_inode_count vfs 204 14 none] +G c Z s b [get_free_blocks vfs 211 14 none] +G c Z s b [get_free_inodes vfs 221 14 none] +G c Z s b [get_max_length vfs 230 14 none] +G c Z s b [open vfs 255 14 none] +G c Z s b [create_node vfs 276 14 none] +G c Z s b [create_symbolic_link vfs 294 14 none] +G c Z s b [create_hard_link vfs 312 14 none] +G c Z s b [rename vfs 331 14 none] +G c Z s b [unlink vfs 348 14 none] +G c Z s b [close vfs 359 14 none] +G c Z s b [read_entries vfs 369 14 none] +G c Z s b [read_symbolic_link vfs 384 14 none] +G c Z s b [read vfs 400 14 none] +G c Z s b [write vfs 418 14 none] +G c Z s b [stat vfs 433 14 none] +G c Z s b [truncate vfs 445 14 none] +G c Z s b [io_control vfs 458 14 none] +G c Z s b [mmap vfs 475 14 none] +G c Z s b [poll vfs 492 14 none] +G c Z s b [synchronize vfs 503 13 none] +G c Z s b [synchronize vfs 511 13 none] +G c Z s b [change_mode vfs 522 14 none] +G c Z s b [change_owner vfs 535 14 none] +G c Z s b [check_access vfs 552 14 none] +G c Z s b [change_access_times vfs 571 14 none] +G c Z s b [open vfs 593 14 none] +G c Z s b [synchronize vfs 609 14 none] +G c Z s b [create_node vfs 618 14 none] +G c Z s b [is_absolute vfs 629 13 none] +G c Z s s [apply_umask vfs 635 13 none] +G c Z s s [is_initialized vfs 639 13 none] +G c Z s b [can_access_file vfs 667 13 none] +G c Z s s [file_timestampIP vfs 35 9 none] +G c Z s s [file_statIP vfs 41 9 none] +G c Z s s [directory_entityIP vfs 57 9 none] +G c Z s s [directory_entitiesIP vfs 63 9 none] +G c Z s s [mountpoint_arrIP vfs 133 9 none] +G c Z s s [mount_dataIP vfs 648 9 none] +G c Z s s [Tmount_registryBIP vfs 659 4 none] +G r c none [mount vfs 87 14 none] [fetch devices 105 13 none] +G r c none [mount vfs 87 14 none] [read_entries vfs__dev 55 14 none] +G r c none [mount vfs 87 14 none] [read_entries vfs__ext 99 14 none] +G r c none [mount vfs 87 14 none] [read_entries vfs__fat 60 14 none] +G r c none [mount vfs 87 14 none] [stat vfs__dev 81 14 none] +G r c none [mount vfs 87 14 none] [stat vfs__ext 130 14 none] +G r c none [mount vfs 87 14 none] [stat vfs__fat 76 14 none] +G r c none [mount vfs 87 14 none] [read_symbolic_link vfs__ext 107 14 none] +G r c none [mount vfs 87 14 none] [seize lib__synchronization 27 14 none] +G r c none [mount vfs 87 14 none] [probe vfs__dev 20 14 none] +G r c none [mount vfs 87 14 none] [probe vfs__ext 21 14 none] +G r c none [mount vfs 87 14 none] [probe vfs__fat 18 14 none] +G r c none [mount vfs 87 14 none] [release lib__synchronization 31 14 none] +G r c none [mount vfs 104 14 none] [fetch devices 105 13 none] +G r c none [mount vfs 104 14 none] [read_entries vfs__dev 55 14 none] +G r c none [mount vfs 104 14 none] [read_entries vfs__ext 99 14 none] +G r c none [mount vfs 104 14 none] [read_entries vfs__fat 60 14 none] +G r c none [mount vfs 104 14 none] [stat vfs__dev 81 14 none] +G r c none [mount vfs 104 14 none] [stat vfs__ext 130 14 none] +G r c none [mount vfs 104 14 none] [stat vfs__fat 76 14 none] +G r c none [mount vfs 104 14 none] [read_symbolic_link vfs__ext 107 14 none] +G r c none [mount vfs 104 14 none] [seize lib__synchronization 27 14 none] +G r c none [mount vfs 104 14 none] [probe vfs__dev 20 14 none] +G r c none [mount vfs 104 14 none] [probe vfs__ext 21 14 none] +G r c none [mount vfs 104 14 none] [probe vfs__fat 18 14 none] +G r c none [mount vfs 104 14 none] [release lib__synchronization 31 14 none] +G r c none [unmount vfs 119 14 none] [seize lib__synchronization 27 14 none] +G r c none [unmount vfs 119 14 none] [unmount vfs__dev 33 14 none] +G r c none [unmount vfs 119 14 none] [unmount vfs__ext 33 14 none] +G r c none [unmount vfs 119 14 none] [unmount vfs__fat 30 14 none] +G r c none [unmount vfs 119 14 none] [release lib__synchronization 31 14 none] +G r c none [get_mount vfs 126 14 none] [seize lib__synchronization 27 14 none] +G r c none [get_mount vfs 126 14 none] [release lib__synchronization 31 14 none] +G r c none [list_all vfs 138 14 none] [seize lib__synchronization 27 14 none] +G r c none [list_all vfs 138 14 none] [release lib__synchronization 31 14 none] +G r c none [remount vfs 174 14 none] [remount vfs__dev 27 14 none] +G r c none [remount vfs 174 14 none] [remount vfs__ext 27 14 none] +G r c none [remount vfs 174 14 none] [remount vfs__fat 24 14 none] +G r c none [get_block_size vfs 185 14 none] [get_block_size vfs__dev 35 14 none] +G r c none [get_block_size vfs 185 14 none] [get_block_size vfs__ext 35 14 none] +G r c none [get_block_size vfs 185 14 none] [get_block_size vfs__fat 32 13 none] +G r c none [get_fragment_size vfs 192 14 none] [get_fragment_size vfs__dev 37 14 none] +G r c none [get_fragment_size vfs 192 14 none] [get_fragment_size vfs__ext 37 14 none] +G r c none [get_fragment_size vfs 192 14 none] [get_fragment_size vfs__fat 34 13 none] +G r c none [get_size vfs 198 14 none] [get_size vfs__dev 39 14 none] +G r c none [get_size vfs 198 14 none] [get_size vfs__ext 39 14 none] +G r c none [get_size vfs 198 14 none] [get_size vfs__fat 36 13 none] +G r c none [get_inode_count vfs 204 14 none] [get_inode_count vfs__dev 41 14 none] +G r c none [get_inode_count vfs 204 14 none] [get_inode_count vfs__ext 41 14 none] +G r c none [get_inode_count vfs 204 14 none] [get_inode_count vfs__fat 38 13 none] +G r c none [get_free_blocks vfs 211 14 none] [get_free_blocks vfs__dev 43 14 none] +G r c none [get_free_blocks vfs 211 14 none] [get_free_blocks vfs__ext 43 14 none] +G r c none [get_free_blocks vfs 211 14 none] [get_free_blocks vfs__fat 40 14 none] +G r c none [get_free_inodes vfs 221 14 none] [get_free_inodes vfs__dev 48 14 none] +G r c none [get_free_inodes vfs 221 14 none] [get_free_inodes vfs__ext 48 14 none] +G r c none [get_free_inodes vfs 221 14 none] [get_free_inodes vfs__fat 45 14 none] +G r c none [get_max_length vfs 230 14 none] [get_max_length vfs__dev 53 13 none] +G r c none [get_max_length vfs 230 14 none] [get_max_length vfs__ext 53 13 none] +G r c none [get_max_length vfs 230 14 none] [get_max_length vfs__fat 50 13 none] +G r c none [open vfs 255 14 none] [read_entries vfs__dev 55 14 none] +G r c none [open vfs 255 14 none] [read_entries vfs__ext 99 14 none] +G r c none [open vfs 255 14 none] [read_entries vfs__fat 60 14 none] +G r c none [open vfs 255 14 none] [stat vfs__dev 81 14 none] +G r c none [open vfs 255 14 none] [stat vfs__ext 130 14 none] +G r c none [open vfs 255 14 none] [stat vfs__fat 76 14 none] +G r c none [open vfs 255 14 none] [read_symbolic_link vfs__ext 107 14 none] +G r c none [create_node vfs 276 14 none] [create_node vfs__ext 55 14 none] +G r c none [create_symbolic_link vfs 294 14 none] [create_symbolic_link vfs__ext 64 14 none] +G r c none [create_hard_link vfs 312 14 none] [create_hard_link vfs__ext 73 14 none] +G r c none [rename vfs 331 14 none] [rename vfs__ext 82 14 none] +G r c none [unlink vfs 348 14 none] [unlink vfs__ext 92 14 none] +G r c none [close vfs 359 14 none] [close vfs__fat 58 14 none] +G r c none [read_entries vfs 369 14 none] [read_entries vfs__dev 55 14 none] +G r c none [read_entries vfs 369 14 none] [read_entries vfs__ext 99 14 none] +G r c none [read_entries vfs 369 14 none] [read_entries vfs__fat 60 14 none] +G r c none [read_symbolic_link vfs 384 14 none] [read_symbolic_link vfs__ext 107 14 none] +G r c none [read vfs 400 14 none] [read vfs__dev 63 14 none] +G r c none [read vfs 400 14 none] [read vfs__ext 114 14 none] +G r c none [read vfs 400 14 none] [read vfs__fat 68 14 none] +G r c none [write vfs 418 14 none] [write vfs__dev 72 14 none] +G r c none [write vfs 418 14 none] [write vfs__ext 122 14 none] +G r c none [stat vfs 433 14 none] [stat vfs__dev 81 14 none] +G r c none [stat vfs 433 14 none] [stat vfs__ext 130 14 none] +G r c none [stat vfs 433 14 none] [stat vfs__fat 76 14 none] +G r c none [truncate vfs 445 14 none] [truncate vfs__ext 136 14 none] +G r c none [io_control vfs 458 14 none] [io_control vfs__dev 87 14 none] +G r c none [io_control vfs 458 14 none] [io_control vfs__ext 142 14 none] +G r c none [mmap vfs 475 14 none] [mmap vfs__dev 94 14 none] +G r c none [poll vfs 492 14 none] [poll vfs__dev 103 14 none] +G r c none [synchronize vfs 503 13 none] [synchronize vfs__dev 110 13 none] +G r c none [synchronize vfs 503 13 none] [synchronize vfs__ext 171 13 none] +G r c none [synchronize vfs 511 13 none] [synchronize vfs__dev 112 13 none] +G r c none [synchronize vfs 511 13 none] [synchronize vfs__ext 173 13 none] +G r c none [change_mode vfs 522 14 none] [change_mode vfs__ext 149 14 none] +G r c none [change_owner vfs 535 14 none] [change_owner vfs__ext 155 14 none] +G r c none [check_access vfs 552 14 none] [stat vfs__dev 81 14 none] +G r c none [check_access vfs 552 14 none] [stat vfs__ext 130 14 none] +G r c none [check_access vfs 552 14 none] [stat vfs__fat 76 14 none] +G r c none [change_access_times vfs 571 14 none] [change_access_times vfs__ext 162 14 none] +G r c none [open vfs 593 14 none] [read_entries vfs__dev 55 14 none] +G r c none [open vfs 593 14 none] [read_entries vfs__ext 99 14 none] +G r c none [open vfs 593 14 none] [read_entries vfs__fat 60 14 none] +G r c none [open vfs 593 14 none] [stat vfs__dev 81 14 none] +G r c none [open vfs 593 14 none] [stat vfs__ext 130 14 none] +G r c none [open vfs 593 14 none] [stat vfs__fat 76 14 none] +G r c none [open vfs 593 14 none] [read_symbolic_link vfs__ext 107 14 none] +G r c none [synchronize vfs 609 14 none] [seize lib__synchronization 27 14 none] +G r c none [synchronize vfs 609 14 none] [synchronize vfs__dev 110 13 none] +G r c none [synchronize vfs 609 14 none] [synchronize vfs__ext 171 13 none] +G r c none [synchronize vfs 609 14 none] [release lib__synchronization 31 14 none] +G r c none [create_node vfs 618 14 none] [create_node vfs__ext 55 14 none] +X 1 ada.ads +11K9*Ada 12e8 13|17r6 346r30 347r30 +X 2 a-uncdea.ads +14u15*Unchecked_Deallocation 13|17w10 346r34 347r34 +X 3 arch.ads +20K9*Arch 52e9 12|21r6 478r18 482r18 13|884r18 888r18 +X 4 arch-mmu.ads +22K14*MMU 250e13 12|21w11 478r23 482r23 13|884r23 888r23 +26R9*Page_Permissions 32e14 12|482r27 13|888r27 +43P9*Page_Table_Acc(42R9) 12|478r27 13|884r27 +X 5 devices.ads +22K9*Devices 279e12 12|19w6 19r22 93r41 94r19 111r41 112r19 139r19 13|29r26 +. 66r46 78r15 101r41 145r39 155r42 175r39 204r39 1060r39 +29A9*Operation_Data(6|16M9) 12|404r26 422r22 13|760r26 799r22 +83I9*Device_Handle 12|156r57 649r21 13|66r29 225r57 +85i4*Error_Handle{83I9} 13|29r34 78r23 101r49 145r47 155r50 175r47 204r47 +. 1060r47 +88i4*Max_Name_Length{natural} 12|93r49 111r49 +105V13*Fetch{83I9} 13|66s54 +X 6 interfac.ads +11K9*Interfaces 120e15 12|17w6 17r22 +16M9*Unsigned_8 +18M9*Unsigned_32 12|32r25 45r27 46r27 262r21 282r19 299r19 300r19 318r26 +. 338r26 352r19 538r17 539r17 559r22 598r21 623r18 636r19 636r46 668r21 669r21 +. 13|339r21 601r19 619r19 620r19 640r26 661r26 679r19 965r17 966r17 986r22 +. 1035r21 1074r18 1093r21 1094r21 +19M9*Unsigned_64 12|28r34 36r32 37r32 48r27 50r27 58r22 185r58 192r61 198r52 +. 204r60 213r33 214r33 223r33 224r33 230r60 403r22 421r22 448r19 461r18 479r18 +. 481r18 574r29 575r29 576r29 577r29 13|257r58 266r61 275r52 284r60 295r33 +. 296r33 298r12 299r12 310r33 311r33 313r12 314r12 323r60 759r22 798r22 849r19 +. 864r18 885r18 887r18 1013r29 1014r29 1015r29 1016r29 +X 7 lib.ads +19K9*Lib 35e8 12|20r6 663r27 13|37r23 97r7 137r7 143r7 161r7 173r7 186r7 +. 202r7 212r7 1058r7 1066r7 +X 8 lib-synchronization.ads +20K13*Synchronization 66e24 12|20w10 663r31 13|37r27 97r11 137r11 143r11 +. 161r11 173r11 186r11 202r11 212r11 1058r11 1066r11 +22R9*Binary_Semaphore 57e14 12|663r47 +23r4*Unlocked_Semaphore{22R9} 13|37r43 +27U14*Seize 13|97s27 143s27 173s27 202s27 1058s27 +31U14*Release 13|137s27 161s27 186s27 212s27 1066s27 +X 9 memory.ads +19K9*Memory 36e11 12|22w6 480r18 13|886r18 +35M12*Virtual_Address{11|49M9} 12|480r25 13|886r25 +X 10 system.ads +11K9*System 73e11 12|18w6 18r22 150r58 462r18 651r21 13|31r26 68r20 121r21 +. 220r58 248r23 865r18 +25M9*Address 12|150r65 462r25 651r28 13|68r27 220r65 248r30 865r25 +26m4*Null_Address{25M9} 13|31r33 121r28 154r46 +32V14*"="{boolean} 13|121r18 154r44 +X 11 s-stoele.ads +49M9*Integer_Address +X 12 vfs.ads +24K9*VFS 643E9 674l5 674e8 13|18r6 19r6 20r6 22b14 67r46 171r17 444r10 502r22 +. 552r7 1123l5 1123t8 +28M9*File_Inode_Number<6|19M9> 42r27 257r21 260r25 278r19 296r19 314r26 316r26 +. 333r26 335r26 350r19 359r44 371r20 386r20 402r22 420r22 435r19 447r19 460r18 +. 477r18 494r20 513r20 524r17 537r17 554r22 573r29 596r25 655r21 656r21 13|70r20 +. 71r20 334r21 337r25 351r25 353r25 432r33 597r19 616r19 636r26 638r26 656r26 +. 658r26 677r19 691r44 702r20 739r20 758r22 797r22 831r19 848r19 863r18 883r18 +. 905r20 933r20 949r17 964r17 981r22 1012r29 1033r25 +32M12*File_Mode{6|18M9} 44r27 281r19 525r17 621r18 635r40 635r58 636r8 670r21 +. 13|600r19 950r17 1072r18 1095r21 +35R9*File_Timestamp 38e14 51r27 52r27 53r27 +36m7*Seconds_Since_Epoch{6|19M9} +37m7*Additional_Nanoseconds{6|19M9} +39E9*File_Type 40e64 43r27 61r22 280r19 620r18 13|599r19 1071r18 +39n23*File_Regular{39E9} +39n37*File_Directory{39E9} 13|476r45 495r18 +39n53*File_Symbolic_Link{39E9} 13|453r42 521r18 +40n23*File_Character_Device{39E9} +40n46*File_Block_Device{39E9} +41R9*File_Stat 54e14 436r23 13|357r25 832r23 989r18 +42m7*Unique_Identifier{28M9} +43e7*Type_Of_File{39E9} 13|453r27 476r30 494r26 +44m7*Mode{32M12} 13|514r45 559r36 999r34 +45m7*UID{6|18M9} 13|513r45 558r36 998r34 +46m7*GID{6|18M9} +47i7*Hard_Link_Count{positive} +48m7*Byte_Size{6|19M9} +49i7*IO_Block_Size{natural} +50m7*IO_Block_Count{6|19M9} +51r7*Creation_Time{35R9} +52r7*Modification_Time{35R9} +53r7*Access_Time{35R9} +57R9*Directory_Entity 62e14 63r63 +58m7*Inode_Number{6|19M9} 13|432r56 +59a7*Name_Buffer{string} 13|427r23 +60i7*Name_Len{natural} 13|427r45 +61e7*Type_Of_File{39E9} +63A9*Directory_Entities(57R9) 64r42 373r24 13|348r11 356r51 704r24 +64P9*Directory_Entities_Acc(63A9) 13|348r31 356r21 +70i4*Max_Symlink_Loop{natural} 644c4 +73E9*FS_Type 73e46 107r23 144r53 650r21 13|50r17 61r23 215r53 +73n23*FS_DEV{73E9} 13|51r19 111r15 149r21 251r15 260r15 269r15 278r15 287r15 +. 302r15 317r15 326r15 694r15 710r15 767r15 806r15 837r15 870r15 894r15 912r15 +. 925r15 938r15 +73n31*FS_EXT{73E9} 13|30r26 113r15 150r21 252r15 261r15 270r15 279r15 288r15 +. 303r15 318r15 327r15 606r15 625r15 645r15 666r15 684r15 695r15 718r15 746r15 +. 776r15 815r15 839r15 854r15 873r15 926r15 940r15 955r15 971r15 1021r15 +73n39*FS_FAT{73E9} 13|116r15 151r21 253r15 262r15 271r15 280r15 289r15 304r15 +. 319r15 328r15 696r15 726r15 784r15 841r15 927r15 +74I9*FS_Handle 75r34 129r21 133r55 144r35 150r40 156r39 163r17 175r23 +. 185r36 192r39 198r30 204r37 212r29 222r29 230r36 256r21 259r25 277r19 295r19 +. 313r26 332r26 349r19 359r27 370r20 385r20 401r22 419r22 434r19 446r19 459r18 +. 476r18 493r20 503r32 512r20 523r17 536r17 553r22 572r29 595r25 643c9 645r34 +. 654r21 659r38 13|67r33 69r20 167r21 215r35 220r40 225r39 231r17 243r23 +. 257r36 266r39 275r30 284r37 294r29 309r29 323r36 333r21 336r25 350r33 352r33 +. 596r19 615r19 635r26 655r26 676r19 691r27 701r20 738r20 757r22 796r22 830r19 +. 847r19 862r18 882r18 904r20 922r32 932r20 948r17 963r17 980r22 1011r29 +. 1032r25 +75i4*Error_Handle{74I9} 145r45 151r45 157r45 166r45 179r45 186r45 193r45 +. 199r45 205r45 215r45 225r45 231r45 266r45 284r45 302r45 320r45 340r45 354r45 +. 360r45 376r45 390r45 408r45 426r45 438r45 450r45 464r45 484r45 498r45 504r45 +. 515r45 527r45 541r45 561r45 579r45 604r28 645c4 13|34r26 67r50 69r33 171r21 +. 200r27 350r46 400r28 577r20 585r20 +76i4*Path_Buffer_Length{natural} 167r34 646c4 652r40 653r34 13|77r30 237r40 +79U14*Init 13|25b14 38l8 38t12 +87U14*Mount 88>8 89>8 90>8 91>8 92<8 13|40b14 56l8 56t13 +88a8 Device_Name{string} 93r19 13|41b8 48r29 +89a8 Mount_Path{string} 13|42b8 52r26 +90b8 Do_Read_Only{boolean} 13|43b8 52r42 +91b8 Do_Relatime{boolean} 13|44b8 52r56 +92b8 Success{boolean} 13|45b8 52m69 53r23 +104U14*Mount 105>8 106>8 107>8 108>8 109>8 110<8 13|52s13 58b14 138l8 138t13 +105a8 Device_Name{string} 111r19 13|59b8 66r61 +106a8 Mount_Path{string} 13|60b8 76r27 77r10 83r10 85r28 126r29 132r44 132r66 +107e8 FS{73E9} 13|61b8 110r12 124r29 +108b8 Do_Read_Only{boolean} 13|62b8 112r28 114r28 117r28 +109b8 Do_Relatime{boolean} 13|63b8 112r42 114r42 +110b8 Success{boolean} 13|64b8 74m7 93m13 133m10 +119U14*Unmount 119>23 119>38 119<55 13|140b14 162l8 162t15 +119a23 Path{string} 13|140b23 146r68 +119b38 Force{boolean} 13|140b38 154r16 +119b55 Success{boolean} 13|140b55 142m7 156m16 +126U14*Get_Mount 127>8 128<8 129<8 13|164b14 191l8 191t17 +127a8 Path{string} 13|165b8 176r13 178r13 180r13 180r19 180r33 +128i8 Match{natural} 13|166b8 170m7 177r13 183m13 188r10 189m10 189r19 +129i8 Handle{74I9} 13|167b8 171m7 182m13 +133A9*Mountpoint_Arr(74I9) 138r35 13|193r35 +138U14*List_All 138<24 138<51 13|193b14 213l8 213t16 +138a24 List{133A9} 13|193b24 200m7 205r29 206m16 206r22 +138i51 Total{natural} 13|193b51 199m7 209m13 209r22 +144V13*Get_Backing_FS{73E9} 144>29 13|215b13 218l8 218t22 +144i29 Key{74I9} 145r38 13|215b29 217r22 +150V13*Get_Backing_FS_Data{10|25M9} 150>34 13|220b13 223l8 223t27 +150i34 Key{74I9} 151r38 13|220b34 222r22 +156V13*Get_Backing_Device{5|83I9} 156>33 13|225b13 228l8 228t26 +156i33 Key{74I9} 157r38 13|225b33 227r22 +162U14*Get_Mount_Point 163>8 164<8 165<8 13|230b14 240l8 240t23 +163i8 Key{74I9} 166r38 13|231b8 238r18 239r25 +164a8 Name{string} 167r19 13|232b8 236m7 237m7 237r13 237r27 +165i8 Length{natural} 13|233b8 239m7 +174U14*Remount 175>8 176>8 177>8 178<8 13|242b14 255l8 255t15 +175i8 Key{74I9} 179r38 13|243b8 248r49 250r20 +176b8 Do_Read_Only{boolean} 13|244b8 251r44 252r44 253r44 +177b8 Do_Relatime{boolean} 13|245b8 251r58 252r58 253r58 +178b8 Success{boolean} 13|246b8 251m71 252m71 253m71 +185U14*Get_Block_Size 185>30 185<47 13|257b14 264l8 264t22 +185i30 Key{74I9} 186r38 13|257b30 259r20 260r53 261r53 262r61 +185m47 Size{6|19M9} 13|257b47 260m67 261m67 262m25 +192U14*Get_Fragment_Size 192>33 192<50 13|266b14 273l8 273t25 +192i33 Key{74I9} 193r38 13|266b33 268r20 269r56 270r56 271r64 +192m50 Size{6|19M9} 13|266b50 269m70 270m70 271m25 +198U14*Get_Size 198>24 198<41 13|275b14 282l8 282t16 +198i24 Key{74I9} 199r38 13|275b24 277r20 278r47 279r47 280r55 +198m41 Size{6|19M9} 13|275b41 278m61 279m61 280m25 +204U14*Get_Inode_Count 204>31 204<48 13|284b14 291l8 291t23 +204i31 Key{74I9} 205r38 13|284b31 286r20 287r54 288r54 289r63 +204m48 Count{6|19M9} 13|284b48 287m68 288m68 289m25 +211U14*Get_Free_Blocks 212>8 213<8 214<8 13|293b14 306l8 306t23 +212i8 Key{74I9} 215r38 13|294b8 301r20 302r54 303r54 304r54 +213m8 Free_Blocks{6|19M9} 13|295b8 298m32 298r32 +214m8 Free_Unpriviledged{6|19M9} 13|296b8 299m32 299r32 +221U14*Get_Free_Inodes 222>8 223<8 224<8 13|308b14 321l8 321t23 +222i8 Key{74I9} 225r38 13|309b8 316r20 317r54 318r54 319r54 +223m8 Free_Inodes{6|19M9} 13|310b8 313m32 313r32 +224m8 Free_Unpriviledged{6|19M9} 13|311b8 314m32 314r32 +230U14*Get_Max_Length 230>30 230<47 13|323b14 330l8 330t22 +230i30 Key{74I9} 231r38 13|323b30 325r20 326r63 327r63 328r63 +230m47 Length{6|19M9} 13|323b47 326m25 327m25 328m25 +234E9*FS_Status 242e16 261r25 283r23 301r23 319r30 339r30 353r23 375r24 389r24 +. 407r26 425r26 437r23 449r23 463r22 483r22 503r50 514r36 526r21 540r21 560r26 +. 578r33 597r25 622r22 13|72r20 338r25 602r23 621r23 641r30 662r30 680r23 +. 706r24 742r24 763r26 802r26 833r23 850r23 866r22 889r22 922r50 934r36 951r21 +. 967r21 987r26 1017r33 1034r25 1073r22 +235n8*FS_Success{234E9} 603r34 13|92r21 420r27 421r27 445r24 460r30 503r36 +. 528r30 553r21 571r20 992r20 1004r20 +236n8*FS_Invalid_Value{234E9} 13|579r20 +237n8*FS_Is_Directory{234E9} +238n8*FS_Not_Supported{234E9} 13|610r23 630r23 650r23 671r23 687r23 752r26 +. 825r26 857r23 877r23 899r23 927r32 943r20 958r23 975r23 1026r23 +239n8*FS_Not_Allowed{234E9} 13|587r20 1006r20 +240n8*FS_RO_Failure{234E9} +241n8*FS_IO_Failure{234E9} 13|1061r34 +242n8*FS_Loop{234E9} +255U14*Open 256>8 257>8 258>8 259<8 260<8 261<8 262>8 263>8 264>8 265>8 13|332b14 +. 464s16 532s16 593l8 593t12 1041s7 +256i8 Key{74I9} 266r38 13|333b8 352r46 465r20 533r20 1042r11 +257m8 Relative{28M9} 13|334b8 353r46 466r20 534r20 1043r11 +258a8 Path{string} 13|335b8 363r10 367r23 378r16 378r41 379r16 379r22 383r13 +. 383r37 390r16 390r42 391r16 391r22 398r13 398r19 398r44 401r16 401r22 401r47 +. 428r19 428r25 428r50 452r13 452r38 467r20 535r20 536r31 536r37 536r67 1044r11 +259i8 Final_Key{74I9} 13|336b8 468r20 468m34 537r20 537m34 569m7 577m7 585m7 +. 1045r11 +260m8 Ino{28M9} 13|337b8 469r20 469m34 538r20 538m34 570m7 578m7 586m7 1046r11 +261e8 Success{234E9} 13|338b8 419m30 420r17 421r16 444m56 445r13 459m33 460r19 +. 470r20 470m34 502m68 503r25 527m33 528r19 539r20 539m34 552m53 553r10 571m7 +. 579m7 587m7 1047r11 +262m8 User{6|18M9} 13|339b8 471r20 471r34 512r34 540r20 540r34 557r25 1048r11 +263b8 Want_Read{boolean} 13|340b8 472r20 472r34 541r20 541r34 560r25 1049r11 +264b8 Want_Write{boolean} 13|341b8 473r20 473r34 542r20 542r34 561r25 1050r11 +265b8 Do_Follow{boolean} 13|342b8 453r65 474r20 474r34 543r20 543r34 1051r11 +276U14*Create_Node 277>8 278>8 279>8 280>8 281>8 282>8 283<8 13|595b14 612l8 +. 612t19 1077s7 +277i8 Key{74I9} 284r38 13|596b8 605r20 608r25 1078r11 +278m8 Relative{28M9} 13|597b8 608r39 1079r11 +279a8 Path{string} 13|598b8 608r49 1080r11 +280e8 Typ{39E9} 13|599b8 608r55 1081r11 +281m8 Mode{32M12} 13|600b8 608r60 1082r11 +282m8 User{6|18M9} 13|601b8 608r66 1083r11 +283e8 Status{234E9} 13|602b8 608m72 610m13 1084r11 +294U14*Create_Symbolic_Link 295>8 296>8 297>8 298>8 299>8 300>8 301<8 13|614b14 +. 632l8 632t28 +295i8 Key{74I9} 302r38 13|615b8 624r20 627r25 +296m8 Relative{28M9} 13|616b8 627r39 +297a8 Path{string} 13|617b8 627r49 +298a8 Target{string} 13|618b8 627r55 +299m8 Mode{6|18M9} 13|619b8 627r63 +300m8 User{6|18M9} 13|620b8 627r69 +301e8 Status{234E9} 13|621b8 628m17 630m13 +312U14*Create_Hard_Link 313>8 314>8 315>8 316>8 317>8 318>8 319<8 13|634b14 +. 652l8 652t24 +313i8 Key{74I9} 320r38 13|635b8 644r20 647r25 +314m8 Relative_Path{28M9} 13|636b8 647r39 +315a8 Path{string} 13|637b8 647r54 +316m8 Relative_Target{28M9} 13|638b8 647r60 +317a8 Target{string} 13|639b8 648r17 +318m8 User{6|18M9} 13|640b8 648r25 +319e8 Status{234E9} 13|641b8 648m31 650m13 +331U14*Rename 332>8 333>8 334>8 335>8 336>8 337>8 338>8 339<8 13|654b14 673l8 +. 673t14 +332i8 Key{74I9} 340r38 13|655b8 665r20 668r25 +333m8 Relative_Source{28M9} 13|656b8 668r39 +334a8 Source{string} 13|657b8 668r56 +335m8 Relative_Target{28M9} 13|658b8 668r64 +336a8 Target{string} 13|659b8 669r17 +337b8 Keep{boolean} 13|660b8 669r25 +338m8 User{6|18M9} 13|661b8 669r31 +339e8 Status{234E9} 13|662b8 669m37 671m13 +348U14*Unlink 349>8 350>8 351>8 352>8 353<8 13|675b14 689l8 689t14 +349i8 Key{74I9} 354r38 13|676b8 683r20 685r33 +350m8 Relative{28M9} 13|677b8 685r47 +351a8 Path{string} 13|678b8 685r57 +352m8 User{6|18M9} 13|679b8 685r63 +353e8 Status{234E9} 13|680b8 685m69 687m13 +359U14*Close 359>21 359>38 13|691b14 698l8 698t13 +359i21 Key{74I9} 360r38 13|691b21 693r20 696r44 +359m38 Ino{28M9} 13|691b38 696r58 +369U14*Read_Entries 370>8 371>8 372>8 373<8 374<8 375<8 13|413s13 700b14 +. 735l8 735t20 +370i8 Key{74I9} 376r38 13|414r17 701b8 709r20 712r25 720r25 728r25 +371m8 Ino{28M9} 13|415r17 702b8 713r17 721r17 729r17 +372i8 Offset{natural} 13|416r17 703b8 714r17 722r17 730r17 +373a8 Entities{63A9} 13|417r17 704b8 715m17 723m17 731m17 +374i8 Ret_Count{natural} 13|418r17 705b8 716m17 724m17 732m17 +375e8 Success{234E9} 13|419r17 706b8 717m17 725m17 733m17 +384U14*Read_Symbolic_Link 385>8 386>8 387<8 388<8 389<8 13|454s16 522s16 +. 737b14 754l8 754t26 +385i8 Key{74I9} 390r38 13|455r20 523r20 738b8 745r20 748r25 +386m8 Ino{28M9} 13|456r20 524r20 739b8 748r39 +387a8 Path{string} 13|457r20 525r20 740b8 748m44 750m13 +388i8 Ret_Count{natural} 13|458r20 526r20 741b8 748m50 751m13 +389e8 Success{234E9} 13|459r20 527r20 742b8 748m61 752m13 +400U14*Read 401>8 402>8 403>8 404<8 405<8 406>8 407<8 13|756b14 793l8 793t12 +401i8 Key{74I9} 408r38 13|757b8 766r20 769r25 778r25 786r25 +402m8 Ino{28M9} 13|758b8 770r17 779r17 787r17 +403m8 Offset{6|19M9} 13|759b8 771r17 780r17 788r17 +404a8 Data{5|29A9} 13|760b8 772m17 781m17 789m17 +405i8 Ret_Count{natural} 13|761b8 773m17 782m17 790m17 +406b8 Is_Blocking{boolean} 13|762b8 774r17 +407e8 Success{234E9} 13|763b8 775m17 783m17 791m17 +418U14*Write 419>8 420>8 421>8 422>8 423<8 424>8 425<8 13|795b14 827l8 827t13 +419i8 Key{74I9} 426r38 13|796b8 805r20 808r25 817r25 +420m8 Ino{28M9} 13|797b8 809r17 818r17 +421m8 Offset{6|19M9} 13|798b8 810r17 819r17 +422a8 Data{5|29A9} 13|799b8 811r17 820r17 +423i8 Ret_Count{natural} 13|800b8 812m17 821m17 824m13 +424b8 Is_Blocking{boolean} 13|801b8 813r17 +425e8 Success{234E9} 13|802b8 814m17 822m17 825m13 +433U14*Stat 434>8 435>8 436<8 437<8 13|444s14 502s26 552s11 829b14 844l8 +. 844t12 991s7 +434i8 Key{74I9} 438r38 13|830b8 836r20 838r31 840r31 842r31 +435m8 Ino{28M9} 13|831b8 838r45 840r45 842r45 +436r8 Stat_Val{41R9} 13|832b8 838m50 840m50 842m50 +437e8 Success{234E9} 13|833b8 838m60 840m60 842m60 +445U14*Truncate 446>8 447>8 448>8 449<8 13|846b14 859l8 859t16 +446i8 Key{74I9} 450r38 13|847b8 853r20 855r35 +447m8 Ino{28M9} 13|848b8 855r49 +448m8 New_Size{6|19M9} 13|849b8 855r54 +449e8 Status{234E9} 13|850b8 855m64 857m13 +458U14*IO_Control 459>8 460>8 461>8 462>8 463<8 13|861b14 879l8 879t18 +459i8 Key{74I9} 464r38 13|862b8 869r20 872r25 875r25 +460m8 Ino{28M9} 13|863b8 872r39 875r39 +461m8 Request{6|19M9} 13|864b8 872r44 875r44 +462m8 Arg{10|25M9} 13|865b8 872r53 875r53 +463e8 Status{234E9} 13|866b8 872m58 875m58 877m13 +475U14*Mmap 476>8 477>8 478>8 479>8 480>8 481>8 482>8 483<8 13|881b14 901l8 +. 901t12 +476i8 Key{74I9} 484r38 13|882b8 893r20 896r25 +477m8 Ino{28M9} 13|883b8 896r39 +478p8 Map{4|43P9} 13|884b8 896r44 +479m8 Offset{6|19M9} 13|885b8 891r28 +480m8 Address{9|35M12} 13|886b8 896r49 +481m8 Length{6|19M9} 13|887b8 896r58 +482r8 Flags{4|26R9} 13|888b8 896r66 +483e8 Status{234E9} 13|889b8 897m17 899m13 +492U14*Poll 493>8 494>8 495<8 496<8 497<8 13|903b14 920l8 920t12 +493i8 Key{74I9} 498r38 13|904b8 911r20 914r25 +494m8 Ino{28M9} 13|905b8 914r39 +495b8 Can_Read{boolean} 13|906b8 914m44 916m13 +496b8 Can_Write{boolean} 13|907b8 914m54 917m13 +497b8 Is_Error{boolean} 13|908b8 914m65 918m13 +503V13*Synchronize{234E9} 503>26 13|922b13 929l8 929t19 1061s16 +503i26 Key{74I9} 504r38 13|922b26 924r20 925r57 926r57 +511V13*Synchronize{234E9} 512>8 513>8 514>8 13|931b13 945l8 945t19 +512i8 Key{74I9} 515r38 13|932b8 937r20 939r45 941r45 +513m8 Ino{28M9} 13|933b8 939r59 941r59 +514b8 Data_Only{boolean} 13|934b8 939r64 941r64 +522U14*Change_Mode 523>8 524>8 525>8 526<8 13|947b14 960l8 960t19 +523i8 Key{74I9} 527r38 13|948b8 954r20 956r38 +524m8 Ino{28M9} 13|949b8 956r52 +525m8 Mode{32M12} 13|950b8 956r57 +526e8 Status{234E9} 13|951b8 956m63 958m13 +535U14*Change_Owner 536>8 537>8 538>8 539>8 540<8 13|962b14 977l8 977t20 +536i8 Key{74I9} 541r38 13|963b8 970r20 973r25 +537m8 Ino{28M9} 13|964b8 973r39 +538m8 Owner{6|18M9} 13|965b8 973r44 +539m8 Group{6|18M9} 13|966b8 973r51 +540e8 Status{234E9} 13|967b8 973m58 975m13 +552U14*Check_Access 553>8 554>8 555>8 556>8 557>8 558>8 559>8 560<8 13|979b14 +. 1008l8 1008t20 +553i8 Key{74I9} 561r38 13|980b8 991r13 +554m8 Ino{28M9} 13|981b8 991r18 +555b8 Exists_Only{boolean} 13|982b8 992r39 +556b8 Can_Read{boolean} 13|983b8 1000r25 +557b8 Can_Write{boolean} 13|984b8 1001r25 +558b8 Can_Exec{boolean} 13|985b8 1002r25 +559m8 Real_UID{6|18M9} 13|986b8 997r25 +560e8 Status{234E9} 13|987b8 991m33 992r10 1004m10 1006m10 +571U14*Change_Access_Times 572>8 573>8 574>8 575>8 576>8 577>8 578<8 13|1010b14 +. 1028l8 1028t27 +572i8 Key{74I9} 579r38 13|1011b8 1020r20 1023r25 +573m8 Ino{28M9} 13|1012b8 1023r39 +574m8 Access_Seconds{6|19M9} 13|1013b8 1023r44 +575m8 Access_Nanoseconds{6|19M9} 13|1014b8 1023r60 +576m8 Modify_Seconds{6|19M9} 13|1015b8 1024r17 +577m8 Modify_Nanoseconds{6|19M9} 13|1016b8 1024r33 +578e8 Status{234E9} 13|1017b8 1024m53 1026m13 +593U14*Open 594>8 595<8 596<8 597<8 598>8 599>8 600>8 601>8 13|84s10 1030b14 +. 1052l8 1052t12 +594a8 Path{string} 13|85r14 1031b8 1044r25 +595i8 Key{74I9} 604r21 13|86r14 1032b8 1045m25 +596m8 Ino{28M9} 13|87r14 1033b8 1046m25 +597e8 Success{234E9} 603r24 13|88r14 1034b8 1047m25 +598m8 User{6|18M9} 13|89r14 1035b8 1048r25 +599b8 Want_Read{boolean} 13|90r14 1036b8 1049r25 +600b8 Want_Write{boolean} 13|91r14 1037b8 1050r25 +601b8 Do_Follow{boolean} 13|1038b8 1051r25 +609U14*Synchronize 609<27 13|1054b14 1067l8 1067t19 +609b27 Success{boolean} 13|1054b27 1056m7 1062m16 +618U14*Create_Node 619>8 620>8 621>8 622<8 623>8 13|1069b14 1085l8 1085t19 +619a8 Path{string} 13|1070b8 1080r23 +620e8 Typ{39E9} 13|1071b8 1081r23 +621m8 Mode{32M12} 13|1072b8 1082r23 +622e8 Success{234E9} 13|1073b8 1084m23 +623m8 User{6|18M9} 13|1074b8 1083r23 +629V13*Is_Absolute{boolean} 629>26 13|76s14 367s10 1087b13 1090l8 1090t19 +629a26 Path{string} 13|1087b26 1089r14 1089r40 1089r46 +635V13*Apply_Umask{32M12} 635>26 635>32 +635m26 Mode{32M12} 636r32 +635m32 Umask{32M12} 636r59 +648R9 Mount_Data 657e14 659r65 +649i7*Mounted_Dev{5|83I9} 13|29m11 99r24 101r27 123m14 145r24 155m27 175r24 +. 204r24 227r27 1060r24 +650e7*Mounted_FS{73E9} 13|30m11 124m14 148r29 217r27 250r25 259r25 268r25 +. 277r25 286r25 301r25 316r25 325r25 605r25 624r25 644r25 665r25 683r25 693r25 +. 709r25 745r25 766r25 805r25 836r25 853r25 869r25 893r25 911r25 924r25 937r25 +. 954r25 970r25 1020r25 +651m7*FS_Data{10|25M9} 13|31m11 125m14 149m55 150m55 151m55 154r36 222r27 +. 248r54 260r58 261r58 262r66 269r61 270r61 271r69 278r52 279r52 280r60 287r59 +. 288r59 289r68 302r59 303r59 304r59 317r59 318r59 319r59 326r68 327r68 328r68 +. 608r30 627r30 647r30 668r30 685r38 696r49 712r30 720r30 728r30 748r30 769r30 +. 778r30 786r30 808r30 817r30 838r36 840r36 842r36 855r40 872r30 875r30 896r30 +. 914r30 925r62 926r62 939r50 941r50 956r43 973r30 1023r30 +652i7*Path_Length{integer} 13|32m11 126m14 146r53 176r39 177r32 178r52 179r53 +. 180r57 183r34 239r30 +653a7*Path_Buffer{string} 13|33m11 127m14 132m26 146r24 179r24 238r23 +654i7*Base_Key{74I9} 13|34m11 128m14 479r33 497r33 +655m7*Base_Ino{28M9} 13|35m11 129m14 480r33 498r33 +656m7*Root_Ino{28M9} 13|36m11 130m14 369r35 483r47 501r47 1043r36 1079r34 +659A9 Mount_Registry(648R9)<74I9> 660r38 13|28r21 +660P9 Mount_Registry_Acc(659A9) 662r19 +662p4 Mounts{660P9} 665r47 13|28m7 98r16 99r13 101r16 122r10 132r10 144r16 +. 145r13 146r13 146r42 148r18 149r44 150r44 151r44 154r25 155r16 174r16 175r13 +. 176r28 177r21 178r41 179r13 179r42 180r46 183r23 203r16 204r13 217r14 222r14 +. 227r14 238r10 239r17 248r41 250r12 259r12 260r45 261r45 262r53 268r12 269r48 +. 270r48 271r56 277r12 278r39 279r39 280r47 286r12 287r46 288r46 289r55 301r12 +. 302r46 303r46 304r46 316r12 317r46 318r46 319r46 325r12 326r55 327r55 328r55 +. 369r24 478r25 479r22 480r22 483r36 496r25 497r22 498r22 501r36 605r12 608r17 +. 624r12 627r17 644r12 647r17 665r12 668r17 683r12 685r25 693r12 696r36 709r12 +. 712r17 720r17 728r17 745r12 748r17 766r12 769r17 778r17 786r17 805r12 808r17 +. 817r17 836r12 838r23 840r23 842r23 853r12 855r27 869r12 872r17 875r17 893r12 +. 896r17 911r12 914r17 924r12 925r49 926r49 937r12 939r37 941r37 954r12 956r30 +. 970r12 973r17 1020r12 1023r17 1043r25 1059r16 1060r13 1079r23 +663r4 Mounts_Mutex{8|22R9} 13|37m7 97m34 97r34 137m36 137r36 143m34 143r34 +. 161m36 161r36 173m34 173r34 186m36 186r36 202m34 202r34 212m36 212r36 1058m34 +. 1058r34 1066m36 1066r36 +667V13 Can_Access_File{boolean} 668>8 669>8 670>8 671>8 672>8 673>8 13|511s23 +. 556s14 996s10 1092b13 1122l8 1122t23 +668m8 User{6|18M9} 13|512r20 557r11 997r11 1093b8 1101r10 1105r23 +669m8 File_Owner{6|18M9} 13|513r20 558r11 998r11 1094b8 1105r10 +670m8 Mode{32M12} 13|514r20 559r11 999r11 1095b8 1106r36 1107r36 1108r36 +. 1113r36 1114r36 1115r36 +671b8 Want_Read{boolean} 13|515r20 560r11 1000r11 1096b8 1106r14 1113r14 +672b8 Want_Write{boolean} 13|516r20 561r11 1001r11 1097b8 1107r14 1114r14 +673b8 Want_Exec{boolean} 13|517r20 562r11 1002r11 1098b8 1108r14 1115r14 +X 13 vfs.adb +48a7 Name=48:29{string} 52r20 +50e11 FS{12|73E9} 51r13 52r38 +66i7 De{5|83I9} 78r10 99r38 112r24 114r24 117r24 123r29 +67i7 Free_I{12|74I9} 102m13 122r18 132r18 +68m7 FS_Data{10|25M9} 112m55 114m55 117m42 121r10 125r29 +69i7 Key{12|74I9} 86m28 128r29 +70m7 Ino{12|28M9} 87m28 129r29 +71m7 Root_Inode{12|28M9} 112m64 115m13 118m13 130r29 +72e7 Succ{12|234E9} 88m28 92r13 +98i11 I 99r21 101r24 102r23 +109L6 Try_Probe 103r18 +136L6 Cleanup 100r18 107r12 +144i11 I 145r21 146r21 146r50 148r26 149r52 150r52 151r52 154r33 +. 155r24 +174i11 I 175r21 176r36 177r29 178r49 179r21 179r50 180r54 182r23 +. 183r31 +197i7 Curr_Index{natural} 205r16 206r35 207m16 207r30 +203i11 I 204r21 206r50 +248m7 Data{10|25M9} 251r38 252r38 253r38 +298m7 FB=298:32{6|19M9} 302r68 303r68 304r68 +299m7 FU=299:32{6|19M9} 302r72 303r72 304r72 +313m7 FI=313:32{6|19M9} 317r68 318r68 319r68 +314m7 FU=314:32{6|19M9} 317r72 318r72 319r72 +344P12 String_Acc(string) 346r66 360r25 +346U17 Free1[2|14] 567s7 575s7 583s7 591s7 +347U17 Free2[2|14] 568s7 576s7 584s7 592s7 +350i7 Orig_Key{12|74I9} 400r16 403r27 430m19 465r34 533r34 +351m7 Orig_Ino{12|28M9} 404r27 431m19 466r34 534r34 +352i7 Actual_Key{12|74I9} 368m10 403m13 414r30 430r33 444r20 455r33 479r44 +. 482m22 497r44 500m22 502r32 523r33 552r17 569r20 +353m7 Actual_Ino{12|28M9} 369m10 404m13 415r30 431r33 432m19 444r32 456r33 +. 480r44 483m22 498r44 501m22 502r44 524r33 552r29 570r20 +354i7 Path_Idx{natural} 372m7 378r29 379r35 381m13 381r25 383r26 389r23 398r32 +. 401r35 428r38 548m10 +355i7 Path_Last{natural} 389m10 390r29 391r35 393m13 393r26 395m10 395r23 +. 398r57 401r60 428r63 452r26 536r50 548r22 +356p7 Dir_Entries{12|64P9} 417r30 426r24 568m14 568r14 576m14 576r14 584m14 +. 584r14 592m14 592r14 +357r7 Entry_Stat{12|41R9} 444m44 453r16 476r19 494r15 502m56 513r34 514r34 +. 552m41 558r25 559r25 +358i7 Entries_Offset{natural} 410m10 416r30 437m13 437r31 +359i7 Entries_Count{natural} 411m10 418m30 420r42 426r42 437r48 +360p7 Symlink_Path{344P12} 457r33 467r34 525r33 535r34 567m14 567r14 575m14 +. 575r14 583m14 583r14 591m14 591r14 +361i7 Symlink_Len{natural} 458m33 467r53 526m33 535r53 +426r17 Ent=426:17{12|57R9} 427r19 427r41 432r52 +442L6 Found_Entry 399r18 405r18 433r24 +478i20 I 479r30 480r30 482r36 483r44 +496i20 I 497r30 498r30 500r36 501r44 +574L6 Invalid_Value_Return 364r15 440r15 446r18 461r24 504r30 529r24 546r21 +. 554r15 +582L6 Not_Allowed_Return 519r24 564r15 +590L6 Cleanup_Only_Return 475r21 544r21 +989r7 Ino_Stat{12|41R9} 991m23 998r25 999r25 +1059i11 I 1060r21 1061r29 +X 14 vfs-dev.ads +19K13*Dev 13|18w10 112r13 149r31 251r25 260r25 269r25 278r25 287r25 302r25 +. 317r25 326r35 711r13 768r13 807r13 838r13 871r13 895r13 913r13 925r32 939r20 +. 14|116e12 +20U14*Probe 13|112s17 +27U14*Remount 13|251s29 +33U14*Unmount 13|149s35 +35U14*Get_Block_Size 13|260s29 +37U14*Get_Fragment_Size 13|269s29 +39U14*Get_Size 13|278s29 +41U14*Get_Inode_Count 13|287s29 +43U14*Get_Free_Blocks 13|302s29 +48U14*Get_Free_Inodes 13|317s29 +53V13*Get_Max_Length{6|19M9} 13|326s39 +55U14*Read_Entries 13|711s17 +63U14*Read 13|768s17 +72U14*Write 13|807s17 +81U14*Stat 13|838s17 +87U14*IO_Control 13|871s17 +94U14*Mmap 13|895s17 +103U14*Poll 13|913s17 +110V13*Synchronize{12|234E9} 13|925s36 +112V13*Synchronize{12|234E9} 13|939s24 +X 15 vfs-ext.ads +20K13*EXT 13|19w10 114r13 150r31 252r25 261r25 270r25 279r25 288r25 303r25 +. 318r25 327r35 607r13 626r13 646r13 667r13 685r13 719r13 747r13 777r13 816r13 +. 840r13 855r13 874r13 926r32 941r20 956r13 972r13 1022r13 15|542e12 +21U14*Probe 13|114s17 +27U14*Remount 13|252s29 +33U14*Unmount 13|150s35 +35U14*Get_Block_Size 13|261s29 +37U14*Get_Fragment_Size 13|270s29 +39U14*Get_Size 13|279s29 +41U14*Get_Inode_Count 13|288s29 +43U14*Get_Free_Blocks 13|303s29 +48U14*Get_Free_Inodes 13|318s29 +53V13*Get_Max_Length{6|19M9} 13|327s39 +55U14*Create_Node 13|607s17 +64U14*Create_Symbolic_Link 13|626s17 +73U14*Create_Hard_Link 13|646s17 +82U14*Rename 13|667s17 +92U14*Unlink 13|685s17 +99U14*Read_Entries 13|719s17 +107U14*Read_Symbolic_Link 13|747s17 +114U14*Read 13|777s17 +122U14*Write 13|816s17 +130U14*Stat 13|840s17 +136U14*Truncate 13|855s17 +142U14*IO_Control 13|874s17 +149U14*Change_Mode 13|956s17 +155U14*Change_Owner 13|972s17 +162U14*Change_Access_Times 13|1022s17 +171V13*Synchronize{12|234E9} 13|926s36 +173V13*Synchronize{12|234E9} 13|941s24 +X 16 vfs-fat.ads +17K13*FAT 13|20w10 117r13 151r31 253r25 262r33 271r33 280r33 289r34 304r25 +. 319r25 328r35 696r25 727r13 785r13 842r13 16|241e12 +18U14*Probe 13|117s17 +24U14*Remount 13|253s29 +30U14*Unmount 13|151s35 +32V13*Get_Block_Size{6|19M9} 13|262s37 +34V13*Get_Fragment_Size{6|19M9} 13|271s37 +36V13*Get_Size{6|19M9} 13|280s37 +38V13*Get_Inode_Count{6|19M9} 13|289s38 +40U14*Get_Free_Blocks 13|304s29 +45U14*Get_Free_Inodes 13|319s29 +50V13*Get_Max_Length{6|19M9} 13|328s39 +58U14*Close 13|696s29 +60U14*Read_Entries 13|727s17 +68U14*Read 13|785s17 +76U14*Stat 13|842s17 + diff --git a/obj/vfs.o b/obj/vfs.o new file mode 100644 index 0000000000000000000000000000000000000000..1cc2675b1e55ef739bd31c2545adda31efa371e6 GIT binary patch literal 219312 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�L>j@Igd# zB+b7X`D7F(>yQ~|a&9lB82H-o4w?PKL-$of0 z>g{1i!l3Svun#bY62RBt@K?hr(W~Kag~N1vEBp`P0RJKUEQ61sSPMa{gCGs?Iv900 z3I^jaDkaDc-czaAPimLg*k95wd7wW}`p$q+!~8u1I);j8eOsAgb{OYSQRj?HxC&n~ zjxc>3340Uu^JdsPVF14qc9OwV+ES4Ad|_@InV;FbDSV*_gK z%kaA+f;$`oXiQfSvTM3hsi)I0XsFh9=Og;i`2ZaC9`nN2G4F9N1z&>Efc(p#Z>acc z_#5F$rG0F5W1aCxhXLnSy1v3_!gK)AE8y?`S}{`&nUl&@C3?%*+dB;S@Qz6WSih>g z1b?-O6cvzrNj<7sm5-{&Rqrq;f|7f+*K~{SHT?tK$>{_ADUa3GQ=Vr$PKswd_xddE z_xcX|ERKhLZ`;b=_FXhAUKfog!>oEwh8+vD%8rGdvz46-yA&oQz7)16+^V%F{8+fH zR`}rvtL$*Z`w>>z`w^!joRXi8crwbQx2rv0DTk%y1r@(MuX>bndtox15qEg$iTKvO)@s(091mSC+$|Fw>*ElHw^(u0JK+q-W-MV>VB`Y{Dk+s zSM>S3_W_@?`~lxnKC6MJd@qGLDP98aA~+lkYmIW0+eMv&&QgC{hp%?eRu6m~#%?ds zuX=am{M_yP3C!1K+gZtg9vg`<2cDvYm**t+HImcAp6LzG8i$TsV9ahiAR$NqfD0|?` z&L~~m^86iGO24rj6Ap@JIR$((if4l=EglwBoCtEYD-g>B z$(2auLEI@1lz<$pBv_6_6aWhx0wiL~6c28>Hv|v&!Mcotr9ZAK75aPnCpv(iz=%>G z-R^n91Eo)RUh*gv_C8g?b1wSb`VJkx-_)P+;9nw`(Oxq2#mw}f9k6FXYBQTmgA#id z!VD`5lG~f5CmW$>FLV<%2LheoO`imoF!`^9Z95$d`r#mg?J@8`$MraDAXqfr8bOo_ z72r?;D?kP+xSow&2NN$Q9zGKK1aCd*v1=(rAEk{{L3-nwV1fiM+}?nlubz;J0qi13 zjhG-(jca(yJ_<(cT4LPS+qwslYTT8i8wuTD077tkMS2FB5He2R5f*o3;+A7D4f5KX zC`4N?+>A%=n{iSF9YM1~JYTn0VXHVCujqw~wL9*#?SW!=Q+Dbx*uaF~gcCF{pc4IRjsIioRIA?jLe$CYRC z%m*ytS>;1@xSf3%be0vpBeMQM6wR zR#6IgoRo3U*KtSz8=xYHu*x99`YrYx^1oHKLC^JVYCGpU-oRWOz)utb*c^7_(mj-{3n%MZl_P zfwt-D9eOL?O7%xEvOLoK3apDdT!s1T>dkYAJ3TD+m>#PqzaD8}ri!FYk zqN{5__w4OB#RM356_8^cuSYic^RxT?+A@%z+0@MT%tAk?a9e}iyMGjp&p2$nlp zIECbKMk(ymZ-9Sxxl)Cx_MPvAU>K}bFTIhc>~urGI)}^!Z#lOVj03E*^v2*F+Ym6$ zA#*_7IYPaVV6pWMMCeb-%65U zyMe{Q2WH`53gK}8!vSa z>R{0$!SzHUb8tCvOChrqSwN|E;gG^mL%hWeQ zrV(2VzJ>D7JW;dt+F~OIaBhFq8!ua2S{=tp^4SWkE4Q z81$c(fvG{+@?f5RRtDYx%KRh}A|v)tps8>1bmjkk|E~uApVPot_}c{WXcas=#x9-c zdSr~AexIU0qwG_Gz+Qk)$}~GbBT`RD(g!@F=#d&iLHI&_(Q@eCK}COFc}aoL z{I~)~LC1qsFeU^s^vK?Na=PAlhklpRs?ehcduzIGB?U_bBiN3Y*x; zdiE~O4(PhKtKKbv{ssc=onfQyt529>Cys+CS|3q`&-{eK`A!&EN9x@Q^`(t=;v{|C zTzejd!vJ5acO78Kuo|8eWY+*QRcfZ5R?Q^5TwG8-CEk<<&k38LTWXD2I_^8C=9o3C zl*MJJS?ZP=VU`XtQ-jRZHcR~5OmK$4pm0&ke=n)1tzluBV4);J1b^Wa6I$US{Lf z@FgyaC(5hc%IFZ);Kxk>4A=0bFp9^}!fa)?VA{^dGoI7+(AHv^jjvZiN2LHdcrH}b zV3eLHO|!LiyVVv*!=&m#>rt_(tdtkjyUkWlx9Ww+gndabz+d5WV+ijfJibhM^yhUGgq%Pdrcs4sEg_;QtKi*5@aA%MVX^>Eu&dx9 ze~bBc766jsJd z`t$ZU3cqE^hC7d|Czny%<>=;RG@L_(*`r7*kB@VV;pGO;Gh=E*8sO&PiiIQ}c}T(E zhw@^DHy_*<6ox4GWkt|NX+BX~j9Q}b5-Ge}!irO{LtMa2{_W!(5mqHra3=3i3RiLz z@Y1=wO!>?k_2dH-%jqMubtoUqMP>@un6hvh3r?RoxNDI8p>t#>I!E>wQ~+4#?30#7ZNgY*we^58X?^y_SQ9;ZxbY~ax~e5J19N#a)K6ygWUV~Y!o9Ykz_cU|Frjm5W2&Z?>NRGlf?&B+{!Q6r;hAjYY9s5fVIn!ed zo2_o-Uwk+6dpsx%zJC?g1s#c(8t%pr-L71C}4|uIfAVd_C!V-oyy)#TSC9xuqdW~pcXQCdU&~m#W+Y|J2g)_$Hwr6M6}%nXn1r1 zD-^T6uENLD`WuCiB0S@PwtY$W7?hNH9?=!#3=#70+0+wZH1@&ZIu(KP5T0jcOc6u4 zoSmVu*Nfrx5Yu=%&V~t#>cZO`!u!hWVK+nvdVATv=nFmu4+;X?r_SQ(uA zj4ocTPGOYYwZpbRl=JJR;qMZ`nF=rwdYJ}kVcmnYQ+!@=Zu~5PRc9DyH9DBW6U+16 z__t5{BRl^PYuMB5Xve1=We9HR6ut_^YQJKoal-z4@)6A9$_v+?X3oUNWqI84Vt-t|ChNm?6GdB`1rt3ItBoWEh`wng--Em z%c;J*L9r^%wz%Dj-B%B;&^Z2$Ep^e7c}sn)mMqJ&Y^#eYhcIjKh?i*B`DSf^_A(n% zF~&kTp4Z~3goAiL#qj;(10TayHt2=0az0a8G!uj~|Cz$Az^%7`VUWzcMfFS9Y3{BFeQe8yxkr>Vmp6QS8LzuVG z8jzBkdLr{p9^tbiI4*oK_iWq}Be-QJYW-D+^V$GpQ1C{H&DAA%+m zxnt4!X49F!jyttP)44ItIb0tof@v(#G+i+oYzDBx4}|kQ4`_Fk`65ZsM_9T;fm^fBXANmXs&rUp`6AGp!)udZI@_tzCyl=&NrORCEJ#eo0`)UJZx8mO#kEUPas z4wOONRW%Kj6*Xn0{;Uy%GHX~{6S%Rywx)7j83W4JG_oe(&7h@ae#U~5R@OqUrm?=Z ziunB{t17D+D{K7KWz~V|I#xAMUsl{$=D)GHzSLh;S#uLZLFD>ce|d3b)vEe3Qd3-A z=C3NNA@#MjjedOlXrQ>p4;4!pb!pjZzuzX5-#^09THRVw+2Aj$udl5)8>j(Z#Z^_c zx0G=|$MgZAlsJ`z`gAjb)^+xba4E zOL0x3zidrefVY5zteEzKcF12^+*k~4jm)w)W*3;OsxEF2$}fh|3{=%N@U~IWpx)|| z+N#O`8zghM_*lc}*Fddm)F&4taAR=|7#5gRSwjQUqfNs4GN$R0;)XIhqEuKqkhD2a zPkm(>mzJwBSOi+ZG(2k7{sz+`srq2x8p+Jzqq9m_%aqz?CtxI0Y@8TmRZZp1t3Z}g z9GUXUGHxhn6d_hk8P%7eT{6x{ zQ>lPCL{)=YDJc%zR9REuXR^ghl)!YYO7X(cd;aQaR9WCPFJcnv?4YE z8XHUMhY|c7PM{z4#Q|7I7_V}a&+^)JwN+Krh5515j0DvO69HBrSZ?6mytEl!&)zTQ zTP$zM#|VeWCbw|b$ z0M_@iTWsEw4uh-9hXnvb1R4s^hHZVqH9r)~vMI@pm|CN2tTQT`z>jy8`D@GlxRwx@ z=eTCmMM?NP;n`@rbj2|(UU-nI$`X5M!bZm5P-ZPuU|3*js~QM(siwWqQK-hB38mbF z2a91~lU22~oPbUeG{WlQHNvgIpf!~7nblaoss;>$TLi{W+>UAQXd6uN&Z$NFQ2%|cQtrQ*i^X|7oaw;=xCt;|rhk;*pF4cy zFc^XP^M;QeRWc7(GrAU0QK^cl7jnjSus~H;HZ;Hz)j-NCaqYu#p{`?9O!K>9;hlV z&8%;1fDy}tx~%$Is9sZ>0frX1DFY^MBMm|UWJut~vcOFfYia?&p~wJ7gUfRRPE28d_Ulk-4e?>aVJ+tF3PwdShdCm03Fn_ARW*`pSmD>QUJlRh8A1 zHDwmT%$c*N&Mum{cw&BWRYMu;cwJ>6IinghfSzX!B#TQbCsx&s%I4w*CT2EP*JTzI z<;>5RpEqkx#xT4_44pq~jz!Tq)w8*fSqH%oMASozOQB_|v1->gvRNBoZJ_qLvcSX< z!-kI?K4N$l3JHCkSPy-ytS%1t*Hs1@>fy7z3}S;y8XDqigfp2&|H7%7%O~0$UFWHj zqZ5Gp4P1vEvyx5-I@MVu4V58Sv(ek!y=lC3y%UQxZeL(ASyfeBPfFIpmX5BXL8}}( zBO36VUakt(9^8bPJ3FyaGToUisup6~CywQ~R@Kn$qr1Z`fk_N&TtgW+)EjGIOG)dY z<0X7m1#vOvDyyr7iOPB(;-gqC>Wb@XVb$;#*YnWE3>~O!TrX(Exb4Jm=4~rslTGI4 z&0jFLi1A{cin}cy#PFPrC72Q{J+>thUzOEDr_1$$tyX}W`;L5?teIK`+3<7CP(mn^o`Mm@ONl3lrhRrU4IQYkE5 zJbr_r*I!m7Hek{`Xy2Rmll9j+SM32{h3tD&geka6x2euz|CUXE@B zTY&kE6B-NPyvN-UfP`gm3? zMK#to0!X))d_1^O6wBk z@Gyt&QWwA(o^8qqOPS-(nL9UUF%ES_Rc#3fjIBfXiTblSc^D9ke_40fZkdTd`%4GI z3N*2UaJq+EYE(a-Z~0eO*3%tOP{?Iz+_Wh^faO)i6?_1M7oxqSu?de=Z35t$W}20K z+M{IUxcGuaFptSy9%1%HsF^}#y6dJ*&>orb@l9oAb=Cq*~$EIOEIR)$%8g9Ts^ zgH2O5!QTxyM>DK#8TIHuXC4*NG&0D5gKCNBkt-4c;jc`4BlnlNM|1xp_nq9|N>?bpF-xz1wBC1>?|+K^+WlJ;{>mb*7xs-=dciL^xn4}4E5cuygY_1g z^s;uAQ2oo>>0G^B-d>T}o=l&mu2SQ?xlaQJf%7Ie(jfD3I*NI}EpmG_&Qt9vB|K8S zPs_FDlw*RL)04>O|1-+8joz(BAx?MX3vR0fCyAKu)7V5=`ar@4o%x;z6V)Z*Z`k|{ zIGLH!eyo^=vM$1&FrTtLdRMpgY8|u@>bG!^C?}b|WVp=F!gv;jQ_Trh?W zdLgbh+alMiYiRp)d71W0)1YMSe^)$bIw*pkL=j~YB=r~%J+K*3H{4%6qHdVK7*hdE z(eoRYU`IGK4S`M7@H+FyyCiCbCz|kg0zduMtsG()H<)PFue1e~Yf$2LY3!E>gNpD8 z0@a4E=B54Uw;n``85s^gLs=>;EW4S}04XQ6zpcAc;35cK?a{W!Hnk8z;=67<|H zn?(YTF%gy!xYKR~PJh4BR!87THVl&jhhJ?Ex&)pagj)1Ye<0}7CG^g9M$iwH&^rxN z&}U2NM@jH865KhD1%I4N_DkSX>>#8Co-4s|dfG2RUuXv*E$|`q$or@~y z-Ph$V>=)0iZt-~`$KBWEE+pB;1CyfN0S+9q8vDuVpb|z8zi#KanBGEh8NI-r<0x>a z#}&AHyc7#>X$igrz0-mO?!Iouk~zU_xPIjLdbC4 zs0GoK;Nu=2b|>!fUU!l!;p1*^-6i(cow&zo-HCgA)txx)LCAljM4l=MUMIoVNN`-2 z?3ZZQ8J`GzgPj=C0^cUVcS!JOCHV6a{8b75h6Mku1bv+jJ z5+4%z3jWRrQQ+==ES?OJ^jC&wOXw#^@Indh?oZ;$d$u0@~9tr-m z1m7>gpOxSTCHM&mep-UN`@MK_UPABg-(a3P{D!a}uLKWw;Mkl-;K#om7vmF(Gd~lG z%jgB(Rl;9}CrIeiCHM#l?jCRSAk!uEb0oO?yzW7kNa&YJaQFD62U#JZclQH5B=fxo zagR58kh>)On@nZxO3bEeX4|yyT3}2?0-`v{vkyYSENYxJ1N9H-bj(e2`OZa zLw?L^BrODG{p~!?#-;Q0g1@^xr%BF#(nz91Qo+Z4T+;Y?wpB^cyN_2I8E282DUC;Q zCIAV>hkbSiXZq!F`S5B(j|2t9NjXL{&7J<~&f zi9Pg}*h7Db9{Nl4&|jj5{t`V5l<1-JIMYMt>6sn|O7t*LqKAPJJq(oSVW31010{MG zEYU;fai)jP(=$B`mgr%yL=S@{dKfIx!(fRX221piA<;wUai)jP(=$C}Nc4~qvd#*6 zcfXM#(OU-T?dX}{;~uwXNX`{A$S?_??C*%Xp95q_&L=Y@=aX{0P$JJv3GUoqAelxo z9n`{4b{=Q;(0O_`E}0U0$duSarexgZxVt@M5_fyZl-NV2#2zw+dlMDWHP|fV;O~C!I#psnQzh$^98Y%iOtj17wF(99T$cszzE7Dd*}qIB zQ!LgrCHS~MCo`4EaCiSURdSzNj+aX0ssE0+yC0h>xo;)M-S0z9B|9AQU{)h}At=*l z=W#aPou?Q4-R(0^VxM^u`;_DE{w+_k&gMz%O^#1-XioIYxo;J?yI;za_!&9w?tk(m z_dVsf(_aZW+a3MFtVRk#P)6T*oY_g|=>>oH^|3%=Ck2vyP(essD)_tmr2@&mdq#*J zn0^XFaK=9rXL<<5W%L4fk24D;ad@HR9H~&EheFAH|3b-ghJ}*&uu$SZ3nlmO3dxNQ z&58atO7PVZ{0<539tRdmp3f-^@smQH2PFLWN${s7_%jmxumpcqg1;fbe=EV?li=@5 z@DmdJqy)bp!9SDWmnHa@68tL({*44zmEZy~j_%L@6cR&1@BTbwA#s0Rv5+{QR}}4z zknkTR!N*AO`4YTJg4ap#MhU(~g5M^=?~>rH61-i4-z&i%kl>F?@TVpCGZOq+34Tz5 zzb3)ol;Gzi_yr06nFPNq!6Q|7JMS&QQzdx11Ro^9he+_D5`35hpCrL^C3wCBFOuMM zCHM*nUMImDB{=-zchDu~`|}d~1quF+1b)TY^6-!Jn4k2POFP68x|Pe@lYDFTqbpaQLD6piB6-XbB!C!Fx;abO}B}f=`g( z`4W7(1fMCvizN6Q3BFK*uaw|55`47;ze9rGEx}tQ_`MQ*s|0^og725$Z%XhFB=`vl zep-S%U#-xOT4f2H%Hc(Mc^B*BMD@JSMUiUco|;BzJTdlNO1T2II|?@ zkh3Ize>97%l<=3~?)R@}N&YTiR>^Y4a)obKn7 zv&caSpCc0dRSEvK1b08ToJC}~`?=yQ;(kszi@2Zr%_8pSd$UM4*YlQH#QpD}XA$?m zgPuitOZd2-AI_4TAI>7~=ZCY1`#Iq(GEUO&N(t_MemIM)me8-0;CD!H_w&G6#Qi*Q z7TG1?<9;4Ei|m%rKPti9&k1J{_jAHoWWR$Cnz2S^JFHpw`B0qs`B0qAJ2~!HruaHC zn?yTW7JS_A6U~;~Cz>sJPHDEp&(9|Ll6I#{aQEktW=rnN&kngCglskPeFt};=g#9y z|DC62`ux7+zVr7UxPkxn81&>m~Mfy+l89e2hawLVl;+{yp41{=8oD_YT*G z_%ReiBa0o_r^sHZtCF8PKGT#?V^uJhQhc`(2)p?xttMl}%UpGklb%Uf| zH%R(*gQQ=}B>n0<&id7Pde*OHlKHhvvc4<}nMWwNM*I@_JC8H@J5SH#_e!XyFbraCW*(&Bz~hz@_brZh~E(HI^%7D zyFXW4CYfJllIPFMB6%s#LAvr&+kc?x6Bu=Xc8Al<{9EqGOB)GeutOz;x!|EET zbZ`-N(s`WOPv_}bzbYm6P${v8N{Jt+l-NV1xua)4=(|kszky|D7&S*){-!7qdKFuuX z?+l@Tf+C?f!Wy}YmO4MQkhd8!3XL>5NoigqEfTy@SzfXyab;q!Iwzz5(&Oif;(q`kh5Jv?|$EBGkHux|Fi^uL4v>LitEHVlbD=c zBC>x2qHneLvVY9Cy;|Dk>oKy;$KKcghn(@zD2B#Zf%;{Z2^~ z4}EVE`}?S|A?wZnN+0^(9`^T6q3^@Vru38lKib{{%8Dv`-!8#`sHiB2=x7TlD2m+M zO*S@yhzJOZ7_e!e2}-gFf>|2{ZF9n$bquH&$B2wMj5+7*U>tKE{m$OC&%ICYduy$k z|NOpM3##g=x8Ac)s8grvR#lh0m)+O6zrNT>`OYQZV@cn4D*fKY5Yun%+DZDpQ-Ay= zs8ldo^`+lKI8b@%`{omj4|V^SM`Gv|J=?I#{K&d#~Js}$uEj} zcVa%(_-8K8vyJ=rCN40(!s#zF?%$iZ#&~*uDDJexxPKo0R^z8@yDsX}_rV4ypE5$KC8j*f6hOBPi%1F z-xoW|^!`1a1;+h*6DJw>&!3-e+`kudu5tf-_(jJ3bNE*%_q}tH{8f2)uF{p;jmCXH zd7E+nT;kov)9Z$!*#pM!EFxWc#Q5)yKV{sHyPh|GjMKkr{3O@^ylvb+C;6fAzE1zC z@%0`5m+=Q(x<4o%R`R6$Z^kD${Yu)NN}oSmO?l~acWWsxeQs?%;~kv;hRXLY88>dK zyv*}U%1fV<>1y2j=aiQ|f6~ji*Ke=9^m&i|%1fW4*iCtD$vA(Qaet?IZ{t&4IqYwI zpyRd5OMlm%q0aff_qU(0bpN_uQ~h(sM>zhP@#j}- zs(;t`G42BX6XVzGytvPo#xHGMWU};w@ip9e;dkRbn#z;rs%uQHaL4tU#@BN{fUR$Q z`RYxLHa5O+{ieK=@vqlv%DWoh)5V{jZyJ+ZT!r;D{o89d^{F;K!F+|8Tzze1d^ZMmyY^OVe0>-H zLB`*8@y{~e+3Alkp59k37WVPRXS;s;RO5#`zS#I8$1gMfvCHpu%BK_)w56rSySpua zQ{GVWoZE8aTRHs`#&>r71>>U~f7AF3$3IeD`aIqj$`>ZPy7Tf6=Hs6X`os8H&VM!S zcN$9W=d5Gg|Bkbv@$a2a2j!)|=WeCEG5Ji>FYZ*Sd{PnEQeWfq+?Jh{HzdBl9jts| zvY9J~k;Z#Det`LG>)L0X@=1xm&YfnwgNtX5@u7|%sk|{+?AqH2#_xB>*J;M)U|68WN z*_~%UHvJN(|H|~&y7B5yrhmxk(+3Y5lM2_buCD!EL*o0B*2+ttTWGJmF}d6MbW~nj zEErqb%J|uCOHO%1vckogj{6%D|6pi;OE}`CS;|ChQ%JE6&|Bmao zXPW*^r=M^7bKUvtIMc7;>ZQ@R|GwGT$`>ZzxpKJJ{8w@9?Hc8!<$RO*q`%h{%ja*( z8xsE=v*pJ9cgCJDev^y;1>@;`$D;q6%4oKJV-gB zAhxup@vYsK(aIZ=^!{RTW3BP2E}nywHzsGg{$!Tv8=U?K)Ax4#c++3t_^HNkaeT4z z(&wWtHUDQ^e|W9(()ajoHtx&ePUQ{B11{YMjDP6(b{#<$K`<34s_rG8KqP!v5)TP^OO{vpxK5~2w<&DV-cfqi}>1R9rUzC^L58vFl zk7pb6-=o;1bg8HE()VGvH|~9QQQnZ8=i=GJ^#1(2cZSax<&Ac~p%~Oe<)!aaPc!bv z6|+3jyDg_E zZ%7Vwah_}ZIL9wl9)72A{ob{vKi}zZF}~FCdz6?Bo&UgF@0BeoNi+J z9h|N4Y_T#m0bewgD+l{Y5a zx$Ax&TVv)aUJiX2<@^_7IF*(0ztxJb1 z@8xKc9A~_n+j64vhGd~j_YCvj$o+nFf$1-C`YVjz;rR8&A9MUxICFN6X+`p%`oAQR_N*B)v z<1aeCzwy=dd{|6og7L#0pJx09$LAVf;rP+UH`o5A=%4;h(~t~w{0!5l=Z&KN0^?~v zUF26PUzprgM7p#@d1Er!ou}?F{*>#lmKlG`@yCo`>&9KrDQ`$RX!|NA{<`V?eXS2n zpY|U`{pY5i>&D^VoBl)R|8LXx)Opb-{arkqzZ_p%$K{R5ndvWf z?Qkp8&vg1q(+_mzvz_T5aQXqJ|Jd=N#uvMOejnuxNl(Yen!dmDnPU2pPG4{O0dAad zxakjf`UR$c(wzrSG5r?q{F2@`Z%iI><)1!R7shoi-D}PNd8fZc`QRk)+U?&=zm{tc z%at!oUMe;PU3$X!ACAAEydl}o#s8-A!HNI76(5?H5{b8(-C(FP=1?jvExcWhqTBl&AaM;Z4;K zPW<16`OtX!{9w`RbL0L&-tUZ0b@lR_@t0gVG}rzj{QX21&l<+hcKzpi#@}#!BjYC( zL)4{?#?N)Ut8xGLI4X_%zsJ!}c|+3QmFF(ThdaK9@fycR8K3TWjqxKLpKSbO#}83H zIPr1LH$L3u_gLeT9Y4{y|I*1B#?$vNi#wff{3chwmm7b_)#G)>S2%u)@i*N0H2wW} zaN_^|$lp!x|Nh7m${UlR?znhCd9E0^Exm5s-$#8b7(zyRZ+ z#Wk7sP~O;t$;v3@+m!Gz#(lmfC~rs}clnyCd|`63bDC{FKK>(&`}h|a_wk>syfNwH z+UGgSySh}9reQ!QK{@;!J_*d5RS?Tv!)>Ph@e5%JyG2AxFI~Rd1ZEW1f z-%)u(vR1pMyL2_ZkF(OakF#Hfe}CoSK4;6O{zH^+-V}zlk;Z+T`zdcoI=MKyjL-91 z^tftBo_2AzP~MpAaBcJ zr%sX`jk|D?fyx__eO)|5&Hqf-PWDm$mlFR2jeGw(^PlPbrAet9aoip zw`zg;FLeItcq=@A=+4*YsNRV~Y8M$_;!?g+d1I2E2Z|e)Sh|-utJ_UKMaRoU{r#rD z&*>jg9#q+!IiyUvR z72cTm@2;$=Tz6`+$9l$Fy76awHVX zsaDhDup#N<^y?TOHE1;&+(?e*NvY~HQw1BcZ-#m{(Y;9 zO`l%p70cop)1O{Mx^$EAI~~7Mc|%g;;(WmL9i09#gmPV-LM;YJV@rBA4Ca=48a=P-yq@NoHo^L)QoX-`euXE>%8%#gZ>2EjvyY7D7 z{mK_6AG&xRRbKk{t)4NT>F#&)SCzX?H5AD^#wRo_p5$ZWu3JsMF#mIda+5EVRs zH{QkhH`o5OAvw&ILrdk2$rkSZ=X$0;!|B^AFa5sjX3AZs8e&M#2c_SM-PZh7-B9N%4er7MLb8DZStpV`-ZUUxpV#=mxait*JdnkI3G@eLiHZ@jzX z#~R<&@e_?7==d4ROTXiKzVclYKV4?LuiNlf^PlScml|(y{BGm7JN}^g`|H^!jptpu zFBtdnyrI0#sgvY=<3rt+70Mfuk6k?982`!fUyZM~SyQ9tdY*1bwsm|>dblE_D)T?m`ERd$8kFhcF2>!kBH7)1E_6P78Gpd>F~;9? ze4_E69G_u)J$K@tXM9`7k5yj!ot6`oHzvor-^b51p1yBa%=U%Ge{$!$tBj9v_bYBR z{<=Fa+-bb4>sKEzexBoxNA5c4=Z$xA_ut+yp1zk^jQ>O9Zx@j+ePMhRH{Scf_`hBG z{9$~3cive|&&T1rDDL`CU*O^yW;}hKuIM$|_^&QswZ@Nh2f#tbdprMG#-DQI=Oc{IcJ1nTQ4PDkWo<5gaOt+2k8=QU<e61u_j7TMF`hnuUEC=hkB0k8&VPpK zTezXrJmYIS|6`5c>h1%aWc+@2{GMezecrzq&qc;xb?y0T<9oZ~=qBU$IsP}}OI>?g zZoJX?KVf`;Yv(T*U+l`~P2>Lifgc&)%=OP-8h_pS{Aj$&mCv8Xw{z{Jg^vHidy%ex zTi5s=F8=n$uW{Ee9hFZh7Q8KWHQv^3sWk42GwG*%l2a#1f92y#`0mCvd)PWsc`Zn~ zxW93|-Gi;;jSmKs#e5pnUHV{cXl8+?IQlk90Ii9y0FzpHjYOiT*|7KEH1&A5fzI(D+Vn%je4bJDMcl z8Q;!r`OUcZXY2E9+Ir|2vl4m)^+u4zd|j#|l~59wc4tS|Rg( z=?ea@tdNy{{o*QJUM-t3HB`t-crFf178@(%|G_2qpU*OWfNaKe zVTG&=PW*R+uQcApogZ&7-oBaaSDbFEkmcax`uTf}`|r~}WZXZ$_muIA+a!8Wjl$SmS(tI=7v#b2qWLiV{mQ9$fq}P+3 zOZY~r-@Jr(RNk?KcQxMLZK+hQ|25gtSCJmXP592rb@0`M4^pld!AsputdM1@oJ~9P+oeRc2-_` zTz6AGxa59*PvbW^{~e6`-z5hc-`e#*Lyi0IlaI>a2O3Ymvsg@gqVhdT{@&ko<-`2r ztI1sBU5XaEbd>U1N0a0P<)wcQ^i<>iI1+>A$tfj1DL*ZPpHafk4gReWeM?g;QC=K` zpJ4nx<;9D~X2zdZ9``POUgu-w#f!D5|5JJKC8o&Rgs!%AvQ{C^`)p}*`m+LG7k?ixUQS%9{IG)YO15;1`WO4v z*nXE~_`i|Cf6m}7Lx)!`U+ZS@jv2g1;H^Xd5T}-wfnAgr&pYw?lo1&|`>MWp{)*Qn z)07v_cafi#$(aH zQ{d&wXNL?vI)m4%fARb>-0F8>hW_#les2bUS^bOWsp$V%hJNKxRps)vNe1s7c!zrGEkpm4>WkN9QNLE`V9S+5m%v+x z>$^DRZJ{bdKS1@x>&mT7zh{Pioa&3$r*XV9Ekl2#>WkOKXPf_N8TxB7`289DCH3Dq zX1DP7%D%|ZuO1G?)=B?@{#;vHFYt2Z*&&1HGWbsFKcL`$k}d6?q2E7)AFMvR7JOp6 zos*$okipN&;8&>s;DUdAk9J9h{CY13i_e8bWVo; zD%I~>&`19}GW1Vn@b}ec{}P`cGW4y&rGB|`>l}FNWK6*)mUHh6{ZQ4{l<3E1=nqwW zZ9yOVjT4oRFYwqOUXkImT=jJYeJtmvl}{@0IL>)r`IG|hZc9HXKe)i#+tR8bVY*HVS;*WOjkaGVH2+PJzdE+fVu20$0+UjFWjy&G_2sHMQf%*Ug$$GjYn)x^6RT>t}cC zo^%`1y&~x}uYPXNsww%IxteMDncZt@Wof)D9X4hBton3eV%_xdbwLy0v}tpu=4N(J z#HeQW{F!yTcB@K4BC}@K&Ym-Cc(=;p%3ir{d93BT<%(;&YWh15?LTPP2#KVsO8yHU zA{dhEBTK@<=NX2`N?rxIu$0S(|H4xvLvo_*8U9tte>p`W5Zpr-1oe=;d&=HDh4q)M zy=1AEZ0)7~vVR|4>K&GP>wmIGZ%L}R=z5E!w^;QST`ye{m);s~cUjDJ7kRF`2GU*f zlIxys)%bFh(@1b0?m+P4> zOMJOrn!08&*GtpYyyP@9In7P3kNWgcWgpSxyGzdV-NiYtg__SvUh+BRIpulTE1y@M z*S#urYo)}T?u!EQeN|t*ZR$Cjw;osQp+T-`Kr{Csnm2UwS4lLuSzYYd=E*h zGB5s>ntEkk$}O*@k?$ePmE9%pm1$Hxb*ol%zL!R;^_|z!sMI!;@2$~lndi0H<+YqE z^Adl)r{+sbtTHdTuIw(Qn%8ETuava%+OG1wB=40ub<;A>_tKKly2xwESLRh;DV~*S ziS?AI`fJEqc$Gc0*ffwzEy&7B&9qi>Wu+uusm-KPL$1^iD%0ZB0}2qDmY1gt~EaCe_rA8&_X9SBh)rkpnBWMTG@hm!yY`7?Ri6QvK8^)9Y-j zlvdDciwtuqEAdEYQi@?sn@5;Sw!%#EC>pI9S+||EP09wdmU0QJQdD6Uql$ZJTM=%q z+Hz&x64eaLy4h&4g>`MWGPlUJx@6sA)^;lE7L~R!S&x~qc=G0}g&DSM6Og(2Xd{vJ zSR^sqw!b!vTkwd zK`QGOm$o}ux487cmG#&@EFSGP0@t&H%*{`aCRsN>J+5Tk{Pesc>#?DjUuA65dhi8- z9)2=6<385%w3ilc8Q1<=*3B@d$7%pMJs;^pJZ$vPRT7)A9>7Y>E~ovc5-Z7Eq0MX8 zC!2~#hm~qBHiulyMlK#-xx%4RI93V=OFUZAli9bU`vF3)&oX zK|2Z|lDX>Y^!S#ZLtBnYB$K)zb)gHANnMcI&;`lls3ARK^T}!N5h9UN50S`BbZJPz zUE8lDqYYR$iC3^t5axP_$a*aGc;M5`JD)s<5?fi9< zWF~mU(_uQ)mq6kPHJ5gl)mon+bnyy%YA`alMpQU0q#ajCzHoksJy?38kW{rb>4Fr* zsBny?HI|RVikzOV2UhEFV&DLsNn$Z^>&f)oCEUtWo0zOylhCFX?5#`+^xPi&b?hK>OD~@D^V&^?u+t+ab_F_=2d+;||Jb%RlO3%TPOibU(BpwWQ&d#Y`GF&KpE%e|o@dSShD;*sL!<;r< zU9gf!2Sq~knn4#Vs&r7K#L`bkM@qC884>OV#4<1RO>sz?i(}GUY)R=21dZ1Y^Ymtd zk{D0C^vK2bosMlpqb*%hFAPm$Q!kEDVxvz7E4r5iuM5@y)8UB{&4n1orWB9OT)dLW z#iKMGp6Ff@sw`;#p$pQCb{Qi7>#7!DD4cZs5*7*-p+kdF;WAod30q=SryXP%M&!~1 zN)}>tdgO#n zJH={Ao2W!3nG3m0?~!PBW9!hvMTsP#3$e&;+>_o?30cu*BUuuG%q1tGE49v{QoHoP zb*vHQS_@&WU2}DH+N7!n*t|Nur4hzWv6D zhHq)zY4J&r6355sIdjAit>W}v!<6Y0XUMTGW>On6PfIp!MQWxl)!MK_3|0u~ zNoqtW*>pFJO?HoVg+?uc5R2wyKpf9&c?b9Oq!sql(Y4Gi`FLcdjW+BrJR~o(P#N0B zb^o+T(+)xQxAfy}k+j){{Uv*0e`|9wmpZ}>yXobd%%Gjdo76T2z~st3d_Ob?8Zj0PifD;ynS zs-M-36n02XX2C4>LHWXPSY)yxtt=gvj2aRzrPI5dA!vy*xX4Vzu_!ci1FLnkGH`&- zWV6H~G3d2$*qk;toyle?Dc!6k7>+zOkKKMc1`4`(-H_KB5THFrxGaigR=nttxa3Mo z<{F4W)Z&uoX4!k(NI1%`obtE9p#8m z90#T25>3<&tiq5YUuYoOkaig&)uu`*m~cMP=t9?9h*E1ZY)E_F5Rwi`L@Bi;%2;c0 zNSF>4G@!I)S7{-Ia@CVnnA`Pom7O=LteZ*i)rReMM5K3Z!@Bkh8fAK9>HeX#W6JT! zERHD(Ly5u&LdVBa*YT!UdhIV^#@l0sYyMokQDztavX`VBLW%b#^XZ_nIz7$?=uFNX zR-D=;g~KoH0(2Hqimf9Z6oe6>dTO^buv#y>1`dcksas))q1~Dki}q`}khb~sj!-yZYJxJC{Dj*!5?r`# zV=?AqI{A3Hnx26r7ja0OFNp1=+#`*mT3cE0vZFU|BX}Jm2W&?}`a6dh>L5xNV(Rfi zCH>_?H>JhgL$^pPDx9VY=Q}-b>LzKivY@ABU5H1zp5K*7dFw)~Pc3mJ5}+=~;iL=F zZge3!Ykwjnj`!2TP!gT>vRaA6t_#sQUcIFEC1q2*E=o&9#WAfy=ctFXilv-%A*K~C z&C(ysbW=>L(CNe**=c!;CSIfD3#A$_8S?RxAszmyIF?4dk)4lsvh#ZAil%Um&_h>A zjIeNNTR3zJM{MCh)#Fq5ig}OY`Fy;YosW03^YM0eKHksH#~a%Dcmpb5`0=E0LXLMa zD&x(I%6R`L9pHx4E91@WN;bEmkxp2T1G0E;Bwnc7C?WlMIEo&4aFSBG_4!|(C@=5QHNyn7#m;S^m>uLF>KjVgV^G}b!ux@dr6%y7h&Pr`> zp;x!zbftDuVcmxM>Fxfo9(#WqBjoH7FTJ`7@#)Y{=5p|bxt;gYA1uPUT^FUdzGOYk zzg3f+dbG`t8e;c<^oR@tth9!-JC%l_{x(3hVR4nV(okDAUaiuBQdrk9N|;-;RhGLd zyKu3f(*)8B&k&mS`BJ2ouqD#Nilm2CVGr#es?&Sb)#;u6>S}FAVJ2N_b+t)sJfX*b z7;8&a$t9umK{B^>?G?hh9-lH#d3vQ1Mk9J?$S_5UKt?BWD1~{v$~OD-*bTqbghJ7W zQPKxTrcA2~PmD~Px!Z8k@HojJtjjYcQ7~ajeckxkGwSEp)J>l~W%m3GKBaC}+%j#( zoawV?&X_WNc1>-4eWZm)RV*P@)l8_JT^kj9rKrAc(v(@V>*rTTUORK<)cG}Yrq#|m zIH{?bG`)6q&D7divunmrt_@Ge)P(;hOs%U=!=EyJ%IqkbRy%d-jPWT~>sef`nKoy3 z-Mo~{nXcQDsZ++))XbVcef;G58Plg6Ry%vjjOhW?O*yPCV_SXQ)VkVPb*at75Lr$1 znpQV${Ir?rh6#0ZiyO2u>gGYJWK!MinluVsof^uZCS)K9KC|j(r#_+?S3CaTDbpv_ zOtjoIWm=%6;t;@;@fKwvp&G3tNnqNHxwf&s4l!tcnh*`U3DK-IAsSF9_=9U^Nx7wM zPfDiT1~n|VL4C_@5H_*CcG9%a9LuFpW?LbVGTRF2l-VXpmB~X96^x6h;8#RqGiCaW z33WB&<;ZX)QnICBTC%0!U9u%Dl)Ac_aZ>QsG73f$>)jTu*s}W+k|^1yAlJmpCc!OD zli-%7NpOoKF|Br9&D6T-lV(qL<>WUMa_2V`{QZXU^>wwg>uRJXQg5{=p$2BnpEhpB z)G6a@!t*c(m+H%GwjC$e)=$XT$!)5yn_fGOu@KCe?h+;#KXpcvP6z8DlM|$?t`9vj z!Y;*jbbGZHU#VJ2nM`XLW^EMiVn|mDX{W1&G}F~X>!-|Sv0z=5SeG*uEQ_leS8-MM zE3VF%SvOrezVS2X$Fqer_|!>zz?zzT5_Sr`W_XTsV%_ZVY>zYRXN)tk8e?74#X7pv z+4Xa#j}I*{O+|%G(UcjXhX^${V=5#bYJwh4n^wzHO>uSRjBpCkE;tReuv$FJF`g2t zdzDZCDJS($3%qddtSfBr7KIIR{+?79PI^s`M^8;Q5c8CS7P$hXDxgNczo_#_)PHloVf5qz&8%-G6}B- zkMB7Pp9LOX-_%Lo#F`D>$++m}fQQHVb@E)+Ws><^=;L$r!kKP-e@N0j6#Dqyvgqf5 z?-15y63%kiNnn_S(`UHSQhj`GUG($eznAHKIgEl2>*YXj#uJ-__#6iR_{6^O!@*;F zkmvZ10GD-{WPT)gEFY==;@enB(p$t~k~cNU*HoJN90i|t#>FSTyC5jGAMqitkd0vy zeevy>BsMVVV9N;lF;^CX>WTK3HkGUjy{R zjZ2*T+i81&KZSHh8<+Z|{s3_5V^ZQz9^;od$zwm@9YSk z7d-Z#zIHw==zue=qpFf%Xv3gI*usl$3tv;#er=Av0g^ zQR00>CzI6sB~cWXHxU>nsrO64J19;2rMD0#+wYC1=3}lpMo>a z&%pneIIlrGjPtMHjPnbm%Q(LTXPjSw|F?0*c;q;`woE*799;*#g(V=z#n(tTp5KLk z16~dNx8R2V0i1FE2>##3$$n`G;)(G~oHv5U_@&%_ zM!Kx`U%*-Kzk>h2#wqdKgm_qPzyBZk-<;v^zacJp_;34viGOK^f3mtbHl6-c|BY=o z@xKNBte0m0gFny9x5B@Zr7P`W<^Lo9+u+akw(9@j&-Q#f{A2u5Zg+rpLB3ib-67zs zgUCPcc}SD`&k>j9()~e!zJaJ6(`H{Uc?jImBe`;IOA-MbSEO7^}w^@iI%?H z*x%kCMZtvaa~XJyQ_80e(q)`&!P(z#06qxu^M2IW3_jVo#4GosUTcu)f`4LM+WAA^KSKX7_#fbpfXC}iiStqLRqc9H z#v6};w=ynz@-EF1oR6sc>Ft6lJ1kxpK5w3ho`_VLb~md?ll>F z2diiC{|9`k!Jh^n4E_xGQ1EBL_XB?pd?xtw;IqMB0RM+^DbMwhulV=lCH@zo{{lWQ zfqx7BGI)#T!5~cH!*<)&xTL!V(v9D7_WIuNc?JHXz+VNA-&q!)*T7Fkx;(z_0dI$R zUIAylzn8&R7?<|*I@0~ZxWvPH{}DdCZ}SKAZ@{OeEsM{a;B9T$x7&8c{rG2NIvt>#5ZSX8?P!RmLSw9v3@g@S*VMadD7wiRV-J z9|8Sm;OD}h{Z;(C6yoza^h@Ex@_!IM><2!8p6ULap>J!IB<24F(%l4{<-CJ&DbFvV zA81_S{|Y>QXW1VwLrw3GmwE927krL@|JUI0?-fb>O!s8d`~LYd_^>=*fSXU2W| zY_?iRFibvO$)`+`?#AecyC_Z1Bi|zac%NCy?K|+9(0>m;8~g|GBaHiUJ_ek>(=9MA z?;J_Y23$ik8z2IzdJl*T*{y2`J8cI z4skr`+uLWR7k}3Kug1my7sUU&amnwm;2byp2F~Bn{(|-pe=n2ch~?JS#$!It_&sS! z_jma3WO~W(H{gTdLp~PcJ@y+%f%AU&BI8mHjPrEpH$lEGfd1cz=MwNgz&ZZh6h2F# zr_T-{4wAsWwgvxh<6(PV z1L?9o=l+lU*Ua#*{2%;dImmIb7W{i#K?rXJ&i;h=RR)?~j=Qy?kNt_~gEREJ&$g;* zWOkG-OaH+8HYXUDerX+~dlK}#pL1r0-td2XT(iBci*(uEdj1dfBIPBMKhMT~Rnq4; zq@}7$pVNqOiVw#p9ZWCVIX>wEAM(D&C9c-UZ)^|JPSyjjh7aS6?L^|?_+*0Vg>Qv& zn`>O^H(uiy(wUDxmXAO0w6>ij&NhfM=2z0??;z1f^lhOx8~r_c18}gg+roB` z({nrM*8<-VJjN;dcMvR!Z!ww?NIn%z{6*fbrQY_c>IFB2t5C5Z~?*RR2;2puw29MXUf-W;I{?+im!MMb^IehK{ z-vazm@Xp|`fp-D_0(?vGU%}%wwV?PMj>OXy`gH|_NoHGvZvwszcvtXl;C;cj1@8~u z9egx+4!jOL4_*&m3BC|K-Yby&#Br}|?g9N}(Dwwt8oU?y&EUPk?*Q)uelK`m@F&3g zfxisC9r#<|+k<}y9`Aujepi6+2>tiqJAtok9fxe*8N3yEHF*5{cB1bO-WmE`zXelPGpq2C*PO}pPK`cdHR!S?~*0(>-hCHTJJyMpfr zz8CoZ;I-f^=NaG!Kz{`I81PfU4+Os)yaxPX@Uh_EfY*Zm4n7Wibvt28d5#Bf3qAq7 z6L=kX4xIVw56*mz0-p$<`QVel<1<1MC*zO5-3y-#ef*72_!RK?o00d4zYz$J_gceZ z;a;xyiT5ak9}NG*mW59RkJp&Or-8?76XDar<5*Gn4DdJ>5B0-p#y>!lu?@f;1#cuodC5&jo|(|;K_>-QhvC&A}6 z<8r#?b?f`kH$wj<^t?XpWEX5w4)K@`i%BK;De&15{8aGW!8tzJ2mCbX$Ag~^J_Gy= z@FT#_1aAaC3;aCrv%#+bXTNa^IQxwXyS9?@IR`%Rnojt+;FF+V3|?MQnvVKF(( zc&D&@KJ<}yarzVC&-|VZegS;00>2RaI&jw4?cf(de>XVW!^7YgL;nOg+w;rdmq7oH zaVeim!9RiiGVpJ~F9-h({0i{Z?S_%m*OlO{!LI_}2t1yf!mddLIOEyMxWs=AeELHF zSMUMQUkkp6acK|NmEqDJs6PPyEa%DK*TZKT_zmFo;7h=d2fq>gB;%6bo4_vxzZv{? zaP~jTz?VY*EI9RV8kc&!1^Umxd0hMm&UV{ujbIQa@nOHz3Y`5?d+=M4?sniT|3Tn! z3?u1{G%n?KJAC#xF7;#6NRn5;{|^0|#-*Ge1pf;9hroY<{$cQy)|6Dz-|HSJ z!=+xR-^ldRt{#QHEBIsJ-N7FR?+5+__)g#)hwKjiB=p0AR{3+s?a+S={s8o!fIntj%Hf}7xRe9+@56ru z^xuGg3jQN_yv7Wc$x5x{|MdLwIrOW7e*wNO_?O^q!FjxN0RIa5&c>zO{srC_`mezU zK>rQ+9>%5IzAeM0+^C-f|L>qb6#RSeBfvTSTnPRH^e2O}9L@v(5&DabOF8@mz7+bO z!S99s7x0ISOF8^nhD$k6|2F)8gZ@kK-@(5H|2O!*!T$hnwsuG`Op>oZ!Pf@ogOweO z%W=JuU7O4P+d$t8yoYhgZ}T!-@=N_N_^%B8UhrQ9ycT>_@EPz~4g4_ZTYw*DT;g24 z43{{mzX<*N2KX)DJkQ<-&hzPG;Jn^{5qwSfzh+$OG2Vj;i^=EEw}Sph=+_4S z!?={gI%T+&1NH6X2i`DAdsr9xF5s=fdxNhBzCHN*;Df;1fbRhwpDC3%MuTqv{TT3e z;FG~O1fK@p9{fmf_8TXHZv_3R#-(01244#OU%>B$K0XsG`FhB>)XS#OM=te3{oC-b zfc{JH&A`6}?*RU9@Q&bXtt(Nb_1+1*H8{&>6Y$NU?`T}gXAAJ|;GMzy!>0@QQ0TV= zA7xz1ZL2a|%8mM&@b3!!G2roDZrC+B9()_m4d5*2)4=01?V+fWvyDqR?+BmU!FK|G z3_d%9zW{wT_#4KhzWSHpQeV`65C2`DUs)dT36r#w0pP2Hv%b~`kI(AM{u_d`zB+;L z3jZy^SzlG)gP`vN&iWbvz8my|!C7CUz~egw694|jrM`BD&*9)hz!!n<0e&I;}?htGQ8hk>^PKODRxczhR3{JVf3 z34JB_QQ*D7j|T4#ehl~^@MFP8f*%Jy8l3ez9=rki$>6Nt+29MHpKo01_jvF#pg#fp zBIp-_Uu9hCcTpKG^-KLS_@4;AtglVMPlvvfajCB}z_)|`Oz>TyKMQ=AajCDf%W$bL z>Zic}9O$QmvwxcpelGM!fwR6&1YZpOso*UC^TE%9{t|HBC%g{)eCTfiXMNobegX8$ zz*%2Uf?o*zv&N;qE&~4m`isGT2WNSIKgD2Z3LLct#qR z_%8+D-?+4&%gS(RKh)2G|K-ph2G0B*4}JyoCxNpZ&H=v?`U}8W4p)O;1^xBl{GIm> z@T;M}2b{nEJ_3FX^iP8Gcj1@8{|fyZ;Inak`U&{8(EkK}9r*9y93QsWFjQ2Sq+MMP z{aWBRfVT!;0=_Bujo^9ko4^Nv-weJd_)_pu;J1K}1HTn~68LT4v%qf$p9g*i_yX`d z!A}JL8~8ckcY$93emD3v;P-&v0Ddp{-@xw!zYqL=@Tb6+fxim=0Qg(r%fVNG{~i2G z@CU(v0e=Ym5AcV9%izDj=N0f(eaLV#hCIKKm5*SL(AzAwXNyhMFh`1}BUC47D?!^MaCT}>~?*H6$72mcv-U+`bR z$ASL}elYlN;IqMh2cK_T%IDwUSA+inz6|_N@K?YSdsaDECf|VbJ8~;+B3sjXSqb_L z!Q(erM3)0^4*hQ6D}&d9uL6E7_^RONgU4sxCEdG?OMSI~{$c1>2mgn0X;&@FaA^UMp#KcK9m@Gfq`M~c%{L9kVUl`W3w#~$R^Xc$mwc@az9sbQfai=$zSb?nC12DJ zhJS15hk+l2@$>%RQ@|&I$9D}vQpus<>j(d#w!X;m{cQbIn@jn$K|B|Nw*|izd;{?N zj7zz-1Ah$q4Z)u^F6Gv~43~1Feg*tDg8obJ$ta&+z*%mqR0QKNNt_$Qr%i>>luNmN zVf$}Up;-08e>T3gaVfXIz^4!RCg20XHwE9@xWp6R4GD|MSmWZq8T6BlOSyF@!=>D) zKi2f(-x2x~z&nATXC1@m<9rNe%-a1D^(@dmwlt(yb}OC0**Tg8x|PuLrLMzYXb*1HTvP zjxWO{UFx5N{{-k?0+4aJ_Gu3;M7kyF7eES{!r)-0YBQf%;LMQVKIqZ>WlhQ;m`Z_ z=Yh|H|Ha_rG5)+3d^Yqqf=__{F7P?f-w!?){6X+T!CwTQ2mYFIsjvCqD{U^Nk@i1_ zfwu)``B#7+4t)-s`t6NNeH{V)KkK{RPbZK=Yk&# zemFSKvnPNb2Yn-W1NiCS3&1Z2KOX!V<5FKIfZqnb5d2l}Mc^NSp9uaf_(|ZaZ4nX- zlcdXfTo=3%`VQdKcQY>aelqmEpg#qCN8?iOr4|7p;V20tBq4EPz~lfcge zp96jt_+j82*DU})8~PK$Ij%bk{2b`d17~}?68v1~uLWNWekb^O;P--`5B@0l1>jGC zZ?j6M1e;y~zYzM5!7l>;9{ghPU%)Q`U%7LdkhGsm!B+>r47?5a<>2j&OMAWoyd(5i zf_H&Fep5vv$$?)5eIMh}Zm%xGrQK3L)bx_CYoH%(T;lvI_*m$#1)mH3b>K%Cmw2u( z!zCW-7n@$ej|LIG%oqQ3H(>^o55F;z{4c^rQjQbv;Wxw z{1)i@fm1&K{8s44gWm>zG&sLAd>Z)e(BB4r2l%VtcY^<7T_0n#-vgg6;Osy1;P*n`3!MGr&fxb!KMHKVw|-^&0pq#wE_z%W#R4`cL8i2K3*8zX|>u_*>vBcMZm2lKj36z83g9 z;BCR*1>Y3>J@8J(CBN^3_XPg{dS#Q9I~ zQ@~e%UjY6o_!98Xz;8D$`TD#JmwZwGnCYcnzJUHY@Grq%2mcEE1Mq)=e-8dN`1j!7 zfUmZ72qa8WKHq{@gMSA;*tq2P`!ZbeOZ^zrOMZWVeiHnD1fK!_pUQCYr~Wwj{|tR2 z_%GmRgZ~PCG5Bxb*MR>Helz&L!EZM%<@pErm(c$S{!Iq|1w3gH%xwC1247{HR3PQN z67;KQ@O8nPLEk2W{{_4`^qXbyEx}iYewz&51AGTTKnC9fd^PCz%;5Wi zw}5_32CoBO9r`I5{1EV#(9g->M}n^b{jnMRMDR7CKP7{o1HKmY=V$QC!COIpbq2o? zd~N7&$>4W`uLJ%48T=9Ob)kPEgFg@68v2(r_}k#?LH~XR{}gPQ8T5yNcK|;cyd!u6c>Fe_w46oYn?rwc z20sIQ3+T_u;1_^*hW?TaehqjR=&#SAD;Hz$1>`%Hw-!g-@2G2p?HiK^ho`=3e2Hy%i zemhhm?3TfMf>*)6Zw9Xh?*aY53_cXRC-fsS_2RbCU}47-_79v1m6Yv&olUU-~*ulDTDtBJ`nom-KCV$`v&A|fbROm2ELMH zC`>XV?~}o&XYi{t_*)q~{{0Bq%yj!VmuS*>_#MT4z^OkpgWn839QpkkoZn+ydF5id zdqTf%2CvBA+h*|XGWc#8JpNqIk+e5gMk`uI)qAW7o4Qbj)+{$D{)zRIeySK8k8g?>}; z{lI%>@I5m4gbaRo249@P<2#a)ul*5EeAiF-0pRgnAzscY& zY=A56Z3g0L3qBKkn+(271|OBdCui`ZGx)jShajG-!0W+Z%HS)S;+FN5C%J`4HkxK7c3Hu%9A{G$vWzZ)s}rO#IQUf&$}9|ArX zd^z}`;JxhoTH-$sd@pe3D}I+u^a;wRGrr3-A3ps4)nVYrKz}&+Rp9Y&tVmMNgC7a~ zml=F*`+knZNqsJZ56|E;z>h+@$7k?MGx*&Z{P_(2DfrPym*3|(27DKM2j*DtJu~>& z3_c@+$M5P$dD8!s4E=@R$043u!5hGz0AB$99{BO#KY^bB-pam1B5^JR-yD1q_;%nY zg7dpHq2YxcrJp??C2}4rJ zBJfk8zZCp5@cY3}2Y(}je+@nz`C1d-b2tM&@jDw*4rhY*gPwd0_+jur7W^#uoRz`v z20t76ufR`&fBasA#CZ<%@w*V7ABgV{P=8DYe>a1#gzp2Ki*$F+;Nvs+dEk70@;-3- z|DM6O!+Y`c84J$mKTiZ-jQAI4aK68P9`v_Ee?It28T|JQ{ujK5PM;mXFM$6@@C(5w zW$?qnFM|He41Npv#n891_n4(!k@w2rlQZ}m;FrMvn+)EfA|x0lNtgQe6+%mSu0nB% zeozLl0lyUSOas3Rd_e}kBZGeeemQ)8&fx2Bmgpq;rM`OxACkc*gI|Gkj{?6E{37tH zz?Wz6w=($88GQW?#eC7fdj^k}$SZ~2)sMOc?f z%9+oRicTi+;d7^v%bfb|A`X-I@HyDtN>d*`HygS5P`{Ju#pg)mcaU+3=cqDVe5fC8 zdhs~~`q9S4r@jmqAL_@NUVO$uKiRnWj4#8*hx(bO7oP*6pJ!Zr;yp1zk&6%Y$H>Mo ziO+uUS)?>A=l#oY@uB{7(~Hk2=+A@CK4rN0P=A@}#b*!buQe|D8d`>n5A{n;FFrd$ zf0uFb*{KW{AL^HzUVM5(|G07S=~IS_5B1NPUVL)Uzh+!~@@2UAQ2(Ck#b-% z96k%79}S;HWw`iIKNdc7p`Q$&L(6dSp?)TOrb0gtKGVu@@uB`0_)LU;5qu_<;o?L6 z>G0VX`t#tkUl}ew)L#alVbEU-pW$V=_)xzTKGo3Q1)u(9xcE@N96nXhKMtQBWw`iI z{~UZiK)ZbnK70;8a`B=5J@{OTbXUNK-*=5%e5n5#KBpj_pW$P2j*D<}!wnV<#!Dp*7TzsgnfX^n-cY#m*EidevL@qwmcZbi~@aYYo zb;@w@p?)X$w19pPd{!^R#fSRg@M#A9X!tZQ!^MaCvGC#FHJc0{{vEW)#fSQt@ZsNy zn+G5MUAf4`hx%jS!@twF2tNF~evyk0^{2zYsxT|339=@QJ^nhh3A%#fSR$ z;KTPyR=|hvp+qh|)PD^hzCZFaeE7aeF?!2^ed0q1pIImMy!t+|Z?pOny*AZ>Nd0nt6ILG;0f^*zn z3C?l&_TU^>?+VUw@}A%v_Z|SwaqL8Jj!O>#=Q#5SaE=>K0OvUH3~-L?E&}H`?HX{7 zyOx4;9CZ&k$3+i=bDZ-GIL9rofpZ-40XWAMUx0I*@FO_S`zx)ScC6CucphH^oaf~> z;5^T63eNN9mf$=OR)X`q*1`ID>E^aEji7j56W$GcE7=$(;qjS6S+~~iQ(-x)l{ENCEj74*A<_W&Ob-V=Op@Lu5if%gWl0q+Ao0lY8x6!3oFvy4l< zqx(-57?*mmM~#$3F7-hD$&RpPrQ#O@x(EY=pz?BeXf*^ zVG_MPvZ3pdi=IA9bZe@&M=+E`E_(Xh1^qgGKBk_GpHZ$VE?|_n@~&B$Pxhditz@-X1+r61nK< z6YmE~e(k4t)kiLR`uwI_)ADR*%QA~x^z>;a2YQ&q-+nsQ^~gm}pBB*DPqnI#T=eu= z2l|avnf@2K=;_lAdix1fcZgi{^yvV-{p6_n$VE?|t)aJ{{!|~i=;>1hz5QgT`p893 zpPituP-XgGMTx?i=IAlJTKagQ5@!xi=I9c;NJ=Q$VE?| zcwHbKn?oPD=;<>L{<1Ajkqe{GQP6je;xLa~^z>N(eHZ8>7cG5GgMLfsBNsh=&VxRl zTV=P%MNglrpzkU|n<5uIeU?DKbrgqrNk z(5A>mPoH={Q`$rKC=T<;MNglX;2+<8kli8|J$>FYeY3#Fh|s2Q;1kCHvMF-$q5c=> z$BNLV$VE?|l_bG1Nxo`zDg7^U(T@dR3;JPM=pB$YzBQD^pT66K3hUR z5&FnQPoEypPl7&j(bFfs2h<_(?N=`D5V`2-)8G7MHnk{EMk3v5Ww`iIzd!WTp^sej z^cfHROz0yQJ$>SPOdSG01p3HDPoG2KUk`ocqNh&-^s}LlT=ev5gnkb6k&B)_i=m$j zedMC2&!x~G3Vr0Fr%$|}&>`@7&_^zM`rH8j9nel97d?IMFulxAPoFQKUkH8VqNmUI&@X~Ma?#T# zX`YHYgxQJEM=pB$w1EC3=pz?Beb$G*5&FnQPoH=nM&dac`p893pDyq}1^UQEPoM74 zp9+2CqNh)9=ud+_a?#UgC+JUyK6261XAtyfKp(m2=`#}gGog=M^z@1Mk)%A&fGK}+S3)1T=;^Zp`m3OiT=ew$9{Q`Hk6iTh z`4jqUppRVi^l7njDw6i|SLh=bJ$=@J{#xiG7d?I2L4O_ek&B)_@jYdU=X&TP7d?Ht z!2bs5BNsh=wuXL3TbA7-7d?IAJ-}vxFBPFpyTa$z2*W&b@u7Yg^tVADx#;P$5A=6H zAGzr1Qv>~-&_^zM`b>iUF6bi{J$+_CAAb{+-69t~eGY~G9ue9Ux#;P09Q5}_ahOLg zdipd%e;@Rbi=IAbKz~2~?`p893pUa_t0Q$&9PoL|cUk-ibqNmRt(ElC! z$VI;#{C?;kEW<@lpC_Py2>QrHPoL+Ze;E46MNgksp??JW$VE?|ccFh2`p893pMOIC z81#{go<9GA{&DCd7d?G`g8m8UBNsh={)GNX=pz?BeOj)PilpCr3i`-JPoMRm{|EGu zi=I9kLjN@Mk&B)_n?e5!^pT66K3hWnEcB6!o<2F~pMySf(bK07^v^>dx#;P$GxRS& zAGzr1vj_AqK_9v3=`$Mom!Xeb^z<1A{VUK%E_(V*h5l9OBNsh==0g7(^pT66K1W0U zI`ol?o<7Gz{|5Ati=I9wLcfz83$k0}qNmSUrkC^VyCSsd3i!MqVVFlQKGa_i{RhxT zE_(XJXQkx0`w;rbMNgk)@c#(<$VE?|N1^{1`p893pJ$-|1p3HDPoMZr7>WO%&_^zM z`g{QY70^d6dis0@{io1JE_(XJXX+%L&!CT7^z@0(@`?U)=pz?Bed2HKqW=Q=$VE?| zmaC>B(SHejw@o{`2AU?=oC`s6Q6^KcJ6X^z=C%`f9`(x#;P0n&~CZ_#3Ds6Q7-y_Pp{+LeeR6 z@uB`&q`M0Ak&B)_OQ7$MI3pK5eeN{9#JM{BAA`>tWw`iI|19)tLLa&4>GLA=yCBZU zMNgmjH`XQ2b>aU7eAX+&#fSRupRc zW}@E!`p893pLXzX2YuwCr%wg+?V*oc^z`Wh{YKD7E_(WOhkj$|BNsh=s-Pc$dXHT6 z^x47mQtuV;9|oWJ8-0)@k&6%Ydqdw5K9P%_KJlG6sh3XBM=pB$)WUyr=pz?BeWpOa z1@w`No<1|6?+kt9qNmRs=(|84x#;OLANql)m&ip=AAWahYxtiHpKfKi_)vcl^xHxo zx#;P074+Sqk6iThSpt0y`p893pWC6&Lm#>5>2nYCmC#2ndipGbepi%p3OfEC$5h!I=lPf6^9NCpY9P9`%qnTgEOnMouBv8R-#6~t0fT4E`oDbb># zN-QN}X{w~5N`z{JlA`>7&%M7VJ~{I{O@&{g+4B|r0r1Y{ z*|TPs5QIgK-zpqu=kn~?AbK6=gV4VXdJakC>Y?8O{!n=5^6aUEKMdZvJbU`W9}e$a zo;?S^SHU}%XU`$h~{*Ks}?{dJf-IFYM|-oLv{bF1N< z%d^M76G{FUc<1u$@$Wd2KNjA(JbNy{_8$lDT%JAt9X0A70`FX&J^tM<@<-x0JC|pV ze@Dj}As>c*|Llo+PDv$e#@FT%JAt*$4U4;GN5}XAX{A4ZL%C_RNJJ4)0u^ zJ@epe;hoE~X90XYymNW>EP^k>JC|qAV)zDl=kn}X3f~CtT%J82!ykq7#JN0szKmYy zNi+I4S~mn?(f!z($kju?1^oBnoy)UlTlfxm=kn~?5q>PZb9wgc20sqoxjcLJfjmuF8gdYva1 zVtdA+=i)@J9{O|OFM)S1&z_6nC&N3JXU`SzKY({G&z`C9m%=-jXU}!;m%%%iXU~oB zN8>m&UkUGAo;`nrAB6pKF3+AnMX&w3 z2K|fCb8RA55B*a3>)@Tsv&X+zR?lPC!#kH}&ll()jQw&h&z^OX^6a@5{#fjnb9wgMg8h0B{j<>X+eEG&`iI~jf_E;@p2y)I zhIcN{p1JVHVZWTqvuA$vy1yPp|KHH_`$VoD`uE@;hj%W|o{!+4gm*5_p3mXu!aJ8| z&zkFnAS^oHo`QES&z|+*pN4lX&z>#dpM`fW&z^1J{|N6~o;^FlKM(I*o;|z4&x3a^ z&z}9@=fgXfXV1a#FTy*QXU|daFT*>RXU}o)ufRK(XHO0M0(j^0>=_0BXL#rG>^U8N z2p&hy<=HbfdOeO_NB_m>`D-Fq5B(MJi{PEhv*&8~zrj0~XU~oBZ^1j4XV0zhe}{K2 z&z^hX--dTC&z|4FzXR`Fo;{DjzYFhNo;`Enm%uxhXU{zN_u!q&vu6SPKj59qvu6?f z2k_42*|Qk_pYYD*+4C{{hw#qj+2h}Dujk2S@XqDg;~#>RABx9?b9wf3T|We2(c|J1 z^nW|%>RF!1)kFVX_3r9b9weG zgZ~b^b9wfB2EPrwb9wfxu|WvJQW0LZg?BE`p04oQ!8?~{&nEEx9Xo*(oXfLk8~C2+ zcP`JK9pJZzcP`JKUhpU2`QN!bd-jT6)&3dDaJ6tKdUnBF=jx$98ooEYb9wd*h2It4 zxjcJLg|CEnF3+Ai_}$>0%d@8uz7M=}dG<8H55sYGF3+AbqE~fa^k0k~|1PFL3eMF- ze+9gM=2YIfJbV22Qz}BfFXlRzXU~o3-w)ooJbP}3{~o+^dG_1`zdyWldGo;}aN4}fxzJbR9WKN{Y-JbR9Z9|Z4Qo;|0*4~BOx&z_O+)$q>c+0zVv z47_uB_M8cSEWC4h_M8vzpOFuw;9Q`0q?rgnSshb9wg6M*oTM&gI$j2>eO#&gI$jG`xSeKp+L@^6YsT{uJ~(muJsH z_*3DX%d=+*{Auvc<=L|gz6Rd8JbS)`9}e$ao;~Yq6oRl+gqK=)=kn~?5Pk%_b9we` z310{AT%J7@@b&P{<=ImSUxarq&z`>UBjKIPv*!T#QSi>?*>f0t1H5y2_8be}2=82; zJtx7BhIcN{o)Pe;!#kH}PYe7Qc<1u$nE>Ae?_8ce=fO9_JC|qACGaiq&gI#2IeaU; zb9we$3;%t1=kn~C4&MgvT%J95!*{?tmuJuY@MGbf%d_V(_;K*g<=OKz{2B1h<=HbI zemuN$dG;)Xp8)S%o;`2Fp9$|=o;@GHp9Sw+o;{zyPlR_a&z?29g&-^y;pJ?2=ko07 z3V#l~b9we`4u3AZb9we`13wAgxjcJ%!Jh~3T%J99z@HEAT%J7#z+V9GT%J9L!CwgP zT%J9H;4gxAF3+Ch;V*`FF3+A?_)FlO%d=-R{A76N^6Y7a{{g&ndG?HlzZBlNJbNa= zUk2}7o;{P{e+chfo;_3GFNb$7&z@=USHL@$XU}x_AHh49XU`1yDe%ta*)tRV$MDYO z*)tpdC-BbY+4BhemGI8x+4BVaRCwp|?0EtHDtPDe>{$SRHN10q_AG+G2Hv?md)|Ye z2Jc*+Js-ng3-4T>J^rPi6(PS4-nl$`x@;VRu*hEz?_8ce-QaJ4cP`JKt>J$P?_8ce zJ>hSJcP`JK-tafUJC|qAUhvc5oy)VQKm5<&oy)W5Q23kSoy)UlF#Ij>&gI#2BK*(c zoy)VQ4*nPL&gI$D1b-{Mb9wfh0e>63b9wfh2R{SexjcI=g})u%xjcKWg1-aaxjcJr zgufHsxjcLBfWHggxjcJj!T%E8xjcIwhQAx$xjcKGg1-mexjcJbf}aWRT%J7(;qQfa zF3+BK;O~QXF3+BS!v6~1xjcK8!_R_uF3+AX;eQS9T%J8^Z4!d8RD_rN;hoE~XMOkw z;GN5}r#t*?c<1u$=?VWJymNW>>b?cP`JKDezCiJC|qA4e)c}oy)W57w}KPJC|qA-SAJtJC|qA z{qWDgJC|qABk<3{JC|qAlkk6pcP`JK=i#4&cP`JKSKyzAcP`JKH{j>NJC|qAyYMf- zJC|qAC-C#(oy)W5OZXSzoy)Uly-h<9mWuH561;PH_H>7T8Q!@(dn({xfp;#?o?h^O zf_E;@o<8sk;GN5}r!V}U;hoE~=K%Ou;hoE~=ScX!z&n>`&rtZ+;GN5}rw0CYc<1u$ zX@p-0?_8ce?eKqvcP`JKiSUcyoy)UlGW;9x&gI!N1^!KV=kn~C2LCsB=kn~C4*wRs zb9wg6fd4zZb9wg6f`1#{xjcJ*2mcPdb9weW1-}^HxjcJbgnt*_xjcJbhhGBkT%JAe zz`qCYT%J82!oLsiT%J9j!v6!_xjcLPM=~lx{sFvmdG>VKECgYZ|0le2dG>UJUkdMB zo;}^+KZJKK&z^1Im%%%iXU`7sAHh49XHO;k$MDYO+0z&PU+~W5+4DX4PvD))v*#fA zPvM=*v!@DvIlOau_Ef|F8{WA*dxpV(2Jc*+J;UKYhj%W|o(A|Y;GN5}rxpG`@XqDg za~AxU@XqDgb3Xi6@XqDgGa0_HX1Fmf&gI#2CA|N(npSZx&z|ex*Fe8>dG_24zb3qM zdG_25zZSf6dG_27zc##cdGa{;JC|qAzVKVZJC|qA0QhgiJC|oq75vul&gI!N z2>v_p&gI!N1b!QM=kn}13Esb}KahfRdG?He?}2{j^6VK6za6}DdG@rySHL@$XV01N z--UNB&z|$)d%`=HXU}B#?ctrvvu6tY4)D(9*)t7(M|kJ*?3oU~6TEYI_S_EN8{WA* zduGA!3h!K=JrBWG!aJ8|&*SjB!8?~{&$IA-;GN5}=Oy^v;hoE~=Qa2};GN5}=Pmd> z;hoE~XDR$%@XqDg^Ev$9@XqDgv)1Mz2#cQ2`@%byXU|6P`@lPwXV2E~{otL;v!^Hg z|G_(#XHOsaec_$Uv!@^Ye(=ua*>ec|_u!q&vu7Z@|0Zl81?TeY83um<`kl+OXE=O+ zc<1u$X@DO9?_8ce?eGV}JC|qAMEHZ?oy)W5LimH>oy)W5hwz8MJC|qARQN;Toy)W5 z2Kd9^oy)UlI{Zm^KhU{6d+vx{?*|@*{zuR=Fp;Z={t5V_;hoE~=UMo{@XqDg^AdbD zymNW>yas;^ymNW>ya|6SymNW>EP+1`-nl$`mcb8!cP`JKPvB3+{pehtJ^mw_x*tzO z|HfN{AS`RKpkHoy)W5c=(a<&gI#268xz+4$kG-Qy;yK!)Wx6MbDT-t{(cc;hW%{ z%d_VK_!fBQ^6a?`z7^iNJbSK$|318PdG=fn-wy9wo;|m~cfdQBXV0DRW8t04v*#Z8 z({MjJmuJs|(d&Mkfc~e^b5{$kXKD={z_Iw6^0lag0_N>u81Yyzh-bL`v<=L|V{KfFj<=L}2{3YY?8s{t9^K^6WVj{zvf6<=Jx-{1kZS^6VK5KOD!wxjcJL zj9$lKD*8vG=jueR9{M);Yv7&Bv*%3sY4FbF*)s|LT6pL3?70xW7RSN4JbSK)UdQ35 z=)Va)HzjiQ(BB3>9p1S-d+ve%8N73O_WTNd1oq3hJbNCFUi^T|!xA4y8*;5byFuZel_Kbml1m3wkdph8M2k%^-Jrm*Qz&n>`&m{PI zJT9Eev**(2^|*K({nw-CiA1g*`di?igm*5_o;%^^!aJ8|&pq%(?3Z(S_Bn zKaHN}61jTl=fgh_?_8ceufo3o?_8ceZ^F-qcP`JKCGao8JC|qAGWeI^oy)W5Gx(R` zoy)Uljjciu7Cj%n0`FX&Jze1!z&n>`&$rXHW0w zbzUt(|NiKCGm)!@{!sY8!8?~{&(ZL2!8?~{&rtZc;hoE~=T!K`@XqDgQ-psP-nl$` zn&6kfJC|qASortgoy)W5Z20%#oy)W5BKUv6JC|qAVdG1`EJr6{$^ZXO^&qdGjM6MqC=i&bi?_8ce3*bM4cP`JK zH{d^qcP`JKCGcOsJC|qANAUlFcP`JKFW|p~cP`JKwZ9#Lu;}^oD|qMf>{%DS0r#VG zdG>4?z3#^~;VaOyb|O~~eJ}WR;GN5}XK(m#!aJ8|Pk;C>@XqDgQw6^+ymNW>41{ll zcP`JKwPdNxYr>Y;Ce_upa;q~KhhJ?-$L(eGTIJ@MNy3i{Q1r^Ck&YYN)_ z_$OAvweYp?(*NOW$l-GLcwHAg;`N=vC4KLhXZ!oaT>X2->$>O{ud9FWcwHCH)lWY# znrwe{%+bR*(PaA@Vy^!0#p}9gjn~zGK)kLC=jx}Q7)`c+ zQq0vqAYRwS$-5Re)`9w$@b5Ux%zz$D4G{@^&cCr>%zJE>0gT`+rKF0 z>K_uX>tb=duKwfWbzL}DKmEtiWc!!LT>Zo1_0ol4Sk!+~>010R=IW$ z6S=nk0py$M0EZ>J{oP}(i`Pq{{9lil>-hUIrCXe9`|0~dujBctU|gJQdloqimjk2E zZcla0b@3Veu$XImzDnfU9{T#6{s#1aBOXK5wW5EWM6Q1Ni8=j~(BB0;lhMCHB3D2C z)SUil=-&uE)6xH(M6Q1N+0pC%+7jNm?ypUd`)9rs@$owk+p{hF0&LIDiCo)5@1N<& z_WNfgRJRLy{5||SANES*>ZkYjY-jrm@qK&s_eD>an5(~kB3D2CX3=N+yQBX=^z=ag zk%?UW^u2TX`=EayditS%Xd+iX{UJI1Rp>tfJ=N$xJ&~)QepvK+eme!;xt`zXPlF!; z?_B;=VupMvdagLkg& zp}!h_JiK%HcH}q0PfX1|7!FsMgI+nT>bR^Ttv3NuvUO!QU8tT@yEzI zK0i<7>Zji<_GJ6JqyJX)^oY6o?@r|Er|+H9-v|9O(bEt8_a}1o)BA5yi}L)bLcibF z3Z&q_snj!Ee+2!`)lcv5q009AYwJ4xexEH|Ei_>JUq!!j_0zXTujjWvz&qFDg?=3T zGw{ykpFn;N{0oU({yF3q!~ZFf%fEztYV?YD{HMiS$LBTp=`rsa@{ba^jt~8e=yiPF zfOoF#p}!k`F}!p6H<8~Dzci7{`+eqcweWcKqTJuPG1vb73qA8<-ZSJI>BhJ?*Z$Hk zh+g~q8G4*+d*~O!m!1q_zjOJ|(epO^I@liP@@pdh0Dk>MF264FFQU&LpTgSZ4HMlM zzDvw|hJ1%auH!@BEqWcF&EcJEd+0ZZ|2DjH`7My|0RP=YF5d(BUeRaww_nUfcY+@f zbM5c$iCp_jKQO1i8vT2rXBhgw8Q<1~%7SzC(_a+5KF8LM9_RY}c`Su~-3iknCt#MK9OsG=?}#A425^D?HPo;K4*Ixuswd?IILP|#rF7pVCLE$`iVLH zlh8jL+cO#cqY}CL>8IxOPeXqrdZwd)Tq0LL{fy{!|N4FPaJArE$CLg}_%`%AmuJsI z(Pz(xIWgDyFdjW~W3KbT@7sr~1?Sp+`gz!%N$7E|?V*1K{z7=?^5-FcEBfsAFOIpk z|5Es+G1vD0IFW1n>A%S7_ZK15e$|GGr3e)`R#&u)MBn5+K=^z=ag&52z7 z^u2TX`=I~l=;??4I}*A2=?}^2uR{M_=&45kqlsMo^uwap`F}6GbDa7{FIpM{(UNuYy0VM$mySs{%6oL1O2Zha`n^Cj9$mb9|MM~ z1?M_G^bf-S1^v$D|AhSU=(ERXZp?Lj7Q)YqxsK0AiCo)HzYyE=cX;R8o;Q#$f%nIr zffSs}zXQKk7v0+V^SxbSuI>L9e7Bfu`~5Mgt~%HD({G*A-vj+?tfhwXvJ?8dCUW)D z@0HWv5B=+-X8`&)PUPyRFI2WqXzHjP5iUF0%9jnk)=?baQK+o1?WiqOj%aT$RJIkz z)K)6395=GPrlzj8xu&+RuGrpQGqQ0^v9h(ct)sF}0YY(2M`Kg5y`#3N^@!?D6=g7? zwOG|@wXjNu*7$l}ePdg(uA`-GLQS!`qp@Scf4#M_*uL`ZO)X=aJ6c;Bn>%W1+uBmw z(q5yPW7}8SmeOi9ItVM*4JqHyRvgtBj@N{P5{0#`tz#zCjBToIKfTkAH#RqhW1Bgk zW1CB*o$^t|j+*o>W5V#7+A(92tBk0vJH4@aRL#iFcbyu)zPYq}|FxpNIIgj-m?Y)n zP&%-kZf`55H@h@`OiSJAHSLXOrfWyG)sAWk_jA6;UA3{frM_5Gr~A9p7HRUxwqmhn zgvO^2OzHMgN&5Dt+VM4Gip`@s8amb2wH0eSiZ$ARyxYR#ZA8nM#=4p@jm@3Ui&)T5 z+g6_jZN=u=rq1PKo6~h;TG~6~u#xq847G&^NvF*$-T2=(Ql!&*XS6kTbRMNgRG=+- z0F|FLT3Ucksc!U+?ONK5C3 zQd3iHYbW2@l6cUyPiU@dXlrRsozu9jre=>$eRU1B&7+FpQJy++%D1(g(OhgxtXK>W zqw>>m;>J>Ie3C9b5qB~==BX`OX@mFdv>MLz)Y^^hHMJw!TgHq{9P7;6jZj@aJ;K|R z@)PjkdMnbNO^57JxqB+!y;6rWQ&C;1O^#vdtx$L)b9m)mE5g!SuoV*r<>beGJE`h4skc4tD}}XfI^9;z+L}johGBHrsB(FDD)3ds;S>n3*R?e1$-hw9 z+|p63Jbcj5UBj7C=cmi^is3Cp>4~thy>47(ZAW-E8xf8jzu6+b&-K4t=-b@%K5zW+ zZ$-s`71vh2qW2@YY!_b9`gqr}bn}4H|DFGn<+5XVMeoY}uj}i3=l43PxPr{9I@!ifs_lS=Rm#O*p$J^tdm5;A=p5KwP{+zhR#Vgh< zU&(I2zDFmu{axZ0C5FfKwf*{#BD?*UhAg%Hhn07~)A7pA|5?uZRjaxF?{e1n*T}Q; zvakO&XMKOIJL|KrYv;A8+4Fx;-2R8cZCtYJe;#g39sh=S{QW&1I{y08h1ui3dCvT< zaZq+%_Vvn~_5C^jtk1rFOwRfnMz|AqK3vbPuj8EB|JL}$tl@Ee?Z1B2d3OKxHSX}Q z)A8>c2i3>*eUY8tkTZW?oIfY7sQH_Qm+buWbLL+c2kH27$lf~<#Bz@-y$(z-{&ThJ^$xxr^3ST#nbEA{l6!y zoZ9~Z&z1-GD_;~eUq8~6-Tyy^+eNbT&xv0j@bhdSr6oImZdf@rf4qvr(x>!)_!}+Z zQg7?B^Yt~t)cmVgbN)Ly^JgUHe%-=RKf6tuxPsI7- z!#Z5D$GctY&U;o*9A{-B)sGZXW_o0xxk&iwJK zIe%o%{9*AMIl2GaC+1(8GylHToPSZy{K7n)RpIL=rT@$4zu(tVil~=!ac$|T(alCerHAM{Ok5|`TidsSJv_W zzwnZsub;_J&Hp4qeSF3xJAZc0{MN+${X$W8zJ7)}HNRrr^3+}&9u1PQ`#&!+ zfB(e%B{}m4#`#lMF<)OxO3m-{O8NNDi0kY4_fO2%&+?`Ae^H#zpSe&~cK`J?oYedU ziTMX6=J(2(e@gto`DzWtlAXVO&iqO7o8Y+r2Zx^Q{og-l{<1hiM@iXa4LspZkA!V!nQdgSIsLIG-Kohtq4N#oJ%r zyYM}`IotnGTz{?jcGM-=wEiuowNNr=!3l~?KiHZ5A z<;?f*xn0%#6LaRzNz6YvG5_qG`8UV?U)A|PK4*UQyPfaQyJ^Sdo6?>|5PQ=6FoV$S?4^vSBQtm^&$=W^y(z1R8p*M+|9 zVi>vz#7d&APLe6iyH?EKeq z*6+TW>wlQD{!Xj8{<`7)Q=KW<_oK%U817zg^Dy)8qQ9I)3^-)YSYLasBvi z?24_(&L5Ps{+zge)@NTIm9zfbxc;##Ca3rR+_1hne>-RWKC3x@?XW|s`@dgYf9uSF$?pFq zaeW_8Uk=e18^Y4VPeA2YOS9tD(!~a0eeKf#hT;13`24k4Z?wXq=dVfO#q<5Vx=qgf z4t=l_mWJ^5kxTY`*ga?c*W!tHR0Y>AA1fxkbGCo7zOWFMVe##_w*P|glHLBpa^~+i zR%@^PHR-B(XO$+Z| zQ(kZ9_*Yo8~as3q_ zUimDppUu6V^I19T7w##Gs&G4(%&UcaLXdj=E?>X=#4$ZS59s*+D7<)mKYkw#L6EJS zq3cx-l#?SeH)OY8ub1!XmEp9w{`iIE{K|0gaF~^yuTSq}p5jU?bi2Ad>4D4#VA=V4 X|0uQov|i=(MGq{setrJLR}23Sy*#aI literal 0 HcmV?d00001 diff --git a/rts.gpr b/rts.gpr new file mode 100644 index 0000000..606a8ad --- /dev/null +++ b/rts.gpr @@ -0,0 +1,62 @@ +-- rts.gpr.in: Project's RTS building script. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +library project RTS is + type Arch_Name is + ("riscv64-limine", + "x86_64-limine"); + + Arch : Arch_Name := "riscv64-limine"; + Ada_Flags := "-g -O2 -pipe -gnaty -Wall -Wextra"; + Asm_Flags := "-g -O2 -pipe -Wall"; + Linker_Flags := "-g -O2 -pipe -Wall"; + + for Create_Missing_Dirs use "True"; + for Source_Dirs use ("rtsdir/adainclude"); + for Object_Dir use "rtsdir/obj"; + + for Languages use ("Ada"); + + package Builder is + for Global_Configuration_Pragmas use "/home/michael/capstoneProject/ironclad/source/pragmas.adc"; + for Switches ("Ada") use ("-nostdlib", "-nostdinc"); + end Builder; + + package Compiler is + Base_Ada_Switches := Split (Ada_Flags, " ") & ( + "-fno-stack-protector", "-fno-stack-check", "-nostdlib", "-nostdinc", + "-gnatg", "-ffile-prefix-map=" & "/home/michael/capstoneProject/ironclad" & "=." + ); + + case Arch is + when "riscv64-limine" => + for Switches ("Ada") use Base_Ada_Switches & ( + "-fno-pie", "-fno-pic", "-mno-relax", + "-march=rv64imac_zicsr_zifencei", "-mabi=lp64" + ); + when "x86_64-limine" => + for Switches ("Ada") use Base_Ada_Switches & ( + "-fno-pie", "-fno-pic", "-mgeneral-regs-only", "-mno-red-zone", + "-mcmodel=kernel" + ); + end case; + end Compiler; + + for Library_Dir use "rtsdir/adalib"; + for Library_Kind use "static"; + for Library_Name use "gnat"; + for Runtime ("Ada") use "rtsdir"; +end RTS; diff --git a/rts.gpr.in b/rts.gpr.in new file mode 100644 index 0000000..f98d80b --- /dev/null +++ b/rts.gpr.in @@ -0,0 +1,62 @@ +-- rts.gpr.in: Project's RTS building script. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +library project RTS is + type Arch_Name is + ("riscv64-limine", + "x86_64-limine"); + + Arch : Arch_Name := "@target_cpu@-@target_vendor@"; + Ada_Flags := "@ADAFLAGS@"; + Asm_Flags := "@ASFLAGS@"; + Linker_Flags := "@LDFLAGS@"; + + for Create_Missing_Dirs use "True"; + for Source_Dirs use ("rtsdir/adainclude"); + for Object_Dir use "rtsdir/obj"; + + for Languages use ("Ada"); + + package Builder is + for Global_Configuration_Pragmas use "@SRCDIR@/source/pragmas.adc"; + for Switches ("Ada") use ("-nostdlib", "-nostdinc"); + end Builder; + + package Compiler is + Base_Ada_Switches := Split (Ada_Flags, " ") & ( + "-fno-stack-protector", "-fno-stack-check", "-nostdlib", "-nostdinc", + "-gnatg", "-ffile-prefix-map=" & "@SRCDIR@" & "=." + ); + + case Arch is + when "riscv64-limine" => + for Switches ("Ada") use Base_Ada_Switches & ( + "-fno-pie", "-fno-pic", "-mno-relax", + "-march=rv64imac_zicsr_zifencei", "-mabi=lp64" + ); + when "x86_64-limine" => + for Switches ("Ada") use Base_Ada_Switches & ( + "-fno-pie", "-fno-pic", "-mgeneral-regs-only", "-mno-red-zone", + "-mcmodel=kernel" + ); + end case; + end Compiler; + + for Library_Dir use "rtsdir/adalib"; + for Library_Kind use "static"; + for Library_Name use "gnat"; + for Runtime ("Ada") use "rtsdir"; +end RTS; diff --git a/rtsdir/adainclude/a-charac.ads b/rtsdir/adainclude/a-charac.ads new file mode 100644 index 0000000..67484e1 --- /dev/null +++ b/rtsdir/adainclude/a-charac.ads @@ -0,0 +1,12 @@ +-- a-charac.ads: Root character library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Ada.Characters with Pure is +end Ada.Characters; diff --git a/rtsdir/adainclude/a-chlat1.ads b/rtsdir/adainclude/a-chlat1.ads new file mode 100644 index 0000000..b5d759d --- /dev/null +++ b/rtsdir/adainclude/a-chlat1.ads @@ -0,0 +1,247 @@ +-- a-chlat1.ads: Latin_1 character library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Ada.Characters.Latin_1 with Pure is + -- Control Characters + NUL : constant Character := Character'Val (0); + SOH : constant Character := Character'Val (1); + STX : constant Character := Character'Val (2); + ETX : constant Character := Character'Val (3); + EOT : constant Character := Character'Val (4); + ENQ : constant Character := Character'Val (5); + ACK : constant Character := Character'Val (6); + BEL : constant Character := Character'Val (7); + BS : constant Character := Character'Val (8); + HT : constant Character := Character'Val (9); + LF : constant Character := Character'Val (10); + VT : constant Character := Character'Val (11); + FF : constant Character := Character'Val (12); + CR : constant Character := Character'Val (13); + SO : constant Character := Character'Val (14); + SI : constant Character := Character'Val (15); + DLE : constant Character := Character'Val (16); + DC1 : constant Character := Character'Val (17); + DC2 : constant Character := Character'Val (18); + DC3 : constant Character := Character'Val (19); + DC4 : constant Character := Character'Val (20); + NAK : constant Character := Character'Val (21); + SYN : constant Character := Character'Val (22); + ETB : constant Character := Character'Val (23); + CAN : constant Character := Character'Val (24); + EM : constant Character := Character'Val (25); + SUB : constant Character := Character'Val (26); + ESC : constant Character := Character'Val (27); + FS : constant Character := Character'Val (28); + GS : constant Character := Character'Val (29); + RS : constant Character := Character'Val (30); + US : constant Character := Character'Val (31); + + -- ISO 646 Graphic Characters + Space : constant Character := ' '; -- Character'Val(32) + Exclamation : constant Character := '!'; -- Character'Val(33) + Quotation : constant Character := '"'; -- Character'Val(34) + Number_Sign : constant Character := '#'; -- Character'Val(35) + Dollar_Sign : constant Character := '$'; -- Character'Val(36) + Percent_Sign : constant Character := '%'; -- Character'Val(37) + Ampersand : constant Character := '&'; -- Character'Val(38) + Apostrophe : constant Character := '''; -- Character'Val(39) + Left_Parenthesis : constant Character := '('; -- Character'Val(40) + Right_Parenthesis : constant Character := ')'; -- Character'Val(41) + Asterisk : constant Character := '*'; -- Character'Val(42) + Plus_Sign : constant Character := '+'; -- Character'Val(43) + Comma : constant Character := ','; -- Character'Val(44) + Hyphen : constant Character := '-'; -- Character'Val(45) + Minus_Sign : Character renames Hyphen; + Full_Stop : constant Character := '.'; -- Character'Val(46) + Solidus : constant Character := '/'; -- Character'Val(47) + Colon : constant Character := ':'; -- Character'Val(58) + Semicolon : constant Character := ';'; -- Character'Val(59) + Less_Than_Sign : constant Character := '<'; -- Character'Val(60) + Equals_Sign : constant Character := '='; -- Character'Val(61) + Greater_Than_Sign : constant Character := '>'; -- Character'Val(62) + Question : constant Character := '?'; -- Character'Val(63) + Commercial_At : constant Character := '@'; -- Character'Val(64) + Left_Square_Bracket : constant Character := '['; -- Character'Val (91) + Reverse_Solidus : constant Character := '\'; -- Character'Val (92) + Right_Square_Bracket : constant Character := ']'; -- Character'Val (93) + Circumflex : constant Character := '^'; -- Character'Val (94) + Low_Line : constant Character := '_'; -- Character'Val (95) + Grave : constant Character := '`'; -- Character'Val (96) + LC_A : constant Character := 'a'; -- Character'Val (97) + LC_B : constant Character := 'b'; -- Character'Val (98) + LC_C : constant Character := 'c'; -- Character'Val (99) + LC_D : constant Character := 'd'; -- Character'Val (100) + LC_E : constant Character := 'e'; -- Character'Val (101) + LC_F : constant Character := 'f'; -- Character'Val (102) + LC_G : constant Character := 'g'; -- Character'Val (103) + LC_H : constant Character := 'h'; -- Character'Val (104) + LC_I : constant Character := 'i'; -- Character'Val (105) + LC_J : constant Character := 'j'; -- Character'Val (106) + LC_K : constant Character := 'k'; -- Character'Val (107) + LC_L : constant Character := 'l'; -- Character'Val (108) + LC_M : constant Character := 'm'; -- Character'Val (109) + LC_N : constant Character := 'n'; -- Character'Val (110) + LC_O : constant Character := 'o'; -- Character'Val (111) + LC_P : constant Character := 'p'; -- Character'Val (112) + LC_Q : constant Character := 'q'; -- Character'Val (113) + LC_R : constant Character := 'r'; -- Character'Val (114) + LC_S : constant Character := 's'; -- Character'Val (115) + LC_T : constant Character := 't'; -- Character'Val (116) + LC_U : constant Character := 'u'; -- Character'Val (117) + LC_V : constant Character := 'v'; -- Character'Val (118) + LC_W : constant Character := 'w'; -- Character'Val (119) + LC_X : constant Character := 'x'; -- Character'Val (120) + LC_Y : constant Character := 'y'; -- Character'Val (121) + LC_Z : constant Character := 'z'; -- Character'Val (122) + Left_Curly_Bracket : constant Character := '{'; -- Character'Val (123) + Vertical_Line : constant Character := '|'; -- Character'Val (124) + Right_Curly_Bracket : constant Character := '}'; -- Character'Val (125) + Tilde : constant Character := '~'; -- Character'Val (126) + DEL : constant Character := Character'Val (127); + + -- ISO 6429 Control Characters. + IS4 : Character renames FS; + IS3 : Character renames GS; + IS2 : Character renames RS; + IS1 : Character renames US; + Reserved_128 : constant Character := Character'Val (128); + Reserved_129 : constant Character := Character'Val (129); + BPH : constant Character := Character'Val (130); + NBH : constant Character := Character'Val (131); + Reserved_132 : constant Character := Character'Val (132); + NEL : constant Character := Character'Val (133); + SSA : constant Character := Character'Val (134); + ESA : constant Character := Character'Val (135); + HTS : constant Character := Character'Val (136); + HTJ : constant Character := Character'Val (137); + VTS : constant Character := Character'Val (138); + PLD : constant Character := Character'Val (139); + PLU : constant Character := Character'Val (140); + RI : constant Character := Character'Val (141); + SS2 : constant Character := Character'Val (142); + SS3 : constant Character := Character'Val (143); + DCS : constant Character := Character'Val (144); + PU1 : constant Character := Character'Val (145); + PU2 : constant Character := Character'Val (146); + STS : constant Character := Character'Val (147); + CCH : constant Character := Character'Val (148); + MW : constant Character := Character'Val (149); + SPA : constant Character := Character'Val (150); + EPA : constant Character := Character'Val (151); + SOS : constant Character := Character'Val (152); + Reserved_153 : constant Character := Character'Val (153); + SCI : constant Character := Character'Val (154); + CSI : constant Character := Character'Val (155); + ST : constant Character := Character'Val (156); + OSC : constant Character := Character'Val (157); + PM : constant Character := Character'Val (158); + APC : constant Character := Character'Val (159); + + -- Other graphic characters. + No_Break_Space : constant Character := Character'Val (160); + NBSP : Character renames No_Break_Space; + Inverted_Exclamation : constant Character := Character'Val (161); + Cent_Sign : constant Character := Character'Val (162); + Pound_Sign : constant Character := Character'Val (163); + Currency_Sign : constant Character := Character'Val (164); + Yen_Sign : constant Character := Character'Val (165); + Broken_Bar : constant Character := Character'Val (166); + Section_Sign : constant Character := Character'Val (167); + Diaeresis : constant Character := Character'Val (168); + Copyright_Sign : constant Character := Character'Val (169); + Feminine_Ordinal_Indicator : constant Character := Character'Val (170); + Left_Angle_Quotation : constant Character := Character'Val (171); + Not_Sign : constant Character := Character'Val (172); + Soft_Hyphen : constant Character := Character'Val (173); + Registered_Trade_Mark_Sign : constant Character := Character'Val (174); + Macron : constant Character := Character'Val (175); + Degree_Sign : constant Character := Character'Val (176); + Ring_Above : Character renames Degree_Sign; + Plus_Minus_Sign : constant Character := Character'Val (177); + Superscript_Two : constant Character := Character'Val (178); + Superscript_Three : constant Character := Character'Val (179); + Acute : constant Character := Character'Val (180); + Micro_Sign : constant Character := Character'Val (181); + Pilcrow_Sign : constant Character := Character'Val (182); + Paragraph_Sign : Character renames Pilcrow_Sign; + Middle_Dot : constant Character := Character'Val (183); + Cedilla : constant Character := Character'Val (184); + Superscript_One : constant Character := Character'Val (185); + Masculine_Ordinal_Indicator : constant Character := Character'Val (186); + Right_Angle_Quotation : constant Character := Character'Val (187); + Fraction_One_Quarter : constant Character := Character'Val (188); + Fraction_One_Half : constant Character := Character'Val (189); + Fraction_Three_Quarters : constant Character := Character'Val (190); + Inverted_Question : constant Character := Character'Val (191); + UC_A_Grave : constant Character := Character'Val (192); + UC_A_Acute : constant Character := Character'Val (193); + UC_A_Circumflex : constant Character := Character'Val (194); + UC_A_Tilde : constant Character := Character'Val (195); + UC_A_Diaeresis : constant Character := Character'Val (196); + UC_A_Ring : constant Character := Character'Val (197); + UC_AE_Diphthong : constant Character := Character'Val (198); + UC_C_Cedilla : constant Character := Character'Val (199); + UC_E_Grave : constant Character := Character'Val (200); + UC_E_Acute : constant Character := Character'Val (201); + UC_E_Circumflex : constant Character := Character'Val (202); + UC_E_Diaeresis : constant Character := Character'Val (203); + UC_I_Grave : constant Character := Character'Val (204); + UC_I_Acute : constant Character := Character'Val (205); + UC_I_Circumflex : constant Character := Character'Val (206); + UC_I_Diaeresis : constant Character := Character'Val (207); + UC_Icelandic_Eth : constant Character := Character'Val (208); + UC_N_Tilde : constant Character := Character'Val (209); + UC_O_Grave : constant Character := Character'Val (210); + UC_O_Acute : constant Character := Character'Val (211); + UC_O_Circumflex : constant Character := Character'Val (212); + UC_O_Tilde : constant Character := Character'Val (213); + UC_O_Diaeresis : constant Character := Character'Val (214); + Multiplication_Sign : constant Character := Character'Val (215); + UC_O_Oblique_Stroke : constant Character := Character'Val (216); + UC_U_Grave : constant Character := Character'Val (217); + UC_U_Acute : constant Character := Character'Val (218); + UC_U_Circumflex : constant Character := Character'Val (219); + UC_U_Diaeresis : constant Character := Character'Val (220); + UC_Y_Acute : constant Character := Character'Val (221); + UC_Icelandic_Thorn : constant Character := Character'Val (222); + LC_German_Sharp_S : constant Character := Character'Val (223); + LC_A_Grave : constant Character := Character'Val (224); + LC_A_Acute : constant Character := Character'Val (225); + LC_A_Circumflex : constant Character := Character'Val (226); + LC_A_Tilde : constant Character := Character'Val (227); + LC_A_Diaeresis : constant Character := Character'Val (228); + LC_A_Ring : constant Character := Character'Val (229); + LC_AE_Diphthong : constant Character := Character'Val (230); + LC_C_Cedilla : constant Character := Character'Val (231); + LC_E_Grave : constant Character := Character'Val (232); + LC_E_Acute : constant Character := Character'Val (233); + LC_E_Circumflex : constant Character := Character'Val (234); + LC_E_Diaeresis : constant Character := Character'Val (235); + LC_I_Grave : constant Character := Character'Val (236); + LC_I_Acute : constant Character := Character'Val (237); + LC_I_Circumflex : constant Character := Character'Val (238); + LC_I_Diaeresis : constant Character := Character'Val (239); + LC_Icelandic_Eth : constant Character := Character'Val (240); + LC_N_Tilde : constant Character := Character'Val (241); + LC_O_Grave : constant Character := Character'Val (242); + LC_O_Acute : constant Character := Character'Val (243); + LC_O_Circumflex : constant Character := Character'Val (244); + LC_O_Tilde : constant Character := Character'Val (245); + LC_O_Diaeresis : constant Character := Character'Val (246); + Division_Sign : constant Character := Character'Val (247); + LC_O_Oblique_Stroke : constant Character := Character'Val (248); + LC_U_Grave : constant Character := Character'Val (249); + LC_U_Acute : constant Character := Character'Val (250); + LC_U_Circumflex : constant Character := Character'Val (251); + LC_U_Diaeresis : constant Character := Character'Val (252); + LC_Y_Acute : constant Character := Character'Val (253); + LC_Icelandic_Thorn : constant Character := Character'Val (254); + LC_Y_Diaeresis : constant Character := Character'Val (255); +end Ada.Characters.Latin_1; diff --git a/rtsdir/adainclude/a-unccon.ads b/rtsdir/adainclude/a-unccon.ads new file mode 100644 index 0000000..1926802 --- /dev/null +++ b/rtsdir/adainclude/a-unccon.ads @@ -0,0 +1,17 @@ +-- a-unccon.ads: Unchecked conversion library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +generic + type Source (<>) is limited private; + type Target (<>) is limited private; +function Ada.Unchecked_Conversion (S : Source) return Target with Pure; + +-- If this go in the with instead, it detonates, idk why. +pragma Import (Intrinsic, Ada.Unchecked_Conversion); diff --git a/rtsdir/adainclude/a-uncdea.ads b/rtsdir/adainclude/a-uncdea.ads new file mode 100644 index 0000000..fbce7d7 --- /dev/null +++ b/rtsdir/adainclude/a-uncdea.ads @@ -0,0 +1,18 @@ +-- a-uncdea.ads: Unchecked deallocation library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +generic + type Object (<>) is limited private; + type Name is access Object; +procedure Ada.Unchecked_Deallocation (X : in out Name) + with Preelaborate, Depends => (X => null, null => X), Post => X = null; + +-- If this go in the with instead, it detonates, idk why. +pragma Import (Intrinsic, Ada.Unchecked_Deallocation); diff --git a/rtsdir/adainclude/ada.ads b/rtsdir/adainclude/ada.ads new file mode 100644 index 0000000..f402441 --- /dev/null +++ b/rtsdir/adainclude/ada.ads @@ -0,0 +1,12 @@ +-- ada.ads: Root Ada library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Ada with Pure is +end Ada; diff --git a/rtsdir/adainclude/i-c.ads b/rtsdir/adainclude/i-c.ads new file mode 100644 index 0000000..286369c --- /dev/null +++ b/rtsdir/adainclude/i-c.ads @@ -0,0 +1,41 @@ +-- i-c.ads: C interface library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Interfaces.C with Pure is + -- Broad limits from that might be useful. + CHAR_BIT : constant := 8; + SCHAR_MIN : constant := -128; + SCHAR_MAX : constant := 127; + UCHAR_MAX : constant := 255; + + -- The bulk of the types. + type int is new Integer; + type short is new Short_Integer; + type long is range -(2 ** (Long_Integer'Size - Integer'(1))) .. + +(2 ** (Long_Integer'Size - Integer'(1))) - 1; + type signed_char is range SCHAR_MIN .. SCHAR_MAX with Size => CHAR_BIT; + type unsigned is mod 2 ** int'Size; + type unsigned_short is mod 2 ** short'Size; + type unsigned_long is mod 2 ** long'Size; + type unsigned_char is mod (UCHAR_MAX + 1) with Size => CHAR_BIT; + subtype plain_char is unsigned_char; + type ptrdiff_t is range -(2 ** (Standard'Address_Size - Integer'(1))) .. + +(2 ** (Standard'Address_Size - Integer'(1)) - 1); + type size_t is mod 2 ** Standard'Address_Size; + type char is new Character; + type char_array is array (size_t range <>) of aliased char with + Component_Size => CHAR_BIT; + type wchar_t is new Wide_Character with Size => Standard'Wchar_T_Size; + type wchar_array is array (size_t range <>) of aliased wchar_t; + type char16_t is new Wide_Character; + type char16_array is array (size_t range <>) of aliased char16_t; + type char32_t is new Wide_Wide_Character; + type char32_array is array (size_t range <>) of aliased char32_t; +end Interfaces.C; diff --git a/rtsdir/adainclude/interfac.ads b/rtsdir/adainclude/interfac.ads new file mode 100644 index 0000000..cb3b3bf --- /dev/null +++ b/rtsdir/adainclude/interfac.ads @@ -0,0 +1,120 @@ +-- interfac.ads: Interface datatypes. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Interfaces with Pure is + type Integer_8 is range -2 ** 7 .. 2 ** 7 - 1 with Size => 8; + type Integer_16 is range -2 ** 15 .. 2 ** 15 - 1 with Size => 16; + type Integer_32 is range -2 ** 31 .. 2 ** 31 - 1 with Size => 32; + type Integer_64 is range -2 ** 63 .. 2 ** 63 - 1 with Size => 64; + type Unsigned_8 is mod 2 ** 8 with Size => 8; + type Unsigned_16 is mod 2 ** 16 with Size => 16; + type Unsigned_32 is mod 2 ** 32 with Size => 32; + type Unsigned_64 is mod 2 ** 64 with Size => 64; + + function Shift_Left + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Shift_Right + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Shift_Right_Arithmetic + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Rotate_Left + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Rotate_Right + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Shift_Left + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Shift_Right + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Shift_Right_Arithmetic + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Rotate_Left + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Rotate_Right + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Shift_Left + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Shift_Right + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Shift_Right_Arithmetic + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Rotate_Left + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Rotate_Right + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Shift_Left + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; + + function Shift_Right + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; + + function Shift_Right_Arithmetic + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; + + function Rotate_Left + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; + + function Rotate_Right + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; +end Interfaces; diff --git a/rtsdir/adainclude/s-atacco.ads b/rtsdir/adainclude/s-atacco.ads new file mode 100644 index 0000000..154ecbd --- /dev/null +++ b/rtsdir/adainclude/s-atacco.ads @@ -0,0 +1,27 @@ +-- s-atacco.ads: Address to access conversions. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +generic + type Object (<>) is limited private; +package System.Address_To_Access_Conversions is + pragma Preelaborate; + pragma Compile_Time_Warning + (Object'Unconstrained_Array, + "Object is unconstrained array type, To_Pointer may not have bounds"); + + type Object_Pointer is access all Object with Size => Standard'Address_Size; + + function To_Pointer (Value : Address) return Object_Pointer; + function To_Address (Value : Object_Pointer) return Address + with SPARK_Mode => Off; + + pragma Import (Intrinsic, To_Pointer); + pragma Import (Intrinsic, To_Address); +end System.Address_To_Access_Conversions; diff --git a/rtsdir/adainclude/s-maccod.ads b/rtsdir/adainclude/s-maccod.ads new file mode 100644 index 0000000..c7dbe5e --- /dev/null +++ b/rtsdir/adainclude/s-maccod.ads @@ -0,0 +1,93 @@ +-- s-maccod.ads: Inline assembly utilities. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package System.Machine_Code with SPARK_Mode => Off, Pure is + -- All of this works inside GNAT, this is literally just placeholders + -- because Ada wants it this way. Names and everything are basically + -- forced. + + type Asm_Input_Operand is private; + type Asm_Output_Operand is private; + type Asm_Insn is private; + type Asm_Input_Operand_List is array (Integer range <>) of + Asm_Input_Operand; + type Asm_Output_Operand_List is array (Integer range <>) of + Asm_Output_Operand; + + No_Input_Operands : constant Asm_Input_Operand; + No_Output_Operands : constant Asm_Output_Operand; + + procedure Asm + (Template : String; + Outputs : Asm_Output_Operand_List; + Inputs : Asm_Input_Operand_List; + Clobber : String := ""; + Volatile : Boolean := False); + + procedure Asm + (Template : String; + Outputs : Asm_Output_Operand := No_Output_Operands; + Inputs : Asm_Input_Operand_List; + Clobber : String := ""; + Volatile : Boolean := False); + + procedure Asm + (Template : String; + Outputs : Asm_Output_Operand_List; + Inputs : Asm_Input_Operand := No_Input_Operands; + Clobber : String := ""; + Volatile : Boolean := False); + + procedure Asm + (Template : String; + Outputs : Asm_Output_Operand := No_Output_Operands; + Inputs : Asm_Input_Operand := No_Input_Operands; + Clobber : String := ""; + Volatile : Boolean := False); + + function Asm + (Template : String; + Outputs : Asm_Output_Operand_List; + Inputs : Asm_Input_Operand_List; + Clobber : String := ""; + Volatile : Boolean := False) return Asm_Insn; + + function Asm + (Template : String; + Outputs : Asm_Output_Operand := No_Output_Operands; + Inputs : Asm_Input_Operand_List; + Clobber : String := ""; + Volatile : Boolean := False) return Asm_Insn; + + function Asm + (Template : String; + Outputs : Asm_Output_Operand_List; + Inputs : Asm_Input_Operand := No_Input_Operands; + Clobber : String := ""; + Volatile : Boolean := False) return Asm_Insn; + + function Asm + (Template : String; + Outputs : Asm_Output_Operand := No_Output_Operands; + Inputs : Asm_Input_Operand := No_Input_Operands; + Clobber : String := ""; + Volatile : Boolean := False) return Asm_Insn; + + pragma Import (Intrinsic, Asm); + +private + + type Asm_Input_Operand is new Integer; + type Asm_Output_Operand is new Integer; + type Asm_Insn is new Integer; + + No_Input_Operands : constant Asm_Input_Operand := 0; + No_Output_Operands : constant Asm_Output_Operand := 0; +end System.Machine_Code; diff --git a/rtsdir/adainclude/s-stoele.adb b/rtsdir/adainclude/s-stoele.adb new file mode 100644 index 0000000..ca265b5 --- /dev/null +++ b/rtsdir/adainclude/s-stoele.adb @@ -0,0 +1,53 @@ +-- s-stoele.ads: Storage elements library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +with Ada.Unchecked_Conversion; + +package body System.Storage_Elements is + pragma Suppress (All_Checks); + + function To_Addr is new Ada.Unchecked_Conversion (Storage_Offset, Address); + function To_Off is new Ada.Unchecked_Conversion (Address, Storage_Offset); + + function To_Address (Value : Integer_Address) return Address is + begin + return Address (Value); + end To_Address; + + function To_Integer (Value : Address) return Integer_Address is + begin + return Integer_Address (Value); + end To_Integer; + + function "+" (Left : Address; Right : Storage_Offset) return Address is + begin + return To_Address (To_Integer (Left) + To_Integer (To_Addr (Right))); + end "+"; + + function "+" (Left : Storage_Offset; Right : Address) return Address is + begin + return To_Address (To_Integer (To_Addr (Left)) + To_Integer (Right)); + end "+"; + + function "-" (Left : Address; Right : Storage_Offset) return Address is + begin + return To_Address (To_Integer (Left) - To_Integer (To_Addr (Right))); + end "-"; + + function "-" (Left, Right : Address) return Storage_Offset is + begin + return To_Off (To_Address (To_Integer (Left) - To_Integer (Right))); + end "-"; + + function "mod" (L : Address; R : Storage_Offset) return Storage_Offset is + begin + return Storage_Offset (To_Integer (L) mod Integer_Address (R)); + end "mod"; +end System.Storage_Elements; diff --git a/rtsdir/adainclude/s-stoele.ads b/rtsdir/adainclude/s-stoele.ads new file mode 100644 index 0000000..6b7a2ec --- /dev/null +++ b/rtsdir/adainclude/s-stoele.ads @@ -0,0 +1,60 @@ +-- s-stoele.ads: Storage elements library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package System.Storage_Elements with Pure is + type Storage_Offset is range + -(2 ** (Integer'(Standard'Address_Size) - 1)) .. + +(2 ** (Integer'(Standard'Address_Size) - 1)) - 1; + + subtype Storage_Count is Storage_Offset range 0 .. Storage_Offset'Last; + type Storage_Element is mod 2 ** Storage_Unit with Size => Storage_Unit; + + -- "This type is used by the expander to implement aggregate copy" + -- Sure, whatever... + pragma Universal_Aliasing (Storage_Element); + + function "+" (Left : Address; Right : Storage_Offset) return Address; + pragma Convention (Intrinsic, "+"); + pragma Inline_Always ("+"); + pragma Pure_Function ("+"); + + function "+" (Left : Storage_Offset; Right : Address) return Address; + pragma Convention (Intrinsic, "+"); + pragma Inline_Always ("+"); + pragma Pure_Function ("+"); + + function "-" (Left : Address; Right : Storage_Offset) return Address; + pragma Convention (Intrinsic, "-"); + pragma Inline_Always ("-"); + pragma Pure_Function ("-"); + + function "-" (Left, Right : Address) return Storage_Offset; + pragma Convention (Intrinsic, "-"); + pragma Inline_Always ("-"); + pragma Pure_Function ("-"); + + function "mod" (L : Address; R : Storage_Offset) return Storage_Offset + with Pre => R /= 0; + pragma Convention (Intrinsic, "mod"); + pragma Inline_Always ("mod"); + pragma Pure_Function ("mod"); + ---------------------------------------------------------------------------- + type Integer_Address is mod Memory_Size; + + function To_Address (Value : Integer_Address) return Address; + pragma Convention (Intrinsic, To_Address); + pragma Inline_Always (To_Address); + pragma Pure_Function (To_Address); + + function To_Integer (Value : Address) return Integer_Address; + pragma Convention (Intrinsic, To_Integer); + pragma Inline_Always (To_Integer); + pragma Pure_Function (To_Integer); +end System.Storage_Elements; diff --git a/rtsdir/adainclude/s-unstyp.ads b/rtsdir/adainclude/s-unstyp.ads new file mode 100644 index 0000000..ebf664c --- /dev/null +++ b/rtsdir/adainclude/s-unstyp.ads @@ -0,0 +1,246 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- S Y S T E M . U N S I G N E D _ T Y P E S -- +-- -- +-- S p e c -- +-- -- +-- Copyright (C) 1992-2023, Free Software Foundation, Inc. -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 3, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. -- +-- -- +-- As a special exception under Section 7 of GPL version 3, you are granted -- +-- additional permissions described in the GCC Runtime Library Exception, -- +-- version 3.1, as published by the Free Software Foundation. -- +-- -- +-- You should have received a copy of the GNU General Public License and -- +-- a copy of the GCC Runtime Library Exception along with this program; -- +-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- +-- . -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +-- This package contains definitions of standard unsigned types that +-- correspond in size to the standard signed types declared in Standard, +-- and (unlike the types in Interfaces) have corresponding names. It +-- also contains some related definitions for other specialized types +-- used by the compiler in connection with packed array types. + +package System.Unsigned_Types with Pure is + type Short_Short_Unsigned is mod 2 ** Short_Short_Integer'Size; + type Short_Unsigned is mod 2 ** Short_Integer'Size; + type Unsigned is mod 2 ** Integer'Size; + type Long_Unsigned is mod 2 ** Long_Integer'Size; + type Long_Long_Unsigned is mod 2 ** Long_Long_Integer'Size; + type Long_Long_Long_Unsigned is mod Max_Binary_Modulus; + + type Packed_Byte is mod 2 ** 8; + for Packed_Byte'Size use 8; + pragma Universal_Aliasing (Packed_Byte); + -- Component type for Packed_Bytes1, Packed_Bytes2 and Packed_Byte4 arrays. + -- As this type is used by the compiler to implement operations on user + -- packed array, it needs to be able to alias any type. + + type Packed_Bytes1 is array (Natural range <>) of aliased Packed_Byte; + for Packed_Bytes1'Alignment use 1; + for Packed_Bytes1'Component_Size use Packed_Byte'Size; + pragma Suppress_Initialization (Packed_Bytes1); + -- This is the type used to implement packed arrays where no alignment + -- is required. This includes the cases of 1,2,4 (where we use direct + -- masking operations), and all odd component sizes (where the clusters + -- are not aligned anyway, see, e.g. System.Pack_07 in file s-pack07 + -- for details. + + type Packed_Bytes2 is new Packed_Bytes1; + for Packed_Bytes2'Alignment use Integer'Min (2, Standard'Maximum_Alignment); + pragma Suppress_Initialization (Packed_Bytes2); + -- This is the type used to implement packed arrays where an alignment + -- of 2 (is possible) is helpful for maximum efficiency of the get and + -- set routines in the corresponding library unit. This is true of all + -- component sizes that are even but not divisible by 4 (other than 2 for + -- which we use direct masking operations). In such cases, the clusters + -- can be assumed to be 2-byte aligned if the array is aligned. See for + -- example System.Pack_10 in file s-pack10). + + type Packed_Bytes4 is new Packed_Bytes1; + for Packed_Bytes4'Alignment use Integer'Min (4, Standard'Maximum_Alignment); + pragma Suppress_Initialization (Packed_Bytes4); + -- This is the type used to implement packed arrays where an alignment + -- of 4 (if possible) is helpful for maximum efficiency of the get and + -- set routines in the corresponding library unit. This is true of all + -- component sizes that are divisible by 4 (other than powers of 2, which + -- are either handled by direct masking or not packed at all). In such + -- cases the clusters can be assumed to be 4-byte aligned if the array + -- is aligned (see System.Pack_12 in file s-pack12 as an example). + + type Rev_Packed_Bytes1 is new Packed_Bytes1; + pragma Suppress_Initialization (Rev_Packed_Bytes1); + -- This is equivalent to Packed_Bytes1, but for packed arrays with reverse + -- scalar storage order. But the Scalar_Storage_Order attribute cannot be + -- set directly here, see Exp_Pakd for more details. + + type Rev_Packed_Bytes2 is new Packed_Bytes2; + pragma Suppress_Initialization (Rev_Packed_Bytes2); + -- This is equivalent to Packed_Bytes2, but for packed arrays with reverse + -- scalar storage order. But the Scalar_Storage_Order attribute cannot be + -- set directly here, see Exp_Pakd for more details. + + type Rev_Packed_Bytes4 is new Packed_Bytes4; + pragma Suppress_Initialization (Rev_Packed_Bytes4); + -- This is equivalent to Packed_Bytes4, but for packed arrays with reverse + -- scalar storage order. But the Scalar_Storage_Order attribute cannot be + -- set directly here, see Exp_Pakd for more details. + + type Bits_1 is mod 2**1; + type Bits_2 is mod 2**2; + type Bits_4 is mod 2**4; + -- Types used for packed array conversions + + subtype Bytes_F is Packed_Bytes4 (1 .. Float'Size / 8); + -- Type used in implementation of Is_Negative intrinsic (see Exp_Intr) + + function Shift_Left + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Shift_Right + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Shift_Right_Arithmetic + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Rotate_Left + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Rotate_Right + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Shift_Left + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Shift_Right + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Shift_Right_Arithmetic + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Rotate_Left + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Rotate_Right + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Shift_Left + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Shift_Right + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Shift_Right_Arithmetic + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Rotate_Left + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Rotate_Right + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Shift_Left + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Shift_Right + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Shift_Right_Arithmetic + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Rotate_Left + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Rotate_Right + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Shift_Left + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Shift_Right + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Shift_Right_Arithmetic + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Rotate_Left + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Rotate_Right + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Shift_Left + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + function Shift_Right + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + function Shift_Right_Arithmetic + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + function Rotate_Left + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + function Rotate_Right + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + pragma Import (Intrinsic, Shift_Left); + pragma Import (Intrinsic, Shift_Right); + pragma Import (Intrinsic, Shift_Right_Arithmetic); + pragma Import (Intrinsic, Rotate_Left); + pragma Import (Intrinsic, Rotate_Right); + + -- The following definitions are obsolescent. They were needed by the + -- previous version of the compiler and runtime, but are not needed + -- by the current version. We retain them to help with bootstrap path + -- problems. Also they seem harmless, and if any user programs have + -- been using these types, why discombobulate them? + + subtype Packed_Bytes is Packed_Bytes4; + subtype Packed_Bytes_Unaligned is Packed_Bytes1; + +end System.Unsigned_Types; diff --git a/rtsdir/adainclude/system.ads b/rtsdir/adainclude/system.ads new file mode 100644 index 0000000..7d907d6 --- /dev/null +++ b/rtsdir/adainclude/system.ads @@ -0,0 +1,73 @@ +-- system.ads: System definitions. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package System with Pure is + type Name is (SYSTEM_NAME_RISCV64_LIMINE_IRONCLAD); + System_Name : constant Name := SYSTEM_NAME_RISCV64_LIMINE_IRONCLAD; + + -- System-Dependent limits. + Min_Int : constant := -2 ** (Standard'Max_Integer_Size - 1); + Max_Int : constant := 2 ** (Standard'Max_Integer_Size - 1) - 1; + Max_Binary_Modulus : constant := 2 ** Standard'Max_Integer_Size; + Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; + Storage_Unit : constant := 8; + Word_Size : constant := Standard'Word_Size; + Memory_Size : constant := 2 ** Long_Integer'Size; + + -- Address shinenigans + type Address is private; + Null_Address : constant Address; + + function "<" (Left, Right : Address) return Boolean; + function "<=" (Left, Right : Address) return Boolean; + function ">" (Left, Right : Address) return Boolean; + function ">=" (Left, Right : Address) return Boolean; + function "=" (Left, Right : Address) return Boolean; + pragma Import (Intrinsic, "<"); + pragma Import (Intrinsic, "<="); + pragma Import (Intrinsic, ">"); + pragma Import (Intrinsic, ">="); + pragma Import (Intrinsic, "="); + + -- Bit-order shinenigans. + type Bit_Order is (High_Order_First, Low_Order_First); + Default_Bit_Order : constant Bit_Order := Low_Order_First; + +private + + type Address is mod Memory_Size; + Null_Address : constant Address := 0; + + -- Platform-defining parameters mandated by mister GNAT. + Backend_Divide_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; + Command_Line_Args : constant Boolean := False; + Configurable_Run_Time : constant Boolean := True; + Denorm : constant Boolean := True; + Duration_32_Bits : constant Boolean := False; + Exit_Status_Supported : constant Boolean := False; + Machine_Overflows : constant Boolean := False; + Machine_Rounds : constant Boolean := True; + Preallocated_Stacks : constant Boolean := False; + Signed_Zeros : constant Boolean := True; + Stack_Check_Default : constant Boolean := False; + Stack_Check_Probes : constant Boolean := False; + Stack_Check_Limits : constant Boolean := False; + Support_Aggregates : constant Boolean := True; + Support_Atomic_Primitives : constant Boolean := True; + Support_Composite_Assign : constant Boolean := True; + Support_Composite_Compare : constant Boolean := True; + Support_Long_Shifts : constant Boolean := True; + Always_Compatible_Rep : constant Boolean := False; + Suppress_Standard_Library : constant Boolean := True; + Use_Ada_Main_Program_Name : constant Boolean := False; + ZCX_By_Default : constant Boolean := False; + GCC_ZCX_Support : constant Boolean := False; +end System; diff --git a/rtsdir/adalib/a-charac.ali b/rtsdir/adalib/a-charac.ali new file mode 100644 index 0000000..910aaa1 --- /dev/null +++ b/rtsdir/adalib/a-charac.ali @@ -0,0 +1,49 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ada.characters%s a-charac.ads 43796ac4 NE OL PU PK +W ada%s ada.ads ada.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ada.ads +11K9*Ada 12e8 2|11r9 12r5 +X 2 a-charac.ads +11K13*Characters 1|11k9 2|12l9 12e19 + diff --git a/rtsdir/adalib/a-chlat1.ali b/rtsdir/adalib/a-chlat1.ali new file mode 100644 index 0000000..ff79bcb --- /dev/null +++ b/rtsdir/adalib/a-chlat1.ali @@ -0,0 +1,280 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ada.characters.latin_1%s a-chlat1.ads cab3b835 NE OL PU PK +W ada.characters%s a-charac.ads a-charac.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D a-chlat1.ads 20241115151050 8791f8e7 ada.characters.latin_1%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ada.ads +11K9*Ada 12e8 3|11r9 247r5 +X 2 a-charac.ads +11K13*Characters 1|11k9 2|12e19 3|11r13 247r9 +X 3 a-chlat1.ads +11K24*Latin_1 2|11k13 3|247l20 247e27 +13e4*NUL{character} +14e4*SOH{character} +15e4*STX{character} +16e4*ETX{character} +17e4*EOT{character} +18e4*ENQ{character} +19e4*ACK{character} +20e4*BEL{character} +21e4*BS{character} +22e4*HT{character} +23e4*LF{character} +24e4*VT{character} +25e4*FF{character} +26e4*CR{character} +27e4*SO{character} +28e4*SI{character} +29e4*DLE{character} +30e4*DC1{character} +31e4*DC2{character} +32e4*DC3{character} +33e4*DC4{character} +34e4*NAK{character} +35e4*SYN{character} +36e4*ETB{character} +37e4*CAN{character} +38e4*EM{character} +39e4*SUB{character} +40e4*ESC{character} +41e4*FS{character} 110r45 +42e4*GS{character} 111r45 +43e4*RS{character} 112r45 +44e4*US{character} 113r45 +47e4*Space{character} +48e4*Exclamation{character} +49e4*Quotation{character} +50e4*Number_Sign{character} +51e4*Dollar_Sign{character} +52e4*Percent_Sign{character} +53e4*Ampersand{character} +54e4*Apostrophe{character} +55e4*Left_Parenthesis{character} +56e4*Right_Parenthesis{character} +57e4*Asterisk{character} +58e4*Plus_Sign{character} +59e4*Comma{character} +60e4*Hyphen{character} 61r45 +61e4*Minus_Sign=61:45{character} +62e4*Full_Stop{character} +63e4*Solidus{character} +64e4*Colon{character} +65e4*Semicolon{character} +66e4*Less_Than_Sign{character} +67e4*Equals_Sign{character} +68e4*Greater_Than_Sign{character} +69e4*Question{character} +70e4*Commercial_At{character} +71e4*Left_Square_Bracket{character} +72e4*Reverse_Solidus{character} +73e4*Right_Square_Bracket{character} +74e4*Circumflex{character} +75e4*Low_Line{character} +76e4*Grave{character} +77e4*LC_A{character} +78e4*LC_B{character} +79e4*LC_C{character} +80e4*LC_D{character} +81e4*LC_E{character} +82e4*LC_F{character} +83e4*LC_G{character} +84e4*LC_H{character} +85e4*LC_I{character} +86e4*LC_J{character} +87e4*LC_K{character} +88e4*LC_L{character} +89e4*LC_M{character} +90e4*LC_N{character} +91e4*LC_O{character} +92e4*LC_P{character} +93e4*LC_Q{character} +94e4*LC_R{character} +95e4*LC_S{character} +96e4*LC_T{character} +97e4*LC_U{character} +98e4*LC_V{character} +99e4*LC_W{character} +100e4*LC_X{character} +101e4*LC_Y{character} +102e4*LC_Z{character} +103e4*Left_Curly_Bracket{character} +104e4*Vertical_Line{character} +105e4*Right_Curly_Bracket{character} +106e4*Tilde{character} +107e4*DEL{character} +110e4*IS4=110:45{character} +111e4*IS3=111:45{character} +112e4*IS2=112:45{character} +113e4*IS1=113:45{character} +114e4*Reserved_128{character} +115e4*Reserved_129{character} +116e4*BPH{character} +117e4*NBH{character} +118e4*Reserved_132{character} +119e4*NEL{character} +120e4*SSA{character} +121e4*ESA{character} +122e4*HTS{character} +123e4*HTJ{character} +124e4*VTS{character} +125e4*PLD{character} +126e4*PLU{character} +127e4*RI{character} +128e4*SS2{character} +129e4*SS3{character} +130e4*DCS{character} +131e4*PU1{character} +132e4*PU2{character} +133e4*STS{character} +134e4*CCH{character} +135e4*MW{character} +136e4*SPA{character} +137e4*EPA{character} +138e4*SOS{character} +139e4*Reserved_153{character} +140e4*SCI{character} +141e4*CSI{character} +142e4*ST{character} +143e4*OSC{character} +144e4*PM{character} +145e4*APC{character} +148e4*No_Break_Space{character} 149r52 +149e4*NBSP=149:52{character} +150e4*Inverted_Exclamation{character} +151e4*Cent_Sign{character} +152e4*Pound_Sign{character} +153e4*Currency_Sign{character} +154e4*Yen_Sign{character} +155e4*Broken_Bar{character} +156e4*Section_Sign{character} +157e4*Diaeresis{character} +158e4*Copyright_Sign{character} +159e4*Feminine_Ordinal_Indicator{character} +160e4*Left_Angle_Quotation{character} +161e4*Not_Sign{character} +162e4*Soft_Hyphen{character} +163e4*Registered_Trade_Mark_Sign{character} +164e4*Macron{character} +165e4*Degree_Sign{character} 166r52 +166e4*Ring_Above=166:52{character} +167e4*Plus_Minus_Sign{character} +168e4*Superscript_Two{character} +169e4*Superscript_Three{character} +170e4*Acute{character} +171e4*Micro_Sign{character} +172e4*Pilcrow_Sign{character} 173r52 +173e4*Paragraph_Sign=173:52{character} +174e4*Middle_Dot{character} +175e4*Cedilla{character} +176e4*Superscript_One{character} +177e4*Masculine_Ordinal_Indicator{character} +178e4*Right_Angle_Quotation{character} +179e4*Fraction_One_Quarter{character} +180e4*Fraction_One_Half{character} +181e4*Fraction_Three_Quarters{character} +182e4*Inverted_Question{character} +183e4*UC_A_Grave{character} +184e4*UC_A_Acute{character} +185e4*UC_A_Circumflex{character} +186e4*UC_A_Tilde{character} +187e4*UC_A_Diaeresis{character} +188e4*UC_A_Ring{character} +189e4*UC_AE_Diphthong{character} +190e4*UC_C_Cedilla{character} +191e4*UC_E_Grave{character} +192e4*UC_E_Acute{character} +193e4*UC_E_Circumflex{character} +194e4*UC_E_Diaeresis{character} +195e4*UC_I_Grave{character} +196e4*UC_I_Acute{character} +197e4*UC_I_Circumflex{character} +198e4*UC_I_Diaeresis{character} +199e4*UC_Icelandic_Eth{character} +200e4*UC_N_Tilde{character} +201e4*UC_O_Grave{character} +202e4*UC_O_Acute{character} +203e4*UC_O_Circumflex{character} +204e4*UC_O_Tilde{character} +205e4*UC_O_Diaeresis{character} +206e4*Multiplication_Sign{character} +207e4*UC_O_Oblique_Stroke{character} +208e4*UC_U_Grave{character} +209e4*UC_U_Acute{character} +210e4*UC_U_Circumflex{character} +211e4*UC_U_Diaeresis{character} +212e4*UC_Y_Acute{character} +213e4*UC_Icelandic_Thorn{character} +214e4*LC_German_Sharp_S{character} +215e4*LC_A_Grave{character} +216e4*LC_A_Acute{character} +217e4*LC_A_Circumflex{character} +218e4*LC_A_Tilde{character} +219e4*LC_A_Diaeresis{character} +220e4*LC_A_Ring{character} +221e4*LC_AE_Diphthong{character} +222e4*LC_C_Cedilla{character} +223e4*LC_E_Grave{character} +224e4*LC_E_Acute{character} +225e4*LC_E_Circumflex{character} +226e4*LC_E_Diaeresis{character} +227e4*LC_I_Grave{character} +228e4*LC_I_Acute{character} +229e4*LC_I_Circumflex{character} +230e4*LC_I_Diaeresis{character} +231e4*LC_Icelandic_Eth{character} +232e4*LC_N_Tilde{character} +233e4*LC_O_Grave{character} +234e4*LC_O_Acute{character} +235e4*LC_O_Circumflex{character} +236e4*LC_O_Tilde{character} +237e4*LC_O_Diaeresis{character} +238e4*Division_Sign{character} +239e4*LC_O_Oblique_Stroke{character} +240e4*LC_U_Grave{character} +241e4*LC_U_Acute{character} +242e4*LC_U_Circumflex{character} +243e4*LC_U_Diaeresis{character} +244e4*LC_Y_Acute{character} +245e4*LC_Icelandic_Thorn{character} +246e4*LC_Y_Diaeresis{character} + diff --git a/rtsdir/adalib/a-unccon.ali b/rtsdir/adalib/a-unccon.ali new file mode 100644 index 0000000..8f288fa --- /dev/null +++ b/rtsdir/adalib/a-unccon.ali @@ -0,0 +1,52 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ada.unchecked_conversion%s a-unccon.ads 1de380e5 NE OL PU GE +W ada%s ada.ads ada.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-unccon.ads 20241115151050 13b8aaf3 ada.unchecked_conversion%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ada.ads +11K9*Ada 12e8 2|14r10 17r27 +X 2 a-unccon.ads +12+9 Source 14r40 +13+9 Target 14r55 +14v14*Unchecked_Conversion 14>36 17b31 +14*36 S{12+9} + diff --git a/rtsdir/adalib/a-uncdea.ali b/rtsdir/adalib/a-uncdea.ali new file mode 100644 index 0000000..52552d5 --- /dev/null +++ b/rtsdir/adalib/a-uncdea.ali @@ -0,0 +1,53 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ada.unchecked_deallocation%s a-uncdea.ads fd1a1e19 NE OL PR GE +W ada%s ada.ads ada.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-uncdea.ads 20241115151050 f341340f ada.unchecked_deallocation%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ada.ads +11K9*Ada 12e8 2|14r11 18r27 +X 2 a-uncdea.ads +12+9 Object 13r24 +13P9 Name(12+9) 14r50 +14u15*Unchecked_Deallocation 14=39 18b31 +14*39 X{13P9} 15r35 15r54 15r66 + diff --git a/rtsdir/adalib/ada.ali b/rtsdir/adalib/ada.ali new file mode 100644 index 0000000..31d592e --- /dev/null +++ b/rtsdir/adalib/ada.ali @@ -0,0 +1,45 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ada%s ada.ads 0e5b2a16 NE OL PU PK + +D ada.ads 20241115151050 0e5b2a16 ada%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ada.ads +11K9*Ada 12l5 12e8 + diff --git a/rtsdir/adalib/i-c.ali b/rtsdir/adalib/i-c.ali new file mode 100644 index 0000000..dde8f41 --- /dev/null +++ b/rtsdir/adalib/i-c.ali @@ -0,0 +1,77 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U interfaces.c%s i-c.ads 5282297f NE OL PU PK +W interfaces%s interfac.ads interfac.ali + +D interfac.ads 20241115151050 f8f85574 interfaces%s +D i-c.ads 20241115151050 aa7a7c0b interfaces.c%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [char_arrayIP interfaces__c 33 9 none] +G c Z s s [wchar_arrayIP interfaces__c 36 9 none] +G c Z s s [char16_arrayIP interfaces__c 38 9 none] +G c Z s s [char32_arrayIP interfaces__c 40 9 none] +X 1 interfac.ads +11K9*Interfaces 120e15 2|11r9 41r5 +X 2 i-c.ads +11K20*C 1|11k9 2|41l16 41e17 +13N4*CHAR_BIT 23r69 27r60 34r25 +14N4*SCHAR_MIN 23r33 +15N4*SCHAR_MAX 23r46 +16N4*UCHAR_MAX 27r32 +19I9*int 24r36 +20I9*short 25r36 +21I9*long 26r36 +23I9*signed_char +24M9*unsigned +25M9*unsigned_short +26M9*unsigned_long +27M9*unsigned_char 28r27 +28M12*plain_char{27M9} +29I9*ptrdiff_t +31M9*size_t 33r30 36r31 38r32 40r32 +32E9*char 33r58 +33A9*char_array(32E9)<31M9> +35E9*wchar_t 36r59 +36A9*wchar_array(35E9)<31M9> +37E9*char16_t 38r60 +38A9*char16_array(37E9)<31M9> +39E9*char32_t 40r60 +40A9*char32_array(39E9)<31M9> + diff --git a/rtsdir/adalib/interfac.ali b/rtsdir/adalib/interfac.ali new file mode 100644 index 0000000..380642a --- /dev/null +++ b/rtsdir/adalib/interfac.ali @@ -0,0 +1,134 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U interfaces%s interfac.ads f8f85574 NE OL PU PK + +D interfac.ads 20241115151050 f8f85574 interfaces%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [shift_left interfaces 21 13 none] +G c Z s s [shift_right interfaces 26 13 none] +G c Z s s [shift_right_arithmetic interfaces 31 13 none] +G c Z s s [rotate_left interfaces 36 13 none] +G c Z s s [rotate_right interfaces 41 13 none] +G c Z s s [shift_left interfaces 46 13 none] +G c Z s s [shift_right interfaces 51 13 none] +G c Z s s [shift_right_arithmetic interfaces 56 13 none] +G c Z s s [rotate_left interfaces 61 13 none] +G c Z s s [rotate_right interfaces 66 13 none] +G c Z s s [shift_left interfaces 71 13 none] +G c Z s s [shift_right interfaces 76 13 none] +G c Z s s [shift_right_arithmetic interfaces 81 13 none] +G c Z s s [rotate_left interfaces 86 13 none] +G c Z s s [rotate_right interfaces 91 13 none] +G c Z s s [shift_left interfaces 96 13 none] +G c Z s s [shift_right interfaces 101 13 none] +G c Z s s [shift_right_arithmetic interfaces 106 13 none] +G c Z s s [rotate_left interfaces 111 13 none] +G c Z s s [rotate_right interfaces 116 13 none] +X 1 interfac.ads +11K9*Interfaces 120l5 120e15 +12I9*Integer_8 +13I9*Integer_16 +14I9*Integer_32 +15I9*Integer_64 +16M9*Unsigned_8 22r17 23r33 27r17 28r33 32r17 33r33 37r17 38r33 42r17 43r33 +17M9*Unsigned_16 47r17 48r33 52r17 53r33 57r17 58r33 62r17 63r33 67r17 68r33 +18M9*Unsigned_32 72r17 73r33 77r17 78r33 82r17 83r33 87r17 88r33 92r17 93r33 +19M9*Unsigned_64 97r17 98r33 102r17 103r33 107r17 108r33 112r17 113r33 117r17 +. 118r33 +21V13*Shift_Left{16M9} 22>8 23>8 +22m8 Value{16M9} +23i8 Amount{natural} +26V13*Shift_Right{16M9} 27>8 28>8 +27m8 Value{16M9} +28i8 Amount{natural} +31V13*Shift_Right_Arithmetic{16M9} 32>8 33>8 +32m8 Value{16M9} +33i8 Amount{natural} +36V13*Rotate_Left{16M9} 37>8 38>8 +37m8 Value{16M9} +38i8 Amount{natural} +41V13*Rotate_Right{16M9} 42>8 43>8 +42m8 Value{16M9} +43i8 Amount{natural} +46V13*Shift_Left{17M9} 47>8 48>8 +47m8 Value{17M9} +48i8 Amount{natural} +51V13*Shift_Right{17M9} 52>8 53>8 +52m8 Value{17M9} +53i8 Amount{natural} +56V13*Shift_Right_Arithmetic{17M9} 57>8 58>8 +57m8 Value{17M9} +58i8 Amount{natural} +61V13*Rotate_Left{17M9} 62>8 63>8 +62m8 Value{17M9} +63i8 Amount{natural} +66V13*Rotate_Right{17M9} 67>8 68>8 +67m8 Value{17M9} +68i8 Amount{natural} +71V13*Shift_Left{18M9} 72>8 73>8 +72m8 Value{18M9} +73i8 Amount{natural} +76V13*Shift_Right{18M9} 77>8 78>8 +77m8 Value{18M9} +78i8 Amount{natural} +81V13*Shift_Right_Arithmetic{18M9} 82>8 83>8 +82m8 Value{18M9} +83i8 Amount{natural} +86V13*Rotate_Left{18M9} 87>8 88>8 +87m8 Value{18M9} +88i8 Amount{natural} +91V13*Rotate_Right{18M9} 92>8 93>8 +92m8 Value{18M9} +93i8 Amount{natural} +96V13*Shift_Left{19M9} 97>8 98>8 +97m8 Value{19M9} +98i8 Amount{natural} +101V13*Shift_Right{19M9} 102>8 103>8 +102m8 Value{19M9} +103i8 Amount{natural} +106V13*Shift_Right_Arithmetic{19M9} 107>8 108>8 +107m8 Value{19M9} +108i8 Amount{natural} +111V13*Rotate_Left{19M9} 112>8 113>8 +112m8 Value{19M9} +113i8 Amount{natural} +116V13*Rotate_Right{19M9} 117>8 118>8 +117m8 Value{19M9} +118i8 Amount{natural} + diff --git a/rtsdir/adalib/libgnat.a b/rtsdir/adalib/libgnat.a new file mode 100644 index 0000000000000000000000000000000000000000..97369d8094c340a7ba293dd26123b05a2ffca81e GIT binary patch literal 110856 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¨w+Q`LLjQB2FBAGlh5m0s|D4c! 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 literal 0 HcmV?d00001 diff --git a/rtsdir/adalib/s-atacco.ali b/rtsdir/adalib/s-atacco.ali new file mode 100644 index 0000000..30ed13e --- /dev/null +++ b/rtsdir/adalib/s-atacco.ali @@ -0,0 +1,57 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system.address_to_access_conversions%s s-atacco.ads c5e15ea3 NE OL PR PK GE +W system%s system.ads system.ali + +D system.ads 20241115151050 c1a7efcf system%s +D s-atacco.ads 20241115151050 0446b16c system.address_to_access_conversions%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 system.ads +11K9*System 73e11 2|13r9 27r5 +25M9*Address 2|21r33 22r56 +X 2 s-atacco.ads +12+9 Object 16r7 19r38 +13k16*Address_To_Access_Conversions 1|11k9 2|12z9 27l12 27e41 +19P9*Object_Pointer(12+9) 21r49 22r33 +21V13*To_Pointer{19P9} 21>25 25b30 +21m25 Value{1|25M9} +22V13*To_Address{1|25M9} 22>25 26b30 +22p25 Value{19P9} + diff --git a/rtsdir/adalib/s-maccod.ali b/rtsdir/adalib/s-maccod.ali new file mode 100644 index 0000000..82ce9f0 --- /dev/null +++ b/rtsdir/adalib/s-maccod.ali @@ -0,0 +1,114 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system.machine_code%s s-maccod.ads 97df547a NE OL PU PK +W system%s system.ads system.ali + +D system.ads 20241115151050 c1a7efcf system%s +D s-maccod.ads 20241115151050 5678bbb5 system.machine_code%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [asm system__machine_code 27 14 none] +G c Z s s [asm system__machine_code 34 14 none] +G c Z s s [asm system__machine_code 41 14 none] +G c Z s s [asm system__machine_code 48 14 none] +G c Z s s [asm system__machine_code 55 13 none] +G c Z s s [asm system__machine_code 62 13 none] +G c Z s s [asm system__machine_code 69 13 none] +G c Z s s [asm system__machine_code 76 13 none] +G c Z s s [asm_input_operand_listIP system__machine_code 19 9 none] +G c Z s s [asm_output_operand_listIP system__machine_code 21 9 none] +X 1 system.ads +11K9*System 73e11 2|11r9 93r5 +X 2 s-maccod.ads +11K16*Machine_Code 1|11k9 2|87E9 93l12 93e24 +16I9*Asm_Input_Operand 20r7 24r34 44r19 51r19 72r19 79r19 87c9 91r34 +17I9*Asm_Output_Operand 22r7 25r34 36r19 50r19 64r19 78r19 88c9 +. 92r34 +18I9*Asm_Insn 60r44 67r44 74r44 81r44 89c9 +19A9*Asm_Input_Operand_List(16I9) 30r19 37r19 58r19 65r19 +21A9*Asm_Output_Operand_List(17I9) 29r19 43r19 57r19 71r19 +24i4*No_Input_Operands{16I9} 44r40 51r41 72r40 79r41 91c4 +25i4*No_Output_Operands{17I9} 36r41 50r41 64r41 78r41 92c4 +27U14*Asm 28>8 29>8 30>8 31>8 32>8 83b30 +28a8 Template{string} +29a8 Outputs{21A9} +30a8 Inputs{19A9} +31a8 Clobber{string} +32b8 Volatile{boolean} +34U14*Asm 35>8 36>8 37>8 38>8 39>8 83b30 +35a8 Template{string} +36i8 Outputs{17I9} +37a8 Inputs{19A9} +38a8 Clobber{string} +39b8 Volatile{boolean} +41U14*Asm 42>8 43>8 44>8 45>8 46>8 83b30 +42a8 Template{string} +43a8 Outputs{21A9} +44i8 Inputs{16I9} +45a8 Clobber{string} +46b8 Volatile{boolean} +48U14*Asm 49>8 50>8 51>8 52>8 53>8 83b30 +49a8 Template{string} +50i8 Outputs{17I9} +51i8 Inputs{16I9} +52a8 Clobber{string} +53b8 Volatile{boolean} +55V13*Asm{18I9} 56>8 57>8 58>8 59>8 60>8 83b30 +56a8 Template{string} +57a8 Outputs{21A9} +58a8 Inputs{19A9} +59a8 Clobber{string} +60b8 Volatile{boolean} +62V13*Asm{18I9} 63>8 64>8 65>8 66>8 67>8 83b30 +63a8 Template{string} +64i8 Outputs{17I9} +65a8 Inputs{19A9} +66a8 Clobber{string} +67b8 Volatile{boolean} +69V13*Asm{18I9} 70>8 71>8 72>8 73>8 74>8 83b30 +70a8 Template{string} +71a8 Outputs{21A9} +72i8 Inputs{16I9} +73a8 Clobber{string} +74b8 Volatile{boolean} +76V13*Asm{18I9} 77>8 78>8 79>8 80>8 81>8 83b30 +77a8 Template{string} +78i8 Outputs{17I9} +79i8 Inputs{16I9} +80a8 Clobber{string} +81b8 Volatile{boolean} + diff --git a/rtsdir/adalib/s-stoele.ali b/rtsdir/adalib/s-stoele.ali new file mode 100644 index 0000000..3abfe4e --- /dev/null +++ b/rtsdir/adalib/s-stoele.ali @@ -0,0 +1,105 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_UNCHECKED_CONVERSION +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system.storage_elements%b s-stoele.adb 17cb73e8 NE OL PK +W ada%s ada.ads ada.ali +W ada.unchecked_conversion%s +Z system%s system.ads system.ali + +U system.storage_elements%s s-stoele.ads 0ccdc839 BN NE OL PU PK +W system%s system.ads system.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-unccon.ads 20241115151050 13b8aaf3 ada.unchecked_conversion%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D s-stoele.adb 20241115151050 c919feed system.storage_elements%b +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [Oadd system__storage_elements 23 13 none] +G c Z s b [Oadd system__storage_elements 28 13 none] +G c Z s b [Osubtract system__storage_elements 33 13 none] +G c Z s b [Osubtract system__storage_elements 38 13 none] +G c Z s b [Omod system__storage_elements 43 13 none] +G c Z s b [to_address system__storage_elements 51 13 none] +G c Z s b [to_integer system__storage_elements 56 13 none] +G c Z b b [to_addr system__storage_elements 16 13 none] +G c Z b b [to_off system__storage_elements 17 13 none] +X 1 ada.ads +11K9*Ada 12e8 5|11r6 16r28 17r28 +X 2 a-unccon.ads +14v14*Unchecked_Conversion 5|11w10 16r32 17r32 +X 3 system.ads +11K9*System 73e11 4|11r9 60r5 5|13r14 53r5 +20N4*Storage_Unit 4|17r38 17r64 +22N4*Memory_Size 4|49r32 +25M9*Address 4|23r25 23r65 28r49 28r65 33r25 33r65 38r32 43r24 51r57 56r33 +. 5|16r70 17r54 19r57 21r14 24r33 29r25 29r65 34r49 34r65 39r25 39r65 44r32 +. 49r24 +X 4 s-stoele.ads +11K16*Storage_Elements 3|11k9 4|60l12 60e28 5|13b21 53l12 53t28 +12I9*Storage_Offset 16r29 16r55 23r42 28r25 33r42 38r48 43r37 +. 43r60 5|16r54 17r63 29r42 34r25 39r42 44r48 49r37 49r60 51r14 +16I12*Storage_Count{12I9} +17M9*Storage_Element 21r31 +23V14*"+"{3|25M9} 23>18 23>34 5|29b14 32l9 32t11 +23m18 Left{3|25M9} 5|29b18 31r38 +23i34 Right{12I9} 5|29b34 31r67 +28V14*"+"{3|25M9} 28>18 28>41 5|34b14 37l9 37t11 +28i18 Left{12I9} 5|34b18 36r47 +28m41 Right{3|25M9} 5|34b41 36r68 +33V14*"-"{3|25M9} 33>18 33>34 5|39b14 42l9 42t11 +33m18 Left{3|25M9} 5|39b18 41r38 +33i34 Right{12I9} 5|39b34 41r67 +38V14*"-"{12I9} 38>18 38>24 5|44b14 47l9 47t11 +38m18 Left{3|25M9} 5|44b18 46r46 +38m24 Right{3|25M9} 5|44b24 46r66 +43V14*"mod"{12I9} 43>20 43>33 5|49b14 52l9 52t13 +43m20 L{3|25M9} 5|49b20 51r42 +43i33 R{12I9} 44r19 5|49b33 51r66 +49M9*Integer_Address 51r33 56r49 5|19r33 24r49 26r14 51r49 +51V13*To_Address{3|25M9} 51>25 52r34 53r26 54r26 5|19b13 22l8 22t18 31s14 +. 36s14 41s14 46s22 +51m25 Value{49M9} 5|19b25 21r23 +56V13*To_Integer{49M9} 56>25 57r34 58r26 59r26 5|24b13 27l8 27t18 31s26 31s46 +. 36s26 36s56 41s26 41s46 46s34 46s54 51s30 +56m25 Value{3|25M9} 5|24b25 26r31 +X 5 s-stoele.adb +16V13 To_Addr[2|14]{3|25M9} 31s58 36s38 41s58 +17V13 To_Off[2|14]{4|12I9} 46s14 + diff --git a/rtsdir/adalib/s-unstyp.ali b/rtsdir/adalib/s-unstyp.ali new file mode 100644 index 0000000..20e901f --- /dev/null +++ b/rtsdir/adalib/s-unstyp.ali @@ -0,0 +1,196 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LONG_LONG_INTEGERS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system.unsigned_types%s s-unstyp.ads f56a0104 NE OL PU PK +W system%s system.ads system.ali + +D system.ads 20241115151050 c1a7efcf system%s +D s-unstyp.ads 20241115151050 34cdeecb system.unsigned_types%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [shift_left system__unsigned_types 111 13 none] +G c Z s s [shift_right system__unsigned_types 115 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 119 13 none] +G c Z s s [rotate_left system__unsigned_types 123 13 none] +G c Z s s [rotate_right system__unsigned_types 127 13 none] +G c Z s s [shift_left system__unsigned_types 131 13 none] +G c Z s s [shift_right system__unsigned_types 135 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 139 13 none] +G c Z s s [rotate_left system__unsigned_types 143 13 none] +G c Z s s [rotate_right system__unsigned_types 147 13 none] +G c Z s s [shift_left system__unsigned_types 151 13 none] +G c Z s s [shift_right system__unsigned_types 155 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 159 13 none] +G c Z s s [rotate_left system__unsigned_types 163 13 none] +G c Z s s [rotate_right system__unsigned_types 167 13 none] +G c Z s s [shift_left system__unsigned_types 171 13 none] +G c Z s s [shift_right system__unsigned_types 175 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 179 13 none] +G c Z s s [rotate_left system__unsigned_types 183 13 none] +G c Z s s [rotate_right system__unsigned_types 187 13 none] +G c Z s s [shift_left system__unsigned_types 191 13 none] +G c Z s s [shift_right system__unsigned_types 195 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 199 13 none] +G c Z s s [rotate_left system__unsigned_types 203 13 none] +G c Z s s [rotate_right system__unsigned_types 207 13 none] +G c Z s s [shift_left system__unsigned_types 211 13 none] +G c Z s s [shift_right system__unsigned_types 215 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 219 13 none] +G c Z s s [rotate_left system__unsigned_types 223 13 none] +G c Z s s [rotate_right system__unsigned_types 227 13 none] +X 1 system.ads +11K9*System 73e11 2|38r9 246r5 +18N4*Max_Binary_Modulus 2|44r40 +X 2 s-unstyp.ads +38K16*Unsigned_Types 1|11k9 2|246l12 246e26 +39M9*Short_Short_Unsigned 112r16 113r32 116r16 117r32 120r16 121r32 124r16 +. 125r32 128r16 129r32 +40M9*Short_Unsigned 132r16 133r32 136r16 137r32 140r16 141r32 144r16 145r32 +. 148r16 149r32 +41M9*Unsigned 152r16 153r32 156r16 157r32 160r16 161r32 164r16 165r32 168r16 +. 169r32 +42M9*Long_Unsigned 172r16 173r32 176r16 177r32 180r16 181r32 184r16 185r32 +. 188r16 189r32 +43M9*Long_Long_Unsigned 192r16 193r32 196r16 197r32 200r16 201r32 204r16 +. 205r32 208r16 209r32 +44M9*Long_Long_Long_Unsigned 212r16 213r32 216r16 217r32 220r16 221r32 224r16 +. 225r32 228r16 229r32 +46M9*Packed_Byte 47r8 48r31 53r62 55r41 +53A9*Packed_Bytes1(46M9) 54r8 55r8 56r36 63r30 74r30 85r34 244r38 +63A9*Packed_Bytes2<53A9>(46M9) 64r8 65r36 91r34 +74A9*Packed_Bytes4<53A9>(46M9) 75r8 76r36 97r34 108r23 243r38 +85A9*Rev_Packed_Bytes1<53A9>(46M9) 86r36 +91A9*Rev_Packed_Bytes2<63A9>(46M9) 92r36 +97A9*Rev_Packed_Bytes4<74A9>(46M9) 98r36 +103M9*Bits_1 +104M9*Bits_2 +105M9*Bits_4 +108A12*Bytes_F{74A9}(46M9) +111V13*Shift_Left{39M9} 112>7 113>7 231b30 +112m7 Value{39M9} +113i7 Amount{natural} +115V13*Shift_Right{39M9} 116>7 117>7 232b30 +116m7 Value{39M9} +117i7 Amount{natural} +119V13*Shift_Right_Arithmetic{39M9} 120>7 121>7 233b30 +120m7 Value{39M9} +121i7 Amount{natural} +123V13*Rotate_Left{39M9} 124>7 125>7 234b30 +124m7 Value{39M9} +125i7 Amount{natural} +127V13*Rotate_Right{39M9} 128>7 129>7 235b30 +128m7 Value{39M9} +129i7 Amount{natural} +131V13*Shift_Left{40M9} 132>7 133>7 231b30 +132m7 Value{40M9} +133i7 Amount{natural} +135V13*Shift_Right{40M9} 136>7 137>7 232b30 +136m7 Value{40M9} +137i7 Amount{natural} +139V13*Shift_Right_Arithmetic{40M9} 140>7 141>7 233b30 +140m7 Value{40M9} +141i7 Amount{natural} +143V13*Rotate_Left{40M9} 144>7 145>7 234b30 +144m7 Value{40M9} +145i7 Amount{natural} +147V13*Rotate_Right{40M9} 148>7 149>7 235b30 +148m7 Value{40M9} +149i7 Amount{natural} +151V13*Shift_Left{41M9} 152>7 153>7 231b30 +152m7 Value{41M9} +153i7 Amount{natural} +155V13*Shift_Right{41M9} 156>7 157>7 232b30 +156m7 Value{41M9} +157i7 Amount{natural} +159V13*Shift_Right_Arithmetic{41M9} 160>7 161>7 233b30 +160m7 Value{41M9} +161i7 Amount{natural} +163V13*Rotate_Left{41M9} 164>7 165>7 234b30 +164m7 Value{41M9} +165i7 Amount{natural} +167V13*Rotate_Right{41M9} 168>7 169>7 235b30 +168m7 Value{41M9} +169i7 Amount{natural} +171V13*Shift_Left{42M9} 172>7 173>7 231b30 +172m7 Value{42M9} +173i7 Amount{natural} +175V13*Shift_Right{42M9} 176>7 177>7 232b30 +176m7 Value{42M9} +177i7 Amount{natural} +179V13*Shift_Right_Arithmetic{42M9} 180>7 181>7 233b30 +180m7 Value{42M9} +181i7 Amount{natural} +183V13*Rotate_Left{42M9} 184>7 185>7 234b30 +184m7 Value{42M9} +185i7 Amount{natural} +187V13*Rotate_Right{42M9} 188>7 189>7 235b30 +188m7 Value{42M9} +189i7 Amount{natural} +191V13*Shift_Left{43M9} 192>7 193>7 231b30 +192m7 Value{43M9} +193i7 Amount{natural} +195V13*Shift_Right{43M9} 196>7 197>7 232b30 +196m7 Value{43M9} +197i7 Amount{natural} +199V13*Shift_Right_Arithmetic{43M9} 200>7 201>7 233b30 +200m7 Value{43M9} +201i7 Amount{natural} +203V13*Rotate_Left{43M9} 204>7 205>7 234b30 +204m7 Value{43M9} +205i7 Amount{natural} +207V13*Rotate_Right{43M9} 208>7 209>7 235b30 +208m7 Value{43M9} +209i7 Amount{natural} +211V13*Shift_Left{44M9} 212>7 213>7 231b30 +212m7 Value{44M9} +213i7 Amount{natural} +215V13*Shift_Right{44M9} 216>7 217>7 232b30 +216m7 Value{44M9} +217i7 Amount{natural} +219V13*Shift_Right_Arithmetic{44M9} 220>7 221>7 233b30 +220m7 Value{44M9} +221i7 Amount{natural} +223V13*Rotate_Left{44M9} 224>7 225>7 234b30 +224m7 Value{44M9} +225i7 Amount{natural} +227V13*Rotate_Right{44M9} 228>7 229>7 235b30 +228m7 Value{44M9} +229i7 Amount{natural} +243A12*Packed_Bytes{74A9}(46M9) +244A12*Packed_Bytes_Unaligned{53A9} + diff --git a/rtsdir/adalib/system.ali b/rtsdir/adalib/system.ali new file mode 100644 index 0000000..f3cc6bf --- /dev/null +++ b/rtsdir/adalib/system.ali @@ -0,0 +1,105 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system%s system.ads c1a7efcf NE OL PU PK + +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [Olt system 28 13 none] +G c Z s s [Ole system 29 13 none] +G c Z s s [Ogt system 30 13 none] +G c Z s s [Oge system 31 13 none] +G c Z s s [Oeq system 32 13 none] +X 1 system.ads +11K9*System 45E9 73l5 73e11 +12E9*Name 12e54 13r27 +12n18*SYSTEM_NAME_RISCV64_LIMINE_IRONCLAD{12E9} 13r35 +13e4*System_Name{12E9} +16N4*Min_Int +17N4*Max_Int +18N4*Max_Binary_Modulus +19N4*Max_Nonbinary_Modulus +20N4*Storage_Unit +21N4*Word_Size +22N4*Memory_Size 45r24 +25M9*Address 26r28 28r33 29r33 30r33 31r33 32r33 45c9 46r28 +26m4*Null_Address{25M9} 46c4 +28V14*"<"{boolean} 28>19 28>25 33b31 +28m19 Left{25M9} +28m25 Right{25M9} +29V14*"<="{boolean} 29>19 29>25 34b31 +29m19 Left{25M9} +29m25 Right{25M9} +30V14*">"{boolean} 30>19 30>25 35b31 +30m19 Left{25M9} +30m25 Right{25M9} +31V14*">="{boolean} 31>19 31>25 36b31 +31m19 Left{25M9} +31m25 Right{25M9} +32V14*"="{boolean} 32>19 32>25 37b31 +32m19 Left{25M9} +32m25 Right{25M9} +40E9*Bit_Order 40e57 41r33 +40n23*High_Order_First{40E9} +40n41*Low_Order_First{40E9} 41r46 +41e4*Default_Bit_Order{40E9} +49b4 Backend_Divide_Checks{boolean} +50b4 Backend_Overflow_Checks{boolean} +51b4 Command_Line_Args{boolean} +52b4 Configurable_Run_Time{boolean} +53b4 Denorm{boolean} +54b4 Duration_32_Bits{boolean} +55b4 Exit_Status_Supported{boolean} +56b4 Machine_Overflows{boolean} +57b4 Machine_Rounds{boolean} +58b4 Preallocated_Stacks{boolean} +59b4 Signed_Zeros{boolean} +60b4 Stack_Check_Default{boolean} +61b4 Stack_Check_Probes{boolean} +62b4 Stack_Check_Limits{boolean} +63b4 Support_Aggregates{boolean} +64b4 Support_Atomic_Primitives{boolean} +65b4 Support_Composite_Assign{boolean} +66b4 Support_Composite_Compare{boolean} +67b4 Support_Long_Shifts{boolean} +68b4 Always_Compatible_Rep{boolean} +69b4 Suppress_Standard_Library{boolean} +70b4 Use_Ada_Main_Program_Name{boolean} +71b4 ZCX_By_Default{boolean} +72b4 GCC_ZCX_Support{boolean} + diff --git a/rtsdir/obj/a-charac.ads.stderr b/rtsdir/obj/a-charac.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/a-charac.ads.stdout b/rtsdir/obj/a-charac.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/a-charac.ali b/rtsdir/obj/a-charac.ali new file mode 100644 index 0000000..910aaa1 --- /dev/null +++ b/rtsdir/obj/a-charac.ali @@ -0,0 +1,49 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ada.characters%s a-charac.ads 43796ac4 NE OL PU PK +W ada%s ada.ads ada.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ada.ads +11K9*Ada 12e8 2|11r9 12r5 +X 2 a-charac.ads +11K13*Characters 1|11k9 2|12l9 12e19 + diff --git a/rtsdir/obj/a-charac.o b/rtsdir/obj/a-charac.o new file mode 100644 index 0000000000000000000000000000000000000000..271f36aa9be8c9e0a37e0b40b10120766cd8e210 GIT binary patch literal 1816 zcmbVL-EPw`6n57QhWHVP8zgSR6(EtM&8iBJids#hLtHhlvM(2gvf{y2Bxl~EYV$XjUdHyWJ>NBqV$n%fhPYws+Jm)mzjLb1jLxKyb z@{Asc{Fo9IGLdH_#YrfXOqd8kTglHsp5?w&n4I{9$Q7`20bqrYIVC59EU(C*(d2>= z&*u;bn&LAEam)s3(eG6(N(Q0gML6CcP5jBu-htoI76p^NgC*ntjw|zpAT%rlo^dP# zoIqv$?+EByO za!qp1X$H~^W@3pONIvAG=iIe>7RXp4>So(zc9D= b8s9bG9lcmFxBflI)#*PP@au|Jhpzq)Vz=eK literal 0 HcmV?d00001 diff --git a/rtsdir/obj/a-chlat1.ads.stderr b/rtsdir/obj/a-chlat1.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/a-chlat1.ads.stdout b/rtsdir/obj/a-chlat1.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/a-chlat1.ali b/rtsdir/obj/a-chlat1.ali new file mode 100644 index 0000000..ff79bcb --- /dev/null +++ b/rtsdir/obj/a-chlat1.ali @@ -0,0 +1,280 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ada.characters.latin_1%s a-chlat1.ads cab3b835 NE OL PU PK +W ada.characters%s a-charac.ads a-charac.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-charac.ads 20241115151050 4d2240d2 ada.characters%s +D a-chlat1.ads 20241115151050 8791f8e7 ada.characters.latin_1%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ada.ads +11K9*Ada 12e8 3|11r9 247r5 +X 2 a-charac.ads +11K13*Characters 1|11k9 2|12e19 3|11r13 247r9 +X 3 a-chlat1.ads +11K24*Latin_1 2|11k13 3|247l20 247e27 +13e4*NUL{character} +14e4*SOH{character} +15e4*STX{character} +16e4*ETX{character} +17e4*EOT{character} +18e4*ENQ{character} +19e4*ACK{character} +20e4*BEL{character} +21e4*BS{character} +22e4*HT{character} +23e4*LF{character} +24e4*VT{character} +25e4*FF{character} +26e4*CR{character} +27e4*SO{character} +28e4*SI{character} +29e4*DLE{character} +30e4*DC1{character} +31e4*DC2{character} +32e4*DC3{character} +33e4*DC4{character} +34e4*NAK{character} +35e4*SYN{character} +36e4*ETB{character} +37e4*CAN{character} +38e4*EM{character} +39e4*SUB{character} +40e4*ESC{character} +41e4*FS{character} 110r45 +42e4*GS{character} 111r45 +43e4*RS{character} 112r45 +44e4*US{character} 113r45 +47e4*Space{character} +48e4*Exclamation{character} +49e4*Quotation{character} +50e4*Number_Sign{character} +51e4*Dollar_Sign{character} +52e4*Percent_Sign{character} +53e4*Ampersand{character} +54e4*Apostrophe{character} +55e4*Left_Parenthesis{character} +56e4*Right_Parenthesis{character} +57e4*Asterisk{character} +58e4*Plus_Sign{character} +59e4*Comma{character} +60e4*Hyphen{character} 61r45 +61e4*Minus_Sign=61:45{character} +62e4*Full_Stop{character} +63e4*Solidus{character} +64e4*Colon{character} +65e4*Semicolon{character} +66e4*Less_Than_Sign{character} +67e4*Equals_Sign{character} +68e4*Greater_Than_Sign{character} +69e4*Question{character} +70e4*Commercial_At{character} +71e4*Left_Square_Bracket{character} +72e4*Reverse_Solidus{character} +73e4*Right_Square_Bracket{character} +74e4*Circumflex{character} +75e4*Low_Line{character} +76e4*Grave{character} +77e4*LC_A{character} +78e4*LC_B{character} +79e4*LC_C{character} +80e4*LC_D{character} +81e4*LC_E{character} +82e4*LC_F{character} +83e4*LC_G{character} +84e4*LC_H{character} +85e4*LC_I{character} +86e4*LC_J{character} +87e4*LC_K{character} +88e4*LC_L{character} +89e4*LC_M{character} +90e4*LC_N{character} +91e4*LC_O{character} +92e4*LC_P{character} +93e4*LC_Q{character} +94e4*LC_R{character} +95e4*LC_S{character} +96e4*LC_T{character} +97e4*LC_U{character} +98e4*LC_V{character} +99e4*LC_W{character} +100e4*LC_X{character} +101e4*LC_Y{character} +102e4*LC_Z{character} +103e4*Left_Curly_Bracket{character} +104e4*Vertical_Line{character} +105e4*Right_Curly_Bracket{character} +106e4*Tilde{character} +107e4*DEL{character} +110e4*IS4=110:45{character} +111e4*IS3=111:45{character} +112e4*IS2=112:45{character} +113e4*IS1=113:45{character} +114e4*Reserved_128{character} +115e4*Reserved_129{character} +116e4*BPH{character} +117e4*NBH{character} +118e4*Reserved_132{character} +119e4*NEL{character} +120e4*SSA{character} +121e4*ESA{character} +122e4*HTS{character} +123e4*HTJ{character} +124e4*VTS{character} +125e4*PLD{character} +126e4*PLU{character} +127e4*RI{character} +128e4*SS2{character} +129e4*SS3{character} +130e4*DCS{character} +131e4*PU1{character} +132e4*PU2{character} +133e4*STS{character} +134e4*CCH{character} +135e4*MW{character} +136e4*SPA{character} +137e4*EPA{character} +138e4*SOS{character} +139e4*Reserved_153{character} +140e4*SCI{character} +141e4*CSI{character} +142e4*ST{character} +143e4*OSC{character} +144e4*PM{character} +145e4*APC{character} +148e4*No_Break_Space{character} 149r52 +149e4*NBSP=149:52{character} +150e4*Inverted_Exclamation{character} +151e4*Cent_Sign{character} +152e4*Pound_Sign{character} +153e4*Currency_Sign{character} +154e4*Yen_Sign{character} +155e4*Broken_Bar{character} +156e4*Section_Sign{character} +157e4*Diaeresis{character} +158e4*Copyright_Sign{character} +159e4*Feminine_Ordinal_Indicator{character} +160e4*Left_Angle_Quotation{character} +161e4*Not_Sign{character} +162e4*Soft_Hyphen{character} +163e4*Registered_Trade_Mark_Sign{character} +164e4*Macron{character} +165e4*Degree_Sign{character} 166r52 +166e4*Ring_Above=166:52{character} +167e4*Plus_Minus_Sign{character} +168e4*Superscript_Two{character} +169e4*Superscript_Three{character} +170e4*Acute{character} +171e4*Micro_Sign{character} +172e4*Pilcrow_Sign{character} 173r52 +173e4*Paragraph_Sign=173:52{character} +174e4*Middle_Dot{character} +175e4*Cedilla{character} +176e4*Superscript_One{character} +177e4*Masculine_Ordinal_Indicator{character} +178e4*Right_Angle_Quotation{character} +179e4*Fraction_One_Quarter{character} +180e4*Fraction_One_Half{character} +181e4*Fraction_Three_Quarters{character} +182e4*Inverted_Question{character} +183e4*UC_A_Grave{character} +184e4*UC_A_Acute{character} +185e4*UC_A_Circumflex{character} +186e4*UC_A_Tilde{character} +187e4*UC_A_Diaeresis{character} +188e4*UC_A_Ring{character} +189e4*UC_AE_Diphthong{character} +190e4*UC_C_Cedilla{character} +191e4*UC_E_Grave{character} +192e4*UC_E_Acute{character} +193e4*UC_E_Circumflex{character} +194e4*UC_E_Diaeresis{character} +195e4*UC_I_Grave{character} +196e4*UC_I_Acute{character} +197e4*UC_I_Circumflex{character} +198e4*UC_I_Diaeresis{character} +199e4*UC_Icelandic_Eth{character} +200e4*UC_N_Tilde{character} +201e4*UC_O_Grave{character} +202e4*UC_O_Acute{character} +203e4*UC_O_Circumflex{character} +204e4*UC_O_Tilde{character} +205e4*UC_O_Diaeresis{character} +206e4*Multiplication_Sign{character} +207e4*UC_O_Oblique_Stroke{character} +208e4*UC_U_Grave{character} +209e4*UC_U_Acute{character} +210e4*UC_U_Circumflex{character} +211e4*UC_U_Diaeresis{character} +212e4*UC_Y_Acute{character} +213e4*UC_Icelandic_Thorn{character} +214e4*LC_German_Sharp_S{character} +215e4*LC_A_Grave{character} +216e4*LC_A_Acute{character} +217e4*LC_A_Circumflex{character} +218e4*LC_A_Tilde{character} +219e4*LC_A_Diaeresis{character} +220e4*LC_A_Ring{character} +221e4*LC_AE_Diphthong{character} +222e4*LC_C_Cedilla{character} +223e4*LC_E_Grave{character} +224e4*LC_E_Acute{character} +225e4*LC_E_Circumflex{character} +226e4*LC_E_Diaeresis{character} +227e4*LC_I_Grave{character} +228e4*LC_I_Acute{character} +229e4*LC_I_Circumflex{character} +230e4*LC_I_Diaeresis{character} +231e4*LC_Icelandic_Eth{character} +232e4*LC_N_Tilde{character} +233e4*LC_O_Grave{character} +234e4*LC_O_Acute{character} +235e4*LC_O_Circumflex{character} +236e4*LC_O_Tilde{character} +237e4*LC_O_Diaeresis{character} +238e4*Division_Sign{character} +239e4*LC_O_Oblique_Stroke{character} +240e4*LC_U_Grave{character} +241e4*LC_U_Acute{character} +242e4*LC_U_Circumflex{character} +243e4*LC_U_Diaeresis{character} +244e4*LC_Y_Acute{character} +245e4*LC_Icelandic_Thorn{character} +246e4*LC_Y_Diaeresis{character} + diff --git a/rtsdir/obj/a-chlat1.o b/rtsdir/obj/a-chlat1.o new file mode 100644 index 0000000000000000000000000000000000000000..7e6545b1aff654d2d6af22d9f020919b296dab6f GIT binary patch literal 48560 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 17b31 +14*36 S{12+9} + diff --git a/rtsdir/obj/a-unccon.o b/rtsdir/obj/a-unccon.o new file mode 100644 index 0000000000000000000000000000000000000000..176e168866468498e06155313fea3ceb76b559dc GIT binary patch literal 1816 zcmb_b-EPw`6n57QhWHVP8zgSR6(EtM4bucjMXjo_A+b@h!WB~GI9}^5jw9P08yE0O zJPud9!^8u?abmM!5(y!W)SPoZf1i)*bNqSh)r*x*2RZAY@8~>pC_-Pmb!^s#RX9Y~ z(KWQa_cj=1IOuOgNz@C%LMWZ(EDgffNf6EptUut|kAm>v&2)bdF9fGCXJmnC9ur(D zEebl3;*b&@Gbsv^<1Ch1WlYAPt>vd6FGQ#`CP!f@g$A~e0M-auP;xXVL`?>bA(xB< zA%{TH9G^glQ#Q!U&5fEx$spFejJNkj({Q@AI|+Nnl4!a+IcNOcag|s~LgP~6Imar( z8B{j^p7O>Tn{^G&6b@Ah2T6MUr~Rb=*c?)l#Xuf!ZZM9?>?0#e!uNm{gfbMlixKJJ zd4e;{;M$fMjd8dv2oVJwK_Rp~9zP2nK$9NY4x!NwbWbuxj#1}1gsV5#s#;0epYf#Z z&9I4xiK^0dP*<;F&X;+=>{T<+{xNg1iq3vCF}jTthENx+G|>UK!{@Dbp+b{&(OMG> zyIg9)*IV$*E%=o`@!#(~Qm0(w6h%tQ+AmzB>4`>BhBZb}suYAYUCw7YE2xWs>Ouq0 zs+3wPfj1Q|S7Cu)DB_>7jpP!+fmyADT~t`P?VKF_=H+L#r)4flHkqx9GoELS*-G&gq=rZ_$6VgxgMN zz0*1W-s(LXI&%bX!H08Lhr2I5+AsY}Z^74_+@A>}8Cr1N3a$cXe(nX{F(fea!u;MF be8++}Ome~e`nO=MN&n7*pDt)k=<9z1px)*N literal 0 HcmV?d00001 diff --git a/rtsdir/obj/a-uncdea.ads.stderr b/rtsdir/obj/a-uncdea.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/a-uncdea.ads.stdout b/rtsdir/obj/a-uncdea.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/a-uncdea.ali b/rtsdir/obj/a-uncdea.ali new file mode 100644 index 0000000..52552d5 --- /dev/null +++ b/rtsdir/obj/a-uncdea.ali @@ -0,0 +1,53 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ada.unchecked_deallocation%s a-uncdea.ads fd1a1e19 NE OL PR GE +W ada%s ada.ads ada.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-uncdea.ads 20241115151050 f341340f ada.unchecked_deallocation%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ada.ads +11K9*Ada 12e8 2|14r11 18r27 +X 2 a-uncdea.ads +12+9 Object 13r24 +13P9 Name(12+9) 14r50 +14u15*Unchecked_Deallocation 14=39 18b31 +14*39 X{13P9} 15r35 15r54 15r66 + diff --git a/rtsdir/obj/a-uncdea.o b/rtsdir/obj/a-uncdea.o new file mode 100644 index 0000000000000000000000000000000000000000..f01077cc5c397c9696c0f8cc319fd7bd29469979 GIT binary patch literal 1816 zcmbVL-EPw`6n57QhWHVP8zgSR6(EtM4b}LOidt2pLt>+1g)5}WalF=BoJ6)eHZI_m zcpR>HhlvM(`+BX_Le^U77h0_>iqMaC732gvf{y2Bxl~EYV$XjUdHy`Z>NBqV(DM)8Pxt%bBIh*Zj4UusLxKyb z@{CSIen^Q5naDGe;v^JGCQO8&t>mX5&vIWXOpg3Qd*O8TMVML6CYPW|cj?!@nCi-PIyWX1Tu^(iP*pEu&X;Mo=#(?i{Lyo=j?RA9G1|2ghEN-=)zJYr!{=n%P@&G+Xrm5> zU9L3Xn+^EY2K?GZ{GTSEK%R1iWAI8;eqkd;PZSCgtS|~<2@OkVyqwQcmQfo6)rK0L zm1~l7PBV~ZF#7?tw0a9DD4Q8zr38zYipq;;y99C{G`ffGjSU+1ay$3H=-tjW>2$N)*S~4);rV(5RO#kc)yr)TE`h~f@ c*Z7VBZ|TK3bL-!MT%G=-0l%Kp>d@8y0q8#E+W-In literal 0 HcmV?d00001 diff --git a/rtsdir/obj/ada.ads.stderr b/rtsdir/obj/ada.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/ada.ads.stdout b/rtsdir/obj/ada.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/ada.ali b/rtsdir/obj/ada.ali new file mode 100644 index 0000000..31d592e --- /dev/null +++ b/rtsdir/obj/ada.ali @@ -0,0 +1,45 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ada%s ada.ads 0e5b2a16 NE OL PU PK + +D ada.ads 20241115151050 0e5b2a16 ada%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 ada.ads +11K9*Ada 12l5 12e8 + diff --git a/rtsdir/obj/ada.o b/rtsdir/obj/ada.o new file mode 100644 index 0000000000000000000000000000000000000000..9bc9581e931ed9f55bc751711a976b13a8212573 GIT binary patch literal 1800 zcmbVL(QeZ)6m{1Ph5!k~3lcBk2_})G3Dq=^idt2pOk!hVuGHM?bIf@b&}LY%NcR&Mue7A1pF@iLqojHdo{cmL4uX^VsD{^5%8cgK~*QV<%J0?#>? z0ZyT^{`ZtO)rfj^4bCL?WeEp~d(pEfj-Kj63bGi8v+X|Pn9M#hA_aVpX-+6ZfxQ@< zVg@(0Olb%q6qKu6k(?kj8IPZPkD)(Xra5Tz3K}PvBxk7e0>bq>8&#ROjAlG8do!#f zqNA#69n^)ZnDb>8mA$I{EgwA}>*&X?rgXP)vJmQ`wI({?X6T%37b-Ma7i~1bu*fX0glGp;T{@o=?Lu7`f-c?iy>^8eXO%O>yKLW-wffN6&i1K z*1tD;hlajef|GFJ4DxXIr9=Cp-*XbKUa#Gm(2^YkZW_T&!1T|)y!)C2reBuZdyNkb V=)OF+{@oV+p3#5On_V(j{~Psi;okrN literal 0 HcmV?d00001 diff --git a/rtsdir/obj/gnat.lexch b/rtsdir/obj/gnat.lexch new file mode 100644 index 0000000..6475517 --- /dev/null +++ b/rtsdir/obj/gnat.lexch @@ -0,0 +1,27 @@ +[LIBRARY PATH] +/home/michael/capstoneProject/ironclad/rtsdir/adalib/libgnat.a +[OBJECT FILES] +/home/michael/capstoneProject/ironclad/rtsdir/obj/a-charac.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/a-chlat1.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/a-unccon.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/a-uncdea.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/ada.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/i-c.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/interfac.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/s-atacco.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/s-maccod.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/s-stoele.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/s-unstyp.o +20241115153943 +/home/michael/capstoneProject/ironclad/rtsdir/obj/system.o +20241115153943 diff --git a/rtsdir/obj/i-c.ads.stderr b/rtsdir/obj/i-c.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/i-c.ads.stdout b/rtsdir/obj/i-c.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/i-c.ali b/rtsdir/obj/i-c.ali new file mode 100644 index 0000000..dde8f41 --- /dev/null +++ b/rtsdir/obj/i-c.ali @@ -0,0 +1,77 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U interfaces.c%s i-c.ads 5282297f NE OL PU PK +W interfaces%s interfac.ads interfac.ali + +D interfac.ads 20241115151050 f8f85574 interfaces%s +D i-c.ads 20241115151050 aa7a7c0b interfaces.c%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [char_arrayIP interfaces__c 33 9 none] +G c Z s s [wchar_arrayIP interfaces__c 36 9 none] +G c Z s s [char16_arrayIP interfaces__c 38 9 none] +G c Z s s [char32_arrayIP interfaces__c 40 9 none] +X 1 interfac.ads +11K9*Interfaces 120e15 2|11r9 41r5 +X 2 i-c.ads +11K20*C 1|11k9 2|41l16 41e17 +13N4*CHAR_BIT 23r69 27r60 34r25 +14N4*SCHAR_MIN 23r33 +15N4*SCHAR_MAX 23r46 +16N4*UCHAR_MAX 27r32 +19I9*int 24r36 +20I9*short 25r36 +21I9*long 26r36 +23I9*signed_char +24M9*unsigned +25M9*unsigned_short +26M9*unsigned_long +27M9*unsigned_char 28r27 +28M12*plain_char{27M9} +29I9*ptrdiff_t +31M9*size_t 33r30 36r31 38r32 40r32 +32E9*char 33r58 +33A9*char_array(32E9)<31M9> +35E9*wchar_t 36r59 +36A9*wchar_array(35E9)<31M9> +37E9*char16_t 38r60 +38A9*char16_array(37E9)<31M9> +39E9*char32_t 40r60 +40A9*char32_array(39E9)<31M9> + diff --git a/rtsdir/obj/i-c.o b/rtsdir/obj/i-c.o new file mode 100644 index 0000000000000000000000000000000000000000..b66c05038cf66b765edfcd04d7780620e4e9ff44 GIT binary patch literal 6008 zcmb`KO^h7H6@aU!$9Uth*T%*Pe~D+o{1`GnJzkczlf}CR>~%0^fgy@Wl%c1mcei1t zXVl%hUOPw_4iN|;5Q@TuC=%j8luMKY2S6Nrh!8iBxNzizKthn*l7sVJ)q68U%#`U0q$({mlJmPZb50uxK|7A~pXoiQa3bIzj6)_F+6A!p>Xws1 z_rh8)g2G|97WjiS>&M|r(tk1xvRah%kG-|+-%hIgVx0;NE7&74dWn;?7OfLr_ov*c3OCwY-ba0*~u{|62_eA#JfGn zl1{X`+8Qr790D!~yEiHr#kOOZm9F=b%=R{M97h{Dz3BnAqp^%Mx)`>`Xj4}oyG&hv zjPj7wMjUO1N$Pi7xaQZw@rlJzcyl?!Yo6BwgjuTc3idmG1WS6O6V{?i04pOM`TFfA zCp1P`inCa&)A!zcynH)6c}M86Q))Ln$yY#J?$V8 zRXg*-Vb;uOZKtc?tjZBruf}nQtIVuQkEy&{9gz@h=6H@tVg3sV!DjwQF5hcWrA}!w zJ`catyrgPY#&2~SpR(-|>gH~J9!pPGH_WIczo;7}^`5n~o+bXiwSb-{4zCK^M({{%5QH--++E;@=_umc=g<|HR@S60cd0+Xb-qi-O?tkzy{ziW_~WYab!hn2!x%QM zh5Gx&{=>taCC+Wu4-@ARG4B)SmCk&4s8r9^%j)pf_uIUyXFFkgW3A=4+ex@tSJksi zkDh9HMpF}8CaN37A;*}Iqejgdb(c|dM%``Hyiv!D^0+AV;Wda;C67vZRLi3(9u@Vd zoJaKpN;I{~VPVid=e@yV(1pl?*d@YFDf*&CpRV4Twf)510Q}FYG|5Wg&1+NJH zg5dZ~#_|RkI6pkMi2f$Hd`Ws&aF1+M{Cs1bhTwcJkRKGB=MXus8FX`B$l=p-D0h*C z{MsQ^!}m<&@{Hn`0&x8eO*v)Kc+chA26MbuGM?wwuFvDd`cv@FGEWB9m!~gttS{s5 zqjUYWMh4KDlo_TGX6IdZ`Xfe!LcLPr>b*Q=khr5w~1@}grV}1^}-Xa-O3`pa=OPPTN z=3B1|YFP#e8)K#5-h+L7-+X+Q?V4Dh`~L?vgxIn8oD|`IQN*A*Pm5@gE*Q@ZjN|#> z=X3#>T@#R+CiplugxImT{%wZg>jcZ#5MswZ0KUBOZ_z6gj}ym_`-VOK4luhWAoV=K z)8F{ny_v$rmMH;ka)@J&}u6D S0?5lBpabLsqlUkB{(k{Y5sc9Q literal 0 HcmV?d00001 diff --git a/rtsdir/obj/interfac.ads.stderr b/rtsdir/obj/interfac.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/interfac.ads.stdout b/rtsdir/obj/interfac.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/interfac.ali b/rtsdir/obj/interfac.ali new file mode 100644 index 0000000..380642a --- /dev/null +++ b/rtsdir/obj/interfac.ali @@ -0,0 +1,134 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U interfaces%s interfac.ads f8f85574 NE OL PU PK + +D interfac.ads 20241115151050 f8f85574 interfaces%s +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [shift_left interfaces 21 13 none] +G c Z s s [shift_right interfaces 26 13 none] +G c Z s s [shift_right_arithmetic interfaces 31 13 none] +G c Z s s [rotate_left interfaces 36 13 none] +G c Z s s [rotate_right interfaces 41 13 none] +G c Z s s [shift_left interfaces 46 13 none] +G c Z s s [shift_right interfaces 51 13 none] +G c Z s s [shift_right_arithmetic interfaces 56 13 none] +G c Z s s [rotate_left interfaces 61 13 none] +G c Z s s [rotate_right interfaces 66 13 none] +G c Z s s [shift_left interfaces 71 13 none] +G c Z s s [shift_right interfaces 76 13 none] +G c Z s s [shift_right_arithmetic interfaces 81 13 none] +G c Z s s [rotate_left interfaces 86 13 none] +G c Z s s [rotate_right interfaces 91 13 none] +G c Z s s [shift_left interfaces 96 13 none] +G c Z s s [shift_right interfaces 101 13 none] +G c Z s s [shift_right_arithmetic interfaces 106 13 none] +G c Z s s [rotate_left interfaces 111 13 none] +G c Z s s [rotate_right interfaces 116 13 none] +X 1 interfac.ads +11K9*Interfaces 120l5 120e15 +12I9*Integer_8 +13I9*Integer_16 +14I9*Integer_32 +15I9*Integer_64 +16M9*Unsigned_8 22r17 23r33 27r17 28r33 32r17 33r33 37r17 38r33 42r17 43r33 +17M9*Unsigned_16 47r17 48r33 52r17 53r33 57r17 58r33 62r17 63r33 67r17 68r33 +18M9*Unsigned_32 72r17 73r33 77r17 78r33 82r17 83r33 87r17 88r33 92r17 93r33 +19M9*Unsigned_64 97r17 98r33 102r17 103r33 107r17 108r33 112r17 113r33 117r17 +. 118r33 +21V13*Shift_Left{16M9} 22>8 23>8 +22m8 Value{16M9} +23i8 Amount{natural} +26V13*Shift_Right{16M9} 27>8 28>8 +27m8 Value{16M9} +28i8 Amount{natural} +31V13*Shift_Right_Arithmetic{16M9} 32>8 33>8 +32m8 Value{16M9} +33i8 Amount{natural} +36V13*Rotate_Left{16M9} 37>8 38>8 +37m8 Value{16M9} +38i8 Amount{natural} +41V13*Rotate_Right{16M9} 42>8 43>8 +42m8 Value{16M9} +43i8 Amount{natural} +46V13*Shift_Left{17M9} 47>8 48>8 +47m8 Value{17M9} +48i8 Amount{natural} +51V13*Shift_Right{17M9} 52>8 53>8 +52m8 Value{17M9} +53i8 Amount{natural} +56V13*Shift_Right_Arithmetic{17M9} 57>8 58>8 +57m8 Value{17M9} +58i8 Amount{natural} +61V13*Rotate_Left{17M9} 62>8 63>8 +62m8 Value{17M9} +63i8 Amount{natural} +66V13*Rotate_Right{17M9} 67>8 68>8 +67m8 Value{17M9} +68i8 Amount{natural} +71V13*Shift_Left{18M9} 72>8 73>8 +72m8 Value{18M9} +73i8 Amount{natural} +76V13*Shift_Right{18M9} 77>8 78>8 +77m8 Value{18M9} +78i8 Amount{natural} +81V13*Shift_Right_Arithmetic{18M9} 82>8 83>8 +82m8 Value{18M9} +83i8 Amount{natural} +86V13*Rotate_Left{18M9} 87>8 88>8 +87m8 Value{18M9} +88i8 Amount{natural} +91V13*Rotate_Right{18M9} 92>8 93>8 +92m8 Value{18M9} +93i8 Amount{natural} +96V13*Shift_Left{19M9} 97>8 98>8 +97m8 Value{19M9} +98i8 Amount{natural} +101V13*Shift_Right{19M9} 102>8 103>8 +102m8 Value{19M9} +103i8 Amount{natural} +106V13*Shift_Right_Arithmetic{19M9} 107>8 108>8 +107m8 Value{19M9} +108i8 Amount{natural} +111V13*Rotate_Left{19M9} 112>8 113>8 +112m8 Value{19M9} +113i8 Amount{natural} +116V13*Rotate_Right{19M9} 117>8 118>8 +117m8 Value{19M9} +118i8 Amount{natural} + diff --git a/rtsdir/obj/interfac.o b/rtsdir/obj/interfac.o new file mode 100644 index 0000000000000000000000000000000000000000..4351bb1d74c7d648aea4a618c95efbcf5cd8e6c2 GIT binary patch literal 6184 zcmbuDO>Epm6oAL^rUh-2{sia`KiQP>Q((PoZwP5&A!#WgP})FKI27S}y-wC)|FE4> zC_fU1azKbn5fTUi5`q&y5(vbJ8(csfI3NxPF2Ic+aR7uwd2i;;?s(#@5R9~bZ@%~D zz46R=Jl-b{9K3DFFqkX``;GN$k}}p96FS;vxH`ke*cNu*5M#s4I1kY}6--)9)CD!{+dfC}%D$Wg)iR=88$FpY+ChM|gv`3%E8G}JN- zbGL%w6dF)bk{`tSnGD0-Xm~5ba4#A@$uJy4!?ziR<9CAL4>X{nBoDB@83tN6tf1kV z3_}ME`_l$KrA9KsgYyecHv}DK^RViMEaR5#=IGuD?zd3J? z!ph?6#IQL!xgA#FX5)&{vAj8c@%W~#uxuvS&XLlHIXXXv*7X!E55e*n3ld!dKfYQR zU!0gbRd7WNgUteI7{*_tBPd`z@JRt>Tr`II5a=6u4Xw-w+er{Dd43SP?rJ*@m)k+z zoo1PMYBI&6PU0nj8->e_BxQ&j;Zh>F>pFu?71s8W)yQjRxHN;Mte}X`71N8tq|pkJ z(AT}Fw`zdpAR3U_bu({uO{df$7?6+;kLy-anbPgjxl*H-HZ9_`K(F2DeW`GwiMX}Q zL|G;^Pk-1l;+}hg`%U$m>@6pIYEV>HZ9U*#rzX=k+Z%+6lQ#77RU9^V=xAZK?iK7w z%dyIZV!IP3^=4Qr6c0Ov;xeqehdm)@3&o{-7LQa*jZP~lwL-t)1pPd4i=)$ zO5i7@FzU4ZrdKaTNn8)360{Y~AA#oWPBBhA|G{Dx<`uj<5kNuwM&LhKZFht-v_a=? z=ogADP@eYHslA928JMKFS@a}bid#9SRx&8b1 z7OsXhv6~hIo4p-2zbK6T6U?|7)ZC_FerrzGc3V!j?0TsAsPQ`$inv*>w_2-ByIaOR zbU?xVHOGEEn`JgLPcZPxpj}>XV}d2Cn2;f>m~a-!DkkHvvNa}?oxg@5Fj;;8-!Oo~ z%T6nTY~b%E)g<|iDg<5f!vpyJ8W+dDwfB2D_sg@ddhb5b@LDc5q>q8X9OA;Of8E2? zwc|6#d7iz-U!;BiL&R&^)Ep)LhSnc(KY8}7#(nbdM;4kmdgR$*&Ho|t|5)QEiNi@F zRh}e%Iz<_Kn)nkMe~$Pc8h?Q}p0d>P3h|$`@p+T@4voJZBwJEM6`$cgbisw)~hvGRD&!Kn@#d9d0L-F9GBF83dFLn6q zM4s?*IyUtNwg1_Qe6zy0kd9pHh%QpN*dqnlq3{bxM^PXh<6KBOiYrM+E@L9PPT^Zg zMlBaqzoHmLsHKoJ%DHDfUI-f0@D` zCmsFA75Tzgj|&zQT7a{4s@JqwwbyF5a2K__o638bHgZ3NI>gzEilR@IMuv=5^$QaVn&vkaL7wJ;lheMXv64vJc3`*#s0Q*9*btCAAA$@guFo zt1&B1A|V@6OM;ULv+7>rF{>8Cp%%XYEU`J_1^_l?qfD8-$ZIbL=_a^S$|jIPs)$`) z_dBgt(1w(4_%N~H04zRKATS<%EiXx;u(p~&*#BSf8O1S@<1Qo4NJW!0Z9O^x8n!ok zL?|;_T~^UoE%*%J-uYkKO0GrOxJx6&9SW$}Zdneek`aexC71>Yh|9bf8{jUSlV*+Bk zDF0rpC`I>m!IqVOf$|@xwwNDJ<9hxsFpOD-pIRQE{HHLuQe=K9Pk}9~{nvQ2PzH^^ zZ2t`SWVPQ%9aZ1K7*Dp7@{GdJF3VAQqY{vm?IeC36u4C!hE$R5=To$wUt)}>Epcvo wmGW=me`brb2maqEyCv5J&It`QZznJB(q>xKI;>UsnI^M6&Ho27AW6ObKf!nOk^lez literal 0 HcmV?d00001 diff --git a/rtsdir/obj/s-atacco.ads.stderr b/rtsdir/obj/s-atacco.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/s-atacco.ads.stdout b/rtsdir/obj/s-atacco.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/s-atacco.ali b/rtsdir/obj/s-atacco.ali new file mode 100644 index 0000000..30ed13e --- /dev/null +++ b/rtsdir/obj/s-atacco.ali @@ -0,0 +1,57 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system.address_to_access_conversions%s s-atacco.ads c5e15ea3 NE OL PR PK GE +W system%s system.ads system.ali + +D system.ads 20241115151050 c1a7efcf system%s +D s-atacco.ads 20241115151050 0446b16c system.address_to_access_conversions%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +X 1 system.ads +11K9*System 73e11 2|13r9 27r5 +25M9*Address 2|21r33 22r56 +X 2 s-atacco.ads +12+9 Object 16r7 19r38 +13k16*Address_To_Access_Conversions 1|11k9 2|12z9 27l12 27e41 +19P9*Object_Pointer(12+9) 21r49 22r33 +21V13*To_Pointer{19P9} 21>25 25b30 +21m25 Value{1|25M9} +22V13*To_Address{1|25M9} 22>25 26b30 +22p25 Value{19P9} + diff --git a/rtsdir/obj/s-atacco.o b/rtsdir/obj/s-atacco.o new file mode 100644 index 0000000000000000000000000000000000000000..4931b18c5fe6034cb5bb5469e3571539984d28a2 GIT binary patch literal 1816 zcmbVL-EPw`6n57QhWHVP8zgSR6(EtM4b%9Mids!$Lt>+1g)5}WalF-A97nc0HZI_m zcpR>HhlvM( zx`DQKKLn!;2mQ4uiF!d;2&J=}r9t>E3BrQ{>(99MqafUWKiM0^Gr?)h8JS_4#{`#3 zi-L}&IHW|!Op1c!IE$rL8Iv(+Yxyb23lS=f$x&EJp@A(VfHgv9lpGBTQIkPq$R#5| z$RUt4$0rctlnwH7eXV9uGKe)VB%17u7mWWqt`c)eXk1Esz_E&O z29?dfr@XPov$_Un3WutMgCxEFi+<97Y7QyMY#@)<*BHlS`h^iC;k!=@LK%wO#o!Dx zxT$$YV-;e!6(XRjS`b8fh|t!?#>?OlH0iPJ5E^Ym_asx~7)G60E1+Qi8XD-t8M58E!mZ2zB(6EfA^Mh&53hH8@y3oMW zYE1;^v;b)VvmZfA>$iZSs+keiTC#Mmsk(T!OCa|_V|wV{*sx_UzjF_)-tSzS-qbp8 z4`E@ta#{To(E59t{fFk$U_SRba17?p`Os=hPvDl$Z?x#YTS8>_an9+S-)qtTw1m4( zXuZ=p|Hvp#!L8mv-W4gNQM?%wSwz_nV)-s_Y4WlyfDA_ b2H&>eEweahe*HU;YtnzT;Ma3n6Z-l;UasZ! literal 0 HcmV?d00001 diff --git a/rtsdir/obj/s-maccod.ads.stderr b/rtsdir/obj/s-maccod.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/s-maccod.ads.stdout b/rtsdir/obj/s-maccod.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/s-maccod.ali b/rtsdir/obj/s-maccod.ali new file mode 100644 index 0000000..82ce9f0 --- /dev/null +++ b/rtsdir/obj/s-maccod.ali @@ -0,0 +1,114 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system.machine_code%s s-maccod.ads 97df547a NE OL PU PK +W system%s system.ads system.ali + +D system.ads 20241115151050 c1a7efcf system%s +D s-maccod.ads 20241115151050 5678bbb5 system.machine_code%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [asm system__machine_code 27 14 none] +G c Z s s [asm system__machine_code 34 14 none] +G c Z s s [asm system__machine_code 41 14 none] +G c Z s s [asm system__machine_code 48 14 none] +G c Z s s [asm system__machine_code 55 13 none] +G c Z s s [asm system__machine_code 62 13 none] +G c Z s s [asm system__machine_code 69 13 none] +G c Z s s [asm system__machine_code 76 13 none] +G c Z s s [asm_input_operand_listIP system__machine_code 19 9 none] +G c Z s s [asm_output_operand_listIP system__machine_code 21 9 none] +X 1 system.ads +11K9*System 73e11 2|11r9 93r5 +X 2 s-maccod.ads +11K16*Machine_Code 1|11k9 2|87E9 93l12 93e24 +16I9*Asm_Input_Operand 20r7 24r34 44r19 51r19 72r19 79r19 87c9 91r34 +17I9*Asm_Output_Operand 22r7 25r34 36r19 50r19 64r19 78r19 88c9 +. 92r34 +18I9*Asm_Insn 60r44 67r44 74r44 81r44 89c9 +19A9*Asm_Input_Operand_List(16I9) 30r19 37r19 58r19 65r19 +21A9*Asm_Output_Operand_List(17I9) 29r19 43r19 57r19 71r19 +24i4*No_Input_Operands{16I9} 44r40 51r41 72r40 79r41 91c4 +25i4*No_Output_Operands{17I9} 36r41 50r41 64r41 78r41 92c4 +27U14*Asm 28>8 29>8 30>8 31>8 32>8 83b30 +28a8 Template{string} +29a8 Outputs{21A9} +30a8 Inputs{19A9} +31a8 Clobber{string} +32b8 Volatile{boolean} +34U14*Asm 35>8 36>8 37>8 38>8 39>8 83b30 +35a8 Template{string} +36i8 Outputs{17I9} +37a8 Inputs{19A9} +38a8 Clobber{string} +39b8 Volatile{boolean} +41U14*Asm 42>8 43>8 44>8 45>8 46>8 83b30 +42a8 Template{string} +43a8 Outputs{21A9} +44i8 Inputs{16I9} +45a8 Clobber{string} +46b8 Volatile{boolean} +48U14*Asm 49>8 50>8 51>8 52>8 53>8 83b30 +49a8 Template{string} +50i8 Outputs{17I9} +51i8 Inputs{16I9} +52a8 Clobber{string} +53b8 Volatile{boolean} +55V13*Asm{18I9} 56>8 57>8 58>8 59>8 60>8 83b30 +56a8 Template{string} +57a8 Outputs{21A9} +58a8 Inputs{19A9} +59a8 Clobber{string} +60b8 Volatile{boolean} +62V13*Asm{18I9} 63>8 64>8 65>8 66>8 67>8 83b30 +63a8 Template{string} +64i8 Outputs{17I9} +65a8 Inputs{19A9} +66a8 Clobber{string} +67b8 Volatile{boolean} +69V13*Asm{18I9} 70>8 71>8 72>8 73>8 74>8 83b30 +70a8 Template{string} +71a8 Outputs{21A9} +72i8 Inputs{16I9} +73a8 Clobber{string} +74b8 Volatile{boolean} +76V13*Asm{18I9} 77>8 78>8 79>8 80>8 81>8 83b30 +77a8 Template{string} +78i8 Outputs{17I9} +79i8 Inputs{16I9} +80a8 Clobber{string} +81b8 Volatile{boolean} + diff --git a/rtsdir/obj/s-maccod.o b/rtsdir/obj/s-maccod.o new file mode 100644 index 0000000000000000000000000000000000000000..32492b2edf3f5ab7261e0390003d1df8252627e9 GIT binary patch literal 8048 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 V&h_|6>t?@$KC<5wZkn}j|6g0W>1+T1 literal 0 HcmV?d00001 diff --git a/rtsdir/obj/s-stoele.adb.stderr b/rtsdir/obj/s-stoele.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/s-stoele.adb.stdout b/rtsdir/obj/s-stoele.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/s-stoele.ali b/rtsdir/obj/s-stoele.ali new file mode 100644 index 0000000..3abfe4e --- /dev/null +++ b/rtsdir/obj/s-stoele.ali @@ -0,0 +1,105 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_UNCHECKED_CONVERSION +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system.storage_elements%b s-stoele.adb 17cb73e8 NE OL PK +W ada%s ada.ads ada.ali +W ada.unchecked_conversion%s +Z system%s system.ads system.ali + +U system.storage_elements%s s-stoele.ads 0ccdc839 BN NE OL PU PK +W system%s system.ads system.ali + +D ada.ads 20241115151050 0e5b2a16 ada%s +D a-unccon.ads 20241115151050 13b8aaf3 ada.unchecked_conversion%s +D system.ads 20241115151050 c1a7efcf system%s +D s-stoele.ads 20241115151050 cd6a27f6 system.storage_elements%s +D s-stoele.adb 20241115151050 c919feed system.storage_elements%b +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s b [Oadd system__storage_elements 23 13 none] +G c Z s b [Oadd system__storage_elements 28 13 none] +G c Z s b [Osubtract system__storage_elements 33 13 none] +G c Z s b [Osubtract system__storage_elements 38 13 none] +G c Z s b [Omod system__storage_elements 43 13 none] +G c Z s b [to_address system__storage_elements 51 13 none] +G c Z s b [to_integer system__storage_elements 56 13 none] +G c Z b b [to_addr system__storage_elements 16 13 none] +G c Z b b [to_off system__storage_elements 17 13 none] +X 1 ada.ads +11K9*Ada 12e8 5|11r6 16r28 17r28 +X 2 a-unccon.ads +14v14*Unchecked_Conversion 5|11w10 16r32 17r32 +X 3 system.ads +11K9*System 73e11 4|11r9 60r5 5|13r14 53r5 +20N4*Storage_Unit 4|17r38 17r64 +22N4*Memory_Size 4|49r32 +25M9*Address 4|23r25 23r65 28r49 28r65 33r25 33r65 38r32 43r24 51r57 56r33 +. 5|16r70 17r54 19r57 21r14 24r33 29r25 29r65 34r49 34r65 39r25 39r65 44r32 +. 49r24 +X 4 s-stoele.ads +11K16*Storage_Elements 3|11k9 4|60l12 60e28 5|13b21 53l12 53t28 +12I9*Storage_Offset 16r29 16r55 23r42 28r25 33r42 38r48 43r37 +. 43r60 5|16r54 17r63 29r42 34r25 39r42 44r48 49r37 49r60 51r14 +16I12*Storage_Count{12I9} +17M9*Storage_Element 21r31 +23V14*"+"{3|25M9} 23>18 23>34 5|29b14 32l9 32t11 +23m18 Left{3|25M9} 5|29b18 31r38 +23i34 Right{12I9} 5|29b34 31r67 +28V14*"+"{3|25M9} 28>18 28>41 5|34b14 37l9 37t11 +28i18 Left{12I9} 5|34b18 36r47 +28m41 Right{3|25M9} 5|34b41 36r68 +33V14*"-"{3|25M9} 33>18 33>34 5|39b14 42l9 42t11 +33m18 Left{3|25M9} 5|39b18 41r38 +33i34 Right{12I9} 5|39b34 41r67 +38V14*"-"{12I9} 38>18 38>24 5|44b14 47l9 47t11 +38m18 Left{3|25M9} 5|44b18 46r46 +38m24 Right{3|25M9} 5|44b24 46r66 +43V14*"mod"{12I9} 43>20 43>33 5|49b14 52l9 52t13 +43m20 L{3|25M9} 5|49b20 51r42 +43i33 R{12I9} 44r19 5|49b33 51r66 +49M9*Integer_Address 51r33 56r49 5|19r33 24r49 26r14 51r49 +51V13*To_Address{3|25M9} 51>25 52r34 53r26 54r26 5|19b13 22l8 22t18 31s14 +. 36s14 41s14 46s22 +51m25 Value{49M9} 5|19b25 21r23 +56V13*To_Integer{49M9} 56>25 57r34 58r26 59r26 5|24b13 27l8 27t18 31s26 31s46 +. 36s26 36s56 41s26 41s46 46s34 46s54 51s30 +56m25 Value{3|25M9} 5|24b25 26r31 +X 5 s-stoele.adb +16V13 To_Addr[2|14]{3|25M9} 31s58 36s38 41s58 +17V13 To_Off[2|14]{4|12I9} 46s14 + diff --git a/rtsdir/obj/s-stoele.o b/rtsdir/obj/s-stoele.o new file mode 100644 index 0000000000000000000000000000000000000000..856e0e7eecd01ad97c90e60e8ef1ee6967ed0551 GIT binary patch literal 3416 zcmbtW&2QX96dz|BTC{1J626NRhwmb6?{2nH0d2KQ)dWP+2D+R;vc~r8uG{s8Y;Q>5 z07oRQ94c-|91tf?-1#3kaO7V=2reATd!8BZ?8GY}c#`M6`Mr;M^YzA`-#XY^F$^Nf zAb*f~Poji8xWHx9^-Hl&Hpye83-T&4O6>~b7fYpR8W&bk;%Yt$mx=KrX*O?cpKq)a zvU1sYX??TV*t)W{@f0DAQq^p%cb@^@=in;?6OjQ1RHzN|D(J2PHw@$N^^3?bP540A z;?B@t0r^rnHzPmI3l_Ovf{f)k*}wgvIS8oP?%Ex@ zWm<8P7r`|2OzTd^w8k+lKB1fsOl$PP@NUnUBoT9>(4SB?b$pt_ATc}2l6%ZAoG?pb ze@X)TO^Y8cKgd2ko8mFOeS`i2to6-{y zsTcO9>28->F~8>&QR?j99t^GFt-~X$h19W!hevaZf0u5a%rc)jDJ)k+bDIV*GR~ew zbz`(!e2gf}sg1D^e-7uoQ`)TOs8MGr7`z$1KXXN_J{@I<< zkjhiTVNZt=N=Boc6>k$;u72X(n|EkHL)e>Hz?>ZRA%Q~y^YrEhORUL)HQB#;^G)+r zI5$_tp&^5J;Pho-?jIB528ic2R?F#k(zY9Q(w0k6@=+>RgA05?N;!&V({|bd*QJE# z`W*TFVVyyv_C~`+6BkSOX@I7V8Zbf~HOM1%Fhn`O1b=i1-duvOEy1C9XvC22S8gS+}wb<5AM8ia$R7_(qi+ftQIB;+GZtNd=cS2tBLdeD681 zt>BLf8QCie{)B>C3NFV&Xh*@}jjKqWFwFDm3MJ%uAtSDyo|hF|&K)6H9MFE@R@nJz zR8Xj5d698Gky61<3StMepv3mzt+VkNvH2$As)J71&;>QkXgp?%F1V%A1%{9!!tl^S z-%lcZWr-cb>t;iRMF2JPg}l{|wz z!1S2ta)J#I{%)zH+a7^Z$I$*;;baOfnQr?YDC+Y6LOdxlPs|@7J^uhOJtjcpXKaA3 zaaOgutqYpE@gIos@kvL*@v(~Q1^R&&3h5{9z5@YFaTyj!`oFt?&hwTq#?$X4>V6dC me<_q$+wrdJ>yLX3Bc@ literal 0 HcmV?d00001 diff --git a/rtsdir/obj/s-unstyp.ads.stderr b/rtsdir/obj/s-unstyp.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/s-unstyp.ads.stdout b/rtsdir/obj/s-unstyp.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/s-unstyp.ali b/rtsdir/obj/s-unstyp.ali new file mode 100644 index 0000000..20e901f --- /dev/null +++ b/rtsdir/obj/s-unstyp.ali @@ -0,0 +1,196 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LONG_LONG_INTEGERS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system.unsigned_types%s s-unstyp.ads f56a0104 NE OL PU PK +W system%s system.ads system.ali + +D system.ads 20241115151050 c1a7efcf system%s +D s-unstyp.ads 20241115151050 34cdeecb system.unsigned_types%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [shift_left system__unsigned_types 111 13 none] +G c Z s s [shift_right system__unsigned_types 115 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 119 13 none] +G c Z s s [rotate_left system__unsigned_types 123 13 none] +G c Z s s [rotate_right system__unsigned_types 127 13 none] +G c Z s s [shift_left system__unsigned_types 131 13 none] +G c Z s s [shift_right system__unsigned_types 135 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 139 13 none] +G c Z s s [rotate_left system__unsigned_types 143 13 none] +G c Z s s [rotate_right system__unsigned_types 147 13 none] +G c Z s s [shift_left system__unsigned_types 151 13 none] +G c Z s s [shift_right system__unsigned_types 155 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 159 13 none] +G c Z s s [rotate_left system__unsigned_types 163 13 none] +G c Z s s [rotate_right system__unsigned_types 167 13 none] +G c Z s s [shift_left system__unsigned_types 171 13 none] +G c Z s s [shift_right system__unsigned_types 175 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 179 13 none] +G c Z s s [rotate_left system__unsigned_types 183 13 none] +G c Z s s [rotate_right system__unsigned_types 187 13 none] +G c Z s s [shift_left system__unsigned_types 191 13 none] +G c Z s s [shift_right system__unsigned_types 195 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 199 13 none] +G c Z s s [rotate_left system__unsigned_types 203 13 none] +G c Z s s [rotate_right system__unsigned_types 207 13 none] +G c Z s s [shift_left system__unsigned_types 211 13 none] +G c Z s s [shift_right system__unsigned_types 215 13 none] +G c Z s s [shift_right_arithmetic system__unsigned_types 219 13 none] +G c Z s s [rotate_left system__unsigned_types 223 13 none] +G c Z s s [rotate_right system__unsigned_types 227 13 none] +X 1 system.ads +11K9*System 73e11 2|38r9 246r5 +18N4*Max_Binary_Modulus 2|44r40 +X 2 s-unstyp.ads +38K16*Unsigned_Types 1|11k9 2|246l12 246e26 +39M9*Short_Short_Unsigned 112r16 113r32 116r16 117r32 120r16 121r32 124r16 +. 125r32 128r16 129r32 +40M9*Short_Unsigned 132r16 133r32 136r16 137r32 140r16 141r32 144r16 145r32 +. 148r16 149r32 +41M9*Unsigned 152r16 153r32 156r16 157r32 160r16 161r32 164r16 165r32 168r16 +. 169r32 +42M9*Long_Unsigned 172r16 173r32 176r16 177r32 180r16 181r32 184r16 185r32 +. 188r16 189r32 +43M9*Long_Long_Unsigned 192r16 193r32 196r16 197r32 200r16 201r32 204r16 +. 205r32 208r16 209r32 +44M9*Long_Long_Long_Unsigned 212r16 213r32 216r16 217r32 220r16 221r32 224r16 +. 225r32 228r16 229r32 +46M9*Packed_Byte 47r8 48r31 53r62 55r41 +53A9*Packed_Bytes1(46M9) 54r8 55r8 56r36 63r30 74r30 85r34 244r38 +63A9*Packed_Bytes2<53A9>(46M9) 64r8 65r36 91r34 +74A9*Packed_Bytes4<53A9>(46M9) 75r8 76r36 97r34 108r23 243r38 +85A9*Rev_Packed_Bytes1<53A9>(46M9) 86r36 +91A9*Rev_Packed_Bytes2<63A9>(46M9) 92r36 +97A9*Rev_Packed_Bytes4<74A9>(46M9) 98r36 +103M9*Bits_1 +104M9*Bits_2 +105M9*Bits_4 +108A12*Bytes_F{74A9}(46M9) +111V13*Shift_Left{39M9} 112>7 113>7 231b30 +112m7 Value{39M9} +113i7 Amount{natural} +115V13*Shift_Right{39M9} 116>7 117>7 232b30 +116m7 Value{39M9} +117i7 Amount{natural} +119V13*Shift_Right_Arithmetic{39M9} 120>7 121>7 233b30 +120m7 Value{39M9} +121i7 Amount{natural} +123V13*Rotate_Left{39M9} 124>7 125>7 234b30 +124m7 Value{39M9} +125i7 Amount{natural} +127V13*Rotate_Right{39M9} 128>7 129>7 235b30 +128m7 Value{39M9} +129i7 Amount{natural} +131V13*Shift_Left{40M9} 132>7 133>7 231b30 +132m7 Value{40M9} +133i7 Amount{natural} +135V13*Shift_Right{40M9} 136>7 137>7 232b30 +136m7 Value{40M9} +137i7 Amount{natural} +139V13*Shift_Right_Arithmetic{40M9} 140>7 141>7 233b30 +140m7 Value{40M9} +141i7 Amount{natural} +143V13*Rotate_Left{40M9} 144>7 145>7 234b30 +144m7 Value{40M9} +145i7 Amount{natural} +147V13*Rotate_Right{40M9} 148>7 149>7 235b30 +148m7 Value{40M9} +149i7 Amount{natural} +151V13*Shift_Left{41M9} 152>7 153>7 231b30 +152m7 Value{41M9} +153i7 Amount{natural} +155V13*Shift_Right{41M9} 156>7 157>7 232b30 +156m7 Value{41M9} +157i7 Amount{natural} +159V13*Shift_Right_Arithmetic{41M9} 160>7 161>7 233b30 +160m7 Value{41M9} +161i7 Amount{natural} +163V13*Rotate_Left{41M9} 164>7 165>7 234b30 +164m7 Value{41M9} +165i7 Amount{natural} +167V13*Rotate_Right{41M9} 168>7 169>7 235b30 +168m7 Value{41M9} +169i7 Amount{natural} +171V13*Shift_Left{42M9} 172>7 173>7 231b30 +172m7 Value{42M9} +173i7 Amount{natural} +175V13*Shift_Right{42M9} 176>7 177>7 232b30 +176m7 Value{42M9} +177i7 Amount{natural} +179V13*Shift_Right_Arithmetic{42M9} 180>7 181>7 233b30 +180m7 Value{42M9} +181i7 Amount{natural} +183V13*Rotate_Left{42M9} 184>7 185>7 234b30 +184m7 Value{42M9} +185i7 Amount{natural} +187V13*Rotate_Right{42M9} 188>7 189>7 235b30 +188m7 Value{42M9} +189i7 Amount{natural} +191V13*Shift_Left{43M9} 192>7 193>7 231b30 +192m7 Value{43M9} +193i7 Amount{natural} +195V13*Shift_Right{43M9} 196>7 197>7 232b30 +196m7 Value{43M9} +197i7 Amount{natural} +199V13*Shift_Right_Arithmetic{43M9} 200>7 201>7 233b30 +200m7 Value{43M9} +201i7 Amount{natural} +203V13*Rotate_Left{43M9} 204>7 205>7 234b30 +204m7 Value{43M9} +205i7 Amount{natural} +207V13*Rotate_Right{43M9} 208>7 209>7 235b30 +208m7 Value{43M9} +209i7 Amount{natural} +211V13*Shift_Left{44M9} 212>7 213>7 231b30 +212m7 Value{44M9} +213i7 Amount{natural} +215V13*Shift_Right{44M9} 216>7 217>7 232b30 +216m7 Value{44M9} +217i7 Amount{natural} +219V13*Shift_Right_Arithmetic{44M9} 220>7 221>7 233b30 +220m7 Value{44M9} +221i7 Amount{natural} +223V13*Rotate_Left{44M9} 224>7 225>7 234b30 +224m7 Value{44M9} +225i7 Amount{natural} +227V13*Rotate_Right{44M9} 228>7 229>7 235b30 +228m7 Value{44M9} +229i7 Amount{natural} +243A12*Packed_Bytes{74A9}(46M9) +244A12*Packed_Bytes_Unaligned{53A9} + diff --git a/rtsdir/obj/s-unstyp.o b/rtsdir/obj/s-unstyp.o new file mode 100644 index 0000000000000000000000000000000000000000..9091a97a695f7d1fa45695a1adabef1f35494cd7 GIT binary patch literal 8136 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 literal 0 HcmV?d00001 diff --git a/rtsdir/obj/system.ads.stderr b/rtsdir/obj/system.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/system.ads.stdout b/rtsdir/obj/system.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/rtsdir/obj/system.ali b/rtsdir/obj/system.ali new file mode 100644 index 0000000..f3cc6bf --- /dev/null +++ b/rtsdir/obj/system.ali @@ -0,0 +1,105 @@ +V "GNAT Lib v14" +A -nostdinc +A -O2 +A -Wall +A -Wextra +A -gnatwa +A -gnatA +A --RTS=/home/michael/capstoneProject/ironclad/rtsdir/ +A -g +A -gnaty +A -fno-stack-protector +A -fstack-check=no +A -gnatg +A -ffile-prefix-map=/home/michael/capstoneProject/ironclad=. +A -fno-pic +A -mno-relax +A -mabi=lp64 +A -misa-spec=20191213 +A -march=rv64imac_zicsr_zifencei +P + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U system%s system.ads c1a7efcf NE OL PU PK + +D system.ads 20241115151050 c1a7efcf system%s +D /home/michael/capstoneProject/ironclad/source/pragmas.adc 20241115151036 00000000 +G a e +G c Z s s [Olt system 28 13 none] +G c Z s s [Ole system 29 13 none] +G c Z s s [Ogt system 30 13 none] +G c Z s s [Oge system 31 13 none] +G c Z s s [Oeq system 32 13 none] +X 1 system.ads +11K9*System 45E9 73l5 73e11 +12E9*Name 12e54 13r27 +12n18*SYSTEM_NAME_RISCV64_LIMINE_IRONCLAD{12E9} 13r35 +13e4*System_Name{12E9} +16N4*Min_Int +17N4*Max_Int +18N4*Max_Binary_Modulus +19N4*Max_Nonbinary_Modulus +20N4*Storage_Unit +21N4*Word_Size +22N4*Memory_Size 45r24 +25M9*Address 26r28 28r33 29r33 30r33 31r33 32r33 45c9 46r28 +26m4*Null_Address{25M9} 46c4 +28V14*"<"{boolean} 28>19 28>25 33b31 +28m19 Left{25M9} +28m25 Right{25M9} +29V14*"<="{boolean} 29>19 29>25 34b31 +29m19 Left{25M9} +29m25 Right{25M9} +30V14*">"{boolean} 30>19 30>25 35b31 +30m19 Left{25M9} +30m25 Right{25M9} +31V14*">="{boolean} 31>19 31>25 36b31 +31m19 Left{25M9} +31m25 Right{25M9} +32V14*"="{boolean} 32>19 32>25 37b31 +32m19 Left{25M9} +32m25 Right{25M9} +40E9*Bit_Order 40e57 41r33 +40n23*High_Order_First{40E9} +40n41*Low_Order_First{40E9} 41r46 +41e4*Default_Bit_Order{40E9} +49b4 Backend_Divide_Checks{boolean} +50b4 Backend_Overflow_Checks{boolean} +51b4 Command_Line_Args{boolean} +52b4 Configurable_Run_Time{boolean} +53b4 Denorm{boolean} +54b4 Duration_32_Bits{boolean} +55b4 Exit_Status_Supported{boolean} +56b4 Machine_Overflows{boolean} +57b4 Machine_Rounds{boolean} +58b4 Preallocated_Stacks{boolean} +59b4 Signed_Zeros{boolean} +60b4 Stack_Check_Default{boolean} +61b4 Stack_Check_Probes{boolean} +62b4 Stack_Check_Limits{boolean} +63b4 Support_Aggregates{boolean} +64b4 Support_Atomic_Primitives{boolean} +65b4 Support_Composite_Assign{boolean} +66b4 Support_Composite_Compare{boolean} +67b4 Support_Long_Shifts{boolean} +68b4 Always_Compatible_Rep{boolean} +69b4 Suppress_Standard_Library{boolean} +70b4 Use_Ada_Main_Program_Name{boolean} +71b4 ZCX_By_Default{boolean} +72b4 GCC_ZCX_Support{boolean} + diff --git a/rtsdir/obj/system.o b/rtsdir/obj/system.o new file mode 100644 index 0000000000000000000000000000000000000000..196eaf446e8ba46a06c06693a06ad8040bf2a7af GIT binary patch literal 10328 zcmbuFZEPIH8OP^xHpDn~;wGk~B;*VM0>x+F`C@R06Pv_IT=}iG!&{-t-rf4VaJPHx z-X(DaqDT!z6|`z8ABsw;P^q9mY1QUKsc64|`l1%8A6g-`RHYIhS{0SH;zI?9KF`ea z?9R=t18OJoy!@X3JTp5xJG(QN`=(}&Y)GX9hm`oYh)Ya`xacyKN85zVPKbW7O&ps( zdd!+%JUq2%9hqKSTArD|NiT|}Tb7omX05r&*(qyrdg;)OqXlbbdUkql%9>uBpF1=& zd02W&^<`AL8l4`i1U8<)4kWOH32Y*PO(w7#64;>xb~u4eC9oq2 z>}Ucz*2?5v-|{oKxm)o5YTHd7n^Rjm&Vmt57ofLo z--pshneBfTvJ=w5h2KF3XvZMu5~Q;E9XR90V6Jb7BGJ21ns%aTxz!{Mm!P4RVAzF* z2U-oA0f|(m2TfWVB2^IS-hBh9>$}GWI;OWC+`i!=5Oj*^tuP!{KvLKa&kJUtr`goO z?UA}?dh7n}DZuCL0T(;q(LVo5!`BWNfsGxhbnk(I^ScL9)Jzvv>e?;3yAO1ydxf~5 zts401?n_*8HoJ}$&2mScB%WQA_%ayRyP2do6Wo57tBo2iFn+Ye%~1FsnV zper&qqfr2zV9P=Zi`l!qJ#tmUk_5X{Whie*?b@(emgK!lg==BMsae*1#Sxr8T{>kI z*Q~O$VmGUe2$R{fYmODTVd(@cuT{6^dXD7=zE`T+aUEIR*CxMySz*fl}A##J3p+(5_bflHGtF%lj2KOXF>| z-`J90tHF@Nc*E4OgGyYdW|vkG27c2k$9TTdKG5K#?uTvzJcKx8QIC1*`6rxU1#cHk zzNQDm9E5h&a=nIAX_;t#U{@Rq6mdHx-&=7j&A={Jp+8N}YPhxdHsV7dj?Nv=OqT6T zu8_@VhcknoA2!M`i86!p`OIL&vl}OEl}=^`R~DC-#)nq@nll79e${rWLnXT&Hhj-n z2>d&pQe%jpqM@J>mfc_o>ZfA_p`&w?%Y*RMv@ke~A)j5IU5FJQt-GP$3`)*W9R{&x zhgrJ}E#uWYwZt~YR2wxnv)K}wbT!()vAf3hYsz_?171W70qffiQlGjxfiJe zknPygDeq6dp0jHC`mkkVu7o*xyHrNqF`2K`n$=u=7^7VtHZ5Yq8S zS7hBJbG_o4h^P$nv32ZV zl+5&qA;bR+@yl39=@Rjp!EYsgzrk(dZ{x(%!m7;oh&=}Pi7!T9QL54j;(svo_Y(h} zl11?u;`0$vnTLsgN`4Z@#z%?&%4qj-;#Gq`MZC`#x95p>8TzxtziPDm67h=+{VT+W z4gGJ3KVay8M|{-auM_{GF>Y@X|GiA(=q=)}8jtWh#2<;JGWS05PNSclvb`R$YP8!! z{28O4{lx2rpPj@f3_q6>Uo`ZC#Q$aVb1(7djO!XFuAbw#(iHKZ#z^L7iD!&cz~B!Pzs=x}5`Wxi_i^HJ4^{3d z;(s-+>v_rPY{saR7IIfRK#|9rDT2$ah@m4=ZN=EedcxIyb?425^)|0=HDgG+kNK0Ce9k;-Jw#+iH{%Yde3_eA?-{5x;ztG_K5Qjas4DA0a#Njlcg+EUmch(qK z|1$AUC>-%W5x>~r?-9q{IR^IA4^siJcc;P;-%T7(2Qjez2I4$#nBPV`Bh|6~9^wNA ze~kDZ;ymwOAkN=l?EjaCm6-vaq9klz9i zAo(qj-vaq9V10FOTyMo6jKEj^tL(f}2+Kwsd zgoQV5>+h!86~?gv3(j#cLq|Mz`|eQRZ{m@dcKD;4jIF3{YCD}uIt4n{aSLxqjiVFB z@jjLJ$mc%UY1@5rHRF8f+{YwvKh`~&+jVa`g@4qRmk=C2Wyb)>pQ=zkgI)@THpCyg?ukY5U^c-S7CVq zBM9)i6)Q5QqG`&bp8J4E?T?fneup8y1tSQk=XV&E9gH9#=XV&E>li`6c3FevHH;vj zp5JX){yatyP+yig6@8iVsOK?3^mUDAD38gvDUW_il*i-+%A=nF%470l$|Jv&@|e6# zdGu4HJSJ-YqWXWC#$Tg6>TQj`L3#AQTjPJHJnHYzxZ0;E|CeiA4j7bCZ)v;>9Yet6 z3Yk+8e@~95o{?_*JayT)^xp1&2)yq`GgZ`1T@-=X@$a}~`Cn*KAI{ua&u z)fz8rdbKxKMzz0C{y(YdPicCdt7yJo^M8$|e@N5oXBlcAq5KbO`fq9an>7B6=0B_P zA8Gm95oHJ(_+-<7YJen8u&f_&$xlqVelB{%4Kv*ZA8SAJ_Q1 z8b6@%^I+eB0q@sAnN!h##wRq+=X9u_)cA2te}l$7jUUqZ7c_oYsH>lE zzzP0znzb8^z%4fMCx-t!;5!}1hVKJAoZyU+(zJ@`0OYVf-QI{#M7h=sYW0Bc9Q>yG zU+d!)hmcaFSU%*DQK9 literal 0 HcmV?d00001 diff --git a/scripts/checkstack.pl b/scripts/checkstack.pl new file mode 100755 index 0000000..08d63b3 --- /dev/null +++ b/scripts/checkstack.pl @@ -0,0 +1,154 @@ +# Tool heavily inspired (almost fully copied) from Linux, where it is +# copyrighted as such: +# +# SPDX-License-Identifier: GPL-2.0 +# Copyright Joern Engel +# Inspired by Linus Torvalds +# Original idea maybe from Keith Owens +# s390 port and big speedup by Arnd Bergmann +# Mips port by Juan Quintela +# IA64 port via Andreas Dilger +# Arm port by Holger Schurig +# Random bits by Matt Mackall +# M68k port by Geert Uytterhoeven and Andreas Schwab +# AArch64, PARISC ports by Kyle McMartin +# sparc port by Martin Habets +# ppc64le port by Breno Leitao +# riscv port by Wadim Mueller +# +# Thank you all so much! +# +# Usage: +# objdump -d {image} | perl scripts/checkstack.pl target + +use strict; + +# check for arch +# +# $re is used for two matches: +# $& (whole re) matches the complete objdump line with the stack growth +# $1 (first bracket) matches the size of the stack growth +# +# $dre is similar, but for dynamic stack redutions: +# $& (whole re) matches the complete objdump line with the stack growth +# $1 (first bracket) matches the dynamic amount of the stack growth +# +# $sub: subroutine for special handling to check stack usage. +# +# use anything else and feel the pain ;) +my (@stack, $re, $dre, $sub, $x, $xs, $funcre); +{ + my $arch = shift; + if ($arch eq "") { + print("architecture was not passed \n"); + exit + } + + $x = "[0-9a-f]"; # hex character + $xs = "[0-9a-f ]"; # hex character or space + $funcre = qr/^$x* <(.*)>:$/; + if ($arch eq 'aarch64-stivale2') { + # ffffffc0006325cc: a9bb7bfd stp x29, x30, [sp, #-80]! + # a110: d11643ff sub sp, sp, #0x590 + $re = qr/^.*stp.*sp, \#-([0-9]{1,8})\]\!/o; + $dre = qr/^.*sub.*sp, sp, #(0x$x{1,8})/o; + } elsif ($arch eq 'arm-raspi2b') { + # c0008ffc: e24dd064 sub sp, sp, #100 ; 0x64 + $re = qr/.*sub.*sp, sp, #([0-9]{1,4})/o; + $sub = \&arm_push_handling; + } elsif ($arch eq 'sparc-leon3') { + # f0019d10: 9d e3 bf 90 save %sp, -112, %sp + $re = qr/.*save.*%sp, -(([0-9]{2}|[3-9])[0-9]{2}), %sp/o; + } elsif ($arch eq 'x86_64-limine') { + # c0105234: 81 ec ac 05 00 00 sub $0x5ac,%esp + # 2f60: 48 81 ec e8 05 00 00 sub $0x5e8,%rsp + $re = qr/^.*[as][du][db] \$(0x$x{1,8}),\%(e|r)sp$/o; + $dre = qr/^.*[as][du][db] (%.*),\%(e|r)sp$/o; + } else { + print("wrong or unknown target \"$arch\"\n"); + exit + } +} + +# +# To count stack usage of push {*, fp, ip, lr, pc} instruction in ARM, +# if FRAME POINTER is enabled. +# e.g. c01f0d48: e92ddff0 push {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc} +# +sub arm_push_handling { + my $regex = qr/.*push.*fp, ip, lr, pc}/o; + my $size = 0; + my $line_arg = shift; + + if ($line_arg =~ m/$regex/) { + $size = $line_arg =~ tr/,//; + $size = ($size + 1) * 4; + } + + return $size; +} + +# +# main() +# +my ($func, $file, $lastslash, $total_size, $addr, $intro); + +$total_size = 0; + +while (my $line = ) { + if ($line =~ m/$funcre/) { + $func = $1; + next if $line !~ m/^($xs*)/; + if ($total_size > 0) { + push @stack, "$intro$total_size\n"; + } + + $addr = $1; + $addr =~ s/ /0/g; + $addr = "0x$addr"; + + $intro = "$addr $func [$file]:"; + my $padlen = 56 - length($intro); + while ($padlen > 0) { + $intro .= ' '; + $padlen -= 8; + } + + $total_size = 0; + } elsif ($line =~ m/(.*):\s*file format/) { + $file = $1; + $file =~ s/\.ko//; + $lastslash = rindex($file, "/"); + if ($lastslash != -1) { + $file = substr($file, $lastslash + 1); + } + } elsif ($line =~ m/$re/) { + my $size = $1; + $size = hex($size) if ($size =~ /^0x/); + + if ($size > 0xf0000000) { + $size = - $size; + $size += 0x80000000; + $size += 0x80000000; + } + next if ($size > 0x10000000); + + $total_size += $size; + } elsif (defined $dre && $line =~ m/$dre/) { + my $size = $1; + + $size = hex($size) if ($size =~ /^0x/); + $total_size += $size; + } elsif (defined $sub) { + my $size = &$sub($line); + + $total_size += $size; + } +} + +if ($total_size > 0) { + push @stack, "$intro$total_size\n"; +} + +# Sort output by size (last field) +print sort { ($b =~ /:\t*(\d+)$/)[0] <=> ($a =~ /:\t*(\d+)$/)[0] } @stack; diff --git a/source/arch/arch-clocks.ads b/source/arch/arch-clocks.ads new file mode 100644 index 0000000..c658983 --- /dev/null +++ b/source/arch/arch-clocks.ads @@ -0,0 +1,45 @@ +-- arch-clocks.ads: Architectural clock sources. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Arch.Clocks with + Abstract_State => (Monotonic_Clock_State, RT_Clock_State) +is + -- Initialize clock sources. + procedure Initialize_Sources + with Global => (Output => (Monotonic_Clock_State, RT_Clock_State)); + + -- Get the resolution of the monotonic clock. + procedure Get_Monotonic_Resolution (Seconds, Nanoseconds : out Unsigned_64) + with Global => (In_Out => Monotonic_Clock_State); + + -- Get the time from the monotonic clock. + procedure Get_Monotonic_Time (Seconds, Nanoseconds : out Unsigned_64) + with Global => (In_Out => Monotonic_Clock_State); + + -- Get the resolution of the real-time clock. + procedure Get_Real_Time_Resolution (Seconds, Nanoseconds : out Unsigned_64) + with Global => (In_Out => RT_Clock_State); + + -- Get the time from the real time clock. + procedure Get_Real_Time (Seconds, Nanoseconds : out Unsigned_64) + with Global => (In_Out => RT_Clock_State); + + -- Set the time for the real time clock. + procedure Set_Real_Time (Seconds, Nanoseconds : Unsigned_64) + with Global => (In_Out => RT_Clock_State); +end Arch.Clocks; diff --git a/source/arch/arch-context.ads b/source/arch/arch-context.ads new file mode 100644 index 0000000..18ade6b --- /dev/null +++ b/source/arch/arch-context.ads @@ -0,0 +1,70 @@ +-- arch-context.ads: Architecture-specific context switching. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Arch.Interrupts; + +package Arch.Context is + #if ArchName = """riscv64-limine""" + subtype GP_Context is Arch.Interrupts.Frame; + type FP_Context is array (1 .. 512) of Unsigned_8; + subtype Core_Context is Unsigned_64; + #elsif ArchName = """x86_64-limine""" + -- FIXME: Alignment should be 16, but GCC does not align then? + subtype GP_Context is Arch.Interrupts.ISR_GPRs; + subtype FP_Context is System.Address; + subtype Core_Context is Unsigned_64; + #end if; + + -- General-purpose context switching. + procedure Init_GP_Context + (Ctx : out GP_Context; + Stack : System.Address; + Start_Addr : System.Address); + + -- Load the passed context. + procedure Load_GP_Context (Ctx : GP_Context) with No_Return; + + -- Save architectural task data that does not fit within GP or FP data. + procedure Save_Core_Context (Ctx : out Core_Context); + + -- When creating a thread, in success, some registers usually have to be + -- set for success conditions, and said status is expected in userland. + procedure Success_Fork_Result (Ctx : in out GP_Context); + + -- Save and restore floating-point context. + procedure Init_FP_Context (Ctx : out FP_Context); + procedure Save_FP_Context (Ctx : in out FP_Context); + procedure Load_FP_Context (Ctx : FP_Context); + procedure Destroy_FP_Context (Ctx : in out FP_Context); + ---------------------------------------------------------------------------- + #if ArchName = """x86_64-limine""" + procedure Setup_XSAVE (Use_XSAVE : Boolean; Area_Size : Unsigned_32); + #end if; + +private + #if ArchName = """x86_64-limine""" + FPU_Area_Size : Unsigned_32; + + Save_Access : access procedure (Ctx : in out System.Address); + Rstor_Access : access procedure (Ctx : System.Address); + + procedure Save_FXSAVE (Ctx : in out System.Address); + procedure Save_XSAVE (Ctx : in out System.Address); + procedure Load_FXSTOR (Ctx : System.Address); + procedure Load_XRSTOR (Ctx : System.Address); + #end if; +end Arch.Context; diff --git a/source/arch/arch-debug.ads b/source/arch/arch-debug.ads new file mode 100644 index 0000000..c1781da --- /dev/null +++ b/source/arch/arch-debug.ads @@ -0,0 +1,49 @@ +-- arch-debug.ads: Architecture-specific debug channels. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Devices; + +package Arch.Debug is + -- This package implements read / write access to a target-specific debug + -- channel, which could take the shape of a serial port or debug monitor. + + -- Whether the abstracted channel supports write only or read / write. + Supports_Read : constant Boolean; + + -- Read byte device arrays atomically. + -- @param Message Array to print. + procedure Read (Message : out Devices.Operation_Data); + + -- Print a character message atomically. + -- @param Message Character to print. + procedure Print (Message : Character); + + -- Print a string message atomically. + -- @param Message String to print. + procedure Print (Message : String); + + -- Print byte device arrays atomically. + -- @param Message Array to print. + procedure Print (Message : Devices.Operation_Data); + +private + + #if ArchName = """riscv64-limine""" + Supports_Read : constant Boolean := False; + #elsif ArchName = """x86_64-limine""" + Supports_Read : constant Boolean := True; + #end if; +end Arch.Debug; diff --git a/source/arch/arch-hooks.ads b/source/arch/arch-hooks.ads new file mode 100644 index 0000000..603ecc7 --- /dev/null +++ b/source/arch/arch-hooks.ads @@ -0,0 +1,33 @@ +-- arch-hooks.ads: Architecture-specific hooks for several utilities. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Arch.Hooks is + -- Register architecture-specific devices. + function Devices_Hook return Boolean; + + -- PRCTL hook for the syscall. + function PRCTL_Hook (Code : Natural; Arg : System.Address) return Boolean; + + -- Hook to be called in panic procedures for bringing all cores to a stop + -- (but not the caller). + procedure Panic_SMP_Hook with Global => null; + + -- Get the number of cores which are active and used by the OS. + function Get_Active_Core_Count return Positive; + + -- Hook to register architecture-specific RAM files inside the kernel. + procedure Register_RAM_Files; +end Arch.Hooks; diff --git a/source/arch/arch-local.ads b/source/arch/arch-local.ads new file mode 100644 index 0000000..6ed4278 --- /dev/null +++ b/source/arch/arch-local.ads @@ -0,0 +1,40 @@ +-- arch-local.ads: Architecture-specific CPU-local storage. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Scheduler; use Scheduler; +with Userland.Process; +with Arch.Context; + +package Arch.Local is + -- Forcing reschedules using architecture-specific methods. + procedure Reschedule_In (Microseconds : Natural); + procedure Reschedule_ASAP; + + -- Save and restore TCB pointer local storage. + function Fetch_TCB return System.Address; + procedure Load_TCB (TCB : System.Address); + + -- Set the user and kernel stack for return from userland. + procedure Set_Stacks + (Core : Context.Core_Context; + Kernel_Stack : System.Address); + + -- Fetch and set the current thread and process. + function Get_Current_Thread return Scheduler.TID; + function Get_Current_Process return Userland.Process.PID; + procedure Set_Current_Thread (Thread : Scheduler.TID); + procedure Set_Current_Process (Proc : Userland.Process.PID); +end Arch.Local; diff --git a/source/arch/arch-mmu.ads b/source/arch/arch-mmu.ads new file mode 100644 index 0000000..5fc77b1 --- /dev/null +++ b/source/arch/arch-mmu.ads @@ -0,0 +1,250 @@ +-- arch-mmu.ads: Architecture-specific MMU code. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with System; use System; +with Memory; use Memory; +with Lib.Synchronization; + +package Arch.MMU is + -- Permissions used for mapping. + -- Ironclad forces W^X, so write and execute permissions will conflict, + -- even though they might not necessarily conflict in hardware. + type Page_Permissions is record + Is_User_Accesible : Boolean; + Can_Read : Boolean; + Can_Write : Boolean; + Can_Execute : Boolean; + Is_Global : Boolean; -- Hint for global (TLB optimization). + end record; + + -- Caching models for mapping. + type Caching_Model is + (Write_Back, -- Standard general purpose caching. + Write_Through, -- Data is updated on cache and memory simultaneously. + Write_Combining, -- Allows write combining on the memory area. + Uncacheable); -- No caching of any kind whatsoever thanks. + + -- Types to represent page tables. + type Page_Table is private; + type Page_Table_Acc is access Page_Table; + + -- Default minimum page size supported by the MMU. Ports may use bigger + -- pages optionally if possible for optimization, but this size is always + -- be supported and accepted. + #if ArchName = """riscv64-limine""" + Page_Size : constant := 16#1000#; + #elsif ArchName = """x86_64-limine""" + Page_Size : constant := 16#1000#; + #end if; + + -- Kernel map, which is used by the freestanding kernel when called. + -- Once initialized, it must have the kernel and other essentials, but + -- nothing else! If you want to have a minimal map, this is your chance to + -- fork it! + Kernel_Table : Page_Table_Acc; + + -- Initialize global MMU state, at the end, it will activate Kernel_Table. + -- @param Memmap Physical memory map, may be used to map MMIO regions. + -- @return True in success, False in failure or if Kernel_Table failed. + function Init (Memmap : Arch.Boot_Memory_Map) return Boolean + with Post => (not Init'Result xor Kernel_Table /= null); + + -- Create a new page table, which should be ready for switching to and + -- allowing all kernel data to be accessed. + -- @param Map Table to fork. + -- @return Forked map, or null on failure. + function Fork_Table (Map : Page_Table_Acc) return Page_Table_Acc + with Pre => Map /= null; + + -- Free a table. + -- @param Map Table to free, will always be set to null at the end. + procedure Destroy_Table (Map : in out Page_Table_Acc) + with Pre => Map /= null, Post => Map = null; + + -- Make the passed map active. + -- @param Map Page table to make active. + -- @return True in success, False on failure. + function Make_Active (Map : Page_Table_Acc) return Boolean + with Pre => Map /= null; + + -- Do translation for a range, and report on some qualities. + -- If qualities vary in between the range beggining and end, that property + -- will fail. + -- @param Map Page table to walk for translation. + -- @param Virtual Virtual address to translate. + -- @param Length Length in bytes to translate. + -- @param Physical Address pointed to by the virtual address. + -- @param Is_Mapped True if mapped, False if not mapped. + -- @param Is_User_Accessible True if userland can access the address. + -- @param Is_Readable True if the mapping can be read. + -- @param Is_Writeable True if the mapping can be written to. + -- @param Is_Executable True if the mapping can be executed. + procedure Translate_Address + (Map : Page_Table_Acc; + Virtual : System.Address; + Length : Storage_Count; + Physical : out System.Address; + Is_Mapped : out Boolean; + Is_User_Accessible : out Boolean; + Is_Readable : out Boolean; + Is_Writeable : out Boolean; + Is_Executable : out Boolean) + with Pre => + (Map /= null) and + (Virtual mod Page_Size = 0) and + (Length mod Page_Size = 0); + + -- Map a memory range, allocation of the mapped addresses is not managed. + -- @param Map Tables to map for. + -- @param Physical_Start Physical address to start from. + -- @param Virtual_Start Virtual address to start from. + -- @param Length Length in bytes to map. + -- @param Permissions Permissions to map with. + function Map_Range + (Map : Page_Table_Acc; + Physical_Start : System.Address; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Caching : Caching_Model := Write_Back) return Boolean + with Pre => + (Map /= null) and + (Physical_Start mod Page_Size = 0) and + (Virtual_Start mod Page_Size = 0) and + (Length mod Page_Size = 0) and + not (Permissions.Can_Write and Permissions.Can_Execute); + + -- Allocate and map a memory range, the contents will be forked and freed + -- accordingly, and managed internally. + -- @param Map Tables to map for. + -- @param Physical_Start Allocated physical address. + -- @param Virtual_Start Virtual address to start from. + -- @param Length Length in bytes to map. + -- @param Permissions Permissions to map with. + -- @param Success True on success, False on failure. + procedure Map_Allocated_Range + (Map : Page_Table_Acc; + Physical_Start : out System.Address; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Success : out Boolean; + Caching : Caching_Model := Write_Back) + with Pre => + (Map /= null) and + (Virtual_Start mod Page_Size = 0) and + (Length mod Page_Size = 0) and + not (Permissions.Can_Write and Permissions.Can_Execute), + Post => (Physical_Start mod Page_Size = 0); + + -- Remap a memory range. + -- @param Map Tables to map for. + -- @param Virtual_Start Virtual address to start from. + -- @param Length Length in bytes to map. + -- @param Permissions Permissions to remap with. + function Remap_Range + (Map : Page_Table_Acc; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Caching : Caching_Model := Write_Back) return Boolean + with Pre => + (Map /= null) and + (Virtual_Start mod Page_Size = 0) and + (Length mod Page_Size = 0) and + not (Permissions.Can_Write and Permissions.Can_Execute); + + -- Unmap a memory range. + -- @param Map Tables to map for. + -- @param Virtual_Start Virtual address to start from. + -- @param Length Length in bytes to unmap. + function Unmap_Range + (Map : Page_Table_Acc; + Virtual_Start : System.Address; + Length : Storage_Count) return Boolean + with Pre => + (Map /= null) and + (Virtual_Start mod Page_Size = 0) and + (Length mod Page_Size = 0); + + -- Get the user mapped memory size, thus, not including kernel space. + -- @param Map Map to get the size for. + -- @return Size. + function Get_User_Mapped_Size (Map : Page_Table_Acc) return Unsigned_64 + with Pre => Map /= null; + + -- Memory statistics of the system. + type Virtual_Statistics is record + Kernel_Usage : Memory.Size; -- Space mapped kernel only. + Table_Usage : Memory.Size; -- Amount used for tables and tracking. + Poison_Usage : Memory.Size; -- Memory marked by the hardware as faulty. + end record; + + -- Get memory statistics of the system. + procedure Get_Statistics (Stats : out Virtual_Statistics); + +private + + #if ArchName = """riscv64-limine""" + type Page_Level is array (1 .. 512) of Unsigned_64 with Size => 512 * 64; + type Page_Level_Acc is access Page_Level; + type Page_Table is record + TTBR0 : Page_Level; + TTBR1 : Page_Level; + end record; + #elsif ArchName = """x86_64-limine""" + type PML4 is array (1 .. 512) of Unsigned_64 with Size => 512 * 64; + type PML4_Acc is access PML4; + type Mapping_Range; + type Mapping_Range_Acc is access Mapping_Range; + type Mapping_Range is record + Next : Mapping_Range_Acc; + Is_Allocated : Boolean; + Virtual_Start : System.Address; + Physical_Start : System.Address; + Length : Storage_Count; + Flags : Page_Permissions; + end record; + + type Page_Table is record + PML4_Level : PML4; + Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Map_Ranges_Root : Mapping_Range_Acc; + end record; + + function Clean_Entry (Entry_Body : Unsigned_64) return Physical_Address; + function Get_Next_Level + (Current_Level : Physical_Address; + Index : Unsigned_64; + Create_If_Not_Found : Boolean) return Physical_Address; + function Get_Page + (Map : Page_Table_Acc; + Virtual : Virtual_Address; + Allocate : Boolean) return Virtual_Address; + function Inner_Map_Range + (Map : Page_Table_Acc; + Physical_Start : System.Address; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Caching : Caching_Model) return Boolean; + function Flags_To_Bitmap + (Perm : Page_Permissions; + Caching : Caching_Model) return Unsigned_64; + procedure Flush_Global_TLBs (Addr : System.Address; Len : Storage_Count); + #end if; +end Arch.MMU; diff --git a/source/arch/arch-power.ads b/source/arch/arch-power.ads new file mode 100644 index 0000000..355081e --- /dev/null +++ b/source/arch/arch-power.ads @@ -0,0 +1,29 @@ +-- arch-power.ads: Architecture-specific power management. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Arch.Power is + -- Possible returns of a power-related function. + type Power_Status is (Not_Supported, Failure); + + -- Halt the system, this function will only returns in failure. + function Halt return Power_Status; + + -- Reboot the system, this function will only returns in failure. + function Reboot return Power_Status; + + -- Poweroff the system, this function will only returns in failure. + function Poweroff return Power_Status; +end Arch.Power; diff --git a/source/arch/arch-snippets.ads b/source/arch/arch-snippets.ads new file mode 100644 index 0000000..02b078b --- /dev/null +++ b/source/arch/arch-snippets.ads @@ -0,0 +1,81 @@ +-- arch-snippets.ads: Architecture-specific bits. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Memory; use Memory; + +package Arch.Snippets is + -- Lots of these are inlined because they usually are 3 or 4 instructions + -- tops, and used in hot execution paths. + + -- Drive the execution thread to an irrecoverable state. + -- (Halt and Catch Fire). + procedure HCF with Inline, No_Return; + + -- Enable and disable external interrupts. + procedure Enable_Interrupts with Inline; + procedure Disable_Interrupts with Inline; + + -- Processor hint for waiting for interrupts in an energy-efficient state. + procedure Wait_For_Interrupt with Inline; + + -- Processor hint for optimizing spinlocks and another cache-intensitive + -- situations. + procedure Pause with Inline; + ---------------------------------------------------------------------------- + -- Architecture-specific snippets. + -- FIXME: We use gnatprep for setting up architecture-specific snppets. + -- There are probably more idiomatic ways to do this, but for this small + -- little type changes, it is probably fine, else we would have to put + -- more files on each port, and that would segregate fundamentally + -- equivalent code for no reason. + #if ArchName = """riscv64-limine""" + function Read_SStatus return Unsigned_64 with Inline; + procedure Write_SStatus (Value : Unsigned_64) with Inline; + #elsif ArchName = """x86_64-limine""" + procedure Port_Out (Port : Unsigned_16; Value : Unsigned_8) with Inline; + function Port_In (Port : Unsigned_16) return Unsigned_8 with Inline; + procedure Port_Out16 (Port, Value : Unsigned_16) with Inline; + function Port_In16 (Port : Unsigned_16) return Unsigned_16 with Inline; + procedure Port_Out32 (Port : Unsigned_16; Value : Unsigned_32) + with Inline; + function Port_In32 (Port : Unsigned_16) return Unsigned_32 with Inline; + procedure Invalidate_Page (Value : Virtual_Address) with Inline; + function Read_MSR (MSR : Unsigned_32) return Unsigned_64 with Inline; + procedure Write_MSR (MSR : Unsigned_32; Value : Unsigned_64) with Inline; + function Read_CR0 return Unsigned_64 with Inline; + procedure Write_CR0 (Value : Unsigned_64) with Inline; + function Read_CR2 return Unsigned_64 with Inline; + function Read_CR3 return Unsigned_64 with Inline; + procedure Write_CR3 (Value : Unsigned_64) with Inline; + function Read_CR4 return Unsigned_64 with Inline; + procedure Write_CR4 (Value : Unsigned_64) with Inline; + procedure Write_XCR (Register : Unsigned_32; Value : Unsigned_64); + function Read_FS return Unsigned_64 with Inline; + procedure Write_FS (Value : Unsigned_64) with Inline; + function Read_GS return Unsigned_64 with Inline; + procedure Write_GS (Value : Unsigned_64) with Inline; + function Read_Kernel_GS return Unsigned_64 with Inline; + procedure Write_Kernel_GS (Value : Unsigned_64) with Inline; + procedure Swap_GS with Inline; + function Read_Cycles return Unsigned_64 with Inline; + procedure Invalidate_Caches with Inline; + procedure Get_CPUID + (Leaf, Subleaf : Unsigned_32; + EAX, EBX, ECX, EDX : out Unsigned_32); + procedure Calibrate_Sleep_1MS; + #end if; +end Arch.Snippets; diff --git a/source/arch/arch.ads b/source/arch/arch.ads new file mode 100644 index 0000000..30f448e --- /dev/null +++ b/source/arch/arch.ads @@ -0,0 +1,52 @@ +-- arch.ads: Architecture-specific information. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with System.Storage_Elements; use System.Storage_Elements; + +package Arch is + -- Memory map for the kernel, it must be sorted and have no gaps. + type Boot_Memory_Type is + (Memory_Free, -- Memory free for use by the allocators. + Memory_Reserved, -- MMIO addresses or memory tables or w/e. + Memory_Kernel, -- Kernel or RAM files. + Memory_ACPI_Reclaimable, -- Area used by ACPI that can be reclaimed. + Memory_ACPI_NVS); -- ACPI flash we cannot use for our interests. + + type Boot_Memory_Region is record + Start : System.Address; + Length : Storage_Count; + MemType : Boot_Memory_Type; + end record; + type Boot_Memory_Map is array (Natural range <>) of Boot_Memory_Region; + + -- Some targets may provide RAM files for roots or other purposes. + type Boot_RAM_File is record + Start : System.Address; + Length : Storage_Count; + end record; + type Boot_RAM_Files is array (Natural range <>) of Boot_RAM_File; + + -- Struct to wrap it all together, along with cmdline information. + type Boot_Information is record + Cmdline : String (1 .. 256); + Cmdline_Len : Natural range 0 .. 256; + Memmap : Boot_Memory_Map (1 .. 64); + Memmap_Len : Natural range 0 .. 64; + RAM_Files : Boot_RAM_Files (1 .. 4); + RAM_Files_Len : Natural range 0 .. 4; + end record; +end Arch; diff --git a/source/arch/riscv64-limine/arch-clocks.adb b/source/arch/riscv64-limine/arch-clocks.adb new file mode 100644 index 0000000..f4b528b --- /dev/null +++ b/source/arch/riscv64-limine/arch-clocks.adb @@ -0,0 +1,77 @@ +-- arch-clocks.adb: Architectural clock sources. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Arch.Clocks with + Refined_State => + (RT_Clock_State => + (RT_Timestamp_Seconds, + RT_Timestamp_Nanoseconds, + RT_Stored_Seconds, + RT_Stored_Nanoseconds), + Monotonic_Clock_State => (Mono_TSC_Freq)) +is + -- The RTC is really slow and has inacceptably large resolutions, so we + -- will a cached RTC time as well as when it was cached in monotonic. + -- That way, by adding deltas, we can build an okayish, finer-grained + -- resolution clock. + RT_Timestamp_Seconds : Unsigned_64; + RT_Timestamp_Nanoseconds : Unsigned_64; + RT_Stored_Seconds : Unsigned_64; + RT_Stored_Nanoseconds : Unsigned_64; + + -- Monotonic TSC cycles per millisecond. Before calibration, the value is + -- a placeholder, so monotonic always works, it is an estimation. + MS_Per_Sec : constant := 1_000; + Nanos_Per_MS : constant := 1_000_000; + Mono_TSC_Freq : Unsigned_64 := Nanos_Per_MS * 2; + + procedure Initialize_Sources is + begin + null; + end Initialize_Sources; + + procedure Get_Monotonic_Resolution (Seconds, Nanoseconds : out Unsigned_64) + is + begin + Seconds := 0; + Nanoseconds := 0; + end Get_Monotonic_Resolution; + + procedure Get_Monotonic_Time (Seconds, Nanoseconds : out Unsigned_64) is + begin + Seconds := 0; + Nanoseconds := 0; + end Get_Monotonic_Time; + + procedure Get_Real_Time_Resolution (Seconds, Nanoseconds : out Unsigned_64) + is + begin + Seconds := 0; + Nanoseconds := 0; + end Get_Real_Time_Resolution; + + procedure Get_Real_Time (Seconds, Nanoseconds : out Unsigned_64) + is + begin + Seconds := 0; + Nanoseconds := 0; + end Get_Real_Time; + + procedure Set_Real_Time (Seconds, Nanoseconds : Unsigned_64) is + begin + null; + end Set_Real_Time; +end Arch.Clocks; diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb new file mode 100644 index 0000000..9274cad --- /dev/null +++ b/source/arch/riscv64-limine/arch-context.adb @@ -0,0 +1,68 @@ +-- arch-context.ads: Architecture-specific context switching. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Arch.Context is + procedure Init_GP_Context + (Ctx : out GP_Context; + Stack : System.Address; + Start_Addr : System.Address) + is + pragma Unreferenced (Stack); + pragma Unreferenced (Start_Addr); + begin + Ctx := (others => 0); + end Init_GP_Context; + + procedure Load_GP_Context (Ctx : GP_Context) is + pragma Unreferenced (Ctx); + begin + loop + null; + end loop; + end Load_GP_Context; + + procedure Save_Core_Context (Ctx : out Core_Context) is + begin + Ctx := 0; + end Save_Core_Context; + + procedure Success_Fork_Result (Ctx : in out GP_Context) is + begin + Ctx := (others => 0); + end Success_Fork_Result; + + procedure Init_FP_Context (Ctx : out FP_Context) is + begin + Ctx := (others => 0); + end Init_FP_Context; + + procedure Save_FP_Context (Ctx : in out FP_Context) is + begin + Ctx := (others => 0); + end Save_FP_Context; + + procedure Load_FP_Context (Ctx : FP_Context) is + pragma Unreferenced (Ctx); + begin + null; + end Load_FP_Context; + + procedure Destroy_FP_Context (Ctx : in out FP_Context) is + pragma Unreferenced (Ctx); + begin + null; + end Destroy_FP_Context; +end Arch.Context; diff --git a/source/arch/riscv64-limine/arch-cpu.adb b/source/arch/riscv64-limine/arch-cpu.adb new file mode 100644 index 0000000..8b8e2c8 --- /dev/null +++ b/source/arch/riscv64-limine/arch-cpu.adb @@ -0,0 +1,87 @@ +-- arch-cpu.adb: CPU management routines. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; use System; +with Lib.Messages; +with Lib.Panic; + +package body Arch.CPU with SPARK_Mode => Off is + SMP_Request : Limine.SMP_Request := + (Base => + (ID => Limine.SMP_ID, + Revision => 0, + Response => System.Null_Address), + Flags => 0) + with Export, Async_Writers; + + procedure Init_Cores is + BSP_Hart_ID : Unsigned_64; + Idx : Natural := 2; + + SMPPonse : Limine.RISCV64_SMP_Response + with Import, Address => SMP_Request.Base.Response; + begin + -- Check we got a limine answer at all. + if SMP_Request.Base.Response = System.Null_Address then + Lib.Panic.Hard_Panic ("Limine SMP request needed"); + end if; + + -- Fetch info. + Core_Count := Natural (SMPPonse.CPU_Count); + BSP_Hart_ID := SMPPonse.BSP_Hart_ID; + + -- Initialize the locals list, and initialize the BSP. + Core_Locals := new Core_Local_Arr (1 .. Core_Count); + Init_Common (1, BSP_Hart_ID); + + -- Initialize the other cores. + if Core_Count > 1 then + declare + SMP_CPUs : Limine.RISCV64_CPU_Info_Arr (1 .. SMPPonse.CPU_Count) + with Import, Address => SMPPonse.CPUs; + begin + for CPU of SMP_CPUs loop + if CPU.Hart_ID /= BSP_Hart_ID then + CPU.Extra_Arg := Unsigned_64 (Idx); + CPU.Addr := Core_Bootstrap'Address; + Idx := Idx + 1; + end if; + end loop; + end; + end if; + end Init_Cores; + ---------------------------------------------------------------------------- + procedure Core_Bootstrap (Info : access Limine.RISCV64_SMP_CPU_Info) is + Stp : Lib.Messages.Translated_String; + Stp_Len : Natural; + begin + Lib.Messages.Image (Info.Extra_Arg, Stp, Stp_Len); + Lib.Messages.Put_Line ("Hello from core " & Stp); + Init_Common (Natural (Info.Extra_Arg), Info.Hart_ID); + end Core_Bootstrap; + + procedure Init_Common (Core_Number : Positive; Hart_ID : Unsigned_64) is + begin + Core_Locals (Core_Number) := + (Self => Core_Locals (Core_Number)'Access, + Kernel_Stack => 0, + User_Stack => 0, + Number => Core_Number, + Hart_ID => Hart_ID, + Current_Thread => Scheduler.Error_TID, + Current_Process => Userland.Process.Error_PID); + end Init_Common; +end Arch.CPU; diff --git a/source/arch/riscv64-limine/arch-cpu.ads b/source/arch/riscv64-limine/arch-cpu.ads new file mode 100644 index 0000000..aec061c --- /dev/null +++ b/source/arch/riscv64-limine/arch-cpu.ads @@ -0,0 +1,58 @@ +-- arch-cpu.ads: CPU management routines. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Userland.Process; +with Scheduler; +with Arch.Limine; + +package Arch.CPU is + -- Core-local data, that each core holds an own version of. + type Core_Local; + type Core_Local_Acc is access all Core_Local; + type Core_Local is record + -- Do not move the following members used in assembly code. + Self : Core_Local_Acc; -- Here for performance reasons. + Kernel_Stack : Unsigned_64; + User_Stack : Unsigned_64; + -- End of members not to move. + Number : Positive; -- Core number, 1 based. + Hart_ID : Unsigned_64; -- LAPIC ID of the core. + Current_Thread : Scheduler.TID; + Current_Process : Userland.Process.PID; + end record; + for Core_Local use record + Self at 0 range 0 .. 63; + Kernel_Stack at 0 range 64 .. 127; + User_Stack at 0 range 128 .. 191; + end record; + + -- Core locals and the number of cores, used as an index for the former. + type Core_Local_Arr is array (Positive range <>) of aliased Core_Local; + type Core_Local_Arr_Acc is access Core_Local_Arr; + Core_Count : Positive; + Core_Locals : Core_Local_Arr_Acc; + + -- Init the cores and BSP. + procedure Init_Cores; + +private + + procedure Core_Bootstrap (Info : access Limine.RISCV64_SMP_CPU_Info) + with Convention => C, Export; + + procedure Init_Common (Core_Number : Positive; Hart_ID : Unsigned_64); +end Arch.CPU; diff --git a/source/arch/riscv64-limine/arch-debug.adb b/source/arch/riscv64-limine/arch-debug.adb new file mode 100644 index 0000000..0ba30e7 --- /dev/null +++ b/source/arch/riscv64-limine/arch-debug.adb @@ -0,0 +1,40 @@ +-- arch-debug.adb: Architecture-specific debug channels. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Devices.UART; + +package body Arch.Debug with SPARK_Mode => Off is + procedure Read (Message : out Devices.Operation_Data) is + begin + null; + end Read; + + procedure Print (Message : Character) is + begin + Devices.UART.Write_UART0 (Message); + end Print; + + procedure Print (Message : String) is + begin + Devices.UART.Write_UART0 (Message); + end Print; + + procedure Print (Message : Devices.Operation_Data) is + S : String (1 .. Message'Length) with Import, Address => Message'Address; + begin + Devices.UART.Write_UART0 (S); + end Print; +end Arch.Debug; diff --git a/source/arch/riscv64-limine/arch-dtb.adb b/source/arch/riscv64-limine/arch-dtb.adb new file mode 100644 index 0000000..74ffb79 --- /dev/null +++ b/source/arch/riscv64-limine/arch-dtb.adb @@ -0,0 +1,34 @@ +-- arch-dtb.adb: Device-tree blob parsing. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; use System; + +package body Arch.DTB with SPARK_Mode => Off is + function Init return Boolean is + DTBPonse : Arch.Limine.DTB_Response + with Import, Address => DTB_Request.Response; + begin + if DTB_Request.Response = System.Null_Address then + return False; + end if; + + declare + Header : FDT_Header with Import, Address => DTBPonse.DTB_Addr; + begin + return Header.Magic = FDT_Magic; + end; + end Init; +end Arch.DTB; diff --git a/source/arch/riscv64-limine/arch-dtb.ads b/source/arch/riscv64-limine/arch-dtb.ads new file mode 100644 index 0000000..5fde6a7 --- /dev/null +++ b/source/arch/riscv64-limine/arch-dtb.ads @@ -0,0 +1,46 @@ +-- arch-dtb.ads: Device-tree blob parsing. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Arch.Limine; + +package Arch.DTB with SPARK_Mode => Off is + function Init return Boolean; + +private + + DTB_Request : Arch.Limine.Request := + (ID => Arch.Limine.DTB_ID, + Revision => 0, + Response => System.Null_Address) + with Export, Async_Writers; + + -- It is DOODFEED, but that is big endian, this is little endian. + FDT_Magic : constant := 16#EDFE0DD0#; + + type FDT_Header is record + Magic : Unsigned_32; + Size : Unsigned_32; + Offset_DT_Struct : Unsigned_32; + Offset_DT_Strings : Unsigned_32; + Offset_Reserved_Flag : Unsigned_32; + Version : Unsigned_32; + Last_Compatible_Vers : Unsigned_32; + Boot_CPU_Physical_ID : Unsigned_32; + Size_DT_Stings : Unsigned_32; + Size_DT_Struct : Unsigned_32; + end record with Pack; +end Arch.DTB; diff --git a/source/arch/riscv64-limine/arch-entrypoint.adb b/source/arch/riscv64-limine/arch-entrypoint.adb new file mode 100644 index 0000000..c3f01ee --- /dev/null +++ b/source/arch/riscv64-limine/arch-entrypoint.adb @@ -0,0 +1,67 @@ +-- arch-entrypoint.adb: Limine plops us here. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Kernel_Main; +with Devices.UART; +with Arch.Limine; +with Lib.Messages; use Lib.Messages; +with Memory.Physical; +with Arch.MMU; +with Lib.Panic; +with Arch.DTB; +with Arch.CPU; + +package body Arch.Entrypoint is + procedure Bootstrap_Main is + Info : Boot_Information renames Limine.Global_Info; + St1, St2 : Lib.Messages.Translated_String; + Stp_Len : Natural; + begin + -- Initialize architectural state first. + Devices.UART.Init_UART0; + + -- Translate the limine protocol into arch-agnostic structures. + Limine.Translate_Proto; + + -- Initialize device discovery facilities. + if not Arch.DTB.Init then + Lib.Panic.Hard_Panic ("No DTB was found!"); + end if; + + -- Print the memory map, it is useful at times. + Lib.Messages.Put_Line ("Physical memory map:"); + for E of Info.Memmap (1 .. Info.Memmap_Len) loop + Image (Unsigned_64 (To_Integer (E.Start)), St1, Stp_Len, True); + Image (Unsigned_64 (E.Length), St2, Stp_Len, True); + Lib.Messages.Put_Line (St1 & " + " & St2 & " " & + Boot_Memory_Type'Image (E.MemType)); + end loop; + + -- Initialize the allocators and MMU. + Lib.Messages.Put_Line ("Initializing allocators"); + Memory.Physical.Init_Allocator (Info.Memmap (1 .. Info.Memmap_Len)); + if not Arch.MMU.Init (Info.Memmap (1 .. Info.Memmap_Len)) then + Lib.Panic.Hard_Panic ("The VMM could not be initialized"); + end if; + + -- Initialize the other cores of the system. + Arch.CPU.Init_Cores; + + -- Go to main kernel. + Kernel_Main.Entrypoint (Info.Cmdline (1 .. Info.Cmdline_Len)); + end Bootstrap_Main; +end Arch.Entrypoint; diff --git a/source/arch/riscv64-limine/arch-entrypoint.ads b/source/arch/riscv64-limine/arch-entrypoint.ads new file mode 100644 index 0000000..54f4de0 --- /dev/null +++ b/source/arch/riscv64-limine/arch-entrypoint.ads @@ -0,0 +1,20 @@ +-- arch-entrypoint.ads: Limine plops us here. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Arch.Entrypoint is + procedure Bootstrap_Main + with Export, Convention => C, External_Name => "kernel_main"; +end Arch.Entrypoint; diff --git a/source/arch/riscv64-limine/arch-hooks.adb b/source/arch/riscv64-limine/arch-hooks.adb new file mode 100644 index 0000000..72d774d --- /dev/null +++ b/source/arch/riscv64-limine/arch-hooks.adb @@ -0,0 +1,44 @@ +-- arch-hooks.adb: Architecture-specific hooks for several utilities. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Arch.Hooks is + function Devices_Hook return Boolean is + begin + return True; + end Devices_Hook; + + function PRCTL_Hook (Code : Natural; Arg : System.Address) return Boolean is + pragma Unreferenced (Code); + pragma Unreferenced (Arg); + begin + return True; + end PRCTL_Hook; + + procedure Panic_SMP_Hook is + begin + null; + end Panic_SMP_Hook; + + function Get_Active_Core_Count return Positive is + begin + return 1; + end Get_Active_Core_Count; + + procedure Register_RAM_Files is + begin + null; + end Register_RAM_Files; +end Arch.Hooks; diff --git a/source/arch/riscv64-limine/arch-interrupts.ads b/source/arch/riscv64-limine/arch-interrupts.ads new file mode 100644 index 0000000..2d4dc01 --- /dev/null +++ b/source/arch/riscv64-limine/arch-interrupts.ads @@ -0,0 +1,39 @@ +-- arch-exceptions.ads: Specification of interrupt utilities. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Arch.Interrupts with SPARK_Mode => Off is + -- Passed to every interrupt called ever as an access. + type Frame is record + R15 : Unsigned_32; + R14 : Unsigned_32; + R13 : Unsigned_32; + R12 : Unsigned_32; + R11 : Unsigned_32; + R10 : Unsigned_32; + R9 : Unsigned_32; + R8 : Unsigned_32; + R7 : Unsigned_32; + R6 : Unsigned_32; + R5 : Unsigned_32; + R4 : Unsigned_32; + R3 : Unsigned_32; + R2 : Unsigned_32; + R1 : Unsigned_32; + R0 : Unsigned_32; + end record with Pack; +end Arch.Interrupts; diff --git a/source/arch/riscv64-limine/arch-limine.adb b/source/arch/riscv64-limine/arch-limine.adb new file mode 120000 index 0000000..029fb46 --- /dev/null +++ b/source/arch/riscv64-limine/arch-limine.adb @@ -0,0 +1 @@ +../x86_64-limine/arch-limine.adb \ No newline at end of file diff --git a/source/arch/riscv64-limine/arch-limine.ads b/source/arch/riscv64-limine/arch-limine.ads new file mode 120000 index 0000000..06975ad --- /dev/null +++ b/source/arch/riscv64-limine/arch-limine.ads @@ -0,0 +1 @@ +../x86_64-limine/arch-limine.ads \ No newline at end of file diff --git a/source/arch/riscv64-limine/arch-local.adb b/source/arch/riscv64-limine/arch-local.adb new file mode 100644 index 0000000..80b74b4 --- /dev/null +++ b/source/arch/riscv64-limine/arch-local.adb @@ -0,0 +1,66 @@ +-- arch-local.adb: Architecture-specific CPU-local storage. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Arch.Local is + procedure Reschedule_In (Microseconds : Natural) is + begin + null; + end Reschedule_In; + + procedure Reschedule_ASAP is + begin + null; + end Reschedule_ASAP; + + function Fetch_TCB return System.Address is + begin + return System.Null_Address; + end Fetch_TCB; + + procedure Load_TCB (TCB : System.Address) is + begin + null; + end Load_TCB; + + procedure Set_Stacks + (Core : Context.Core_Context; + Kernel_Stack : System.Address) + is + begin + null; + end Set_Stacks; + + -- Fetch and set the current thread and process. + function Get_Current_Thread return Scheduler.TID is + begin + return Scheduler.Error_TID; + end Get_Current_Thread; + + function Get_Current_Process return Userland.Process.PID is + begin + return Userland.Process.Error_PID; + end Get_Current_Process; + + procedure Set_Current_Thread (Thread : Scheduler.TID) is + begin + null; + end Set_Current_Thread; + + procedure Set_Current_Process (Proc : Userland.Process.PID) is + begin + null; + end Set_Current_Process; +end Arch.Local; diff --git a/source/arch/riscv64-limine/arch-mmu.adb b/source/arch/riscv64-limine/arch-mmu.adb new file mode 100644 index 0000000..72d18cc --- /dev/null +++ b/source/arch/riscv64-limine/arch-mmu.adb @@ -0,0 +1,136 @@ +-- arch-mmu.adb: Architecture-specific MMU code. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Arch.MMU is + function Init (Memmap : Arch.Boot_Memory_Map) return Boolean is + pragma Unreferenced (Memmap); + begin + return True; + end Init; + + function Fork_Table (Map : Page_Table_Acc) return Page_Table_Acc is + pragma Unreferenced (Map); + begin + return null; + end Fork_Table; + + procedure Destroy_Table (Map : in out Page_Table_Acc) is + begin + Map := null; + end Destroy_Table; + + function Make_Active (Map : Page_Table_Acc) return Boolean is + pragma Unreferenced (Map); + begin + return True; + end Make_Active; + + procedure Translate_Address + (Map : Page_Table_Acc; + Virtual : System.Address; + Length : Storage_Count; + Physical : out System.Address; + Is_Mapped : out Boolean; + Is_User_Accessible : out Boolean; + Is_Readable : out Boolean; + Is_Writeable : out Boolean; + Is_Executable : out Boolean) + is + pragma Unreferenced (Map); + pragma Unreferenced (Virtual); + pragma Unreferenced (Length); + begin + Physical := System.Null_Address; + Is_Mapped := True; + Is_User_Accessible := True; + Is_Readable := True; + Is_Writeable := True; + Is_Executable := False; + end Translate_Address; + + function Map_Range + (Map : Page_Table_Acc; + Physical_Start : System.Address; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Caching : Caching_Model := Write_Back) return Boolean + is + pragma Unreferenced (Map); + pragma Unreferenced (Physical_Start); + pragma Unreferenced (Virtual_Start); + pragma Unreferenced (Length); + pragma Unreferenced (Permissions); + begin + return True; + end Map_Range; + + procedure Map_Allocated_Range + (Map : Page_Table_Acc; + Physical_Start : out System.Address; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Success : out Boolean; + Caching : Caching_Model := Write_Back) + is + pragma Unreferenced (Map); + pragma Unreferenced (Virtual_Start); + pragma Unreferenced (Length); + pragma Unreferenced (Permissions); + begin + Physical_Start := System.Null_Address; + Success := True; + end Map_Allocated_Range; + + function Remap_Range + (Map : Page_Table_Acc; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Caching : Caching_Model := Write_Back) return Boolean + is + pragma Unreferenced (Map); + pragma Unreferenced (Virtual_Start); + pragma Unreferenced (Length); + pragma Unreferenced (Permissions); + begin + return True; + end Remap_Range; + + function Unmap_Range + (Map : Page_Table_Acc; + Virtual_Start : System.Address; + Length : Storage_Count) return Boolean + is + pragma Unreferenced (Map); + pragma Unreferenced (Virtual_Start); + pragma Unreferenced (Length); + begin + return True; + end Unmap_Range; + + function Get_User_Mapped_Size (Map : Page_Table_Acc) return Unsigned_64 is + pragma Unreferenced (Map); + begin + return 0; + end Get_User_Mapped_Size; + + procedure Get_Statistics (Stats : out Virtual_Statistics) is + begin + Stats := (others => 0); + end Get_Statistics; +end Arch.MMU; diff --git a/source/arch/riscv64-limine/arch-power.adb b/source/arch/riscv64-limine/arch-power.adb new file mode 100644 index 0000000..37d660e --- /dev/null +++ b/source/arch/riscv64-limine/arch-power.adb @@ -0,0 +1,32 @@ +-- arch-power.adb: Architecture-specific power management. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Arch.Power is + function Halt return Power_Status is + begin + return Failure; + end Halt; + + function Reboot return Power_Status is + begin + return Failure; + end Reboot; + + function Poweroff return Power_Status is + begin + return Failure; + end Poweroff; +end Arch.Power; diff --git a/source/arch/riscv64-limine/arch-snippets.adb b/source/arch/riscv64-limine/arch-snippets.adb new file mode 100644 index 0000000..ff305f5 --- /dev/null +++ b/source/arch/riscv64-limine/arch-snippets.adb @@ -0,0 +1,65 @@ +-- arch-snippets.ads: Architecture-specific bits. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Machine_Code; use System.Machine_Code; + +package body Arch.Snippets is + procedure HCF is + begin + loop + Disable_Interrupts; + Wait_For_Interrupt; + end loop; + end HCF; + + procedure Enable_Interrupts is + begin + Write_SStatus (Read_SStatus or 2#10#); + end Enable_Interrupts; + + procedure Disable_Interrupts is + begin + Write_SStatus (Read_SStatus and not 2#10#); + end Disable_Interrupts; + + procedure Wait_For_Interrupt is + begin + Asm ("wfi", Volatile => True); + end Wait_For_Interrupt; + + procedure Pause is + begin + null; -- No pause equivalent sadly, inneficient busy loops for you! + end Pause; + + function Read_SStatus return Unsigned_64 is + Value : Unsigned_64; + begin + Asm ("csrr %0, sstatus", + Outputs => Unsigned_64'Asm_Output ("=r", Value), + Clobber => "memory", + Volatile => True); + return Value; + end Read_SStatus; + + procedure Write_SStatus (Value : Unsigned_64) is + begin + Asm ("csrw sstatus, %0", + Inputs => Unsigned_64'Asm_Input ("r", Value), + Clobber => "memory", + Volatile => True); + end Write_SStatus; +end Arch.Snippets; diff --git a/source/arch/riscv64-limine/devices-uart.adb b/source/arch/riscv64-limine/devices-uart.adb new file mode 100644 index 0000000..c4c3b8f --- /dev/null +++ b/source/arch/riscv64-limine/devices-uart.adb @@ -0,0 +1,35 @@ +-- devices-uart.adb: UART driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Devices.UART with SPARK_Mode => Off is + procedure Init_UART0 is + begin + null; + end Init_UART0; + + procedure Write_UART0 (Message : Character) is + Data : Unsigned_8 with Import, Address => Message'Address; + begin + UART0_TX := Data; + end Write_UART0; + + procedure Write_UART0 (Message : String) is + begin + for C of Message loop + Write_UART0 (C); + end loop; + end Write_UART0; +end Devices.UART; diff --git a/source/arch/riscv64-limine/devices-uart.ads b/source/arch/riscv64-limine/devices-uart.ads new file mode 100644 index 0000000..f226f18 --- /dev/null +++ b/source/arch/riscv64-limine/devices-uart.ads @@ -0,0 +1,37 @@ +-- devices-uart.ads: UART driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Storage_Elements; use System.Storage_Elements; +with System; +with Memory; use Memory; + +package Devices.UART with SPARK_Mode => Off is + -- Early initialization of UART0 for early kernel output. + procedure Init_UART0; + + -- Print a character. + procedure Write_UART0 (Message : Character); + + -- Print a string. + procedure Write_UART0 (Message : String); + +private + + UART_Base : constant := 16#10000000#; + + UART0_TX : Unsigned_8 with Import, Volatile, + Address => To_Address (Memory_Offset + UART_Base); +end Devices.UART; diff --git a/source/arch/riscv64-limine/linker.ld b/source/arch/riscv64-limine/linker.ld new file mode 100644 index 0000000..5c9ac20 --- /dev/null +++ b/source/arch/riscv64-limine/linker.ld @@ -0,0 +1,69 @@ +/* + * linker.ld: Main linker script of the project. + * Copyright (C) 2024 streaksu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +OUTPUT_FORMAT(elf64-littleriscv) +ENTRY(kernel_main) + +PHDRS +{ + text PT_LOAD; + rodata PT_LOAD; + data PT_LOAD; +} + +SECTIONS +{ + . = 0xffffffff80000000; + + text_start = .; + .text : { + *(.text .text.*) + } :text + . = ALIGN(CONSTANT(MAXPAGESIZE)); + text_end = .; + + rodata_start = .; + .rodata : { + *(.rodata .rodata.*) + } :rodata + + .note : { + *(.note.gnu.build-id) + } : rodata + . = ALIGN(CONSTANT(MAXPAGESIZE)); + rodata_end = .; + + data_start = .; + .data : { + *(.data .data.*) + *(.sdata .sdata.*) + } :data + + .bss : { + *(.sbss .sbss.*) + *(.bss .bss.*) + *(COMMON) + } :data + . = ALIGN(CONSTANT(MAXPAGESIZE)); + data_end = .; + + /DISCARD/ : { + *(.eh_frame*) + *(.note .note.*) + } +} diff --git a/source/arch/x86_64-limine/arch-acpi.adb b/source/arch/x86_64-limine/arch-acpi.adb new file mode 100644 index 0000000..f0bd89c --- /dev/null +++ b/source/arch/x86_64-limine/arch-acpi.adb @@ -0,0 +1,147 @@ +-- arch-acpi.adb: ACPI parsing and scanning. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Limine; +with Arch.MMU; +with Lib.Messages; +with Lib.Alignment; + +package body Arch.ACPI is + -- Request to get the RSDP. + -- Response is a pointer to an RSDP_Response. + RSDP_Request : Limine.Request := + (ID => (Limine.Limine_Common_Magic_1, Limine.Limine_Common_Magic_2, + 16#c5e77b6b397e7b43#, 16#27637845accdcf3c#), + Revision => 0, + Response => System.Null_Address) + with Export, Async_Writers; + + -- Globals to keep track of scanned tables. + Use_XSDT : Boolean := False; + Root_Address : Virtual_Address := Null_Address; + + package A is new Lib.Alignment (Integer_Address); + + function ScanTables return Boolean is + RSDPonse : Limine.RSDP_Response + with Import, Address => RSDP_Request.Response; + Table : RSDP + with Import, Address => + To_Address (To_Integer (RSDPonse.Addr) + Memory_Offset); + + Map_Addr : Integer_Address; + Map_Len : Integer_Address; + begin + Map_Addr := A.Align_Down (To_Integer (RSDPonse.Addr), MMU.Page_Size); + Map_Len := To_Integer (RSDPonse.Addr) - Map_Addr; + Map_Len := A.Align_Up (MMU.Page_Size + Map_Len, MMU.Page_Size); + + if not MMU.Map_Range + (Map => MMU.Kernel_Table, + Physical_Start => To_Address (Map_Addr), + Virtual_Start => To_Address (Memory_Offset + Map_Addr), + Length => Storage_Count (Map_Len), + Permissions => + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => False, + Can_Execute => False, + Is_Global => True)) + then + Lib.Messages.Put_Line ("Failed to map RSD* table"); + return False; + end if; + + if Table.Signature /= "RSD PTR " then + return False; + end if; + + if Table.Revision >= 2 and Table.XSDT_Address /= Null_Address then + Use_XSDT := True; + Root_Address := Physical_Address (Table.XSDT_Address); + else + Use_XSDT := False; + Root_Address := Physical_Address (Table.RSDT_Address); + end if; + + Root_Address := Memory_Offset + Root_Address; + Map_Addr := A.Align_Down (Root_Address, MMU.Page_Size); + + -- TODO: Ideally we should map every table on demand, but that is + -- really really tedious, so we just map 10 pages at the beginning of + -- the root address, and that should be enough on 90% of the scenarios + -- out there. And when it isnt, welp, we will implement it. + if not MMU.Map_Range + (Map => MMU.Kernel_Table, + Physical_Start => To_Address (Map_Addr - Memory_Offset), + Virtual_Start => To_Address (Map_Addr), + Length => MMU.Page_Size * 10, + Permissions => + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => False, + Can_Execute => False, + Is_Global => True)) + then + Lib.Messages.Put_Line ("Failed to map final RSD* table"); + return False; + end if; + + return True; + end ScanTables; + + function FindTable (Signature : SDT_Signature) return Virtual_Address is + Root : RSDT with Import, Address => To_Address (Root_Address); + + Limit : constant Natural := + (Natural (Root.Header.Length) - Root.Header'Size / 8) / + (if Use_XSDT then 8 else 4); + + Returned_Virt : Virtual_Address := Null_Address; + Returned_Phys : Physical_Address := Null_Address; + begin + for I in 1 .. Limit loop + if Use_XSDT then + declare + Entries : XSDT_Entries (1 .. Limit) + with Import, Address => Root.Entries'Address; + begin + Returned_Phys := Physical_Address (Entries (I)); + end; + else + declare + Entries : RSDT_Entries (1 .. Limit) + with Import, Address => Root.Entries'Address; + begin + Returned_Phys := Physical_Address (Entries (I)); + end; + end if; + + Returned_Virt := Returned_Phys + Memory_Offset; + + declare + Test_Header : SDT_Header + with Import, Address => To_Address (Returned_Virt); + begin + if Test_Header.Signature = Signature then + return Returned_Virt; + end if; + end; + end loop; + + return Null_Address; + end FindTable; +end Arch.ACPI; diff --git a/source/arch/x86_64-limine/arch-acpi.ads b/source/arch/x86_64-limine/arch-acpi.ads new file mode 100644 index 0000000..b04da5e --- /dev/null +++ b/source/arch/x86_64-limine/arch-acpi.ads @@ -0,0 +1,275 @@ +-- arch-acpi.ads: ACPI parsing and scanning. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Memory; use Memory; + +package Arch.ACPI is + -- SDT header, which leads all ACPI tables. + type SDT_Signature is new String (1 .. 4); + type SDT_Header is record + Signature : SDT_Signature; + Length : Interfaces.Unsigned_32; + Revision : Interfaces.Unsigned_8; + Checksum : Interfaces.Unsigned_8; + OEM_ID : String (1 .. 6); + OEM_Table_ID : String (1 .. 8); + OEM_Revision : Interfaces.Unsigned_32; + Creator_ID : Interfaces.Unsigned_32; + Creator_Revision : Interfaces.Unsigned_32; + end record; + for SDT_Header use record + Signature at 0 range 0 .. 31; + Length at 0 range 32 .. 63; + Revision at 0 range 64 .. 71; + Checksum at 0 range 72 .. 79; + OEM_ID at 0 range 80 .. 127; + OEM_Table_ID at 0 range 128 .. 191; + OEM_Revision at 0 range 192 .. 223; + Creator_ID at 0 range 224 .. 255; + Creator_Revision at 0 range 256 .. 287; + end record; + for SDT_Header'Size use 288; + + -- Table detailing DMA related shenanigans. + DMAR_Signature : constant SDT_Signature := "DMAR"; + type DMAR is record + Header : SDT_Header; + Host_Address_Width : Interfaces.Unsigned_8; + Flags : Interfaces.Unsigned_8; + end record; + for DMAR use record + Header at 0 range 0 .. 287; + Host_Address_Width at 0 range 288 .. 295; + Flags at 0 range 296 .. 303; + end record; + for DMAR'Size use 304; + + -- Multiple APIC Description Table, it features an array in memory of + -- different entries for each hardware piece. + MADT_Signature : constant SDT_Signature := "APIC"; + type MADT is record + Header : SDT_Header; + LAPIC_Address : Interfaces.Unsigned_32; + Flags : Interfaces.Unsigned_32; + Entries_Start : Interfaces.Unsigned_32; -- Array of entries. + end record; + for MADT use record + Header at 0 range 0 .. 287; + LAPIC_Address at 0 range 288 .. 319; + Flags at 0 range 320 .. 351; + Entries_Start at 0 range 352 .. 383; + end record; + for MADT'Size use 384; + + -- Header of each MADT hardware entry. + type MADT_Header is record + Entry_Type : Interfaces.Unsigned_8; + Length : Interfaces.Unsigned_8; + end record; + for MADT_Header use record + Entry_Type at 0 range 0 .. 7; + Length at 0 range 8 .. 15; + end record; + for MADT_Header'Size use 16; + + -- Local APIC MADT entry. + MADT_LAPIC_Type : constant := 0; + type MADT_LAPIC is record + Header : MADT_Header; + Processor_ID : Interfaces.Unsigned_8; + LAPIC_ID : Interfaces.Unsigned_8; + Flags : Interfaces.Unsigned_32; + end record; + for MADT_LAPIC use record + Header at 0 range 0 .. 15; + Processor_ID at 0 range 16 .. 23; + LAPIC_ID at 0 range 24 .. 31; + Flags at 0 range 32 .. 63; + end record; + for MADT_LAPIC'Size use 64; + + -- IO APIC MADT entry. + MADT_IOAPIC_Type : constant := 1; + type MADT_IOAPIC is record + Header : MADT_Header; + APIC_ID : Interfaces.Unsigned_8; + Reserved : Interfaces.Unsigned_8; + Address : Interfaces.Unsigned_32; + GSIB : Interfaces.Unsigned_32; + end record; + for MADT_IOAPIC use record + Header at 0 range 0 .. 15; + APIC_ID at 0 range 16 .. 23; + Reserved at 0 range 24 .. 31; + Address at 0 range 32 .. 63; + GSIB at 0 range 64 .. 95; + end record; + for MADT_IOAPIC'Size use 96; + + -- ISO MADT entry. + MADT_ISO_Type : constant := 2; + type MADT_ISO is record + Header : MADT_Header; + Bus_Source : Interfaces.Unsigned_8; + IRQ_Source : Interfaces.Unsigned_8; + GSI : Interfaces.Unsigned_32; + Flags : Interfaces.Unsigned_16; + end record; + for MADT_ISO use record + Header at 0 range 0 .. 15; + Bus_Source at 0 range 16 .. 23; + IRQ_Source at 0 range 24 .. 31; + GSI at 0 range 32 .. 63; + Flags at 0 range 64 .. 79; + end record; + for MADT_ISO'Size use 80; + + -- Non-Maskable Interrupt MADT entry. + MADT_NMI_Type : constant := 4; + type MADT_NMI is record + Header : MADT_Header; + Processor_ID : Interfaces.Unsigned_8; + Flags : Interfaces.Unsigned_16; + Local_Interrupt_Index : Interfaces.Unsigned_8; + end record; + for MADT_NMI use record + Header at 0 range 0 .. 15; + Processor_ID at 0 range 16 .. 23; + Flags at 0 range 24 .. 39; + Local_Interrupt_Index at 0 range 40 .. 47; + end record; + for MADT_NMI'Size use 48; + + -- x2APIC MADT entry. + MADT_x2APIC_Type : constant := 9; + type MADT_x2APIC is record + Header : MADT_Header; + Reserved_1 : Unsigned_8; + Reserved_2 : Unsigned_8; + x2APIC_ID : Interfaces.Unsigned_32; + Flags : Interfaces.Unsigned_32; + Processor_ID : Interfaces.Unsigned_32; + end record; + for MADT_x2APIC use record + Header at 0 range 0 .. 15; + Reserved_1 at 0 range 16 .. 23; + Reserved_2 at 0 range 24 .. 31; + x2APIC_ID at 0 range 32 .. 63; + Flags at 0 range 64 .. 95; + Processor_ID at 0 range 96 .. 127; + end record; + for MADT_x2APIC'Size use 128; + + -- HPET table. + HPET_Signature : constant SDT_Signature := "HPET"; + type HPET is record + Header : SDT_Header; + Hardware_Revision : Interfaces.Unsigned_8; + Information : Interfaces.Unsigned_8; + PCI_Vendor_ID : Interfaces.Unsigned_16; + Address_Space_ID : Interfaces.Unsigned_8; + Register_Bit_Width : Interfaces.Unsigned_8; + Register_Bit_Offset : Interfaces.Unsigned_8; + Reserved1 : Interfaces.Unsigned_8; + Address : Physical_Address; -- Pointer to HPET_Contents. + HPET_Number : Interfaces.Unsigned_8; + Minimum_Tick : Interfaces.Unsigned_16; + Page_Protection : Interfaces.Unsigned_8; + end record; + for HPET use record + Header at 0 range 0 .. 287; + Hardware_Revision at 0 range 288 .. 295; + Information at 0 range 296 .. 303; + PCI_Vendor_ID at 0 range 304 .. 319; + Address_Space_ID at 0 range 320 .. 327; + Register_Bit_Width at 0 range 328 .. 335; + Register_Bit_Offset at 0 range 336 .. 343; + Reserved1 at 0 range 344 .. 351; + Address at 0 range 352 .. 415; + HPET_Number at 0 range 416 .. 423; + Minimum_Tick at 0 range 424 .. 439; + Page_Protection at 0 range 440 .. 447; + end record; + for HPET'Size use 448; + type HPET_Padding is array (1 .. 25) of Interfaces.Unsigned_64; + type HPET_Contents is record + General_Capabilities : Interfaces.Unsigned_64; + Unused0 : Interfaces.Unsigned_64; + General_Configuration : Interfaces.Unsigned_64; + Unused1 : Interfaces.Unsigned_64; + General_Int_Status : Interfaces.Unsigned_64; + Unused2 : HPET_Padding; + Main_Counter_Value : Interfaces.Unsigned_64; + Unused3 : Interfaces.Unsigned_64; + end record; + for HPET_Contents use record + General_Capabilities at 0 range 0 .. 63; + Unused0 at 0 range 64 .. 127; + General_Configuration at 0 range 128 .. 191; + Unused1 at 0 range 192 .. 255; + General_Int_Status at 0 range 256 .. 319; + Unused2 at 0 range 320 .. 1919; + Main_Counter_Value at 0 range 1920 .. 1983; + Unused3 at 0 range 1984 .. 2047; + end record; + for HPET_Contents'Size use 2048; + + -- RSDP table in memory, and its 2.0 version. + type RSDP_Padding is array (1 .. 3) of Unsigned_8; + type RSDP is record + Signature : String (1 .. 8); + Checksum : Unsigned_8; + OEM_ID : String (1 .. 6); + Revision : Unsigned_8; + RSDT_Address : Unsigned_32; + -- Version 2.0 onwards. + Length : Unsigned_32; + XSDT_Address : Unsigned_64; + Checksum_2 : Unsigned_8; + Reserved : RSDP_Padding; + end record; + for RSDP use record + Signature at 0 range 0 .. 63; + Checksum at 0 range 64 .. 71; + OEM_ID at 0 range 72 .. 119; + Revision at 0 range 120 .. 127; + RSDT_Address at 0 range 128 .. 159; + Length at 0 range 160 .. 191; + XSDT_Address at 0 range 192 .. 255; + Checksum_2 at 0 range 256 .. 263; + Reserved at 0 range 264 .. 287; + end record; + for RSDP'Size use 288; + + -- Root System Descriptor Table and entries for itself and the XSDT + -- (The XSDT is just an RSDT with 64 bit entries). + type RSDT_Entries is array (Natural range <>) of Unsigned_32; + type XSDT_Entries is array (Natural range <>) of Unsigned_64; + type RSDT is record + Header : SDT_Header; + Entries : Unsigned_32; -- Actually the start of the RSDT/XSDT entries. + end record; + for RSDT use record + Header at 0 range 0 .. 287; + end record; + + -- Scan the ACPI tables, true on success, false on failure. + function ScanTables return Boolean; + + -- Search for an ACPI table and return its address, null if not found. + function FindTable (Signature : SDT_Signature) return Virtual_Address; +end Arch.ACPI; diff --git a/source/arch/x86_64-limine/arch-apic.adb b/source/arch/x86_64-limine/arch-apic.adb new file mode 100644 index 0000000..cd4388f --- /dev/null +++ b/source/arch/x86_64-limine/arch-apic.adb @@ -0,0 +1,405 @@ +-- arch-apic.adb: IO/LAPIC driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.ACPI; +with Arch.Snippets; +with Lib.Panic; +with Arch.MMU; +with Lib.Messages; + +package body Arch.APIC with SPARK_Mode => Off is + LAPIC_MSR : constant := 16#01B#; + x2APIC_MSR : constant := 16#800#; + LAPIC_Base : constant := Memory_Offset + 16#FEE00000#; + + LAPIC_EOI_Register : constant := 16#0B0#; + LAPIC_Spurious_Register : constant := 16#0F0#; + LAPIC_ICR0_Register : constant := 16#300#; + LAPIC_ICR1_Register : constant := 16#310#; + LAPIC_Timer_Register : constant := 16#320#; + LAPIC_Timer_Init_Counter_Register : constant := 16#380#; + LAPIC_Timer_Curr_Counter_Register : constant := 16#390#; + LAPIC_Timer_Divisor_Register : constant := 16#3E0#; + LAPIC_Timer_2_Divisor : constant := 0; + + Supports_x2APIC : Boolean; + + procedure Init_LAPIC is + Addr : constant Virtual_Address := ACPI.FindTable (ACPI.DMAR_Signature); + DMAR : ACPI.DMAR with Import, Address => To_Address (Addr); + EAX, EBX, ECX, EDX : Unsigned_32; + APIC_Base : Unsigned_64; + + MSR_Read : constant Unsigned_64 := Arch.Snippets.Read_MSR (LAPIC_MSR); + begin + -- Check x2APIC support. + Snippets.Get_CPUID (1, 0, EAX, EBX, ECX, EDX); + Supports_x2APIC := + (ECX and Shift_Left (1, 21)) /= 0 and + (Addr = 0 or else ((DMAR.Flags and 2#11#) /= 2#11#)); + + if Supports_x2APIC then + Lib.Messages.Put_Line ("x2APIC support enabled"); + APIC_Base := Snippets.Read_MSR (LAPIC_MSR); + Snippets.Write_MSR (LAPIC_MSR, APIC_Base or Shift_Left (1, 10)); + else + -- We assume the LAPIC base for performance reasons. + -- Check the assumption is right tho. + if (MSR_Read and 16#FFFFF000#) /= LAPIC_Base - Memory_Offset then + Lib.Panic.Hard_Panic ("Odd LAPIC base encountered"); + end if; + + -- Map the LAPIC base. + if not MMU.Map_Range + (Map => MMU.Kernel_Table, + Physical_Start => To_Address (LAPIC_Base - Memory_Offset), + Virtual_Start => To_Address (LAPIC_Base), + Length => MMU.Page_Size, + Permissions => + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => True, + Can_Execute => False, + Is_Global => True), + Caching => MMU.Uncacheable) + then + Lib.Panic.Hard_Panic ("Could not map LAPIC base"); + end if; + end if; + end Init_LAPIC; + + procedure Init_Core_LAPIC is + Value, To_Write : Unsigned_32; + begin + -- Enable the LAPIC by setting the spurious interrupt vector and + -- ORing the enable bit. + Value := LAPIC_Read (LAPIC_Spurious_Register); + To_Write := Value or (LAPIC_Spurious_Entry - 1); + LAPIC_Write (LAPIC_Spurious_Register, To_Write or Shift_Left (1, 8)); + end Init_Core_LAPIC; + + procedure LAPIC_Send_IPI_Raw (LAPIC_ID : Unsigned_32; Code : Unsigned_32) is + begin + if Supports_x2APIC then + x2APIC_Write + (LAPIC_ICR0_Register, + Shift_Left (Unsigned_64 (LAPIC_ID), 32) or Unsigned_64 (Code)); + else + LAPIC_Write (LAPIC_ICR1_Register, Shift_Left (LAPIC_ID, 24)); + LAPIC_Write (LAPIC_ICR0_Register, Code); + end if; + end LAPIC_Send_IPI_Raw; + + procedure LAPIC_Send_IPI (LAPIC_ID : Unsigned_32; Vector : IDT.IDT_Index) is + begin + LAPIC_Send_IPI_Raw (LAPIC_ID, Unsigned_32 (Vector) - 1); + end LAPIC_Send_IPI; + + function LAPIC_Timer_Calibrate return Unsigned_64 is + Sample : constant Unsigned_32 := Unsigned_32'Last; + Final_Count : Unsigned_32; + begin + LAPIC_Timer_Stop; + LAPIC_Write (LAPIC_Timer_Register, Shift_Left (1, 16) or 16#FF#); + LAPIC_Write (LAPIC_Timer_Divisor_Register, LAPIC_Timer_2_Divisor); + LAPIC_Write (LAPIC_Timer_Init_Counter_Register, Sample); + + -- Check the ticks we get in 1 ms, and calculate with that. + Snippets.Calibrate_Sleep_1MS; + Final_Count := LAPIC_Read (LAPIC_Timer_Curr_Counter_Register); + + -- Stop timer and adjust the ticks to make them ticks/ms -> ticks/s + LAPIC_Timer_Stop; + return Unsigned_64 (Sample - Final_Count) * 1000; + end LAPIC_Timer_Calibrate; + + procedure LAPIC_Timer_Stop is + begin + LAPIC_Write (LAPIC_Timer_Init_Counter_Register, 0); + LAPIC_Write (LAPIC_Timer_Register, Shift_Left (1, 16)); + end LAPIC_Timer_Stop; + + procedure LAPIC_Timer_Oneshot + (Vector : IDT.IDT_Index; + Hz : Unsigned_64; + Microseconds : Unsigned_64) + is + Ms : Unsigned_64 renames Microseconds; + Ticks : constant Unsigned_64 := (Ms * (Hz / 1000000) and 16#FFFFFFFF#); + begin + LAPIC_Timer_Stop; + LAPIC_Write (LAPIC_Timer_Register, (Unsigned_32 (Vector) - 1)); + LAPIC_Write (LAPIC_Timer_Divisor_Register, LAPIC_Timer_2_Divisor); + LAPIC_Write (LAPIC_Timer_Init_Counter_Register, Unsigned_32 (Ticks)); + end LAPIC_Timer_Oneshot; + + procedure LAPIC_EOI is + begin + LAPIC_Write (LAPIC_EOI_Register, 0); + end LAPIC_EOI; + + function LAPIC_Read (Register : Unsigned_32) return Unsigned_32 is + begin + if Supports_x2APIC then + return Unsigned_32 (x2APIC_Read (Register) and 16#FFFFFFFF#); + else + declare + Value_Mem : Unsigned_32 with Import, Volatile, + Address => To_Address (LAPIC_Base + Integer_Address (Register)); + begin + return Value_Mem; + end; + end if; + end LAPIC_Read; + + procedure LAPIC_Write (Register : Unsigned_32; Value : Unsigned_32) is + begin + if Supports_x2APIC then + x2APIC_Write (Register, Unsigned_64 (Value)); + else + declare + Value_Mem : Unsigned_32 with Import, Volatile, + Address => To_Address (LAPIC_Base + Integer_Address (Register)); + begin + Value_Mem := Value; + end; + end if; + end LAPIC_Write; + + function x2APIC_Read (Register : Unsigned_32) return Unsigned_64 is + begin + return Snippets.Read_MSR (x2APIC_MSR + Shift_Right (Register, 4)); + end x2APIC_Read; + + procedure x2APIC_Write (Register : Unsigned_32; Value : Unsigned_64) is + begin + Snippets.Write_MSR (x2APIC_MSR + Shift_Right (Register, 4), Value); + end x2APIC_Write; + ---------------------------------------------------------------------------- + IOAPIC_VER_Register : constant := 1; + + IOAPIC_IOREDTBL_Pin_Polarity : constant Unsigned_64 := Shift_Left (1, 13); + IOAPIC_IOREDTBL_Trigger_Mode : constant Unsigned_64 := Shift_Left (1, 15); + IOAPIC_IOREDTBL_Mask : constant Unsigned_64 := Shift_Left (1, 16); + + type IOAPIC_Array is array (Natural range <>) of ACPI.MADT_IOAPIC; + type ISO_Array is array (Natural range <>) of ACPI.MADT_ISO; + + MADT_IOAPICs : access IOAPIC_Array; + MADT_ISOs : access ISO_Array; + + function Init_IOAPIC return Boolean is + Addr : constant Virtual_Address := ACPI.FindTable (ACPI.MADT_Signature); + MADT : ACPI.MADT with Import, Address => To_Address (Addr); + MADT_Length : constant Unsigned_32 := MADT.Header.Length; + Current_Byte : Unsigned_32 := 0; + Current_IOAPIC : Natural := 1; + IOAPIC_Count : Natural := 0; + Current_ISO : Natural := 1; + ISO_Count : Natural := 0; + begin + if Addr = Null_Address then + return False; + end if; + + -- Check how many entries do we need to allocate. + while (Current_Byte + ((MADT'Size / 8) - 1)) < MADT_Length loop + declare + Header : ACPI.MADT_Header; + for Header'Address use + MADT.Entries_Start'Address + Storage_Offset (Current_Byte); + begin + case Header.Entry_Type is + when ACPI.MADT_IOAPIC_Type => IOAPIC_Count := IOAPIC_Count + 1; + when ACPI.MADT_ISO_Type => ISO_Count := ISO_Count + 1; + when others => null; + end case; + Current_Byte := Current_Byte + Unsigned_32 (Header.Length); + end; + end loop; + + -- Allocate and fill the entries. + Current_Byte := 0; + MADT_IOAPICs := new IOAPIC_Array (1 .. IOAPIC_Count); + MADT_ISOs := new ISO_Array (1 .. ISO_Count); + while (Current_Byte + ((MADT'Size / 8) - 1)) < MADT_Length loop + declare + IOAPIC : ACPI.MADT_IOAPIC; + ISO : ACPI.MADT_ISO; + for IOAPIC'Address use + MADT.Entries_Start'Address + Storage_Offset (Current_Byte); + for ISO'Address use + MADT.Entries_Start'Address + Storage_Offset (Current_Byte); + begin + case IOAPIC.Header.Entry_Type is + when ACPI.MADT_IOAPIC_Type => + MADT_IOAPICs (Current_IOAPIC) := IOAPIC; + Current_IOAPIC := Current_IOAPIC + 1; + when ACPI.MADT_ISO_Type => + MADT_ISOs (Current_ISO) := ISO; + Current_ISO := Current_ISO + 1; + when others => null; + end case; + Current_Byte := Current_Byte + Unsigned_32 (IOAPIC.Header.Length); + end; + end loop; + + return True; + end Init_IOAPIC; + + function IOAPIC_Set_Redirect + (LAPIC_ID : Unsigned_32; + IRQ : IDT.IRQ_Index; + IDT_Entry : IDT.IDT_Index; + Enable : Boolean) return Boolean is + Actual_IRQ : constant Unsigned_8 := + Unsigned_8 (IRQ) - Unsigned_8 (IDT.IRQ_Index'First); + begin + for ISO of MADT_ISOs.all loop + if ISO.IRQ_Source = Actual_IRQ then + return IOAPIC_Set_Redirect (LAPIC_ID, ISO.GSI, IDT_Entry, + ISO.Flags, Enable); + end if; + end loop; + return IOAPIC_Set_Redirect (LAPIC_ID, Unsigned_32 (Actual_IRQ), + IDT_Entry, 0, Enable); + end IOAPIC_Set_Redirect; + + function IOAPIC_Set_Redirect + (LAPIC_ID : Unsigned_32; + GSI : Unsigned_32; + IDT_Entry : IDT.IDT_Index; + Flags : Unsigned_16; + Enable : Boolean) return Boolean + is + GSIB : Unsigned_32 := 0; + Redirect : Unsigned_64 := Unsigned_64 (IDT_Entry) - 1; + IOREDTBL : constant Unsigned_32 := (GSI - GSIB) * 2 + 16; + IOAPIC_MMIO : Virtual_Address; + begin + -- Check if the IOAPIC could be found. + Get_IOAPIC_From_GSI (GSI, GSIB, IOAPIC_MMIO); + if IOAPIC_MMIO = Null_Address then + return False; + end if; + + -- Build the redirect value by translating the ISO flags into IOREDTBL + -- flags and the enable. + if (Flags and IOAPIC_ISO_Flag_Polarity) /= 0 then + Redirect := Redirect or IOAPIC_IOREDTBL_Pin_Polarity; + end if; + if (Flags and IOAPIC_ISO_Flag_Trigger) /= 0 then + Redirect := Redirect or IOAPIC_IOREDTBL_Trigger_Mode; + end if; + if Enable = False then + Redirect := Redirect or IOAPIC_IOREDTBL_Mask; + end if; + Redirect := Redirect or Shift_Left (Unsigned_64 (LAPIC_ID), 56); + + declare + Mask : constant Unsigned_64 := 16#FFFFFFFF#; + Lower32 : constant Unsigned_64 := Redirect and Mask; + Upper32 : constant Unsigned_64 := Shift_Right (Redirect, 32) and Mask; + begin + IOAPIC_Write (IOAPIC_MMIO, IOREDTBL, Unsigned_32 (Lower32)); + IOAPIC_Write (IOAPIC_MMIO, IOREDTBL + 1, Unsigned_32 (Upper32)); + end; + return True; + end IOAPIC_Set_Redirect; + + procedure Get_IOAPIC_From_GSI + (GSI : Unsigned_32; + GSIB : out Unsigned_32; + Result : out Virtual_Address) + is + begin + for IOAPIC of MADT_IOAPICs.all loop + if IOAPIC.GSIB <= GSI and + IOAPIC.GSIB + Get_IOAPIC_GSI_Count + (Virtual_Address (IOAPIC.Address) + Memory_Offset) > GSI + then + GSIB := IOAPIC.GSIB; + Result := Virtual_Address (IOAPIC.Address) + Memory_Offset; + return; + end if; + end loop; + + GSIB := 0; + Result := Null_Address; + end Get_IOAPIC_From_GSI; + + function Get_IOAPIC_GSI_Count (MMIO : Virtual_Address) return Unsigned_32 is + Physical : System.Address; + Is_Mapped, Is_User, Is_Readable, Is_Writeable, Is_Exec : Boolean; + Read : Unsigned_32; + begin + -- Check whether its mapped, if it is not, map it. + MMU.Translate_Address + (Map => MMU.Kernel_Table, + Virtual => To_Address (MMIO), + Length => MMU.Page_Size, + Physical => Physical, + Is_Mapped => Is_Mapped, + Is_User_Accessible => Is_User, + Is_Readable => Is_Readable, + Is_Writeable => Is_Writeable, + Is_Executable => Is_Exec); + if not Is_Mapped then + if not MMU.Map_Range + (Map => MMU.Kernel_Table, + Physical_Start => To_Address (MMIO - Memory_Offset), + Virtual_Start => To_Address (MMIO), + Length => MMU.Page_Size, + Permissions => + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => True, + Can_Execute => False, + Is_Global => True), + Caching => MMU.Uncacheable) + then + return 0; + end if; + end if; + + -- The number of GSIs handled by the IOAPIC is in its IOAPICVER register + -- in bits 16 - 23; + Read := IOAPIC_Read (MMIO, IOAPIC_VER_Register); + return Shift_Right (Read and 16#FF0000#, 16); + end Get_IOAPIC_GSI_Count; + + function IOAPIC_Read + (MMIO : Virtual_Address; + Register : Unsigned_32) return Unsigned_32 + is + Value_Reg : Unsigned_32 with Address => To_Address (MMIO), Volatile; + Value : Unsigned_32 with Address => To_Address (MMIO + 16), Volatile; + begin + Value_Reg := Register; + return Value; + end IOAPIC_Read; + + procedure IOAPIC_Write + (MMIO : Virtual_Address; + Register : Unsigned_32; + To_Write : Unsigned_32) is + Value_Reg : Unsigned_32 with Address => To_Address (MMIO), Volatile; + Value : Unsigned_32 with Address => To_Address (MMIO + 16), Volatile; + begin + Value_Reg := Register; + Value := To_Write; + end IOAPIC_Write; +end Arch.APIC; diff --git a/source/arch/x86_64-limine/arch-apic.ads b/source/arch/x86_64-limine/arch-apic.ads new file mode 100644 index 0000000..54b12b5 --- /dev/null +++ b/source/arch/x86_64-limine/arch-apic.ads @@ -0,0 +1,96 @@ +-- arch-apic.ads: IO/LAPIC driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Arch.IDT; +with Memory; use Memory; + +package Arch.APIC is + -- Entry of the IDT for LAPIC spurious fires. + LAPIC_Spurious_Entry : constant := 255; + + -- Initialize the Local APIC facilities. + procedure Init_LAPIC; + + -- Initialize the LAPIC for the caller core. + procedure Init_Core_LAPIC; + + -- Send an InterProcessor Interrupt to another LAPIC. + procedure LAPIC_Send_IPI_Raw (LAPIC_ID : Unsigned_32; Code : Unsigned_32); + procedure LAPIC_Send_IPI (LAPIC_ID : Unsigned_32; Vector : IDT.IDT_Index); + + -- Find out the LAPIC timer frequency, in Hz. + function LAPIC_Timer_Calibrate return Unsigned_64; + + -- Stop the timer. + procedure LAPIC_Timer_Stop; + + -- Setup the LAPIC timer to wait for some given time and then call the + -- vector. + procedure LAPIC_Timer_Oneshot + (Vector : IDT.IDT_Index; + Hz : Unsigned_64; + Microseconds : Unsigned_64); + + -- LAPIC End Of Interrupt routine, that is to be called at the end of + -- an interrupt. + procedure LAPIC_EOI; + ---------------------------------------------------------------------------- + -- Initialize the IOAPICs, return True in success or False on failure. + function Init_IOAPIC return Boolean; + + -- Use the IOAPIC to redirect an IRQ to an IDT entry for a given LAPIC. + -- Set enable to true or false to enable or disable it. + -- Return true on success. + function IOAPIC_Set_Redirect + (LAPIC_ID : Unsigned_32; + IRQ : IDT.IRQ_Index; + IDT_Entry : IDT.IDT_Index; + Enable : Boolean) return Boolean; + + -- Use the IOAPIC to redirect a GSI to an IDT entry for a given LAPIC. + -- Use ISO flags for setting specific flags for the GSI, and set enable to + -- true or false to enable or disable it. Return true on success. + IOAPIC_ISO_Flag_Polarity : constant Unsigned_16 := Shift_Left (1, 1); + IOAPIC_ISO_Flag_Trigger : constant Unsigned_16 := Shift_Left (1, 3); + function IOAPIC_Set_Redirect + (LAPIC_ID : Unsigned_32; + GSI : Unsigned_32; + IDT_Entry : IDT.IDT_Index; + Flags : Unsigned_16; + Enable : Boolean) return Boolean; + +private + + function LAPIC_Read (Register : Unsigned_32) return Unsigned_32; + procedure LAPIC_Write (Register : Unsigned_32; Value : Unsigned_32); + + function x2APIC_Read (Register : Unsigned_32) return Unsigned_64; + procedure x2APIC_Write (Register : Unsigned_32; Value : Unsigned_64); + + procedure Get_IOAPIC_From_GSI + (GSI : Unsigned_32; + GSIB : out Unsigned_32; + Result : out Virtual_Address); + function Get_IOAPIC_GSI_Count (MMIO : Virtual_Address) return Unsigned_32; + function IOAPIC_Read + (MMIO : Virtual_Address; + Register : Unsigned_32) return Unsigned_32; + procedure IOAPIC_Write + (MMIO : Virtual_Address; + Register : Unsigned_32; + To_Write : Unsigned_32); +end Arch.APIC; diff --git a/source/arch/x86_64-limine/arch-clocks.adb b/source/arch/x86_64-limine/arch-clocks.adb new file mode 100644 index 0000000..1af68ae --- /dev/null +++ b/source/arch/x86_64-limine/arch-clocks.adb @@ -0,0 +1,94 @@ +-- arch-clocks.adb: Architectural clock sources. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.RTC; +with Arch.Snippets; +with Lib.Time; use Lib.Time; + +package body Arch.Clocks with + Refined_State => + (RT_Clock_State => + (RT_Timestamp_Seconds, + RT_Timestamp_Nanoseconds, + RT_Stored_Seconds, + RT_Stored_Nanoseconds), + Monotonic_Clock_State => (Mono_TSC_Freq)) +is + -- The RTC is really slow and has inacceptably large resolutions, so we + -- will a cached RTC time as well as when it was cached in monotonic. + -- That way, by adding deltas, we can build an okayish, finer-grained + -- resolution clock. + RT_Timestamp_Seconds : Unsigned_64; + RT_Timestamp_Nanoseconds : Unsigned_64; + RT_Stored_Seconds : Unsigned_64; + RT_Stored_Nanoseconds : Unsigned_64; + + -- Monotonic TSC cycles per millisecond. Before calibration, the value is + -- a placeholder, so monotonic always works, it is an estimation. + MS_Per_Sec : constant := 1_000; + Nanos_Per_MS : constant := 1_000_000; + Mono_TSC_Freq : Unsigned_64 := Nanos_Per_MS * 2; + + procedure Initialize_Sources is + Beginning_TSC : constant Unsigned_64 := Snippets.Read_Cycles; + begin + -- Calibrate by checking the ticks we get in 1 ms. + Snippets.Calibrate_Sleep_1MS; + Mono_TSC_Freq := Snippets.Read_Cycles - Beginning_TSC; + + Get_Monotonic_Time (RT_Timestamp_Seconds, RT_Timestamp_Nanoseconds); + RTC.Get_RTC_Date (RT_Stored_Seconds); + RT_Stored_Nanoseconds := 0; + end Initialize_Sources; + + procedure Get_Monotonic_Resolution (Seconds, Nanoseconds : out Unsigned_64) + is + begin + Seconds := 0; + Nanoseconds := Mono_TSC_Freq * Nanos_Per_MS; + end Get_Monotonic_Resolution; + + procedure Get_Monotonic_Time (Seconds, Nanoseconds : out Unsigned_64) is + Cycles : constant Unsigned_64 := Snippets.Read_Cycles / Mono_TSC_Freq; + begin + Seconds := Cycles / MS_Per_Sec; + Nanoseconds := (Cycles mod MS_Per_Sec) * Nanos_Per_MS; + end Get_Monotonic_Time; + + procedure Get_Real_Time_Resolution (Seconds, Nanoseconds : out Unsigned_64) + is + begin + Seconds := 0; + Nanoseconds := Mono_TSC_Freq * Nanos_Per_MS; + end Get_Real_Time_Resolution; + + procedure Get_Real_Time (Seconds, Nanoseconds : out Unsigned_64) is + Temp1, Temp2 : Unsigned_64; + begin + Get_Monotonic_Time (Temp1, Temp2); + Substract (Temp1, Temp2, RT_Timestamp_Seconds, RT_Timestamp_Nanoseconds); + Seconds := RT_Stored_Seconds + Temp1; + Nanoseconds := RT_Stored_Nanoseconds + Temp2; + end Get_Real_Time; + + procedure Set_Real_Time (Seconds, Nanoseconds : Unsigned_64) is + begin + RT_Stored_Seconds := Seconds; + RT_Stored_Nanoseconds := Nanoseconds; + Get_Monotonic_Time (RT_Timestamp_Seconds, RT_Timestamp_Nanoseconds); + RTC.Set_RTC_Date (Seconds); + end Set_Real_Time; +end Arch.Clocks; diff --git a/source/arch/x86_64-limine/arch-context.adb b/source/arch/x86_64-limine/arch-context.adb new file mode 100644 index 0000000..c52cde5 --- /dev/null +++ b/source/arch/x86_64-limine/arch-context.adb @@ -0,0 +1,166 @@ +-- arch-context.adb: Architecture-specific context switching. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; +with System.Machine_Code; use System.Machine_Code; +with Arch.GDT; +with Arch.CPU; +with Memory.Physical; +with Interfaces.C; + +package body Arch.Context is + procedure Init_GP_Context + (Ctx : out GP_Context; + Stack : System.Address; + Start_Addr : System.Address) + is + begin + Ctx := ( + CS => GDT.User_Code64_Segment or 3, + SS => GDT.User_Data64_Segment or 3, + RFLAGS => 16#202#, + RIP => Unsigned_64 (To_Integer (Start_Addr)), + RSP => Unsigned_64 (To_Integer (Stack)), + RBP => 0, + others => <> + ); + end Init_GP_Context; + + procedure Load_GP_Context (Ctx : GP_Context) is + begin + Asm ( + "mov %0, %%rsp" & LF & HT & + "pop %%rax" & LF & HT & + "pop %%rbx" & LF & HT & + "pop %%rcx" & LF & HT & + "pop %%rdx" & LF & HT & + "pop %%rsi" & LF & HT & + "pop %%rdi" & LF & HT & + "pop %%rbp" & LF & HT & + "pop %%r8" & LF & HT & + "pop %%r9" & LF & HT & + "pop %%r10" & LF & HT & + "pop %%r11" & LF & HT & + "pop %%r12" & LF & HT & + "pop %%r13" & LF & HT & + "pop %%r14" & LF & HT & + "pop %%r15" & LF & HT & + "add $8, %%rsp" & LF & HT & + "swapgs" & LF & HT & + "iretq", + Inputs => System.Address'Asm_Input ("rm", Ctx'Address), + Clobber => "memory", + Volatile => True + ); + loop null; end loop; + end Load_GP_Context; + + procedure Save_Core_Context (Ctx : out Core_Context) is + begin + Ctx := Arch.CPU.Get_Local.User_Stack; + end Save_Core_Context; + + procedure Success_Fork_Result (Ctx : in out GP_Context) is + begin + Ctx.RAX := 0; + end Success_Fork_Result; + + procedure Init_FP_Context (Ctx : out FP_Context) is + FPU_Word : constant Unsigned_32 := 2#1100111111#; + MXCSR : constant Unsigned_64 := 2#1111110000000#; + begin + -- Set up FPU control word and MXCSR as defined by SysV. + Asm ("fldcw %0", + Inputs => Unsigned_32'Asm_Input ("m", FPU_Word), + Clobber => "memory", + Volatile => True); + Asm ("ldmxcsr %0", + Inputs => Unsigned_64'Asm_Input ("m", MXCSR), + Clobber => "memory", + Volatile => True); + + -- Allocate a block as big as needed and just set the context to that. + Ctx := To_Address (Memory.Physical.Alloc + (Interfaces.C.size_t (FPU_Area_Size))); + + -- Save the current context with the control words and all. + Save_FP_Context (Ctx); + end Init_FP_Context; + + procedure Save_FP_Context (Ctx : in out FP_Context) is + begin + Save_Access (Ctx); + end Save_FP_Context; + + procedure Load_FP_Context (Ctx : FP_Context) is + begin + Rstor_Access (Ctx); + end Load_FP_Context; + + procedure Destroy_FP_Context (Ctx : in out FP_Context) is + begin + Memory.Physical.Free (Interfaces.C.size_t (To_Integer (Ctx))); + Ctx := System.Null_Address; + end Destroy_FP_Context; + ---------------------------------------------------------------------------- + procedure Setup_XSAVE (Use_XSAVE : Boolean; Area_Size : Unsigned_32) is + begin + FPU_Area_Size := Area_Size; + if Use_XSAVE then + Save_Access := Save_XSAVE'Access; + Rstor_Access := Load_XRSTOR'Access; + else + Save_Access := Save_FXSAVE'Access; + Rstor_Access := Load_FXSTOR'Access; + end if; + end Setup_XSAVE; + + procedure Save_FXSAVE (Ctx : in out System.Address) is + begin + Asm ("fxsave (%0)", + Inputs => System.Address'Asm_Input ("r", Ctx), + Clobber => "memory", + Volatile => True); + end Save_FXSAVE; + + procedure Save_XSAVE (Ctx : in out System.Address) is + begin + Asm ("xsave (%0)", + Inputs => (System.Address'Asm_Input ("r", Ctx), + Unsigned_32'Asm_Input ("a", 16#FFFFFFFF#), + Unsigned_32'Asm_Input ("d", 16#FFFFFFFF#)), + Clobber => "memory", + Volatile => True); + end Save_XSAVE; + + procedure Load_FXSTOR (Ctx : System.Address) is + begin + Asm ("fxrstor (%0)", + Inputs => System.Address'Asm_Input ("r", Ctx), + Clobber => "memory", + Volatile => True); + end Load_FXSTOR; + + procedure Load_XRSTOR (Ctx : System.Address) is + begin + Asm ("xrstor (%0)", + Inputs => (System.Address'Asm_Input ("r", Ctx), + Unsigned_32'Asm_Input ("a", 16#FFFFFFFF#), + Unsigned_32'Asm_Input ("d", 16#FFFFFFFF#)), + Clobber => "memory", + Volatile => True); + end Load_XRSTOR; +end Arch.Context; diff --git a/source/arch/x86_64-limine/arch-cpu.adb b/source/arch/x86_64-limine/arch-cpu.adb new file mode 100644 index 0000000..ab55912 --- /dev/null +++ b/source/arch/x86_64-limine/arch-cpu.adb @@ -0,0 +1,311 @@ +-- arch-cpu.adb: CPU management routines. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Machine_Code; use System.Machine_Code; +with Arch.APIC; +with Arch.MMU; +with Arch.IDT; +with Arch.Snippets; +with Arch.Context; +with System; use System; + +package body Arch.CPU with SPARK_Mode => Off is + type Interrupt_Stack is array (1 .. 16#4000#) of Unsigned_8; + type Interrupt_Stack_Acc is access Interrupt_Stack; + + SMP_Request : Limine.SMP_Request := + (Base => + (ID => Limine.SMP_ID, + Revision => 0, + Response => System.Null_Address), + Flags => Limine.SMP_ENABLE_X2APIC) + with Export, Async_Writers; + + procedure Init_Cores is + BSP_LAPIC_ID : Unsigned_32; + New_Stk : constant Interrupt_Stack_Acc := new Interrupt_Stack; + New_Stk_Top : constant System.Address := New_Stk (New_Stk'Last)'Address; + Idx : Natural := 2; + + SMPPonse : Limine.SMP_Response + with Import, Address => SMP_Request.Base.Response; + begin + -- Check we got a limine answer at all, else, single core time. + if SMP_Request.Base.Response /= System.Null_Address then + Core_Count := Natural (SMPPonse.CPU_Count); + BSP_LAPIC_ID := SMPPonse.BSP_LAPIC_ID; + else + Core_Count := 1; + BSP_LAPIC_ID := Get_BSP_LAPIC_ID; + end if; + + -- Initialize the locals list, and initialize the cores. + Core_Locals := new Core_Local_Arr (1 .. Core_Count); + Init_Common (1, BSP_LAPIC_ID, Unsigned_64 (To_Integer (New_Stk_Top))); + Context.Setup_XSAVE (Global_Use_XSAVE, Global_FPU_Size); + Save_MTRRs; + + -- Initialize the other cores. + if Core_Count > 1 then + declare + SMP_CPUs : Limine.CPU_Info_Arr (1 .. SMPPonse.CPU_Count) + with Import, Address => SMPPonse.CPUs; + begin + for CPU of SMP_CPUs loop + if CPU.LAPIC_ID /= BSP_LAPIC_ID then + CPU.Extra_Arg := Unsigned_64 (Idx); + CPU.Addr := Core_Bootstrap'Address; + Idx := Idx + 1; + end if; + end loop; + end; + end if; + end Init_Cores; + + function Get_Local return Core_Local_Acc is + Locals : Core_Local_Acc; + begin + -- XXX: We are making the guarantee this can never be null, which it + -- can if the scheduler does not swap gs correctly. + Asm ("mov %%gs:0, %0", + Outputs => Core_Local_Acc'Asm_Output ("=a", Locals), + Volatile => True); + return Locals; + end Get_Local; + ---------------------------------------------------------------------------- + procedure Save_MTRRs is + Count : constant Unsigned_64 := Snippets.Read_MSR (16#FE#) and 16#FF#; + I : Natural := 0; + begin + Saved_MTRRs := new MTRR_Store (1 .. Natural (Count * 2) + 11 + 1); + while I <= Natural (Count * 2) - 1 loop + Saved_MTRRs (I + 1) := Snippets.Read_MSR (16#200# + Unsigned_32 (I)); + Saved_MTRRs (I + 2) := Snippets.Read_MSR (16#201# + Unsigned_32 (I)); + I := I + 2; + end loop; + + Saved_MTRRs (Natural (Count * 2) + 1) := Snippets.Read_MSR (16#250#); + Saved_MTRRs (Natural (Count * 2) + 2) := Snippets.Read_MSR (16#258#); + Saved_MTRRs (Natural (Count * 2) + 3) := Snippets.Read_MSR (16#259#); + Saved_MTRRs (Natural (Count * 2) + 4) := Snippets.Read_MSR (16#268#); + Saved_MTRRs (Natural (Count * 2) + 5) := Snippets.Read_MSR (16#269#); + Saved_MTRRs (Natural (Count * 2) + 6) := Snippets.Read_MSR (16#26A#); + Saved_MTRRs (Natural (Count * 2) + 7) := Snippets.Read_MSR (16#26B#); + Saved_MTRRs (Natural (Count * 2) + 8) := Snippets.Read_MSR (16#26C#); + Saved_MTRRs (Natural (Count * 2) + 9) := Snippets.Read_MSR (16#26D#); + Saved_MTRRs (Natural (Count * 2) + 10) := Snippets.Read_MSR (16#26E#); + Saved_MTRRs (Natural (Count * 2) + 11) := Snippets.Read_MSR (16#26F#); + Saved_MTRRs (Natural (Count * 2) + 12) := Snippets.Read_MSR (16#2FF#); + Saved_MTRRs (Natural (Count * 2) + 12) := + Saved_MTRRs (Natural (Count * 2) + 12) and not Shift_Left (1, 11); + end Save_MTRRs; + + procedure Restore_MTRRs is + Count : constant Unsigned_64 := Snippets.Read_MSR (16#FE#) and 16#FF#; + CR0 : constant Unsigned_64 := Snippets.Read_CR0; + CR3 : constant Unsigned_64 := Snippets.Read_CR3; + MTRR : constant Unsigned_64 := Snippets.Read_MSR (16#2FF#); + Temp_CR0 : Unsigned_64; + I : Natural := 0; + begin + Temp_CR0 := (CR0 or Shift_Left (1, 30)) and not Shift_Left (1, 29); + Snippets.Write_CR0 (Temp_CR0); + Snippets.Invalidate_Caches; + Snippets.Write_CR3 (CR3); + Snippets.Write_MSR (16#2FF#, MTRR and not Shift_Left (1, 11)); + + while I <= Natural (Count * 2) - 1 loop + Snippets.Write_MSR (16#200# + Unsigned_32 (I), Saved_MTRRs (I + 1)); + Snippets.Write_MSR (16#201# + Unsigned_32 (I), Saved_MTRRs (I + 2)); + I := I + 2; + end loop; + + Snippets.Write_MSR (16#250#, Saved_MTRRs (Natural (Count * 2) + 1)); + Snippets.Write_MSR (16#258#, Saved_MTRRs (Natural (Count * 2) + 2)); + Snippets.Write_MSR (16#259#, Saved_MTRRs (Natural (Count * 2) + 3)); + Snippets.Write_MSR (16#268#, Saved_MTRRs (Natural (Count * 2) + 4)); + Snippets.Write_MSR (16#269#, Saved_MTRRs (Natural (Count * 2) + 5)); + Snippets.Write_MSR (16#26A#, Saved_MTRRs (Natural (Count * 2) + 6)); + Snippets.Write_MSR (16#26B#, Saved_MTRRs (Natural (Count * 2) + 7)); + Snippets.Write_MSR (16#26C#, Saved_MTRRs (Natural (Count * 2) + 8)); + Snippets.Write_MSR (16#26D#, Saved_MTRRs (Natural (Count * 2) + 9)); + Snippets.Write_MSR (16#26E#, Saved_MTRRs (Natural (Count * 2) + 10)); + Snippets.Write_MSR (16#26F#, Saved_MTRRs (Natural (Count * 2) + 11)); + Snippets.Write_MSR (16#2FF#, Saved_MTRRs (Natural (Count * 2) + 12)); + Snippets.Write_MSR (16#2FF#, MTRR or Shift_Left (1, 11)); + Snippets.Write_CR3 (CR3); + Snippets.Write_CR0 (CR0); + Snippets.Invalidate_Caches; + end Restore_MTRRs; + + procedure Core_Bootstrap (Info : access Limine.SMP_CPU_Info) is + New_Stk : constant Interrupt_Stack_Acc := new Interrupt_Stack; + New_Stk_Top : constant System.Address := New_Stk (New_Stk'Last)'Address; + begin + Init_Core + (Core_Number => Natural (Info.Extra_Arg), + LAPIC_ID => Unsigned_8 (Info.LAPIC_ID), + Stack_Top => Unsigned_64 (To_Integer (New_Stk_Top))); + end Core_Bootstrap; + + procedure Init_Core + (Core_Number : Positive; + LAPIC_ID : Unsigned_8; + Stack_Top : Unsigned_64) + is + Discard : Boolean; + begin + -- Load the global GDT, IDT, mappings, and LAPIC. + GDT.Load_GDT; + IDT.Load_IDT; + Discard := Arch.MMU.Make_Active (Arch.MMU.Kernel_Table); + APIC.Init_Core_LAPIC; + + -- Load several goodies. + Init_Common (Core_Number, Unsigned_32 (LAPIC_ID), Stack_Top); + Restore_MTRRs; + + -- Send the core to idle, waiting for the scheduler to tell it to do + -- something, from here, we lose control. Farewell, core. + Scheduler.Idle_Core; + end Init_Core; + + procedure Init_Common + (Core_Number : Positive; + LAPIC : Unsigned_32; + Stack_Top : Unsigned_64) + is + PAT_MSR : constant := 16#00000277#; + EFER_MSR : constant := 16#C0000080#; + STAR_MSR : constant := 16#C0000081#; + LSTAR_MSR : constant := 16#C0000082#; + FMASK_MSR : constant := 16#C0000084#; + UCET_MSR : constant := 16#000006A0#; + SCET_MSR : constant := 16#000006A2#; + + CR0 : Unsigned_64 := Snippets.Read_CR0; + CR4 : Unsigned_64 := Snippets.Read_CR4; + XCR0 : Unsigned_64 := 0; + PAT : Unsigned_64 := Snippets.Read_MSR (PAT_MSR); + EFER : Unsigned_64 := Snippets.Read_MSR (EFER_MSR); + STAR : Unsigned_64; + LSTAR : Unsigned_64; + FMASK : Unsigned_64; + EAX, EBX, ECX, EDX : Unsigned_32; + + Locals_Addr : constant Unsigned_64 := + Unsigned_64 (To_Integer (Core_Locals (Core_Number)'Address)); + + procedure Syscall_Entry with Import, External_Name => "syscall_entry"; + begin + -- Enable WP and SSE/2. + CR0 := CR0 or Shift_Left (1, 16); + CR0 := (CR0 and (not Shift_Left (1, 2))) or Shift_Left (1, 1); + CR4 := CR4 or Shift_Left (3, 9); + + -- Enable and configure MCE handling. + CR4 := CR4 or Shift_Left (1, 6); + + -- Enable several security features if present. + Snippets.Get_CPUID (7, 0, EAX, EBX, ECX, EDX); + if (ECX and Shift_Left (1, 2)) /= 0 then + CR4 := CR4 or Shift_Left (1, 11); -- UMIP. + end if; + if (EBX and Shift_Left (1, 7)) /= 0 then + CR4 := CR4 or Shift_Left (1, 20); -- SMEP. + end if; + if (EDX and Shift_Left (1, 20)) /= 0 then + Snippets.Write_MSR (UCET_MSR, 2#100#); -- Enable just IBT. + Snippets.Write_MSR (SCET_MSR, 2#100#); -- Enable just IBT. + end if; + + -- Check XSAVE support. + -- XXX: Every core will write to the global locations for data, but that + -- is fine because they will always be the same for all cores. + Snippets.Get_CPUID (1, 0, EAX, EBX, ECX, EDX); + if (ECX and Shift_Left (1, 26)) /= 0 then + Global_Use_XSAVE := True; + CR4 := CR4 or Shift_Left (1, 18); + XCR0 := 2#11#; -- Set xsave to be used for x87 and SSE. + + -- Check and enable AVX support. + if ((ECX and Shift_Left (1, 28)) /= 0) then + XCR0 := XCR0 or Shift_Left (1, 2); + end if; + + -- Check and enable AVX512 foundation support. + Snippets.Get_CPUID (7, 0, EAX, EBX, ECX, EDX); + if ((EBX and Shift_Left (1, 17)) /= 0) then + XCR0 := XCR0 or Shift_Left (2#1#, 5); -- Enable OPMASK. + XCR0 := XCR0 or Shift_Left (2#1#, 6); -- Enable the ZMM regs. + XCR0 := XCR0 or Shift_Left (2#1#, 7); -- Enable more ZMM regs. + end if; + + -- Get the size of the xsave area. + Snippets.Get_CPUID (16#D#, 0, EAX, EBX, ECX, EDX); + Global_FPU_Size := ECX; + + Snippets.Write_CR4 (CR4); + Snippets.Write_XCR (0, XCR0); + else + Global_Use_XSAVE := False; + Global_FPU_Size := 512; + end if; + + -- Enable SYSCALL instructions. + EFER := EFER or 1; + STAR := 16#0033002800000000#; + LSTAR := Unsigned_64 (To_Integer (Syscall_Entry'Address)); + FMASK := Unsigned_64 (not Unsigned_32 (2)); + + -- Initialise the PAT (write-protect / write-combining). + PAT := PAT and (16#FFFFFFFF#); + PAT := PAT or Shift_Left (Unsigned_64 (16#0105#), 32); + + -- Write the final configuration. + Snippets.Write_CR0 (CR0); + Snippets.Write_CR4 (CR4); + Snippets.Write_MSR (PAT_MSR, PAT); + Snippets.Write_MSR (EFER_MSR, EFER); + Snippets.Write_MSR (STAR_MSR, STAR); + Snippets.Write_MSR (LSTAR_MSR, LSTAR); + Snippets.Write_MSR (FMASK_MSR, FMASK); + + -- Prepare the core local structure and set it in GS. + Core_Locals (Core_Number) := + (Self => Core_Locals (Core_Number)'Access, + Number => Core_Number, + LAPIC_ID => LAPIC, + LAPIC_Timer_Hz => APIC.LAPIC_Timer_Calibrate, + Current_Thread => Scheduler.Error_TID, + Current_Process => Userland.Process.Error_PID, + others => <>); + Snippets.Write_GS (Locals_Addr); + Snippets.Write_Kernel_GS (Locals_Addr); + + -- Load the TSS. + Core_Locals (Core_Number).Core_TSS.Stack_Ring0 := + To_Address (Integer_Address (Stack_Top)); + GDT.Load_TSS (Core_Locals (Core_Number).Core_TSS'Address); + end Init_Common; + + function Get_BSP_LAPIC_ID return Unsigned_32 is + EAX, EBX, ECX, EDX : Unsigned_32; + begin + Snippets.Get_CPUID (1, 0, EAX, EBX, ECX, EDX); + return Shift_Right (EBX, 24) and 16#FF#; + end Get_BSP_LAPIC_ID; +end Arch.CPU; diff --git a/source/arch/x86_64-limine/arch-cpu.ads b/source/arch/x86_64-limine/arch-cpu.ads new file mode 100644 index 0000000..5de4dfb --- /dev/null +++ b/source/arch/x86_64-limine/arch-cpu.ads @@ -0,0 +1,89 @@ +-- arch-cpu.ads: CPU management routines. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Userland.Process; +with Scheduler; +with Arch.GDT; +with Arch.Limine; + +package Arch.CPU is + -- Core-local data, that each core holds an own version of. + type Core_Local; + type Core_Local_Acc is access all Core_Local; + type Core_Local is record + -- Do not move the following members used in assembly code. + Self : Core_Local_Acc; -- Here for performance reasons. + Kernel_Stack : Unsigned_64; + User_Stack : Unsigned_64; + -- End of members not to move. + Number : Positive; -- Core number, 1 based. + LAPIC_ID : Unsigned_32; -- LAPIC ID of the core. + LAPIC_Timer_Hz : Unsigned_64; + Core_TSS : Arch.GDT.TSS; + Current_Thread : Scheduler.TID; + Current_Process : Userland.Process.PID; + + Invalidate_Start : System.Address; + Invalidate_End : System.Address; + end record; + for Core_Local use record + Self at 0 range 0 .. 63; + Kernel_Stack at 0 range 64 .. 127; + User_Stack at 0 range 128 .. 191; + end record; + + -- Core locals and the number of cores, used as an index for the former. + type Core_Local_Arr is array (Positive range <>) of aliased Core_Local; + type Core_Local_Arr_Acc is access Core_Local_Arr; + Core_Count : Positive; + Core_Locals : Core_Local_Arr_Acc; + + -- CPU features detected during initialization. + Global_Use_XSAVE : Boolean := False; + Global_FPU_Size : Unsigned_32; + + -- Init the cores and BSP. + procedure Init_Cores; + + -- Get the core local structure of the passed core. + function Get_Local return Core_Local_Acc; + +private + + type MTRR_Store is array (Natural range <>) of Unsigned_64; + type MTRR_Store_Acc is access MTRR_Store; + + -- XXX: All x86-64 systems have MTRR support, so we needn't check whether + -- it's there or not, we just use it. + Saved_MTRRs : MTRR_Store_Acc; + procedure Save_MTRRs; + procedure Restore_MTRRs; + + procedure Core_Bootstrap (Info : access Limine.SMP_CPU_Info) + with Convention => C, Export; + procedure Init_Core + (Core_Number : Positive; + LAPIC_ID : Unsigned_8; + Stack_Top : Unsigned_64) + with Convention => C, Export, External_Name => "init_core"; + procedure Init_Common + (Core_Number : Positive; + LAPIC : Unsigned_32; + Stack_Top : Unsigned_64); + + function Get_BSP_LAPIC_ID return Unsigned_32; +end Arch.CPU; diff --git a/source/arch/x86_64-limine/arch-debug.adb b/source/arch/x86_64-limine/arch-debug.adb new file mode 100644 index 0000000..f1b9f8c --- /dev/null +++ b/source/arch/x86_64-limine/arch-debug.adb @@ -0,0 +1,40 @@ +-- arch-debug.adb: Architecture-specific debug channels. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Devices.Serial; + +package body Arch.Debug is + procedure Read (Message : out Devices.Operation_Data) is + begin + Devices.Serial.Read_COM1 (Message); + end Read; + + procedure Print (Message : Character) is + begin + Devices.Serial.Write_COM1 (Message); + end Print; + + procedure Print (Message : String) is + begin + Devices.Serial.Write_COM1 (Message); + end Print; + + procedure Print (Message : Devices.Operation_Data) is + S : String (1 .. Message'Length) with Import, Address => Message'Address; + begin + Devices.Serial.Write_COM1 (S); + end Print; +end Arch.Debug; diff --git a/source/arch/x86_64-limine/arch-entrypoint.adb b/source/arch/x86_64-limine/arch-entrypoint.adb new file mode 100644 index 0000000..9fa80df --- /dev/null +++ b/source/arch/x86_64-limine/arch-entrypoint.adb @@ -0,0 +1,92 @@ +-- entrypoint.adb: Main function and its closest utilities. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Arch.APIC; +with Arch.ACPI; +with Arch.GDT; +with Arch.HPET; +with Arch.IDT; +with Arch.PIC; +with Arch.PCI; +with Arch.PIT; +with Arch.CPU; +with Lib.Panic; +with Lib.Messages; use Lib.Messages; +with Memory.Physical; +with Kernel_Main; +with Arch.MMU; +with Devices.Serial; +with Arch.Limine; + +package body Arch.Entrypoint is + procedure Bootstrap_Main is + Info : Boot_Information renames Limine.Global_Info; + St1, St2 : Lib.Messages.Translated_String; + Stp_Len : Natural; + begin + -- Initialize architectural state first. + Devices.Serial.Init_COM1; + GDT.Init; + IDT.Init; + + -- Translate the limine protocol into arch-agnostic structures. + Limine.Translate_Proto; + + -- Print the memory map, it is useful at times. + Lib.Messages.Put_Line ("Physical memory map:"); + for E of Info.Memmap (1 .. Info.Memmap_Len) loop + Image (Unsigned_64 (To_Integer (E.Start)), St1, Stp_Len, True); + Image (Unsigned_64 (E.Length), St2, Stp_Len, True); + Lib.Messages.Put_Line (St1 & " + " & St2 & " " & + Boot_Memory_Type'Image (E.MemType)); + end loop; + + -- Initialize the allocators and MMU. + Memory.Physical.Init_Allocator (Info.Memmap (1 .. Info.Memmap_Len)); + if not Arch.MMU.Init (Info.Memmap (1 .. Info.Memmap_Len)) then + Lib.Panic.Hard_Panic ("The VMM could not be initialized"); + end if; + + -- Scan the system's ACPI tables, which are needed for devices like + -- the HPET or IOAPIC. + if not Arch.ACPI.ScanTables then + Lib.Panic.Hard_Panic ("ACPI tables not found"); + end if; + + -- Initialize the core's LAPIC and system's IOAPIC, essential for + -- handling interrupts and IPIs. + PIC.Mask_All; + APIC.Init_LAPIC; + APIC.Init_Core_LAPIC; + if not Arch.APIC.Init_IOAPIC then + Lib.Panic.Hard_Panic ("Could not start IOAPIC"); + end if; + + -- Initialize some system timers for interval counting. + if not Arch.PIT.Init then + Lib.Panic.Hard_Panic ("Could not start PIT"); + end if; + Arch.HPET.Init; + + -- Scan all PCI devices. + PCI.Scan_PCI; + + -- Initialize other cores, and then jump to the freestanding main. + Arch.CPU.Init_Cores; + Kernel_Main.Entrypoint (Info.Cmdline (1 .. Info.Cmdline_Len)); + end Bootstrap_Main; +end Arch.Entrypoint; diff --git a/source/arch/x86_64-limine/arch-entrypoint.ads b/source/arch/x86_64-limine/arch-entrypoint.ads new file mode 100644 index 0000000..f67a55a --- /dev/null +++ b/source/arch/x86_64-limine/arch-entrypoint.ads @@ -0,0 +1,20 @@ +-- entrypoint.ads: Specification of the main function's package. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Arch.Entrypoint is + procedure Bootstrap_Main + with Export, Convention => C, External_Name => "kernel_main"; +end Arch.Entrypoint; diff --git a/source/arch/x86_64-limine/arch-gdt.adb b/source/arch/x86_64-limine/arch-gdt.adb new file mode 100644 index 0000000..add3f28 --- /dev/null +++ b/source/arch/x86_64-limine/arch-gdt.adb @@ -0,0 +1,167 @@ +-- arch-gdt.adb: GDT creation, loading, and manipulation. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Machine_Code; use System.Machine_Code; +with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; +with Lib.Synchronization; + +package body Arch.GDT is + -- Records for the GDT structure and its entries. + type GDT_Entry is record + Limit : Unsigned_16; + Base_Low_16 : Unsigned_16; + Base_Mid_8 : Unsigned_8; + Segment_Access : Unsigned_8; + Granularity : Unsigned_8; + Base_High_8 : Unsigned_8; + end record; + for GDT_Entry use record + Limit at 0 range 0 .. 15; + Base_Low_16 at 0 range 16 .. 31; + Base_Mid_8 at 0 range 32 .. 39; + Segment_Access at 0 range 40 .. 47; + Granularity at 0 range 48 .. 55; + Base_High_8 at 0 range 56 .. 63; + end record; + for GDT_Entry'Size use 64; + + type TSS_Entry is record + Limit : Unsigned_16; + Base_Low_16 : Unsigned_16; + Base_Mid_8 : Unsigned_8; + Flags_1 : Unsigned_8; + Flags_2 : Unsigned_8; + Base_High_8 : Unsigned_8; + Base_Upper_32 : Unsigned_32; + Reserved : Unsigned_32; + end record; + for TSS_Entry use record + Limit at 0 range 0 .. 15; + Base_Low_16 at 0 range 16 .. 31; + Base_Mid_8 at 0 range 32 .. 39; + Flags_1 at 0 range 40 .. 47; + Flags_2 at 0 range 48 .. 55; + Base_High_8 at 0 range 56 .. 63; + Base_Upper_32 at 0 range 64 .. 95; + Reserved at 0 range 96 .. 127; + end record; + for TSS_Entry'Size use 128; + + -- XXX: GDT has 16 and 32 bit entries for the stivale protocol terminal. + -- If the kernel was to move from it, remove them + -- (unless another reason happens). + type GDT_Entries is array (1 .. 9) of GDT_Entry; + type GDT is record + Entries : GDT_Entries; + TSS : TSS_Entry; + end record; + for GDT use record + Entries at 0 range 0 .. 575; + TSS at 0 range 576 .. 703; + end record; + for GDT'Size use 704; + + type GDT_Pointer is record + Size : Unsigned_16; + Address : System.Address; + end record; + for GDT_Pointer use record + Size at 0 range 0 .. 15; + Address at 0 range 16 .. 79; + end record; + for GDT_Pointer'Size use 80; + + -- Global GDT and GDT pointer, the TSS is initialized when needed. + Global_GDT : GDT := ( + Entries => ( + 1 => (0, 0, 0, 0, 0, 0), -- Null. + 2 => (16#FFFF#, 0, 0, 2#10011010#, 0, 0), -- 16-bit kcode. + 3 => (16#FFFF#, 0, 0, 2#10010010#, 0, 0), -- 16-bit kdata. + 4 => (16#FFFF#, 0, 0, 2#10011010#, 2#11001111#, 0), -- 32-bit kcode. + 5 => (16#FFFF#, 0, 0, 2#10010010#, 2#11001111#, 0), -- 32-bit kdata. + 6 => (0, 0, 0, 2#10011010#, 2#00100000#, 0), -- 64-bit kcode. + 7 => (0, 0, 0, 2#10010010#, 0, 0), -- 64-bit kdata. + 8 => (0, 0, 0, 2#11110010#, 0, 0), -- 64-bit udata. + 9 => (0, 0, 0, 2#11111010#, 2#00100000#, 0) -- 64-bit ucode. + ), + TSS => <> + ); + Global_Pointer : constant GDT_Pointer := ( + Size => (Global_GDT'Size / 8) - 1, + Address => Global_GDT'Address + ); + TSS_Mutex : aliased Lib.Synchronization.Binary_Semaphore; + + procedure Init is + begin + Load_GDT; + Lib.Synchronization.Release (TSS_Mutex); + end Init; + + procedure Load_GDT is + begin + -- FS and GS have to be user ones because else when going from ring 0 to + -- 3 they will be zero'd out. This is a quirk of x86, so we make them + -- user now and we just stop worrying. + Asm ("lgdt %0" & LF & HT & + "push %%rax" & LF & HT & + "push %2" & LF & HT & + "lea 1f(%%rip), %%rax" & LF & HT & + "push %%rax" & LF & HT & + "lretq" & LF & HT & + "1:" & LF & HT & + "pop %%rax" & LF & HT & + "mov %1, %%ds" & LF & HT & + "mov %1, %%es" & LF & HT & + "mov %3, %%fs" & LF & HT & + "mov %3, %%gs" & LF & HT & + "mov %1, %%ss" & LF & HT, + Inputs => (GDT_Pointer'Asm_Input ("m", Global_Pointer), + Unsigned_16'Asm_Input ("rm", Kernel_Data64_Segment), + Unsigned_16'Asm_Input ("i", Kernel_Code64_Segment), + Unsigned_16'Asm_Input ("rm", User_Data64_Segment)), + Clobber => "memory", + Volatile => True); + end Load_GDT; + + procedure Load_TSS (Address : System.Address) is + Addr : constant Unsigned_64 := Unsigned_64 (To_Integer (Address)); + Low16 : constant Unsigned_64 := Addr and 16#FFFF#; + Mid8 : constant Unsigned_64 := Shift_Right (Addr, 16) and 16#FF#; + High8 : constant Unsigned_64 := Shift_Right (Addr, 24) and 16#FF#; + Up32 : constant Unsigned_64 := Shift_Right (Addr, 32) and 16#FFFFFFFF#; + begin + Lib.Synchronization.Seize (TSS_Mutex); + + Global_GDT.TSS := ( + Limit => 103, + Base_Low_16 => Unsigned_16 (Low16), + Base_Mid_8 => Unsigned_8 (Mid8), + Flags_1 => 2#10001001#, + Flags_2 => 0, + Base_High_8 => Unsigned_8 (High8), + Base_Upper_32 => Unsigned_32 (Up32), + Reserved => 0 + ); + + Asm ("ltr %0", + Inputs => Unsigned_16'Asm_Input ("rm", TSS_Segment), + Clobber => "memory", + Volatile => True); + + Lib.Synchronization.Release (TSS_Mutex); + end Load_TSS; +end Arch.GDT; diff --git a/source/arch/x86_64-limine/arch-gdt.ads b/source/arch/x86_64-limine/arch-gdt.ads new file mode 100644 index 0000000..0e7a4cb --- /dev/null +++ b/source/arch/x86_64-limine/arch-gdt.ads @@ -0,0 +1,70 @@ +-- arch-gdt.ads: Specification of the GDT utilities. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with Interfaces; use Interfaces; + +package Arch.GDT is + -- Indexes of the corresponding segments in the GDT. + Kernel_Code64_Segment : constant := 16#28#; + Kernel_Data64_Segment : constant := 16#30#; + User_Data64_Segment : constant := 16#38#; + User_Code64_Segment : constant := 16#40#; + TSS_Segment : constant := 16#48#; + + -- Initialize the global GDT and load it on the callee core. + procedure Init; + + -- Load the GDT in the callee core. + procedure Load_GDT; + + -- Load an address on the active TSS of the GDT. + type TSS is record + Unused0 : Unsigned_32; + Stack_Ring0 : System.Address; + Stack_Ring1 : System.Address; + Stack_Ring2 : System.Address; + Unused1 : Unsigned_64; + IST1 : System.Address; + IST2 : System.Address; + IST3 : System.Address; + IST4 : System.Address; + IST5 : System.Address; + IST6 : System.Address; + IST7 : System.Address; + Unused2 : Unsigned_64; + IOPB : Unsigned_32; + end record; + for TSS use record + Unused0 at 0 range 0 .. 31; + Stack_Ring0 at 0 range 32 .. 95; + Stack_Ring1 at 0 range 96 .. 159; + Stack_Ring2 at 0 range 160 .. 223; + Unused1 at 0 range 224 .. 287; + IST1 at 0 range 288 .. 351; + IST2 at 0 range 352 .. 415; + IST3 at 0 range 416 .. 479; + IST4 at 0 range 480 .. 543; + IST5 at 0 range 544 .. 607; + IST6 at 0 range 608 .. 671; + IST7 at 0 range 672 .. 735; + Unused2 at 0 range 736 .. 799; + IOPB at 0 range 800 .. 831; + end record; + for TSS'Size use 832; + + procedure Load_TSS (Address : System.Address); +end Arch.GDT; diff --git a/source/arch/x86_64-limine/arch-hooks.adb b/source/arch/x86_64-limine/arch-hooks.adb new file mode 100644 index 0000000..ffead02 --- /dev/null +++ b/source/arch/x86_64-limine/arch-hooks.adb @@ -0,0 +1,95 @@ +-- arch-hooks.adb: Architecture-specific hooks for several utilities. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Devices.FB; +with Devices.PS2Mouse; +with Devices.PS2Keyboard; +with Devices.PC_Speaker; +with Devices.ATA; +with Devices.SATA; +with Devices.Serial; +with Arch.Snippets; +with Arch.CPU; use Arch.CPU; +with Arch.APIC; +with Arch.Interrupts; +with Interfaces; use Interfaces; +with Devices.i6300ESB; +with Devices.LPT; +with Lib.Messages; +with Devices.Ramdev; +with Devices.HWRNG; +with Arch.Limine; + +package body Arch.Hooks is + function Devices_Hook return Boolean is + begin + return Devices.ATA.Init and then + Devices.FB.Init and then + Devices.HWRNG.Init and then + Devices.i6300ESB.Init and then + Devices.LPT.Init and then + Devices.PC_Speaker.Init and then + Devices.PS2Keyboard.Init and then + Devices.PS2Mouse.Init and then + Devices.SATA.Init and then + Devices.Serial.Init; + end Devices_Hook; + + function PRCTL_Hook (Code : Natural; Arg : System.Address) return Boolean is + Int_Arg : constant Unsigned_64 := Unsigned_64 (To_Integer (Arg)); + Value : Unsigned_64 with Import, Address => Arg; + begin + case Code is + when 1 => Snippets.Write_FS (Int_Arg); + when 2 => Value := Snippets.Read_FS; + when 3 => Snippets.Write_GS (Int_Arg); + when 4 => Value := Snippets.Read_GS; + when others => return False; + end case; + return True; + end PRCTL_Hook; + + procedure Panic_SMP_Hook is + begin + if CPU.Core_Locals /= null then + for I in CPU.Core_Locals.all'Range loop + if I /= CPU.Get_Local.Number then + APIC.LAPIC_Send_IPI + (CPU.Core_Locals (I).LAPIC_ID, Interrupts.Panic_Interrupt); + end if; + end loop; + end if; + + for I in 1 .. 3 loop + Devices.PC_Speaker.Beep (1000); + Devices.PC_Speaker.Beep (500); + end loop; + end Panic_SMP_Hook; + + function Get_Active_Core_Count return Positive is + begin + return Core_Count; + end Get_Active_Core_Count; + + procedure Register_RAM_Files is + begin + if not Devices.Ramdev.Init + (Limine.Global_Info.RAM_Files (1 .. Limine.Global_Info.RAM_Files_Len)) + then + Lib.Messages.Put_Line ("Could not load RAM files"); + end if; + end Register_RAM_Files; +end Arch.Hooks; diff --git a/source/arch/x86_64-limine/arch-hpet.adb b/source/arch/x86_64-limine/arch-hpet.adb new file mode 100644 index 0000000..9d805aa --- /dev/null +++ b/source/arch/x86_64-limine/arch-hpet.adb @@ -0,0 +1,101 @@ +-- arch-hpet.adb: High Precision Event Timer driver. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Memory; use Memory; +with Arch.ACPI; +with Arch.MMU; + +package body Arch.HPET with SPARK_Mode => Off is + HPET_Contents : Virtual_Address; + HPET_Period : Unsigned_64; -- Time in femtoseconds to increment by 1. + + procedure Init is + ACPI_Address : Virtual_Address; + begin + Is_Initialized := False; + + ACPI_Address := ACPI.FindTable (ACPI.HPET_Signature); + if ACPI_Address = Null_Address then + return; + end if; + + declare + Table : ACPI.HPET + with Import, Address => To_Address (ACPI_Address); + HPET : ACPI.HPET_Contents with Import, + Address => To_Address (Table.Address + Memory_Offset); + pragma Volatile (HPET); + begin + if not MMU.Map_Range + (Map => MMU.Kernel_Table, + Physical_Start => To_Address (Table.Address), + Virtual_Start => To_Address (Table.Address + Memory_Offset), + Length => MMU.Page_Size, + Permissions => + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => True, + Can_Execute => False, + Is_Global => True), + Caching => MMU.Uncacheable) + then + return; + end if; + + HPET_Contents := Table.Address + Memory_Offset; + HPET_Period := Shift_Right (HPET.General_Capabilities, 32); + + -- TODO: Check if the HPET is 64 bits, if so, enable 64 bit mode. + -- So far we are mode-agnostic, but we could use a timer upgrade. + -- HPET_Is64 := Shift_Right (HPET.General_Capabilities, 13) and 1; + + -- Disable the HPET by writting 0 the Enable CNF, so we can reset the + -- counter, and then enable again. + HPET.General_Configuration := 0; + HPET.Main_Counter_Value := 0; + HPET.General_Configuration := 1; + end; + Is_Initialized := True; + end Init; + + procedure USleep (Microseconds : Positive) is + begin + NSleep (Microseconds * 1000); + end USleep; + + procedure NSleep (Nanoseconds : Positive) is + -- Reads must be atomic according to spec in 64-bit mode, for 32-bit + -- mode it doesnt hurt either. + HPET : ACPI.HPET_Contents with Address => To_Address (HPET_Contents); + Counter : Unsigned_64 + with Atomic, Address => HPET.Main_Counter_Value'Address; + + FemtoSec : constant Unsigned_64 := Unsigned_64 (Nanoseconds * 1000000); + To_Add : constant Unsigned_64 := FemtoSec / HPET_Period; + Target : constant Unsigned_64 := Counter + To_Add; + begin + if not Is_Initialized then + return; + end if; + + loop + if Counter > Target then + exit; + end if; + end loop; + end NSleep; +end Arch.HPET; diff --git a/source/arch/x86_64-limine/arch-hpet.ads b/source/arch/x86_64-limine/arch-hpet.ads new file mode 100644 index 0000000..a4e38e1 --- /dev/null +++ b/source/arch/x86_64-limine/arch-hpet.ads @@ -0,0 +1,29 @@ +-- arch-hpet.ads: Specification of the HPET driver. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Arch.HPET is + -- True if initialized. + Is_Initialized : Boolean; + + -- Initialize the HPET, if found. + procedure Init; + + -- Loop for the passed microseconds. + procedure USleep (Microseconds : Positive); + + -- Do the same for nanoseconds. + procedure NSleep (Nanoseconds : Positive); +end Arch.HPET; diff --git a/source/arch/x86_64-limine/arch-idt.adb b/source/arch/x86_64-limine/arch-idt.adb new file mode 100644 index 0000000..6a5d9e9 --- /dev/null +++ b/source/arch/x86_64-limine/arch-idt.adb @@ -0,0 +1,183 @@ +-- arch-idt.adb: IDT driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with System; use System; +with System.Machine_Code; use System.Machine_Code; +with Arch.APIC; +with Arch.GDT; +with Arch.Interrupts; + +package body Arch.IDT is + -- Records for the GDT structure and its entries. + Gate_Type_Interrupt : constant := 16#E#; + Gate_Type_Trap : constant := 16#F#; + + type Gate_Value is mod 2 ** 4; + type DPL_Value is mod 2 ** 2; + + type IDT_Entry is record + Offset_Low : Unsigned_16; + Selector : Unsigned_16; + IST : IST_Index; + Gate_Type : Gate_Value; + Zero : Boolean; + DPL : DPL_Value; + Present : Boolean; + Offset_Mid : Unsigned_16; + Offset_High : Unsigned_32; + Reserved_2 : Unsigned_32; + end record; + for IDT_Entry use record + Offset_Low at 0 range 0 .. 15; + Selector at 0 range 16 .. 31; + IST at 0 range 32 .. 39; + Gate_Type at 0 range 40 .. 43; + Zero at 0 range 44 .. 44; + DPL at 0 range 45 .. 46; + Present at 0 range 47 .. 47; + Offset_Mid at 0 range 48 .. 63; + Offset_High at 0 range 64 .. 95; + Reserved_2 at 0 range 96 .. 127; + end record; + for IDT_Entry'Size use 128; + + type IDT_Pointer is record + Size : Unsigned_16; + Address : System.Address; + end record; + for IDT_Pointer use record + Size at 0 range 0 .. 15; + Address at 0 range 16 .. 79; + end record; + for IDT_Pointer'Size use 80; + + -- Global variables for the user IDT and its pointer. + Global_IDT : array (IDT_Index) of IDT_Entry; + Global_Pointer : IDT_Pointer; + + -- Thunk list and the isr table, the thunk list containts a list of thunks + -- to be loaded to the idt that directly call the elements in isr_table. + type Addr_List is array (IDT_Index) of System.Address with Pack; + Thunk_List : Addr_List with Import, External_Name => "interrupt_thunk_list"; + ISR_Table : Addr_List with Export, External_Name => "isr_table"; + + procedure Init is + begin + -- Load the thunks into the actual IDT and default handlers in the + -- ISR list. + for I in IDT_Index loop + Load_IDT_ISR (I, Thunk_List (I)); + Load_ISR (I, Interrupts.Default_ISR_Handler'Address); + end loop; + + -- Load exceptions. + for I in IDT_Index (1) .. IDT_Index (31) loop + Load_ISR (I, Interrupts.Exception_Handler'Address); + end loop; + + -- Some special entries for several hardcoded hardware and syscalls. + Load_ISR (Interrupts.Scheduler_Interrupt, + Interrupts.Scheduler_Handler'Address); + Load_ISR (APIC.LAPIC_Spurious_Entry, + Interrupts.Spurious_Handler'Address); + Load_ISR (Interrupts.Panic_Interrupt, + Interrupts.Panic_Handler'Address); + Load_ISR (Interrupts.Invalidate_Interrupt, + Interrupts.Invalidate_Handler'Address); + + -- Prepare the pointer and load the IDT. + Global_Pointer := ((Global_IDT'Size / 8) - 1, Global_IDT'Address); + Load_IDT; + end Init; + + procedure Load_IDT is + begin + Asm ("lidt %0", + Inputs => IDT_Pointer'Asm_Input ("m", Global_Pointer), + Clobber => "memory", + Volatile => True); + end Load_IDT; + + procedure Load_ISR + (Index : IDT_Index; + Address : System.Address; + Gate_Type : Gate := Gate_Interrupt; + Allow_User : Boolean := False) is + begin + ISR_Table (Index) := Address; + + case Gate_Type is + when Gate_Trap => + Global_IDT (Index).Gate_Type := Gate_Type_Trap; + when Gate_Interrupt => + Global_IDT (Index).Gate_Type := Gate_Type_Interrupt; + end case; + + if Allow_User then + Global_IDT (Index).DPL := 3; + else + Global_IDT (Index).DPL := 0; + end if; + end Load_ISR; + + procedure Load_ISR + (Address : System.Address; + Index : out IRQ_Index; + Success : out Boolean; + Gate_Type : Gate := Gate_Interrupt; + Allow_User : Boolean := False) + is + begin + -- Allocate an interrupt in the IRQ region. + for I in IRQ_Index loop + if ISR_Table (I) = Interrupts.Default_ISR_Handler'Address then + Index := I; + Load_ISR (I, Address, Gate_Type, Allow_User); + Success := True; + return; + end if; + end loop; + + Index := IRQ_Index'First; + Success := False; + end Load_ISR; + + procedure Unload_ISR (Index : IDT_Index) is + begin + ISR_Table (Index) := Interrupts.Default_ISR_Handler'Address; + end Unload_ISR; + + procedure Load_IDT_ISR (Index : IDT_Index; Address : System.Address) is + Addr : constant Unsigned_64 := Unsigned_64 (To_Integer (Address)); + Low16 : constant Unsigned_64 := Addr and 16#FFFF#; + Mid16 : constant Unsigned_64 := Shift_Right (Addr, 16) and 16#FFFF#; + High32 : constant Unsigned_64 := Shift_Right (Addr, 32) and 16#FFFFFFFF#; + begin + Global_IDT (Index) := ( + Offset_Low => Unsigned_16 (Low16), + Selector => GDT.Kernel_Code64_Segment, + IST => 0, + Gate_Type => Gate_Type_Interrupt, + Zero => False, + DPL => 0, + Present => True, + Offset_Mid => Unsigned_16 (Mid16), + Offset_High => Unsigned_32 (High32), + Reserved_2 => 0 + ); + end Load_IDT_ISR; +end Arch.IDT; diff --git a/source/arch/x86_64-limine/arch-idt.ads b/source/arch/x86_64-limine/arch-idt.ads new file mode 100644 index 0000000..369a865 --- /dev/null +++ b/source/arch/x86_64-limine/arch-idt.ads @@ -0,0 +1,48 @@ +-- arch-idt.ads: IDT driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; + +package Arch.IDT is + -- Initialize the global IDT and load it on the callee core. + procedure Init; + + -- Load the IDT in the callee core. + procedure Load_IDT; + + -- Load and unload an ISR into the IDT, either statically or dynamically. + type IST_Index is range 0 .. 7; + type IDT_Index is range 1 .. 256; + subtype IRQ_Index is IDT_Index range 33 .. 256; + type Gate is (Gate_Interrupt, Gate_Trap); + + procedure Load_ISR + (Index : IDT_Index; + Address : System.Address; + Gate_Type : Gate := Gate_Interrupt; + Allow_User : Boolean := False); + procedure Load_ISR + (Address : System.Address; + Index : out IRQ_Index; + Success : out Boolean; + Gate_Type : Gate := Gate_Interrupt; + Allow_User : Boolean := False); + procedure Unload_ISR (Index : IDT_Index); + +private + + procedure Load_IDT_ISR (Index : IDT_Index; Address : System.Address); +end Arch.IDT; diff --git a/source/arch/x86_64-limine/arch-interrupts.adb b/source/arch/x86_64-limine/arch-interrupts.adb new file mode 100644 index 0000000..ce135d1 --- /dev/null +++ b/source/arch/x86_64-limine/arch-interrupts.adb @@ -0,0 +1,430 @@ +-- arch-interrupts.adb: Interrupt utilities. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.APIC; +with Arch.GDT; +with Arch.CPU; +with Arch.Context; +with Arch.MMU; +with Lib.Panic; +with Lib.Messages; +with Scheduler; +with Userland.Syscall; use Userland.Syscall; +with Userland.Memory_Failure; +with Arch.Snippets; use Arch.Snippets; +with Arch.Local; +with Userland.Corefile; +with Userland.Process; + +package body Arch.Interrupts is + procedure Exception_Handler (Num : Integer; State : not null ISR_GPRs_Acc) + is + Len : Natural; + Str : Lib.Messages.Translated_String; + Exception_Text : constant array (0 .. 30) of String (1 .. 3) := + (0 => "#DE", 1 => "#DB", 2 => "???", 3 => "#BP", + 4 => "#OF", 5 => "#BR", 6 => "#UD", 7 => "#NM", + 8 => "#DF", 9 => "???", 10 => "#TS", 11 => "#NP", + 12 => "#SS", 13 => "#GP", 14 => "#PF", 15 => "???", + 16 => "#MF", 17 => "#AC", 18 => "#MC", 19 => "#XM", + 20 => "#VE", 21 => "#CP", 22 => "???", 23 => "???", + 24 => "???", 25 => "???", 26 => "???", 27 => "???", + 28 => "#HV", 29 => "#VC", 30 => "#SX"); + begin + -- If this is a machine check, we need special logic to dump the banks + -- and unconditionally die. + if Num = 18 then + case Process_Machine_Check_Banks is + when Memory_MCE => + Userland.Memory_Failure.Handle_Failure; + when Unrecognized_MCE => + Lib.Panic.Hard_Panic ("MCE has no fixing"); + end case; + end if; + + -- Check whether we have to panic or just exit the thread. + if State.CS = (GDT.User_Code64_Segment or 3) then + Lib.Messages.Put_Line ("Userland " & Exception_Text (Num)); + Userland.Corefile.Generate_Corefile (Context.GP_Context (State.all)); + Do_Exit (Local.Get_Current_Process, + Userland.Process.Signal_Segmentation_Fault); + else + Print_Triple ("RAX", "RBX", "RCX", State.RAX, State.RBX, State.RCX); + Print_Triple ("RDX", "RSI", "RDI", State.RDX, State.RSI, State.RDI); + Print_Triple ("RBP", " R8", " R9", State.RBP, State.R8, State.R9); + Print_Triple ("R10", "R11", "R12", State.R10, State.R11, State.R12); + Print_Triple ("R13", "R14", "R15", State.R13, State.R14, State.R15); + Print_Triple ("RIP", "RSP", "CR2", State.RIP, State.RSP, Read_CR2); + + if Num = 11 or Num = 12 or Num = 13 or Num = 14 or Num = 17 or + Num = 21 or Num = 29 or Num = 30 + then + Lib.Messages.Image (State.Error_Code, Str, Len, True); + Lib.Messages.Put_Line ("Error code: " & Str); + end if; + + Lib.Panic.Hard_Panic ("Kernel " & Exception_Text (Num)); + end if; + end Exception_Handler; + + procedure Syscall_Handler (State : not null ISR_GPRs_Acc) is + Returned : Unsigned_64; + Errno : Errno_Value; + FP_State : Context.FP_Context; + begin + Arch.Snippets.Enable_Interrupts; + + -- Pre syscall hook. + Pre_Syscall_Hook (Context.GP_Context (State.all)); + + -- Call the inner syscall. + -- RAX is the return value, as well as the syscall number. + -- RDX is the returned errno. + -- Arguments can be RDI, RSI, RDX, R12, R8, R9, and R10, in that order. + case State.RAX is + when 0 => + Sys_Exit (State.RDI, Returned, Errno); + when 1 => + Arch_PRCtl (State.RDI, State.RSI, Returned, Errno); + when 2 => + Open + (State.RDI, State.RSI, State.RDX, State.R12, Returned, Errno); + when 3 => + Close (State.RDI, Returned, Errno); + when 4 => + Read (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 5 => + Write (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 6 => + Seek (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 7 => + Mmap (State.RDI, State.RSI, State.RDX, + State.R12, State.R8, State.R9, Returned, Errno); + when 8 => + Munmap (State.RDI, State.RSI, Returned, Errno); + when 9 => + Get_PID (Returned, Errno); + when 10 => + Get_PPID (Returned, Errno); + when 11 => + Exec (State.RDI, State.RSI, State.RDX, + State.R12, State.R8, State.R9, Returned, Errno); + when 12 => + Context.Init_FP_Context (FP_State); + Clone (State.RDI, State.RSI, State.RDX, State.R12, + State.R8, State.R9, State.all, FP_State, Returned, Errno); + Context.Destroy_FP_Context (FP_State); + when 13 => + Wait (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 14 => + Socket (State.RDI, State.RSI, Returned, Errno); + when 15 => + Set_Hostname (State.RDI, State.RSI, Returned, Errno); + when 16 => + Unlink (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 17 => + FStat (State.RDI, State.RSI, State.RDX, State.R12, + State.R8, Returned, Errno); + when 19 => + Chdir (State.RDI, Returned, Errno); + when 20 => + IOCTL (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 21 => + Sched_Yield (Returned, Errno); + when 22 => + Delete_Thread_Cluster (State.RDI, Returned, Errno); + when 23 => + Pipe (State.RDI, State.RSI, Returned, Errno); + when 24 => + Get_UID (Returned, Errno); + when 25 => + Rename (State.RDI, State.RSI, State.RDX, State.R12, + State.R8, State.R9, State.R10, Returned, Errno); + when 26 => + Sysconf (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 27 => + Spawn (State.RDI, State.RSI, State.RDX, State.R12, + State.R8, State.R9, State.R10, Returned, Errno); + when 28 => + Get_TID (Returned, Errno); + when 29 => + Manage_Thread_Cluster (State.RDI, State.RSI, State.RDX, State.R12, + Returned, Errno); + when 30 => + Fcntl (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 31 => + Exit_Thread (Returned, Errno); + when 32 => + Get_Random (State.RDI, State.RSI, Returned, Errno); + when 33 => + MProtect (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 34 => + Sync (Returned, Errno); + when 35 => + Set_MAC_Capabilities (State.RDI, Returned, Errno); + when 36 => + Get_MAC_Capabilities (Returned, Errno); + when 37 => + Add_MAC_Permissions (State.RDI, State.RSI, State.RDX, Returned, + Errno); + when 38 => + Set_MAC_Enforcement (State.RDI, Returned, Errno); + when 39 => + Mount (State.RDI, State.RSI, State.RDX, State.R12, State.R8, + State.R9, Returned, Errno); + when 40 => + Umount (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 41 => + Readlink (State.RDI, State.RSI, State.RDX, + State.R12, State.R8, Returned, Errno); + when 42 => + GetDEnts (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 43 => + MakeNode (State.RDI, State.RSI, State.RDX, State.R12, State.R8, + Returned, Errno); + when 44 => + Truncate (State.RDI, State.RSI, Returned, Errno); + when 45 => + Bind (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 46 => + Symlink + (State.RDI, State.RSI, State.RDX, State.R12, State.R8, State.R9, + Returned, Errno); + when 47 => + Connect (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 48 => + Open_PTY (State.RDI, Returned, Errno); + when 49 => + FSync (State.RDI, State.RSI, Returned, Errno); + when 50 => + Link (State.RDI, State.RSI, State.RDX, State.R12, + State.R8, State.R9, Returned, Errno); + when 51 => + PTrace (State.RDI, State.RSI, State.RDX, State.R12, Returned, + Errno); + when 52 => + Listen (State.RDI, State.RSI, Returned, Errno); + when 53 => + Sys_Accept (State.RDI, State.RSI, State.RDX, State.R12, Returned, + Errno); + when 54 => + Get_RLimit (State.RDI, Returned, Errno); + when 55 => + Set_RLimit (State.RDI, State.RSI, Returned, Errno); + when 56 => + FAccess (State.RDI, State.RSI, State.RDX, State.R12, + State.R8, Returned, Errno); + when 57 => + PPoll (State.RDI, State.RSI, State.RDX, State.R12, Returned, + Errno); + when 58 => + Get_EUID (Returned, Errno); + when 59 => + Set_UIDs (State.RDI, State.RSI, Returned, Errno); + when 60 => + Fchmod (State.RDI, State.RSI, State.RDX, State.R12, + State.R8, Returned, Errno); + when 61 => + Umask (State.RDI, Returned, Errno); + when 62 => + Reboot (State.RDI, State.RSI, Returned, Errno); + when 63 => + Fchown (State.RDI, State.RSI, State.RDX, State.R12, State.R8, + State.R9, Returned, Errno); + when 64 => + PRead (State.RDI, State.RSI, State.RDX, State.R12, Returned, + Errno); + when 65 => + PWrite (State.RDI, State.RSI, State.RDX, State.R12, Returned, + Errno); + when 66 => + Get_Sock_Name (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 67 => + Get_Peer_Name (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 68 => + Shutdown (State.RDI, State.RSI, Returned, Errno); + when 69 => + Futex (State.RDI, State.RSI, State.RDX, State.R12, + Returned, Errno); + when 70 => + Clock (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 71 => + Clock_Nanosleep (State.RDI, State.RSI, State.RDX, State.R12, + Returned, Errno); + when 72 => + Get_RUsage (State.RDI, State.RSI, Returned, Errno); + when 73 => + RecvFrom (State.RDI, State.RSI, State.RDX, State.R12, State.R8, + State.R9, Returned, Errno); + when 74 => + SendTo (State.RDI, State.RSI, State.RDX, State.R12, State.R8, + State.R9, Returned, Errno); + when 75 => + Config_NetInterface (State.RDI, State.RSI, State.RDX, Returned, + Errno); + when 76 => + UTimes (State.RDI, State.RSI, State.RDX, State.R12, State.R8, + Returned, Errno); + when 77 => + Create_TCluster (Returned, Errno); + when 78 => + Switch_TCluster (State.RDI, State.RSI, Returned, Errno); + when 79 => + Sigprocmask (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 80 => + Sigaction (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 81 => + Send_Signal (State.RDI, State.RSI, Returned, Errno); + when 82 => + Get_Prio (State.RDI, State.RSI, Returned, Errno); + when 83 => + Set_Prio (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 84 => + Get_GID (Returned, Errno); + when 85 => + Get_EGID (Returned, Errno); + when 86 => + Set_GIDs (State.RDI, State.RSI, Returned, Errno); + when 87 => + Get_Groups (State.RDI, State.RSI, Returned, Errno); + when 88 => + Set_Groups (State.RDI, State.RSI, Returned, Errno); + when 89 => + TTY_Name (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 90 => + FAdvise + (State.RDI, State.RSI, State.RDX, State.R12, Returned, Errno); + when 91 => + SHMAt (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 92 => + SHMCtl (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 93 => + SHMDt (State.RDI, Returned, Errno); + when 94 => + SHMGet (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 95 => + GetSockOpt + (State.RDI, State.RSI, State.RDX, State.R12, State.R8, + Returned, Errno); + when 96 => + SetSockOpt + (State.RDI, State.RSI, State.RDX, State.R12, State.R8, + Returned, Errno); + when 97 => + Get_Thread_Name (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 98 => + Set_Thread_Name (State.RDI, State.RSI, State.RDX, Returned, Errno); + when 99 => + Failure_Policy (State.RDI, State.RSI, Returned, Errno); + when others => + Userland.Process.Raise_Signal + (Local.Get_Current_Process, + Userland.Process.Signal_Bad_Syscall); + Returned := Unsigned_64'Last; + Errno := Error_Not_Implemented; + end case; + + -- Assign the return values. + State.RAX := Returned; + State.RDX := Unsigned_64 (Errno_Value'Enum_Rep (Errno)); + + -- Post syscall hook. + Post_Syscall_Hook (Context.GP_Context (State.all)); + + Arch.Snippets.Disable_Interrupts; + end Syscall_Handler; + + procedure Scheduler_Handler (Num : Integer; State : not null ISR_GPRs_Acc) + is + pragma Unreferenced (Num); + begin + Arch.APIC.LAPIC_EOI; + Scheduler.Scheduler_ISR (Context.GP_Context (State.all)); + end Scheduler_Handler; + + procedure Panic_Handler is + begin + Snippets.HCF; + end Panic_Handler; + + procedure Invalidate_Handler is + I : constant Positive := CPU.Get_Local.Number; + Final : constant System.Address := CPU.Core_Locals (I).Invalidate_End; + Curr : System.Address := CPU.Core_Locals (I).Invalidate_Start; + begin + while To_Integer (Curr) < To_Integer (Final) loop + Snippets.Invalidate_Page (To_Integer (Curr)); + Curr := Curr + MMU.Page_Size; + end loop; + Arch.APIC.LAPIC_EOI; + end Invalidate_Handler; + + procedure Default_ISR_Handler is + begin + Lib.Messages.Put_Line ("Default ISR triggered"); + Arch.APIC.LAPIC_EOI; + end Default_ISR_Handler; + + procedure Spurious_Handler is + begin + Lib.Messages.Put_Line ("LAPIC Spurious interrupt occured"); + Arch.APIC.LAPIC_EOI; + end Spurious_Handler; + ---------------------------------------------------------------------------- + procedure Print_Triple (N1, N2, N3 : String; V1, V2, V3 : Unsigned_64) is + Discard : Natural; + B1, B2, B3 : Lib.Messages.Translated_String; + begin + Lib.Messages.Image (V1, B1, Discard, True); + Lib.Messages.Image (V2, B2, Discard, True); + Lib.Messages.Image (V3, B3, Discard, True); + Lib.Messages.Put_Line (N1 & " " & B1 (5 .. B1'Last) & " " & + N2 & " " & B2 (5 .. B2'Last) & " " & N3 & " " & B3 (5 .. B3'Last)); + end Print_Triple; + + function Process_Machine_Check_Banks return Machine_Check_Type is + IA32_MCG_CAP_MSR : constant := 16#00000179#; + IA32_MCI_CTL_MSR : constant := 16#00000404#; + + Bank_Count, Bank_Val : Unsigned_64; + Len : Natural; + B1, B2 : Lib.Messages.Translated_String; + begin + Lib.Messages.Put_Line ("The machine encountered a machine check, this"); + Lib.Messages.Put_Line ("is usually indicative of hardware failure, and"); + Lib.Messages.Put_Line ("the operating system is required to stop."); + Lib.Messages.Put_Line ("Please check the values of the MC banks dumped"); + Lib.Messages.Put_Line ("below against processor and hardware manuals."); + + -- Check how many banks we have and say how many, we dont know how far + -- we will get. + Bank_Count := Read_MSR (IA32_MCG_CAP_MSR) and 2#11111111#; + Lib.Messages.Image (Bank_Count, B1, Len, False); + Lib.Messages.Put_Line + ("Found " & B1 (B1'Last - Len + 1 .. B1'Last) & " banks."); + + -- Read them and dump them, they are in intervals of four. + for I in 1 .. Bank_Count loop + Bank_Val := Read_MSR (IA32_MCI_CTL_MSR + ((Unsigned_32 (I) - 1) * 4)); + Lib.Messages.Image (Bank_Val, B2, Len, True); + Lib.Messages.Image (I, B1, Len, False); + Lib.Messages.Put_Line + ("Bank #" & B1 (B1'Last - Len + 1 .. B1'Last) & ": " & B2); + end loop; + + return Unrecognized_MCE; + end Process_Machine_Check_Banks; +end Arch.Interrupts; diff --git a/source/arch/x86_64-limine/arch-interrupts.ads b/source/arch/x86_64-limine/arch-interrupts.ads new file mode 100644 index 0000000..62c3f11 --- /dev/null +++ b/source/arch/x86_64-limine/arch-interrupts.ads @@ -0,0 +1,106 @@ +-- arch-exceptions.ads: Interrupt utilities. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Arch.Interrupts is + -- Passed to every interrupt called ever as an access. + type ISR_GPRs is record + -- Pushed by us. + RAX : Unsigned_64; + RBX : Unsigned_64; + RCX : Unsigned_64; + RDX : Unsigned_64; + RSI : Unsigned_64; + RDI : Unsigned_64; + RBP : Unsigned_64; + R8 : Unsigned_64; + R9 : Unsigned_64; + R10 : Unsigned_64; + R11 : Unsigned_64; + R12 : Unsigned_64; + R13 : Unsigned_64; + R14 : Unsigned_64; + R15 : Unsigned_64; + -- Passed naturaly by the interrupt handler. + Error_Code : Unsigned_64; + RIP : Unsigned_64; + CS : Unsigned_64; + RFLAGS : Unsigned_64; + RSP : Unsigned_64; + SS : Unsigned_64; + end record with Size => 1344; + for ISR_GPRs use record + RAX at 0 range 0 .. 63; + RBX at 0 range 64 .. 127; + RCX at 0 range 128 .. 191; + RDX at 0 range 192 .. 255; + RSI at 0 range 256 .. 319; + RDI at 0 range 320 .. 383; + RBP at 0 range 384 .. 447; + R8 at 0 range 448 .. 511; + R9 at 0 range 512 .. 575; + R10 at 0 range 576 .. 639; + R11 at 0 range 640 .. 703; + R12 at 0 range 704 .. 767; + R13 at 0 range 768 .. 831; + R14 at 0 range 832 .. 895; + R15 at 0 range 896 .. 959; + Error_Code at 0 range 960 .. 1023; + RIP at 0 range 1024 .. 1087; + CS at 0 range 1088 .. 1151; + RFLAGS at 0 range 1152 .. 1215; + RSP at 0 range 1216 .. 1279; + SS at 0 range 1280 .. 1343; + end record; + type ISR_GPRs_Acc is access ISR_GPRs; + + -- Generic handler for exceptions. + procedure Exception_Handler (Num : Integer; State : not null ISR_GPRs_Acc) + with Convention => C; + + -- Entrypoint of the syscall dispatcher. + procedure Syscall_Handler (State : not null ISR_GPRs_Acc) + with Export, Convention => C, External_Name => "syscall_handler"; + + -- Entrypoint for the scheduler handler. + Scheduler_Interrupt : constant := 16#82#; + procedure Scheduler_Handler (Num : Integer; State : not null ISR_GPRs_Acc); + + -- Entrypoint for the scheduler handler. + Panic_Interrupt : constant := 16#83#; + procedure Panic_Handler; + + -- Entrypoint for the scheduler handler. + Invalidate_Interrupt : constant := 16#84#; + procedure Invalidate_Handler; + + -- Default ISR handler. + procedure Default_ISR_Handler; + + -- LAPIC spurious interrupt handling. + procedure Spurious_Handler; + +private + + procedure Print_Triple (N1, N2, N3 : String; V1, V2, V3 : Unsigned_64); + + -- Returns true if memory error. + + type Machine_Check_Type is (Memory_MCE, Unrecognized_MCE); + + function Process_Machine_Check_Banks return Machine_Check_Type; +end Arch.Interrupts; diff --git a/source/arch/x86_64-limine/arch-interruptthunks.S b/source/arch/x86_64-limine/arch-interruptthunks.S new file mode 100644 index 0000000..f5b8009 --- /dev/null +++ b/source/arch/x86_64-limine/arch-interruptthunks.S @@ -0,0 +1,108 @@ +# arch-interruptthunks.S: ASM thunks for handler callbacks. +# Copyright (C) 2021 streaksu +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +.altmacro + +.macro THUNK num +.global interrupt_thunk_\num +interrupt_thunk_\num: +# Push the values in the order of arch-interrupts.ads +# Account for the error codes on the relevant exceptions. +.if \num != 8 && \num != 10 && \num != 11 && \num != 12 && \num != 13 && \num != 14 && \num != 17 && \num != 30 + push $0 +.endif + # Check for the user 64 bit code selector in CS to swap our GS. + cmpq $0x43, 16(%rsp) + jne 1f + swapgs +1: + # Save state. + push %r15 + push %r14 + push %r13 + push %r12 + push %r11 + push %r10 + push %r9 + push %r8 + push %rbp + push %rdi + push %rsi + push %rdx + push %rcx + push %rbx + push %rax + + # Calculate the index on the isr table and call the handler + # using C calling convetion. + cld + mov $\num, %rdi + mov $(\num * 8), %rax + lea isr_table(%rip), %rbx + add %rax, %rbx + mov %rsp, %rsi + xor %rbp, %rbp + call *(%rbx) + + # Pop back state. + pop %rax + pop %rbx + pop %rcx + pop %rdx + pop %rsi + pop %rdi + pop %rbp + pop %r8 + pop %r9 + pop %r10 + pop %r11 + pop %r12 + pop %r13 + pop %r14 + pop %r15 + add $8, %rsp + + # Check for the user 64 bit code selector in CS to swap our GS. + cmpq $0x43, 8(%rsp) # if user + jne 1f + swapgs +1: + iretq +.endm + +.macro thunkaddr num + .quad interrupt_thunk_\num +.endm + +.section .data + +.global interrupt_thunk_list +interrupt_thunk_list: +.set i,0 +.rept 256 + thunkaddr %i + .set i,i+1 +.endr + +.section .text + +.set i,0 +.rept 256 + THUNK %i + .set i,i+1 +.endr + +.section .note.GNU-stack, "", %progbits diff --git a/source/arch/x86_64-limine/arch-limine.adb b/source/arch/x86_64-limine/arch-limine.adb new file mode 100644 index 0000000..4853ca1 --- /dev/null +++ b/source/arch/x86_64-limine/arch-limine.adb @@ -0,0 +1,123 @@ +-- arch-limine.adb: Limine utilities. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; use System; +with Lib; +with Lib.Messages; + +package body Arch.Limine is + Base_Request : Limine.Base_Revision := + (ID_1 => 16#f9562b2d5c95a6c8#, + ID_2 => 16#6a7b384944536bdc#, + Revision => 3) + with Export, Async_Writers; + + function Get_Physical_Address return System.Address is + PhysPonse : Kernel_Address_Response + with Import, Address => Address_Request.Response; + begin + return PhysPonse.Phys_Addr; + end Get_Physical_Address; + + procedure Translate_Proto is + CmdPonse : Kernel_File_Response + with Import, Address => Kernel_File_Request.Response; + Cmdline_Addr : constant System.Address := CmdPonse.Kernel_File.Cmdline; + Cmdline_Len : constant Natural := Lib.C_String_Length (Cmdline_Addr); + Cmdline : String (1 .. Cmdline_Len) with Import, Address => Cmdline_Addr; + + InfoPonse : Bootloader_Info_Response + with Import, Address => Bootloader_Info_Request.Response; + Name_Addr : constant System.Address := InfoPonse.Name_Addr; + Name_Len : constant Natural := Lib.C_String_Length (Name_Addr); + Boot_Name : String (1 .. Name_Len) with Import, Address => Name_Addr; + Vers_Addr : constant System.Address := InfoPonse.Version_Addr; + Vers_Len : constant Natural := Lib.C_String_Length (Vers_Addr); + Boot_Vers : String (1 .. Vers_Len) with Import, Address => Vers_Addr; + + MemPonse : Memmap_Response + with Import, Address => Memmap_Request.Response; + Inner_MMap : constant Memmap_Entry_Arr (1 .. MemPonse.Count) + with Import, Address => MemPonse.Entries; + Type_Entry : Boot_Memory_Type; + begin + Lib.Messages.Put_Line ("Booted by " & Boot_Name & " " & Boot_Vers); + + if Base_Request.Revision /= 0 then + Lib.Messages.Put_Line ("The passed revision was not supported!"); + end if; + + Global_Info.Cmdline (1 .. Cmdline_Len) := Cmdline; + Global_Info.Cmdline_Len := Cmdline_Len; + + -- Translate RAM files. + Global_Info.RAM_Files_Len := 0; + if Modules_Request.Response /= System.Null_Address then + declare + ModPonse : Modules_Response + with Import, Address => Modules_Request.Response; + Inner_Mods : constant Limine_File_Arr (1 .. ModPonse.Mod_Count) + with Import, Address => ModPonse.Modules; + begin + for Ent of Inner_Mods loop + Global_Info.RAM_Files_Len := Global_Info.RAM_Files_Len + 1; + Global_Info.RAM_Files (Global_Info.RAM_Files_Len) := + (Start => Ent.Address, + Length => Storage_Count (Ent.Size)); + end loop; + end; + end if; + + -- Translate memmap. + for Ent of Inner_MMap loop + case Ent.EntryType is + when LIMINE_MEMMAP_USABLE => + Type_Entry := Memory_Free; + when LIMINE_MEMMAP_RESERVED | LIMINE_MEMMAP_FRAMEBUFFER | + LIMINE_MEMMAP_BAD_MEMORY | LIMINE_MEMMAP_BOOTLOADER_RECL => + Type_Entry := Memory_Reserved; + when LIMINE_MEMMAP_ACPI_RECLAIMABLE => + Type_Entry := Memory_ACPI_Reclaimable; + when LIMINE_MEMMAP_ACPI_NVS => + Type_Entry := Memory_ACPI_NVS; + when LIMINE_MEMMAP_KERNEL_AND_MODS => + Type_Entry := Memory_Kernel; + when others => + Lib.Messages.Put_Line ("Unrecognized memory assumed reserved"); + Type_Entry := Memory_Reserved; + end case; + + Global_Info.Memmap_Len := Global_Info.Memmap_Len + 1; + Global_Info.Memmap (Global_Info.Memmap_Len) := + (Start => To_Address (Integer_Address (Ent.Base)), + Length => Storage_Count (Ent.Length), + MemType => Type_Entry); + end loop; + + for I in 1 .. Global_Info.Memmap_Len loop + if Global_Info.Memmap (I).MemType = Memory_Free and + To_Integer (Global_Info.Memmap (I).Start) <= 16#100000# and + Global_Info.Memmap (I).Length > Max_Sub_1MiB_Size + then + Sub_1MiB_Region := Global_Info.Memmap (I).Start; + Global_Info.Memmap (I).Start := + Global_Info.Memmap (I).Start + Max_Sub_1MiB_Size; + Global_Info.Memmap (I).Length := + Global_Info.Memmap (I).Length - Max_Sub_1MiB_Size; + end if; + end loop; + end Translate_Proto; +end Arch.Limine; diff --git a/source/arch/x86_64-limine/arch-limine.ads b/source/arch/x86_64-limine/arch-limine.ads new file mode 100644 index 0000000..a878392 --- /dev/null +++ b/source/arch/x86_64-limine/arch-limine.ads @@ -0,0 +1,293 @@ +-- arch-limine.ads: Limine utilities. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with Interfaces; use Interfaces; + +package Arch.Limine is + -- Global variable holding platform information. + Global_Info : Boot_Information; + + -- Smallest address of the memmap, filled when the proto is translated, + -- since this garbage architecture requires sub 1MiB memory regions for + -- SMP starting. Its fucking stupid. + -- Its meant to be always valid. + Max_Sub_1MiB_Size : constant := 16#1000#; + Sub_1MiB_Region : System.Address; + + -- Get physical address where the kernel is loaded. + function Get_Physical_Address return System.Address; + + -- Translate a multiboot2 header into architecture info. + -- @param Proto Pointer to translate, if null, return cached or panic. + procedure Translate_Proto; + ---------------------------------------------------------------------------- + Limine_Common_Magic_1 : constant := 16#c7b1dd30df4c8b88#; + Limine_Common_Magic_2 : constant := 16#0a82e883a194f07b#; + + type Request_ID is array (1 .. 4) of Unsigned_64; + type Request is record + ID : Request_ID; + Revision : Unsigned_64; + Response : System.Address; + end record with Pack, Volatile; + + type Response is record + Revision : Unsigned_64; + end record with Pack; + + type Base_Revision is record + ID_1 : Unsigned_64; + ID_2 : Unsigned_64; + Revision : Unsigned_64; + end record with Pack, Volatile; + + type Video_Mode is record + Pitch : Unsigned_64; + Width : Unsigned_64; + Height : Unsigned_64; + BPP : Unsigned_16; + Memory_Model : Unsigned_8; + Red_Mask_Size : Unsigned_8; + Red_Mask_Shift : Unsigned_8; + Green_Mask_Size : Unsigned_8; + Green_Mask_Shift : Unsigned_8; + Blue_Mask_Size : Unsigned_8; + Blue_Mask_Shift : Unsigned_8; + end record with Pack; + type Video_Mode_Arr is array (Natural range <>) of Video_Mode; + + type Framebuffer_Padding is array (1 .. 7) of Unsigned_8; + type Framebuffer is record + Address : System.Address; + Width : Unsigned_64; + Height : Unsigned_64; + Pitch : Unsigned_64; + BPP : Unsigned_16; + Memory_Model : Unsigned_8; + Red_Mask_Size : Unsigned_8; + Red_Mask_Shift : Unsigned_8; + Green_Mask_Size : Unsigned_8; + Green_Mask_Shift : Unsigned_8; + Blue_Mask_Size : Unsigned_8; + Blue_Mask_Shift : Unsigned_8; + Unused : Framebuffer_Padding; + EDID_Size : Unsigned_64; + EDID : System.Address; + Mode_Count : Unsigned_64; + Modes : System.Address; + end record with Pack; + type Framebuffer_Acc is access all Framebuffer; + type Framebuffer_Arr is array (Unsigned_64 range <>) of Framebuffer; + + type Framebuffer_Response is record + Base : Response; + Count : Unsigned_64; + Framebuffers : System.Address; + end record with Pack; + + type Limine_File is record + Base : Response; + Address : System.Address; + Size : Unsigned_64; + Path : System.Address; + Cmdline : System.Address; + end record with Pack; + + type Limine_File_Acc is access all Limine_File; + type Limine_File_Arr is array (Unsigned_64 range <>) of Limine_File_Acc; + + -- Address is always virtual!!! + type Kernel_File_Response is record + Base : Response; + Kernel_File : Limine_File_Acc; + end record with Pack; + + type Memmap_Response is record + Base : Response; + Count : Unsigned_64; + Entries : System.Address; + end record with Pack; + + LIMINE_MEMMAP_USABLE : constant := 0; + LIMINE_MEMMAP_RESERVED : constant := 1; + LIMINE_MEMMAP_ACPI_RECLAIMABLE : constant := 2; + LIMINE_MEMMAP_ACPI_NVS : constant := 3; + LIMINE_MEMMAP_BAD_MEMORY : constant := 4; + LIMINE_MEMMAP_BOOTLOADER_RECL : constant := 5; + LIMINE_MEMMAP_KERNEL_AND_MODS : constant := 6; + LIMINE_MEMMAP_FRAMEBUFFER : constant := 7; + + type Memmap_Entry is record + Base : Unsigned_64; + Length : Unsigned_64; + EntryType : Unsigned_64; + end record with Pack; + + type Memmap_Entry_Acc is access all Memmap_Entry; + type Memmap_Entry_Arr is array (Unsigned_64 range <>) of Memmap_Entry_Acc; + + type RSDP_Response is record + Base : Response; + Addr : System.Address; + end record with Pack; + + type Kernel_Address_Response is record + Base : Response; + Phys_Addr : System.Address; + Virt_Addr : System.Address; + end record with Pack; + + SMP_ENABLE_X2APIC : constant := 1; + type SMP_Request is record + Base : Request; + Flags : Unsigned_64; + end record; + + type SMP_Response is record + Base : Response; + Flags : Unsigned_32; + BSP_LAPIC_ID : Unsigned_32; + CPU_Count : Unsigned_64; + CPUs : System.Address; + end record with Pack; + + type RISCV64_SMP_Response is record + Base : Response; + Flags : Unsigned_64; + BSP_Hart_ID : Unsigned_64; + CPU_Count : Unsigned_64; + CPUs : System.Address; + end record with Pack; + + type SMP_CPU_Info is record + Processor_ID : Unsigned_32; + LAPIC_ID : Unsigned_32; + Reserved : Unsigned_64; + Addr : System.Address; + Extra_Arg : Unsigned_64; + end record with Pack; + + type RISCV64_SMP_CPU_Info is record + Processor_ID : Unsigned_64; + Hart_ID : Unsigned_64; + Reserved : Unsigned_64; + Addr : System.Address; + Extra_Arg : Unsigned_64; + end record with Pack; + + type Limine_SMP_Entrypoint + is access procedure (Info : access SMP_CPU_Info); + type Limine_RISCV64_SMP_Entrypoint + is access procedure (Info : access RISCV64_SMP_CPU_Info); + + type CPU_Info_Acc is access all SMP_CPU_Info; + type CPU_Info_Arr is array (Unsigned_64 range <>) of CPU_Info_Acc; + type RISCV64_CPU_Info_Acc + is access all RISCV64_SMP_CPU_Info; + type RISCV64_CPU_Info_Arr + is array (Unsigned_64 range <>) of RISCV64_CPU_Info_Acc; + + type Bootloader_Info_Response is record + Base : Response; + Name_Addr : System.Address; + Version_Addr : System.Address; + end record with Pack; + + type Modules_Response is record + Base : Response; + Mod_Count : Unsigned_64; + Modules : System.Address; + end record with Pack; + + type DTB_Response is record + Base : Response; + DTB_Addr : System.Address; + end record with Pack; + + -- IDs of several kinds of requests. + Framebuffer_ID : constant Request_ID := + (Limine_Common_Magic_1, Limine_Common_Magic_2, + 16#9d5827dcd881dd75#, 16#a3148604f6fab11b#); + + Memmap_ID : constant Request_ID := + (Limine_Common_Magic_1, Limine_Common_Magic_2, + 16#67cf3d9d378a806f#, 16#e304acdfc50c3c62#); + + Kernel_File_ID : constant Request_ID := + (Limine_Common_Magic_1, Limine_Common_Magic_2, + 16#ad97e90e83f1ed67#, 16#31eb5d1c5ff23b69#); + + Kernel_Address_ID : constant Request_ID := + (Limine_Common_Magic_1, Limine_Common_Magic_2, + 16#71ba76863cc55f63#, 16#b2644a48c516a487#); + + Bootloader_Info_ID : constant Request_ID := + (Limine_Common_Magic_1, Limine_Common_Magic_2, + 16#f55038d8e2a1202f#, 16#279426fcf5f59740#); + + SMP_ID : constant Request_ID := + (Limine_Common_Magic_1, Limine_Common_Magic_2, + 16#95a67b819a1b857e#, 16#a0b61b723b6a73e0#); + + Modules_ID : constant Request_ID := + (Limine_Common_Magic_1, Limine_Common_Magic_2, + 16#3e7e279702be32af#, 16#ca1c4f3bd1280cee#); + + DTB_ID : constant Request_ID := + (Limine_Common_Magic_1, Limine_Common_Magic_2, + 16#b40ddb48fb54bac7#, 16#545081493f81ffb7#); + +private + + -- Here lie requests that all limine architectures will depend on, and + -- are used internally for this module. + + -- Response is a pointer to a Bootloader_Info_Response. + Bootloader_Info_Request : Request := + (ID => Bootloader_Info_ID, + Revision => 0, + Response => System.Null_Address) + with Export, Async_Writers; + + -- Response is a pointer to a Kernel_File_Response. + Kernel_File_Request : Request := + (ID => Kernel_File_ID, + Revision => 0, + Response => System.Null_Address) + with Export, Async_Writers; + + -- Response is a pointer to a Memmap_Response. + Memmap_Request : Request := + (ID => Memmap_ID, + Revision => 0, + Response => System.Null_Address) + with Export, Async_Writers; + + -- Response is a pointer to an Kernel_Address_Response. + Address_Request : Request := + (ID => Kernel_Address_ID, + Revision => 0, + Response => System.Null_Address) + with Export, Async_Writers; + + -- Response is a pointer to an Modules_Response. + Modules_Request : Request := + (ID => Modules_ID, + Revision => 0, + Response => System.Null_Address) + with Export, Async_Writers; +end Arch.Limine; diff --git a/source/arch/x86_64-limine/arch-local.adb b/source/arch/x86_64-limine/arch-local.adb new file mode 100644 index 0000000..bed9e6e --- /dev/null +++ b/source/arch/x86_64-limine/arch-local.adb @@ -0,0 +1,96 @@ +-- arch-local.adb: Architecture-specific CPU-local storage. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.CPU; +with Arch.APIC; +with Arch.Snippets; +with Arch.Interrupts; +with Interfaces; use Interfaces; +with System.Machine_Code; use System.Machine_Code; + +package body Arch.Local is + procedure Reschedule_In (Microseconds : Natural) is + begin + Asm ("pushf; cli", Volatile => True); + APIC.LAPIC_Timer_Oneshot ( + Interrupts.Scheduler_Interrupt, + CPU.Get_Local.LAPIC_Timer_Hz, + Unsigned_64 (Microseconds) + ); + Asm ("popf", Volatile => True); + end Reschedule_In; + + procedure Reschedule_ASAP is + begin + -- Force rescheduling by calling the ISR vector directly. + Asm ("pushf; cli", Volatile => True); + APIC.LAPIC_Timer_Stop; + APIC.LAPIC_Send_IPI (CPU.Get_Local.LAPIC_ID, + Interrupts.Scheduler_Interrupt); + Asm ("popf", Volatile => True); + end Reschedule_ASAP; + + function Fetch_TCB return System.Address is + begin + return To_Address (Integer_Address (Snippets.Read_FS)); + end Fetch_TCB; + + procedure Load_TCB (TCB : System.Address) is + begin + Snippets.Write_FS (Unsigned_64 (To_Integer (TCB))); + end Load_TCB; + + procedure Set_Stacks + (Core : Context.Core_Context; + Kernel_Stack : System.Address) + is + begin + CPU.Get_Local.User_Stack := Core; + CPU.Get_Local.Kernel_Stack := Unsigned_64 (To_Integer (Kernel_Stack)); + end Set_Stacks; + + function Get_Current_Thread return Scheduler.TID is + Returned : Scheduler.TID; + begin + Asm ("pushf; cli", Volatile => True); + Returned := CPU.Get_Local.Current_Thread; + Asm ("popf", Volatile => True); + return Returned; + end Get_Current_Thread; + + function Get_Current_Process return Userland.Process.PID is + Returned : Userland.Process.PID; + begin + Asm ("pushf; cli", Volatile => True); + Returned := CPU.Get_Local.Current_Process; + Asm ("popf", Volatile => True); + return Returned; + end Get_Current_Process; + + procedure Set_Current_Thread (Thread : Scheduler.TID) is + begin + Asm ("pushf; cli", Volatile => True); + CPU.Get_Local.Current_Thread := Thread; + Asm ("popf", Volatile => True); + end Set_Current_Thread; + + procedure Set_Current_Process (Proc : Userland.Process.PID) is + begin + Asm ("pushf; cli", Volatile => True); + CPU.Get_Local.Current_Process := Proc; + Asm ("popf", Volatile => True); + end Set_Current_Process; +end Arch.Local; diff --git a/source/arch/x86_64-limine/arch-mmu.adb b/source/arch/x86_64-limine/arch-mmu.adb new file mode 100644 index 0000000..c8030fc --- /dev/null +++ b/source/arch/x86_64-limine/arch-mmu.adb @@ -0,0 +1,743 @@ +-- arch-mmu.adb: Architecture-specific MMU code. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces.C; +with Ada.Unchecked_Deallocation; +with Lib.Atomic; +with Arch.Snippets; +with Arch.CPU; use Arch.CPU; +with Arch.APIC; +with Arch.Interrupts; +with Arch.Local; +with Userland.Process; use Userland.Process; +with Memory.Physical; +with Arch.Limine; + +package body Arch.MMU is + -- Bits in the 4K page entries. + Page_P : constant Unsigned_64 := Shift_Left (1, 0); + Page_RW : constant Unsigned_64 := Shift_Left (1, 1); + Page_U : constant Unsigned_64 := Shift_Left (1, 2); + Page_PWT : constant Unsigned_64 := Shift_Left (1, 3); + Page_PCD : constant Unsigned_64 := Shift_Left (1, 4); + Page_PAT : constant Unsigned_64 := Shift_Left (1, 7); + Page_G : constant Unsigned_64 := Shift_Left (1, 8); + Page_NX : constant Unsigned_64 := Shift_Left (1, 63); + + -- Global statistics. + function Atomic_Load_Size is new Lib.Atomic.Atomic_Load (Memory.Size); + function Atomic_Add_Size is new Lib.Atomic.Atomic_Fetch_Add (Memory.Size); + function Atomic_Sub_Size is new Lib.Atomic.Atomic_Fetch_Sub (Memory.Size); + Global_Kernel_Usage : Memory.Size := 0; + Global_Table_Usage : Memory.Size := 0; + + function Init (Memmap : Arch.Boot_Memory_Map) return Boolean is + NX_Flags : constant Page_Permissions := + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => True, + Can_Execute => False, + Is_Global => True); + X_Flags : constant Page_Permissions := + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => True, + Can_Execute => True, + Is_Global => True); + RX_Flags : constant Page_Permissions := + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => False, + Can_Execute => True, + Is_Global => True); + R_Flags : constant Page_Permissions := + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => False, + Can_Execute => False, + Is_Global => True); + + First_MiB : constant := 16#000100000#; + + -- Start of sections for correct permission loading. + text_start : Character with Import, Convention => C; + text_end : Character with Import, Convention => C; + rodata_start : Character with Import, Convention => C; + rodata_end : Character with Import, Convention => C; + data_start : Character with Import, Convention => C; + data_end : Character with Import, Convention => C; + TSAddr : constant Integer_Address := To_Integer (text_start'Address); + OSAddr : constant Integer_Address := To_Integer (rodata_start'Address); + DSAddr : constant Integer_Address := To_Integer (data_start'Address); + Phys : constant Integer_Address := + To_Integer (Limine.Get_Physical_Address); + begin + -- Initialize the kernel pagemap. + MMU.Kernel_Table := new Page_Table' + (PML4_Level => (others => 0), + Mutex => Lib.Synchronization.Unlocked_Semaphore, + Map_Ranges_Root => null); + + -- Map the first 4KiB - 1 MiB not NX, because we have the smp bootstrap + -- there and else hell will break loose. + if not Inner_Map_Range + (Map => Kernel_Table, + Physical_Start => To_Address (Page_Size), + Virtual_Start => To_Address (Page_Size), + Length => First_MiB - Page_Size, + Permissions => X_Flags, + Caching => Write_Back) + then + return False; + end if; + + -- Map the memmap memory to the memory window and identity + for E of Memmap loop + if not Inner_Map_Range + (Map => Kernel_Table, + Physical_Start => To_Address (To_Integer (E.Start)), + Virtual_Start => To_Address (To_Integer (E.Start) + + Memory_Offset), + Length => Storage_Offset (E.Length), + Permissions => NX_Flags, + Caching => Write_Back) + then + return False; + end if; + end loop; + + -- Map the kernel sections. + if not Inner_Map_Range + (Map => Kernel_Table, + Physical_Start => To_Address (TSAddr - Kernel_Offset + Phys), + Virtual_Start => text_start'Address, + Length => text_end'Address - text_start'Address, + Permissions => RX_Flags, + Caching => Write_Back) or + not Inner_Map_Range + (Map => Kernel_Table, + Physical_Start => To_Address (OSAddr - Kernel_Offset + Phys), + Virtual_Start => rodata_start'Address, + Length => rodata_end'Address - rodata_start'Address, + Permissions => R_Flags, + Caching => Write_Back) or + not Inner_Map_Range + (Map => Kernel_Table, + Physical_Start => To_Address (DSAddr - Kernel_Offset + Phys), + Virtual_Start => data_start'Address, + Length => data_end'Address - data_start'Address, + Permissions => NX_Flags, + Caching => Write_Back) + then + return False; + end if; + + -- Update the stats we can update now and unlock. + Global_Kernel_Usage := + Memory.Size (text_end'Address - text_start'Address) + + Memory.Size (rodata_end'Address - rodata_start'Address) + + Memory.Size (data_end'Address - data_start'Address); + + -- Load the kernel table at last. + return Make_Active (Kernel_Table); + end Init; + + function Fork_Table (Map : Page_Table_Acc) return Page_Table_Acc is + type Page_Data is array (Storage_Count range <>) of Unsigned_8; + + Addr : System.Address; + Curr_Range : Mapping_Range_Acc := Map.Map_Ranges_Root; + Success : Boolean; + Result : Page_Table_Acc := new Page_Table' + (PML4_Level => (others => 0), + Mutex => Lib.Synchronization.Unlocked_Semaphore, + Map_Ranges_Root => null); + begin + Lib.Synchronization.Seize (Map.Mutex); + + -- Clone the higher half, which is the same in all maps. + Result.PML4_Level (257 .. 512) := Map.PML4_Level (257 .. 512); + + -- Duplicate the rest of maps, which are mostly going to be lower half. + while Curr_Range /= null loop + if Curr_Range.Is_Allocated then + Map_Allocated_Range + (Map => Result, + Physical_Start => Addr, + Virtual_Start => Curr_Range.Virtual_Start, + Length => Curr_Range.Length, + Permissions => Curr_Range.Flags, + Success => Success); + if not Success then + Destroy_Table (Result); + goto Cleanup; + end if; + + declare + New_Data : Page_Data (1 .. Curr_Range.Length) + with Import, Address => Addr; + Original_Data : Page_Data (1 .. Curr_Range.Length) + with Import, Address => To_Address + (To_Integer (Curr_Range.Physical_Start) + Memory_Offset); + begin + New_Data := Original_Data; + end; + else + if not Map_Range + (Map => Result, + Physical_Start => Curr_Range.Physical_Start, + Virtual_Start => Curr_Range.Virtual_Start, + Length => Curr_Range.Length, + Permissions => Curr_Range.Flags) + then + Destroy_Table (Result); + goto Cleanup; + end if; + end if; + + Curr_Range := Curr_Range.Next; + end loop; + + <> + Lib.Synchronization.Release (Map.Mutex); + return Result; + end Fork_Table; + + procedure Destroy_Table (Map : in out Page_Table_Acc) is + procedure F is new Ada.Unchecked_Deallocation + (Page_Table, Page_Table_Acc); + procedure F is new Ada.Unchecked_Deallocation + (Mapping_Range, Mapping_Range_Acc); + Last_Range : Mapping_Range_Acc; + Curr_Range : Mapping_Range_Acc := Map.Map_Ranges_Root; + Discard : Memory.Size; + begin + Lib.Synchronization.Seize (Map.Mutex); + while Curr_Range /= null loop + if Curr_Range.Is_Allocated then + Physical.Free + (Interfaces.C.size_t (To_Integer (Curr_Range.Physical_Start))); + end if; + Last_Range := Curr_Range; + Curr_Range := Curr_Range.Next; + F (Last_Range); + end loop; + + for L3 of Map.PML4_Level (1 .. 256) loop + declare + A3 : constant Integer_Address := Clean_Entry (L3); + PML3 : PML4 + with Import, Address => To_Address (Memory_Offset + A3); + begin + if (L3 and Page_P) /= 0 then + for L2 of PML3 loop + declare + A2 : constant Integer_Address := Clean_Entry (L2); + PML2 : PML4 with Import, + Address => To_Address (Memory_Offset + A2); + begin + if (L2 and Page_P) /= 0 then + for L1 of PML2 loop + Memory.Physical.Free + (Interfaces.C.size_t (Clean_Entry (L1))); + end loop; + end if; + Memory.Physical.Free (Interfaces.C.size_t (A2)); + end; + end loop; + end if; + Discard := Atomic_Sub_Size + (Global_Table_Usage'Address, + PML4'Size / 8); + Memory.Physical.Free (Interfaces.C.size_t (A3)); + end; + end loop; + F (Map); + end Destroy_Table; + + function Make_Active (Map : Page_Table_Acc) return Boolean is + Val : constant Unsigned_64 := + Unsigned_64 (To_Integer (Map.PML4_Level'Address) - Memory_Offset); + begin + if Arch.Snippets.Read_CR3 /= Val then + Arch.Snippets.Write_CR3 (Val); + end if; + return True; + end Make_Active; + + procedure Translate_Address + (Map : Page_Table_Acc; + Virtual : System.Address; + Length : Storage_Count; + Physical : out System.Address; + Is_Mapped : out Boolean; + Is_User_Accessible : out Boolean; + Is_Readable : out Boolean; + Is_Writeable : out Boolean; + Is_Executable : out Boolean) + is + Virt : Virtual_Address := To_Integer (Virtual); + Final : constant Virtual_Address := Virt + Virtual_Address (Length); + Page_Addr : Virtual_Address; + First_Iter : Boolean := True; + begin + Lib.Synchronization.Seize (Map.Mutex); + Physical := System.Null_Address; + Is_Mapped := False; + Is_User_Accessible := False; + Is_Readable := False; + Is_Writeable := False; + Is_Executable := False; + + while Virt < Final loop + Page_Addr := Get_Page (Map, Virt, False); + declare + Page : Unsigned_64 with Address => To_Address (Page_Addr), Import; + begin + if First_Iter then + if Page_Addr /= 0 then + Physical := To_Address (Clean_Entry (Page)); + Is_Mapped := (Page and Page_P) /= 0; + Is_User_Accessible := (Page and Page_U) /= 0; + Is_Readable := True; + Is_Writeable := (Page and Page_RW) /= 0; + Is_Executable := (Page and Page_NX) = 0; + end if; + First_Iter := False; + elsif Page_Addr = 0 or else + (Is_Mapped and ((Page and Page_P) = 0)) or else + (Is_User_Accessible and ((Page and Page_U) = 0)) or else + (Is_Writeable and ((Page and Page_RW) = 0)) or else + (Is_Executable and ((Page and Page_NX) /= 0)) + then + Physical := System.Null_Address; + Is_Mapped := False; + Is_User_Accessible := False; + Is_Readable := False; + Is_Writeable := False; + Is_Executable := False; + exit; + end if; + end; + Virt := Virt + Page_Size; + end loop; + + Lib.Synchronization.Release (Map.Mutex); + end Translate_Address; + + function Map_Range + (Map : Page_Table_Acc; + Physical_Start : System.Address; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Caching : Caching_Model := Write_Back) return Boolean + is + Last_Range : Mapping_Range_Acc; + Curr_Range : Mapping_Range_Acc := Map.Map_Ranges_Root; + Success : Boolean := False; + begin + Lib.Synchronization.Seize (Map.Mutex); + + while Curr_Range /= null loop + if Curr_Range.Virtual_Start <= Virtual_Start and + Curr_Range.Virtual_Start + Length >= Virtual_Start + Length + then + goto Ret; + end if; + + Last_Range := Curr_Range; + Curr_Range := Curr_Range.Next; + end loop; + + Curr_Range := new Mapping_Range' + (Next => null, + Is_Allocated => False, + Virtual_Start => Virtual_Start, + Physical_Start => Physical_Start, + Length => Length, + Flags => Permissions); + if Map.Map_Ranges_Root = null then + Map.Map_Ranges_Root := Curr_Range; + else + Last_Range.Next := Curr_Range; + end if; + + Success := Inner_Map_Range + (Map => Map, + Physical_Start => Physical_Start, + Virtual_Start => Virtual_Start, + Length => Length, + Permissions => Permissions, + Caching => Caching); + + <> + Lib.Synchronization.Release (Map.Mutex); + return Success; + end Map_Range; + + procedure Map_Allocated_Range + (Map : Page_Table_Acc; + Physical_Start : out System.Address; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Success : out Boolean; + Caching : Caching_Model := Write_Back) + is + Addr : constant Virtual_Address := + Memory.Physical.Alloc (Interfaces.C.size_t (Length)); + Allocated : array (1 .. Length) of Unsigned_8 + with Import, Address => To_Address (Addr); + Last_Range : Mapping_Range_Acc; + Curr_Range : Mapping_Range_Acc := Map.Map_Ranges_Root; + begin + Success := False; + Lib.Synchronization.Seize (Map.Mutex); + + while Curr_Range /= null loop + if Curr_Range.Virtual_Start <= Virtual_Start and + Curr_Range.Virtual_Start + Length >= Virtual_Start + Length + then + goto Ret; + end if; + + Last_Range := Curr_Range; + Curr_Range := Curr_Range.Next; + end loop; + + Curr_Range := new Mapping_Range' + (Next => null, + Is_Allocated => True, + Virtual_Start => Virtual_Start, + Physical_Start => To_Address (Addr - Memory.Memory_Offset), + Length => Length, + Flags => Permissions); + if Map.Map_Ranges_Root = null then + Map.Map_Ranges_Root := Curr_Range; + else + Last_Range.Next := Curr_Range; + end if; + + Success := Inner_Map_Range + (Map => Map, + Physical_Start => To_Address (Addr - Memory.Memory_Offset), + Virtual_Start => Virtual_Start, + Length => Length, + Permissions => Permissions, + Caching => Caching); + + <> + if Success then + Allocated := (others => 0); + Physical_Start := To_Address (Addr); + else + Memory.Physical.Free (Interfaces.C.size_t (Addr)); + Physical_Start := System.Null_Address; + end if; + Lib.Synchronization.Release (Map.Mutex); + end Map_Allocated_Range; + + function Remap_Range + (Map : Page_Table_Acc; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Caching : Caching_Model := Write_Back) return Boolean + is + Flags : constant Unsigned_64 := Flags_To_Bitmap (Permissions, Caching); + Virt : Virtual_Address := To_Integer (Virtual_Start); + Final : constant Virtual_Address := Virt + Virtual_Address (Length); + Addr : Virtual_Address; + Curr_Range : Mapping_Range_Acc := Map.Map_Ranges_Root; + Success : Boolean := False; + begin + Lib.Synchronization.Seize (Map.Mutex); + + while Curr_Range /= null loop + if Curr_Range.Virtual_Start = Virtual_Start and + Curr_Range.Length = Length + then + Curr_Range.Flags := Permissions; + goto Actually_Remap; + end if; + + Curr_Range := Curr_Range.Next; + end loop; + goto Ret; + + <> + while Virt < Final loop + Addr := Get_Page (Map, Virt, False); + + declare + Entry_Body : Unsigned_64 with Address => To_Address (Addr), Import; + begin + if Addr /= 0 then + Entry_Body := Unsigned_64 (Clean_Entry (Entry_Body)) or Flags; + end if; + end; + + Virt := Virt + Page_Size; + end loop; + Flush_Global_TLBs (Virtual_Start, Length); + Success := True; + + <> + Lib.Synchronization.Release (Map.Mutex); + return Success; + end Remap_Range; + + function Unmap_Range + (Map : Page_Table_Acc; + Virtual_Start : System.Address; + Length : Storage_Count) return Boolean + is + procedure F is new Ada.Unchecked_Deallocation + (Mapping_Range, Mapping_Range_Acc); + + Virt : Virtual_Address := To_Integer (Virtual_Start); + Final : constant Virtual_Address := Virt + Virtual_Address (Length); + Addr : Virtual_Address; + Success : Boolean := False; + Last_Range : Mapping_Range_Acc := null; + Curr_Range : Mapping_Range_Acc := Map.Map_Ranges_Root; + begin + Lib.Synchronization.Seize (Map.Mutex); + + while Curr_Range /= null loop + if Curr_Range.Virtual_Start = Virtual_Start and + Curr_Range.Length = Length + then + if Curr_Range.Is_Allocated then + Physical.Free (Interfaces.C.size_t + (To_Integer (Curr_Range.Physical_Start))); + end if; + goto Actually_Unmap; + end if; + + Last_Range := Curr_Range; + Curr_Range := Curr_Range.Next; + end loop; + goto Ret; + + <> + if Last_Range /= null then + Last_Range.Next := Curr_Range.Next; + else + Map.Map_Ranges_Root := null; + end if; + F (Curr_Range); + + while Virt < Final loop + Addr := Get_Page (Map, Virt, False); + + declare + Entry_Body : Unsigned_64 with Address => To_Address (Addr), Import; + begin + if Addr /= 0 then + Entry_Body := Entry_Body and not Page_P; + end if; + end; + Virt := Virt + Page_Size; + end loop; + Flush_Global_TLBs (Virtual_Start, Length); + Success := True; + + <> + Lib.Synchronization.Release (Map.Mutex); + return Success; + end Unmap_Range; + + function Get_User_Mapped_Size (Map : Page_Table_Acc) return Unsigned_64 is + Value : Unsigned_64 := 0; + Curr_Range : Mapping_Range_Acc := Map.Map_Ranges_Root; + begin + Lib.Synchronization.Seize (Map.Mutex); + while Curr_Range /= null loop + Value := Value + Unsigned_64 (Curr_Range.Length); + Curr_Range := Curr_Range.Next; + end loop; + Lib.Synchronization.Release (Map.Mutex); + return Value; + end Get_User_Mapped_Size; + + procedure Get_Statistics (Stats : out Virtual_Statistics) is + Val1, Val2 : Memory.Size; + begin + Val1 := Atomic_Load_Size (Global_Kernel_Usage'Address); + Val2 := Atomic_Load_Size (Global_Table_Usage'Address); + Stats := (Val1, Val2, 0); + end Get_Statistics; + ---------------------------------------------------------------------------- + function Clean_Entry (Entry_Body : Unsigned_64) return Physical_Address is + begin + return Physical_Address (Entry_Body and 16#FFFFFFF000#); + end Clean_Entry; + + function Get_Next_Level + (Current_Level : Physical_Address; + Index : Unsigned_64; + Create_If_Not_Found : Boolean) return Physical_Address + is + Entry_Addr : constant Virtual_Address := + Current_Level + Memory_Offset + Physical_Address (Index * 8); + Entry_Body : Unsigned_64 with Address => To_Address (Entry_Addr), Import; + Discard : Memory.Size; + begin + -- Check whether the entry is present. + if (Entry_Body and Page_P) /= 0 then + return Clean_Entry (Entry_Body); + elsif Create_If_Not_Found then + -- Allocate and put some default flags. + declare + New_Entry : constant PML4_Acc := new PML4'(others => 0); + New_Entry_Addr : constant Physical_Address := + To_Integer (New_Entry.all'Address) - Memory_Offset; + begin + Discard := Atomic_Add_Size + (Global_Table_Usage'Address, + PML4'Size / 8); + Entry_Body := Unsigned_64 (New_Entry_Addr) or Page_P or Page_U or + Page_RW; + return New_Entry_Addr; + end; + end if; + return Memory.Null_Address; + end Get_Next_Level; + + function Get_Page + (Map : Page_Table_Acc; + Virtual : Virtual_Address; + Allocate : Boolean) return Virtual_Address + is + Addr : constant Unsigned_64 := Unsigned_64 (Virtual); + PML4_Entry : constant Unsigned_64 := + Shift_Right (Addr and Shift_Left (16#1FF#, 39), 39); + PML3_Entry : constant Unsigned_64 := + Shift_Right (Addr and Shift_Left (16#1FF#, 30), 30); + PML2_Entry : constant Unsigned_64 := + Shift_Right (Addr and Shift_Left (16#1FF#, 21), 21); + PML1_Entry : constant Unsigned_64 := + Shift_Right (Addr and Shift_Left (16#1FF#, 12), 12); + Addr4 : constant Physical_Address := + To_Integer (Map.PML4_Level'Address) - Memory_Offset; + Addr3, Addr2, Addr1 : Physical_Address := Memory.Null_Address; + begin + -- Find the entries. + Addr3 := Get_Next_Level (Addr4, PML4_Entry, Allocate); + if Addr3 = Memory.Null_Address then + goto Error_Return; + end if; + Addr2 := Get_Next_Level (Addr3, PML3_Entry, Allocate); + if Addr2 = Memory.Null_Address then + goto Error_Return; + end if; + Addr1 := Get_Next_Level (Addr2, PML2_Entry, Allocate); + if Addr1 = Memory.Null_Address then + goto Error_Return; + end if; + return Addr1 + Memory_Offset + (Physical_Address (PML1_Entry) * 8); + + <> + return Memory.Null_Address; + end Get_Page; + + function Inner_Map_Range + (Map : Page_Table_Acc; + Physical_Start : System.Address; + Virtual_Start : System.Address; + Length : Storage_Count; + Permissions : Page_Permissions; + Caching : Caching_Model) return Boolean + is + Flags : constant Unsigned_64 := Flags_To_Bitmap (Permissions, Caching); + Virt : Virtual_Address := To_Integer (Virtual_Start); + Phys : Virtual_Address := To_Integer (Physical_Start); + Final : constant Virtual_Address := Virt + Virtual_Address (Length); + Addr : Virtual_Address; + begin + while Virt < Final loop + Addr := Get_Page (Map, Virt, True); + + declare + Entry_Body : Unsigned_64 with Address => To_Address (Addr), Import; + begin + Entry_Body := Unsigned_64 (Phys) or Flags; + end; + + Virt := Virt + Page_Size; + Phys := Phys + Page_Size; + end loop; + return True; + end Inner_Map_Range; + + function Flags_To_Bitmap + (Perm : Page_Permissions; + Caching : Caching_Model) return Unsigned_64 + is + Result : Unsigned_64; + begin + Result := + (if Perm.Can_Execute then 0 else Page_NX) or + (if Perm.Can_Write then Page_RW else 0) or + (if Perm.Is_Global then Page_G else 0) or + (if Perm.Is_User_Accesible then Page_U else 0) or + Page_P; + + case Caching is + when Write_Back => null; + when Write_Through => Result := Result or Page_PWT; + when Write_Combining => Result := Result or Page_PAT or Page_PWT; + when Uncacheable => Result := Result or Page_PWT or Page_PCD; + end case; + + return Result; + end Flags_To_Bitmap; + + procedure Flush_Global_TLBs (Addr : System.Address; Len : Storage_Count) is + Final : constant System.Address := Addr + Len; + Curr : System.Address := Addr; + Current_Proc : Userland.Process.PID; + begin + -- First, invalidate for ourselves. + while To_Integer (Curr) < To_Integer (Final) loop + Snippets.Invalidate_Page (To_Integer (Curr)); + Curr := Curr + Page_Size; + end loop; + + -- If we are running on a process, and said process is running with more + -- than one thread, we need to invalidate using funky IPIs. + if CPU.Core_Locals /= null then + Current_Proc := Local.Get_Current_Process; + if Current_Proc = Error_PID or else + Userland.Process.Get_Thread_Count (Current_Proc) < 2 + then + return; + end if; + + for I in CPU.Core_Locals.all'Range loop + if I /= CPU.Get_Local.Number then + CPU.Core_Locals (I).Invalidate_Start := Addr; + CPU.Core_Locals (I).Invalidate_End := Final; + APIC.LAPIC_Send_IPI + (CPU.Core_Locals (I).LAPIC_ID, + Interrupts.Invalidate_Interrupt); + end if; + end loop; + end if; + end Flush_Global_TLBs; +end Arch.MMU; diff --git a/source/arch/x86_64-limine/arch-pci.adb b/source/arch/x86_64-limine/arch-pci.adb new file mode 100644 index 0000000..af90f4a --- /dev/null +++ b/source/arch/x86_64-limine/arch-pci.adb @@ -0,0 +1,368 @@ +-- arch-pci.adb: PCI bus driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Snippets; +with Lib.Panic; +with Arch.CPU; + +package body Arch.PCI is + -- PCI configuration space starts at this IO Port addresess. + PCI_Config_Address : constant := 16#CF8#; + PCI_Config_Data : constant := 16#CFC#; + + -- Maximum number of different PCI entities. + PCI_Max_Function : constant Unsigned_8 := 7; + PCI_Max_Slot : constant Unsigned_8 := 31; + + PCI_Registry : PCI_Registry_Entry_Acc := null; + + procedure Scan_PCI is + Root_Bus, Host_Bridge : PCI_Device; + Success : Boolean; + begin + Fetch_Device (0, 0, 0, Root_Bus, Success); + if not Success then + Lib.Panic.Hard_Panic ("Could not read root bus"); + end if; + + if (Read32 (Root_Bus, 16#C#) and 16#800000#) = 0 then + Check_Bus (0); + else + for I in 0 .. PCI_Max_Function loop + Fetch_Device (0, 0, I, Host_Bridge, Success); + if Success then + if Read32 (Host_Bridge, 0) /= 16#FFFFFFFF# then + Check_Bus (I); + end if; + end if; + end loop; + end if; + end Scan_PCI; + + function Enumerate_Devices + (Device_Class : Unsigned_8; + Subclass : Unsigned_8; + Prog_If : Unsigned_8) return Natural + is + Idx : Natural := 0; + Temp : PCI_Registry_Entry_Acc := PCI_Registry; + begin + loop + if Temp.Dev.Device_Class = Device_Class and + Temp.Dev.Subclass = Subclass and + Temp.Dev.Prog_If = Prog_If + then + Idx := Idx + 1; + end if; + + if Temp.Next /= null then + Temp := Temp.Next; + else + exit; + end if; + end loop; + + return Idx; + end Enumerate_Devices; + + procedure Search_Device + (Device_Class : Unsigned_8; + Subclass : Unsigned_8; + Prog_If : Unsigned_8; + Idx : Natural; + Result : out PCI_Device; + Success : out Boolean) + is + FIdx : Natural := 0; + Temp : PCI_Registry_Entry_Acc := PCI_Registry; + begin + loop + if Temp.Dev.Device_Class = Device_Class and + Temp.Dev.Subclass = Subclass and + Temp.Dev.Prog_If = Prog_If + then + FIdx := FIdx + 1; + if Idx = FIdx then + Result := Temp.Dev; + Success := True; + return; + end if; + end if; + + if Temp.Next /= null then + Temp := Temp.Next; + else + exit; + end if; + end loop; + + Success := False; + end Search_Device; + ---------------------------------------------------------------------------- + procedure Enable_Bus_Mastering (Dev : PCI_Device) is + Bus_Master_Bit : constant := 2#100#; + Config4 : constant Unsigned_32 := Read32 (Dev, 4); + begin + if (Config4 and Bus_Master_Bit) = 0 then + Write32 (Dev, 4, Config4 or Bus_Master_Bit); + end if; + end Enable_Bus_Mastering; + + procedure Get_BAR + (Dev : PCI_Device; + Index : BAR_Index; + BAR : out Base_Address_Register; + Success : out Boolean) + is + Reg_Index : constant Unsigned_16 := 16#10# + Unsigned_16 (Index) * 4; + BAR_Low, BAR_Size_Low, BAR_High, BAR_Size_High : Unsigned_32; + Is_MMIO, Is_Prefetchable, Is_64_Bits : Boolean; + Base, Size : Unsigned_64; + begin + -- Check if the BAR exists first of all. + if Read32 (Dev, Reg_Index) = 0 then + Success := False; + return; + end if; + + -- Fetch the rest. + BAR_Low := Read32 (Dev, Reg_Index); + BAR_High := 0; + Is_MMIO := (BAR_Low and 1) = 0; + Is_Prefetchable := Is_MMIO and ((BAR_Low and 2#1000#) /= 0); + Is_64_Bits := Is_MMIO and ((Shift_Right (BAR_Low, 1) and 2#11#) = 2#10#); + if Is_64_Bits then + BAR_High := Read32 (Dev, Reg_Index + 4); + end if; + + Base := Shift_Left (Unsigned_64 (BAR_High), 32) or Unsigned_64 (BAR_Low); + if Is_MMIO then + Base := Base and not 2#1111#; + else + Base := Base and not 2#11#; + end if; + + Write32 (Dev, Reg_Index, 16#FFFFFFFF#); + BAR_Size_Low := Read32 (Dev, Reg_Index); + Write32 (Dev, Reg_Index, BAR_Low); + + if Is_64_Bits then + Write32 (Dev, Reg_Index + 4, 16#FFFFFFFF#); + BAR_Size_High := Read32 (Dev, Reg_Index + 4); + Write32 (Dev, Reg_Index + 4, BAR_High); + else + BAR_Size_High := 16#FFFFFFFF#; + end if; + + Size := Shift_Left (Unsigned_64 (BAR_Size_High), 32) or + Unsigned_64 (BAR_Size_Low); + if Is_MMIO then + Base := Base and not 2#1111#; + else + Base := Base and not 2#11#; + end if; + Size := not Size + 1; + + BAR := + (Base => Integer_Address (Base), + Size => Size, + Is_MMIO => Is_MMIO, + Is_Prefetchable => Is_Prefetchable); + Success := True; + end Get_BAR; + + procedure Get_MSI_Support + (Dev : PCI_Device; + Has_MSI, Has_MSIX : out Boolean) + is + begin + Has_MSI := Dev.MSI_Support; + Has_MSIX := Dev.MSIX_Support; + end Get_MSI_Support; + + procedure Set_MSI_Vector (Dev : PCI_Device; Vector : Unsigned_8) is + BSP_LAPIC : constant Unsigned_32 := CPU.Core_Locals (1).LAPIC_ID; + MSI_Off : constant Unsigned_16 := Unsigned_16 (Dev.MSI_Offset); + Message_Control : Unsigned_16; + Reg0 : Unsigned_16; + Reg1 : Unsigned_16; + Addr : Unsigned_32; + begin + -- XXX: Support MSI-X, this so far only uses MSI. + if not Dev.MSI_Support then + return; + end if; + + Message_Control := Read16 (Dev, MSI_Off + 2); + Reg0 := 4; + Reg1 := (if (Shift_Right (Message_Control, 7) and 1) = 1 then 12 else 8); + Addr := Shift_Left (16#FEE#, 20) or Shift_Left (BSP_LAPIC, 12); + + Write32 (Dev, MSI_Off + Reg0, Addr); + Write32 (Dev, MSI_Off + Reg1, Unsigned_32 (Vector)); + + Message_Control := (Message_Control or 1) and not Shift_Left (2#111#, 4); + Write16 (Dev, MSI_Off + 1, Message_Control); + end Set_MSI_Vector; + ---------------------------------------------------------------------------- + function Read8 (Dev : PCI_Device; Off : Unsigned_16) return Unsigned_8 is + begin + Get_Address (Dev, Off); + return Snippets.Port_In (PCI_Config_Data + (Off and 3)); + end Read8; + + function Read16 (Dev : PCI_Device; Off : Unsigned_16) return Unsigned_16 is + begin + Get_Address (Dev, Off); + return Snippets.Port_In16 (PCI_Config_Data + (Off and 3)); + end Read16; + + function Read32 (Dev : PCI_Device; Off : Unsigned_16) return Unsigned_32 is + begin + Get_Address (Dev, Off); + return Snippets.Port_In32 (PCI_Config_Data + (Off and 3)); + end Read32; + + procedure Write8 (Dev : PCI_Device; Off : Unsigned_16; D : Unsigned_8) is + begin + Get_Address (Dev, Off); + Snippets.Port_Out (PCI_Config_Data + (Off and 3), D); + end Write8; + + procedure Write16 (Dev : PCI_Device; Off : Unsigned_16; D : Unsigned_16) is + begin + Get_Address (Dev, Off); + Snippets.Port_Out16 (PCI_Config_Data + (Off and 3), D); + end Write16; + + procedure Write32 (Dev : PCI_Device; Off : Unsigned_16; D : Unsigned_32) is + begin + Get_Address (Dev, Off); + Snippets.Port_Out32 (PCI_Config_Data + (Off and 3), D); + end Write32; + ---------------------------------------------------------------------------- + procedure Get_Address (Dev : PCI_Device; Offset : Unsigned_16) is + Addr : constant Unsigned_32 := + Shift_Left (Unsigned_32 (Dev.Bus), 16) or + Shift_Left (Unsigned_32 (Dev.Slot), 11) or + Shift_Left (Unsigned_32 (Dev.Func), 8) or + (Unsigned_32 (Offset) and not 3) or + 16#80000000#; + begin + Snippets.Port_Out32 (PCI_Config_Address, Addr); + end Get_Address; + + procedure Check_Bus (Bus : Unsigned_8) is + begin + for Slot in 0 .. PCI_Max_Slot loop + for Func in 0 .. PCI_Max_Function loop + Check_Function (Bus, Slot, Func); + end loop; + end loop; + end Check_Bus; + + procedure Check_Function (Bus, Slot, Func : Unsigned_8) is + Success : Boolean; + Config8 : Unsigned_32; + Temp : PCI_Registry_Entry_Acc := null; + Result : PCI_Device; + begin + Fetch_Device (Bus, Slot, Func, Result, Success); + if not Success then + return; + end if; + + -- Check for placeholder devices. + if Result.Device_ID = 16#FFFF# and Result.Vendor_ID = 16#FFFF# then + return; + end if; + + -- Check for PCI bridge, and take it. + if Result.Device_Class = 6 and Result.Subclass = 4 then + Config8 := Read32 (Result, 16#18#); + Check_Bus (Unsigned_8 (Shift_Right (Config8, 8) and 16#FF#)); + return; + end if; + + -- Add the device to the list. + if PCI_Registry = null then + PCI_Registry := new PCI_Registry_Entry'(Result, null); + else + Temp := PCI_Registry; + while Temp.Next /= null loop + Temp := Temp.Next; + end loop; + Temp.Next := new PCI_Registry_Entry'(Result, null); + end if; + end Check_Function; + + procedure Fetch_Device + (Bus : Unsigned_8; + Slot : Unsigned_8; + Func : Unsigned_8; + Result : out PCI_Device; + Success : out Boolean) + is + Config0, Config8 : Unsigned_32; + Config6 : Unsigned_16; + Config34 : Unsigned_8; + begin + -- Assign the needed values for reading from the PCI config space. + Result.Bus := Bus; + Result.Slot := Slot; + Result.Func := Func; + + -- Read additional data and fill the device record. + Config0 := Read32 (Result, 0); + Config8 := Read32 (Result, 8); + Result := + (Bus => Bus, + Func => Func, + Slot => Slot, + Device_ID => Unsigned_16 (Shift_Right (Config0, 16) and 16#FFFF#), + Vendor_ID => Unsigned_16 (Config0 and 16#FFFF#), + Revision_ID => Unsigned_8 (Config8 and 16#FF#), + Subclass => Unsigned_8 (Shift_Right (Config8, 16) and 16#FF#), + Device_Class => Unsigned_8 (Shift_Right (Config8, 24) and 16#FF#), + Prog_If => Unsigned_8 (Shift_Right (Config8, 8) and 16#FF#), + MSI_Support => False, + MSIX_Support => False, + MSI_Offset => 0, + MSIX_Offset => 0); + + -- Check for MSI/MSIX by reading the capabilities list. + Config6 := Read16 (Result, 6); + if (Config6 and Shift_Right (1, 4)) /= 0 then + Config34 := Read8 (Result, 34); + while Config34 /= 0 loop + case Read8 (Result, Unsigned_16 (Config34)) is + when 16#05# => + Result.MSI_Support := True; + Result.MSI_Offset := Config34; + when 16#11# => + Result.MSIX_Support := True; + Result.MSIX_Offset := Config34; + when others => + null; + end case; + + Config34 := Read8 (Result, Unsigned_16 (Config34) + 1); + end loop; + end if; + + Success := True; + end Fetch_Device; +end Arch.PCI; diff --git a/source/arch/x86_64-limine/arch-pci.ads b/source/arch/x86_64-limine/arch-pci.ads new file mode 100644 index 0000000..7e69ee8 --- /dev/null +++ b/source/arch/x86_64-limine/arch-pci.ads @@ -0,0 +1,119 @@ +-- arch-pci.ads: PCI bus driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Arch.PCI is + -- A PCI device is defined by a class, subclass, and prog if. And is + -- addressed by its bus, slot, function, and parent. + -- + -- Each PCI device has an associated set of base address registers, this + -- structures hold MMIO addresses used by the device. + type Base_Address_Register is record + Base : Integer_Address; + Size : Unsigned_64; + Is_MMIO : Boolean; + Is_Prefetchable : Boolean; + end record; + type PCI_Device is private; + + -- Scan all the system's PCI and store it for future use. + procedure Scan_PCI; + + -- Get how many devices are available on the system with the passed + -- information. + -- @param Device_Class Device to search for. + -- @param Subclass Subclass to search for. + -- @param Prog_If Prog if to search for. + -- @return Number of devices with these characteristics. + function Enumerate_Devices + (Device_Class : Unsigned_8; + Subclass : Unsigned_8; + Prog_If : Unsigned_8) return Natural; + + procedure Search_Device + (Device_Class : Unsigned_8; + Subclass : Unsigned_8; + Prog_If : Unsigned_8; + Idx : Natural; + Result : out PCI_Device; + Success : out Boolean); + ---------------------------------------------------------------------------- + -- Enable bus mastering for the passed PCI device. + procedure Enable_Bus_Mastering (Dev : PCI_Device); + + -- Get a BAR from the PCI device configuration space, return True if it + -- exists and was successful, or false if not. + type BAR_Index is range 0 .. 5; + procedure Get_BAR + (Dev : PCI_Device; + Index : BAR_Index; + BAR : out Base_Address_Register; + Success : out Boolean); + + -- Set the MSI or MSIX vector. + procedure Get_MSI_Support + (Dev : PCI_Device; + Has_MSI, Has_MSIX : out Boolean); + + procedure Set_MSI_Vector (Dev : PCI_Device; Vector : Unsigned_8); + ---------------------------------------------------------------------------- + -- Read and write data into the PCI device configuration space. + function Read8 (Dev : PCI_Device; Off : Unsigned_16) return Unsigned_8; + function Read16 (Dev : PCI_Device; Off : Unsigned_16) return Unsigned_16; + function Read32 (Dev : PCI_Device; Off : Unsigned_16) return Unsigned_32; + procedure Write8 (Dev : PCI_Device; Off : Unsigned_16; D : Unsigned_8); + procedure Write16 (Dev : PCI_Device; Off : Unsigned_16; D : Unsigned_16); + procedure Write32 (Dev : PCI_Device; Off : Unsigned_16; D : Unsigned_32); + +private + + type PCI_Device is record + Bus : Unsigned_8; + Func : Unsigned_8; + Slot : Unsigned_8; + Device_ID : Unsigned_16; + Vendor_ID : Unsigned_16; + Revision_ID : Unsigned_8; + Subclass : Unsigned_8; + Device_Class : Unsigned_8; + Prog_If : Unsigned_8; + MSI_Support : Boolean; + MSIX_Support : Boolean; + MSI_Offset : Unsigned_8; + MSIX_Offset : Unsigned_8; + end record; + + type PCI_Registry_Entry; + type PCI_Registry_Entry_Acc is access PCI_Registry_Entry; + type PCI_Registry_Entry is record + Dev : PCI_Device; + Next : PCI_Registry_Entry_Acc; + end record; + + procedure Get_Address (Dev : PCI_Device; Offset : Unsigned_16); + + procedure Check_Bus (Bus : Unsigned_8); + + procedure Check_Function (Bus, Slot, Func : Unsigned_8); + + procedure Fetch_Device + (Bus : Unsigned_8; + Slot : Unsigned_8; + Func : Unsigned_8; + Result : out PCI_Device; + Success : out Boolean); +end Arch.PCI; diff --git a/source/arch/x86_64-limine/arch-pic.adb b/source/arch/x86_64-limine/arch-pic.adb new file mode 100644 index 0000000..b52f20e --- /dev/null +++ b/source/arch/x86_64-limine/arch-pic.adb @@ -0,0 +1,41 @@ +-- arch-pic.adb: PIC driver. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Snippets; + +package body Arch.PIC is + procedure Mask_All is + begin + Snippets.Port_Out (16#A1#, 16#FF#); + Snippets.Port_Out (16#21#, 16#FF#); + Flush; + end Mask_All; + + procedure Flush is + begin + for I in 0 .. 15 loop + EOI (I); + end loop; + end Flush; + + procedure EOI (IRQ : Natural) is + begin + if IRQ >= 8 then + Snippets.Port_Out (16#A0#, 16#20#); + end if; + Snippets.Port_Out (16#20#, 16#20#); + end EOI; +end Arch.PIC; diff --git a/source/arch/x86_64-limine/arch-pic.ads b/source/arch/x86_64-limine/arch-pic.ads new file mode 100644 index 0000000..d501378 --- /dev/null +++ b/source/arch/x86_64-limine/arch-pic.ads @@ -0,0 +1,27 @@ +-- arch-pic.ads: Specification of the PIC driver. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Arch.PIC is + -- Mask everything, and flush. + procedure Mask_All; + + -- Flush all potentially pending IRQs. + procedure Flush; + +private + + procedure EOI (IRQ : Natural); +end Arch.PIC; diff --git a/source/arch/x86_64-limine/arch-pit.adb b/source/arch/x86_64-limine/arch-pit.adb new file mode 100644 index 0000000..e949da8 --- /dev/null +++ b/source/arch/x86_64-limine/arch-pit.adb @@ -0,0 +1,66 @@ +-- arch-pit.adb: Programmable Interval Timer driver. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Snippets; + +package body Arch.PIT is + PIT_Divisor : constant := 1193180; + PIT_Frequency : constant := 1000; + PIT_Channel0_Port : constant := 16#40#; + PIT_Command_Port : constant := 16#43#; + + function Init return Boolean is + New_Divisor : constant Unsigned_32 := PIT_Divisor / PIT_Frequency; + Low_Divisor : constant Unsigned_32 := Shift_Right (New_Divisor, 8); + + Low8 : constant Unsigned_8 := Unsigned_8 (New_Divisor and 16#FF#); + High8 : constant Unsigned_8 := Unsigned_8 (Low_Divisor and 16#FF#); + begin + -- Setup the PIT. + Arch.Snippets.Port_Out (PIT_Command_Port, 16#36#); + Arch.Snippets.Port_Out (PIT_Channel0_Port, Low8); + Arch.Snippets.Port_Out (PIT_Channel0_Port, High8); + return True; + end Init; + + function Get_Current_Count return Unsigned_16 is + Low_8, High_8 : Unsigned_8; + begin + Arch.Snippets.Port_Out (PIT_Command_Port, 0); + Low_8 := Arch.Snippets.Port_In (PIT_Channel0_Port); + High_8 := Arch.Snippets.Port_In (PIT_Channel0_Port); + return Unsigned_16 (Shift_Left (High_8, 8)) or Unsigned_16 (Low_8); + end Get_Current_Count; + + procedure Set_Current_Count (Value : Unsigned_16) is + Low_8 : constant Unsigned_16 := Value and 16#FF#; + High_8 : constant Unsigned_16 := Shift_Right (Value, 8) and 16#FF#; + begin + Arch.Snippets.Port_Out (PIT_Command_Port, 16#34#); + Arch.Snippets.Port_Out (PIT_Channel0_Port, Unsigned_8 (Low_8)); + Arch.Snippets.Port_Out (PIT_Channel0_Port, Unsigned_8 (High_8)); + end Set_Current_Count; + + procedure Sleep_1MS is + Value : Unsigned_16; + begin + Set_Current_Count (Unsigned_16 (PIT_Divisor / PIT_Frequency)); + loop + Value := Get_Current_Count; + exit when Value = 0; + end loop; + end Sleep_1MS; +end Arch.PIT; diff --git a/source/arch/x86_64-limine/arch-pit.ads b/source/arch/x86_64-limine/arch-pit.ads new file mode 100644 index 0000000..77cfc57 --- /dev/null +++ b/source/arch/x86_64-limine/arch-pit.ads @@ -0,0 +1,30 @@ +-- arch-pit.ads: Specification of the PIT driver. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Arch.PIT is + -- Initialize by doing a first configure of the PIT, true on success. + function Init return Boolean; + + -- Manage interrupt-free PIT counters. + -- Just set a value and it goes down until 0. + function Get_Current_Count return Unsigned_16; + procedure Set_Current_Count (Value : Unsigned_16); + + -- Interrupt-less sleep. + procedure Sleep_1MS; +end Arch.PIT; diff --git a/source/arch/x86_64-limine/arch-power.adb b/source/arch/x86_64-limine/arch-power.adb new file mode 100644 index 0000000..127ec73 --- /dev/null +++ b/source/arch/x86_64-limine/arch-power.adb @@ -0,0 +1,44 @@ +-- arch-power.adb: Architecture-specific power management. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Snippets; +with Lib.Panic; + +package body Arch.Power is + -- TODO: Use the correct ACPI versions, these are pretty basic, possibly + -- non functional, inferior methods. I just do not wanna sort out ACPI + -- right now. + + function Halt return Power_Status is + begin + Lib.Panic.Hard_Panic ("Halting with panic! or is it panic as halting?!"); + return Failure; + end Halt; + + function Reboot return Power_Status is + begin + Snippets.Port_Out (16#64#, 16#FE#); -- PS2 8042 CPU reset line. + return Failure; + end Reboot; + + function Poweroff return Power_Status is + begin + Snippets.Port_Out16 (16#0604#, 16#2000#); -- QEMU-specific magic code. + Snippets.Port_Out16 (16#B004#, 16#2000#); -- Bochs-specific ditto + Snippets.Port_Out16 (16#4004#, 16#3400#); -- Virtualbox-specific ditto. + return Failure; + end Poweroff; +end Arch.Power; diff --git a/source/arch/x86_64-limine/arch-rtc.adb b/source/arch/x86_64-limine/arch-rtc.adb new file mode 100644 index 0000000..c2ad05f --- /dev/null +++ b/source/arch/x86_64-limine/arch-rtc.adb @@ -0,0 +1,125 @@ +-- arch-rtc.adb: RTC driver. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Snippets; + +package body Arch.RTC is + CMOS_Base_Port : constant := 16#70#; + CMOS_Data_Port : constant := 16#71#; + + CMOS_Update_Flag : constant := 16#0A#; + CMOS_Seconds : constant := 16#00#; + CMOS_Minute : constant := 16#02#; + CMOS_Hour : constant := 16#04#; + CMOS_Day : constant := 16#07#; + CMOS_Month : constant := 16#08#; + CMOS_Year : constant := 16#09#; + CMOS_Config : constant := 16#0B#; + + procedure Get_RTC_Date (Epoch_Seconds : out Unsigned_64) is + Temp : constant Unsigned_8 := Get_RTC_Data (CMOS_Config); + Seconds : Unsigned_32; + Minutes : Unsigned_32; + Hours : Unsigned_32; + Days : Unsigned_32; + Months : Unsigned_32; + Years : Unsigned_32; + Curr : Unsigned_64; + J_1970 : Unsigned_64; + begin + -- Wait for clear before we operate. + loop + if (Get_RTC_Data (CMOS_Update_Flag) and 16#80#) = 0 then + exit; + end if; + end loop; + + -- Get date. + Seconds := Unsigned_32 (Get_RTC_Data (CMOS_Seconds)); + Minutes := Unsigned_32 (Get_RTC_Data (CMOS_Minute)); + Hours := Unsigned_32 (Get_RTC_Data (CMOS_Hour)); + Days := Unsigned_32 (Get_RTC_Data (CMOS_Day)); + Months := Unsigned_32 (Get_RTC_Data (CMOS_Month)); + Years := Unsigned_32 (Get_RTC_Data (CMOS_Year)); + + -- Convert BCD to binary values. + -- For hour, we must maintain the highest bit for 24h conversion. + if (Temp and 4) = 0 then + Seconds := From_BCD (Seconds); + Minutes := From_BCD (Minutes); + Hours := From_BCD (Hours and 16#7F#) or (Hours and 16#80#); + Days := From_BCD (Days); + Months := From_BCD (Months); + Years := From_BCD (Years); + end if; + + -- Convert 12 hour clock to 24 hour clock if necessary. + if ((Temp and 2) = 0) and ((Hours and 16#80#) /= 0) then + Hours := ((Hours and 16#7F#) + 12) mod 24; + end if; + + -- Calculate the full (4-digit) year. + -- If you are using ironclad on x86_64 in 1900/2100, im sorry. + Years := Years + 2000; + + Curr := Get_Julian_Day (Integer_64 (Days), Integer_64 (Months), + Integer_64 (Years)); + J_1970 := Get_Julian_Day (1, 1, 1970); + + Epoch_Seconds := ((Curr - J_1970) * (60 * 60 * 24)) + + (Unsigned_64 (Hours) * 3600) + + (Unsigned_64 (Minutes) * 60) + + Unsigned_64 (Seconds); + end Get_RTC_Date; + + procedure Set_RTC_Date (Epoch_Seconds : Unsigned_64) is + begin + -- TODO: Implement. + null; + end Set_RTC_Date; + ---------------------------------------------------------------------------- + function Get_Julian_Day + (Days, Months, Years : Integer_64) return Unsigned_64 is + begin + return Unsigned_64 + ((1461 * (Years + 4800 + (Months - 14) / 12)) / 4 + + (367 * (Months - 2 - 12 * ((Months - 14) / 12))) / 12 - + (3 * ((Years + 4900 + (Months - 14) / 12) / 100)) / 4 + + Days - 32075); + end Get_Julian_Day; + + function Get_RTC_Data (Register : Unsigned_8) return Unsigned_8 is + begin + Arch.Snippets.Port_Out (CMOS_Base_Port, Register); + return Arch.Snippets.Port_In (CMOS_Data_Port); + end Get_RTC_Data; + + procedure Set_RTC_Data (Register, Data : Unsigned_8) is + begin + Arch.Snippets.Port_Out (CMOS_Base_Port, Register); + Arch.Snippets.Port_Out (CMOS_Data_Port, Data); + end Set_RTC_Data; + + function To_BCD (Num : Unsigned_32) return Unsigned_32 is + begin + return (Num / 10 * 16) + (Num mod 10); + end To_BCD; + + function From_BCD (Num : Unsigned_32) return Unsigned_32 is + begin + return (Num and 16#F#) + (Num / 16 * 10); + end From_BCD; +end Arch.RTC; diff --git a/source/arch/x86_64-limine/arch-rtc.ads b/source/arch/x86_64-limine/arch-rtc.ads new file mode 100644 index 0000000..8a0c2ba --- /dev/null +++ b/source/arch/x86_64-limine/arch-rtc.ads @@ -0,0 +1,31 @@ +-- devices-rtc.ads: RTC driver. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Arch.RTC is + procedure Get_RTC_Date (Epoch_Seconds : out Unsigned_64); + procedure Set_RTC_Date (Epoch_Seconds : Unsigned_64); + +private + + function Get_Julian_Day + (Days, Months, Years : Integer_64) return Unsigned_64; + function Get_RTC_Data (Register : Unsigned_8) return Unsigned_8; + procedure Set_RTC_Data (Register, Data : Unsigned_8); + function To_BCD (Num : Unsigned_32) return Unsigned_32; + function From_BCD (Num : Unsigned_32) return Unsigned_32; +end Arch.RTC; diff --git a/source/arch/x86_64-limine/arch-snippets.adb b/source/arch/x86_64-limine/arch-snippets.adb new file mode 100644 index 0000000..6833ee1 --- /dev/null +++ b/source/arch/x86_64-limine/arch-snippets.adb @@ -0,0 +1,302 @@ +-- arch-snippets.adb: Architecture-specific bits. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Machine_Code; use System.Machine_Code; +with Arch.Entrypoint; +with Arch.PIT; +with Arch.HPET; +pragma Unreferenced (Arch.Entrypoint); + +package body Arch.Snippets is + procedure HCF is + begin + -- Interrupts ought to be disabled every iteration and not only once + -- because of spurious interrupts. + loop + Disable_Interrupts; + Wait_For_Interrupt; + end loop; + end HCF; + + procedure Enable_Interrupts is + begin + Asm ("sti", Volatile => True); + end Enable_Interrupts; + + procedure Disable_Interrupts is + begin + Asm ("cli", Volatile => True); + end Disable_Interrupts; + + procedure Wait_For_Interrupt is + begin + Asm ("hlt", Volatile => True); + end Wait_For_Interrupt; + + procedure Pause is + begin + Asm ("pause", Volatile => True); + end Pause; + ---------------------------------------------------------------------------- + function Read_Cycles return Unsigned_64 is + High : Unsigned_32; + Low : Unsigned_32; + begin + Asm ("rdtsc", + Outputs => (Unsigned_32'Asm_Output ("=d", High), + Unsigned_32'Asm_Output ("=a", Low)), + Volatile => True); + return Shift_Left (Unsigned_64 (High), 32) or Unsigned_64 (Low); + end Read_Cycles; + + procedure Port_Out (Port : Unsigned_16; Value : Unsigned_8) is + begin + Asm ("outb %0, %1", + Inputs => (Unsigned_8'Asm_Input ("a", Value), + Unsigned_16'Asm_Input ("Nd", Port)), + Clobber => "memory", + Volatile => True); + end Port_Out; + + function Port_In (Port : Unsigned_16) return Unsigned_8 is + Value : Unsigned_8; + begin + Asm ("inb %1, %0", + Outputs => Unsigned_8'Asm_Output ("=a", Value), + Inputs => Unsigned_16'Asm_Input ("Nd", Port), + Clobber => "memory", + Volatile => True); + return Value; + end Port_In; + + procedure Port_Out16 (Port, Value : Unsigned_16) is + begin + Asm ("outw %0, %1", + Inputs => (Unsigned_16'Asm_Input ("a", Value), + Unsigned_16'Asm_Input ("Nd", Port)), + Clobber => "memory", + Volatile => True); + end Port_Out16; + + function Port_In16 (Port : Unsigned_16) return Unsigned_16 is + Value : Unsigned_16; + begin + Asm ("inw %1, %0", + Outputs => Unsigned_16'Asm_Output ("=a", Value), + Inputs => Unsigned_16'Asm_Input ("Nd", Port), + Clobber => "memory", + Volatile => True); + return Value; + end Port_In16; + + procedure Port_Out32 (Port : Unsigned_16; Value : Unsigned_32) is + begin + Asm ("out %0, %1", + Inputs => (Unsigned_32'Asm_Input ("a", Value), + Unsigned_16'Asm_Input ("Nd", Port)), + Clobber => "memory", + Volatile => True); + end Port_Out32; + + function Port_In32 (Port : Unsigned_16) return Unsigned_32 is + Value : Unsigned_32; + begin + Asm ("in %1, %0", + Outputs => Unsigned_32'Asm_Output ("=a", Value), + Inputs => Unsigned_16'Asm_Input ("Nd", Port), + Clobber => "memory", + Volatile => True); + return Value; + end Port_In32; + + procedure Invalidate_Page (Value : Virtual_Address) is + begin + Asm ("invlpg (%0)", + Inputs => Virtual_Address'Asm_Input ("r", Value), + Clobber => "memory", + Volatile => True); + end Invalidate_Page; + + function Read_MSR (MSR : Unsigned_32) return Unsigned_64 is + Res_High : Unsigned_32; + Res_Low : Unsigned_32; + begin + Asm ("rdmsr", + Outputs => (Unsigned_32'Asm_Output ("=a", Res_Low), + Unsigned_32'Asm_Output ("=d", Res_High)), + Inputs => Unsigned_32'Asm_Input ("c", MSR), + Clobber => "memory", + Volatile => True); + return Shift_Left (Unsigned_64 (Res_High), 32) or Unsigned_64 (Res_Low); + end Read_MSR; + + procedure Write_MSR (MSR : Unsigned_32; Value : Unsigned_64) is + Value_Hi : constant Unsigned_32 := Unsigned_32 (Shift_Right (Value, 32)); + Value_Lo : constant Unsigned_32 := Unsigned_32 (Value and 16#FFFFFFFF#); + begin + Asm ("wrmsr", + Inputs => (Unsigned_32'Asm_Input ("a", Value_Lo), + Unsigned_32'Asm_Input ("d", Value_Hi), + Unsigned_32'Asm_Input ("c", MSR)), + Clobber => "memory", + Volatile => True); + end Write_MSR; + + function Read_CR0 return Unsigned_64 is + Value : Unsigned_64; + begin + Asm ("mov %%cr0, %0", + Outputs => Unsigned_64'Asm_Output ("=r", Value), + Clobber => "memory", + Volatile => True); + return Value; + end Read_CR0; + + procedure Write_CR0 (Value : Unsigned_64) is + begin + Asm ("mov %0, %%cr0", + Inputs => Unsigned_64'Asm_Input ("r", Value), + Clobber => "memory", + Volatile => True); + end Write_CR0; + + function Read_CR2 return Unsigned_64 is + Value : Unsigned_64; + begin + Asm ("mov %%cr2, %0", + Outputs => Unsigned_64'Asm_Output ("=r", Value), + Clobber => "memory", + Volatile => True); + return Value; + end Read_CR2; + + function Read_CR3 return Unsigned_64 is + Value : Unsigned_64; + begin + Asm ("mov %%cr3, %0", + Outputs => Unsigned_64'Asm_Output ("=r", Value), + Clobber => "memory", + Volatile => True); + return Value; + end Read_CR3; + + procedure Write_CR3 (Value : Unsigned_64) is + begin + Asm ("mov %0, %%cr3", + Inputs => Unsigned_64'Asm_Input ("r", Value), + Clobber => "memory", + Volatile => True); + end Write_CR3; + + function Read_CR4 return Unsigned_64 is + Value : Unsigned_64; + begin + Asm ("mov %%cr4, %0", + Outputs => Unsigned_64'Asm_Output ("=r", Value), + Clobber => "memory", + Volatile => True); + return Value; + end Read_CR4; + + procedure Write_CR4 (Value : Unsigned_64) is + begin + Asm ("mov %0, %%cr4", + Inputs => Unsigned_64'Asm_Input ("r", Value), + Clobber => "memory", + Volatile => True); + end Write_CR4; + + procedure Write_XCR (Register : Unsigned_32; Value : Unsigned_64) is + Lo_32 : constant Unsigned_64 := Value and 16#FFFFFFFF#; + Hi_32 : constant Unsigned_64 := Shift_Right (Value, 32) and 16#FFFFFFFF#; + begin + Asm ("xsetbv", + Inputs => (Unsigned_32'Asm_Input ("a", Unsigned_32 (Lo_32)), + Unsigned_32'Asm_Input ("d", Unsigned_32 (Hi_32)), + Unsigned_32'Asm_Input ("c", Register)), + Clobber => "memory", + Volatile => True); + end Write_XCR; + + FS_MSR : constant := 16#C0000100#; + GS_MSR : constant := 16#C0000101#; + Kernel_GS_MSR : constant := 16#C0000102#; + + function Read_FS return Unsigned_64 is + begin + return Read_MSR (FS_MSR); + end Read_FS; + + procedure Write_FS (Value : Unsigned_64) is + begin + Write_MSR (FS_MSR, Value); + end Write_FS; + + function Read_GS return Unsigned_64 is + begin + return Read_MSR (GS_MSR); + end Read_GS; + + procedure Write_GS (Value : Unsigned_64) is + begin + Write_MSR (GS_MSR, Value); + end Write_GS; + + function Read_Kernel_GS return Unsigned_64 is + begin + return Read_MSR (Kernel_GS_MSR); + end Read_Kernel_GS; + + procedure Write_Kernel_GS (Value : Unsigned_64) is + begin + Write_MSR (Kernel_GS_MSR, Value); + end Write_Kernel_GS; + + procedure Swap_GS is + begin + Asm ("swapgs", Volatile => True); + end Swap_GS; + + procedure Invalidate_Caches is + begin + Asm ("wbinvd", Volatile => True); + end Invalidate_Caches; + + procedure Get_CPUID + (Leaf, Subleaf : Unsigned_32; + EAX, EBX, ECX, EDX : out Unsigned_32) + is + begin + Asm ("cpuid", + Outputs => (Unsigned_32'Asm_Output ("=a", EAX), + Unsigned_32'Asm_Output ("=b", EBX), + Unsigned_32'Asm_Output ("=c", ECX), + Unsigned_32'Asm_Output ("=d", EDX)), + Inputs => (Unsigned_32'Asm_Input ("a", Leaf), + Unsigned_32'Asm_Input ("c", Subleaf)), + Clobber => "memory", + Volatile => True); + end Get_CPUID; + + procedure Calibrate_Sleep_1MS is + begin + if HPET.Is_Initialized then + HPET.USleep (1000); + else + PIT.Sleep_1MS; + end if; + end Calibrate_Sleep_1MS; +end Arch.Snippets; diff --git a/source/arch/x86_64-limine/arch-syscall_handler.S b/source/arch/x86_64-limine/arch-syscall_handler.S new file mode 100644 index 0000000..099f199 --- /dev/null +++ b/source/arch/x86_64-limine/arch-syscall_handler.S @@ -0,0 +1,76 @@ +# arch-syscall_handler.S: ASM for the syscall handler. +# Copyright (C) 2023 streaksu +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +.global syscall_entry +syscall_entry: + # Swap to kernel context and store kernel and user stacks. + swapgs + mov %rsp, %gs:16 + mov %gs:8, %rsp + + # These are here for simulating an average interrupt stack frame. + push $0x3b + push %gs:16 + push %r11 + push $0x43 + push %rcx + push $0 + + push %r15 + push %r14 + push %r13 + push %r12 + push %r11 + push %r10 + push %r9 + push %r8 + push %rbp + push %rdi + push %rsi + push %rdx + push %rcx + push %rbx + push %rax + + xor %rbp, %rbp + mov %rsp, %rdi + call syscall_handler + + # Pop back state. + pop %rax + pop %rbx + pop %rcx + pop %rdx + pop %rsi + pop %rdi + pop %rbp + pop %r8 + pop %r9 + pop %r10 + pop %r11 + pop %r12 + pop %r13 + pop %r14 + pop %r15 + + # Reload context. + mov %gs:16, %rsp + + # Swap context back and return. + swapgs + sysretq + +.section .note.GNU-stack, "", %progbits diff --git a/source/arch/x86_64-limine/devices-ata.adb b/source/arch/x86_64-limine/devices-ata.adb new file mode 100644 index 0000000..d61be45 --- /dev/null +++ b/source/arch/x86_64-limine/devices-ata.adb @@ -0,0 +1,477 @@ +-- devices-ata.adb: ATA driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Snippets; use Arch.Snippets; +with System.Address_To_Access_Conversions; +with System.Storage_Elements; use System.Storage_Elements; +with Lib.Messages; +with Devices.Partitions; +with Arch.PCI; + +package body Devices.ATA is + package Con is new System.Address_To_Access_Conversions (ATA_Data); + + function Init return Boolean is + PCI_Dev : Arch.PCI.PCI_Device; + PCI_BAR0 : Arch.PCI.Base_Address_Register; + PCI_BAR2 : Arch.PCI.Base_Address_Register; + Drive_Data : ATA_Data_Acc; + Drive_Idx : Natural := 0; + Success : Boolean; + Pair_Ports : array (0 .. 1) of Unsigned_16; + Base_Name : constant String := "ata"; + Num_Str : Lib.Messages.Translated_String; + Num_Len : Natural; + begin + for Idx in 1 .. Arch.PCI.Enumerate_Devices (16#1#, 16#1#, 16#80#) loop + Arch.PCI.Search_Device (16#1#, 16#1#, 16#80#, Idx, PCI_Dev, Success); + if not Success then + return False; + end if; + + Arch.PCI.Get_BAR (PCI_Dev, 0, PCI_BAR0, Success); + if not Success then + PCI_BAR0.Base := 16#1F0#; + end if; + Arch.PCI.Get_BAR (PCI_Dev, 2, PCI_BAR2, Success); + if not Success then + PCI_BAR2.Base := 16#170#; + end if; + + Pair_Ports (0) := Unsigned_16 (PCI_BAR0.Base and 16#FFFF#); + Pair_Ports (1) := Unsigned_16 (PCI_BAR2.Base and 16#FFFF#); + + for I in 0 .. 3 loop + Drive_Data := Init_Port (Pair_Ports (I / 2), (I mod 2) = 0); + if Drive_Data /= null then + Drive_Idx := Drive_Idx + 1; + + Lib.Messages.Image (Unsigned_32 (Drive_Idx), Num_Str, Num_Len); + + declare + Final_Name : constant String := Base_Name & + Num_Str (Num_Str'Last - Num_Len + 1 .. Num_Str'Last); + begin + Register ( + (Data => Con.To_Address (Con.Object_Pointer (Drive_Data)), + ID => (others => 0), + Is_Block => True, + Block_Size => Sector_Size, + Block_Count => Drive_Data.Sector_Count, + Read => Read'Access, + Write => Write'Access, + Sync => Sync'Access, + Sync_Range => Sync_Range'Access, + IO_Control => null, + Mmap => null, + Poll => null), Final_Name, Success); + if not Success or else + not Partitions.Parse_Partitions + (Final_Name, Fetch (Final_Name)) + then + return False; + end if; + end; + end if; + end loop; + end loop; + + return True; + end Init; + + function Init_Port + (Base_Port : Unsigned_16; + Is_Master : Boolean) return ATA_Data_Acc + is + Data_Port : constant Unsigned_16 := Base_Port; + Error_Port : constant Unsigned_16 := Base_Port + 16#001#; + Sector_Count_Port : constant Unsigned_16 := Base_Port + 16#002#; + LBA_Low_Port : constant Unsigned_16 := Base_Port + 16#003#; + LBA_Mid_Port : constant Unsigned_16 := Base_Port + 16#004#; + LBA_High_Port : constant Unsigned_16 := Base_Port + 16#005#; + Device_Port : constant Unsigned_16 := Base_Port + 16#006#; + Command_Port : constant Unsigned_16 := Base_Port + 16#007#; + Control_Port : constant Unsigned_16 := Base_Port + 16#206#; + Identify_Info : ATA_Identify := (others => 0); + Timeout : Natural := 0; + Status : Unsigned_8; + begin + -- Identify the drive. + Port_Out (Device_Port, (if Is_Master then 16#A0# else 16#B0#)); + Port_Out (Sector_Count_Port, 0); + Port_Out (LBA_Low_Port, 0); + Port_Out (LBA_Mid_Port, 0); + Port_Out (LBA_High_Port, 0); + Port_Out (Command_Port, 16#EC#); + if Port_In (Command_Port) = 0 then + return null; + end if; + while (Port_In (Command_Port) and 2#10000000#) /= 0 loop + if Timeout = 100_000 then + Lib.Messages.Put_Line ("ATA drive timed out, skipping it..."); + return null; + end if; + Timeout := Timeout + 1; + end loop; + + -- Check for non-standard ATAPI. + if Port_In (LBA_Mid_Port) /= 0 or Port_In (LBA_High_Port) /= 0 then + Lib.Messages.Put_Line ("Ignoring non-standard ATAPI ATA drive"); + return null; + end if; + + -- Check for results. + Timeout := 0; + loop + Status := Port_In (Command_Port); + if (Status and 1) /= 0 then + Lib.Messages.Put_Line ("ATA drive errored out during identify"); + return null; + end if; + exit when (Status and 2#1000#) /= 0; + if Timeout = 100_000 then + Lib.Messages.Put_Line ("ATA drive timed out in identify"); + return null; + end if; + Timeout := Timeout + 1; + end loop; + + -- Store the identify. + for Id of Identify_Info loop + Id := Port_In16 (Data_Port); + end loop; + + -- Return the initialized drive. + declare + Sectors : Unsigned_64 with Address => Identify_Info (101)'Address; + begin + return new ATA_Data' + (Mutex => Lib.Synchronization.Unlocked_Semaphore, + Is_Master => Is_Master, + Data_Port => Data_Port, + Error_Port => Error_Port, + Count_Port => Sector_Count_Port, + LBA_Low_Port => LBA_Low_Port, + LBA_Mid_Port => LBA_Mid_Port, + LBA_High_Port => LBA_High_Port, + Device_Port => Device_Port, + Command_Port => Command_Port, + Control_Port => Control_Port, + Sector_Count => Sectors, + Caches => (others => (Is_Used => False, others => <>)), + Next_Evict => 1); + end; + end Init_Port; + + procedure Read_Sector + (Drive : ATA_Data_Acc; + LBA : Unsigned_64; + Data_Buffer : out Sector_Data; + Success : out Boolean) + is + Data : Unsigned_16; + Index : Natural := 1; + begin + if not Issue_Command (Drive, LBA, 16#24#) then + Success := False; + return; + end if; + + for I in 1 .. 256 loop + Data := Port_In16 (Drive.Data_Port); + Data_Buffer (Index) := Unsigned_8 (Data and 16#FF#); + Data_Buffer (Index + 1) := Unsigned_8 (Shift_Right (Data, 8)); + Index := Index + 2; + end loop; + + Success := True; + end Read_Sector; + + function Write_Sector + (Drive : ATA_Data_Acc; + LBA : Unsigned_64; + Data_Buffer : Sector_Data) return Boolean + is + Data : Unsigned_16; + Index : Natural := 1; + begin + if not Issue_Command (Drive, LBA, 16#34#) then + return False; + end if; + + for I in 1 .. 256 loop + Data := Shift_Left (Unsigned_16 (Data_Buffer (Index + 1)), 8) or + Unsigned_16 (Data_Buffer (Index)); + Index := Index + 2; + Port_Out16 (Drive.Data_Port, Data); + end loop; + + Port_Out (Drive.Command_Port, 16#EA#); + if not Poll_Error (Drive.Command_Port) then + Lib.Messages.Put_Line ("ATA error while flushing"); + return False; + end if; + + return True; + end Write_Sector; + + function Issue_Command + (Drive : ATA_Data_Acc; + LBA : Unsigned_64; + Cmd : Unsigned_8) return Boolean + is + LBA0, LBA8, LBA16, LBA24, LBA32, LBA40 : Unsigned_8; + begin + LBA0 := Unsigned_8 (Shift_Right (LBA and 16#0000000000FF#, 0)); + LBA8 := Unsigned_8 (Shift_Right (LBA and 16#00000000FF00#, 8)); + LBA16 := Unsigned_8 (Shift_Right (LBA and 16#000000FF0000#, 16)); + LBA24 := Unsigned_8 (Shift_Right (LBA and 16#0000FF000000#, 24)); + LBA32 := Unsigned_8 (Shift_Right (LBA and 16#00FF00000000#, 32)); + LBA40 := Unsigned_8 (Shift_Right (LBA and 16#FF0000000000#, 40)); + + if Drive.Is_Master then + Port_Out (Drive.Device_Port, (16#40#)); + else + Port_Out (Drive.Device_Port, (16#50#)); + end if; + + Port_Out (Drive.Count_Port, 0); + Port_Out (Drive.LBA_Low_Port, LBA24); + Port_Out (Drive.LBA_Mid_Port, LBA32); + Port_Out (Drive.LBA_High_Port, LBA40); + Port_Out (Drive.Count_Port, 1); + Port_Out (Drive.LBA_Low_Port, LBA0); + Port_Out (Drive.LBA_Mid_Port, LBA8); + Port_Out (Drive.LBA_High_Port, LBA16); + Port_Out (Drive.Command_Port, Cmd); + + if not Poll_Error (Drive.Command_Port) then + Lib.Messages.Put_Line ("ATA error while operating on a sector"); + return False; + else + return True; + end if; + end Issue_Command; + + function Poll_Error (Port : Unsigned_16) return Boolean is + Status : Unsigned_8; + begin + Status := Port_In (Port); + while (Status and 16#80#) = 16#80# and (Status and 16#01#) /= 16#01# loop + Status := Port_In (Port); + end loop; + return (Status and 16#01#) = 0; + end Poll_Error; + + procedure Get_Cache_Index + (Drive : ATA_Data_Acc; + LBA : Unsigned_64; + Idx : out Natural; + Success : out Boolean) + is + begin + Idx := 0; + + for I in Drive.Caches'Range loop + if Drive.Caches (I).Is_Used and Drive.Caches (I).LBA_Offset = LBA then + Idx := I; + Success := True; + return; + elsif not Drive.Caches (I).Is_Used and Idx = 0 then + Idx := I; + end if; + end loop; + + if Idx = 0 then + Idx := Drive.Next_Evict; + + if Drive.Caches (Drive.Next_Evict).Is_Dirty then + Success := Write_Sector + (Drive => Drive, + LBA => Drive.Caches (Idx).LBA_Offset, + Data_Buffer => Drive.Caches (Idx).Data); + if not Success then + Lib.Messages.Put_Line ("ATA could not write on cache fetch!"); + return; + end if; + end if; + + if Drive.Next_Evict = Drive.Caches'Last then + Drive.Next_Evict := Drive.Caches'First; + else + Drive.Next_Evict := Drive.Next_Evict + 1; + end if; + end if; + + Drive.Caches (Idx) := + (Is_Used => True, + LBA_Offset => LBA, + Is_Dirty => False, + Data => <>); + + Read_Sector + (Drive => Drive, + LBA => Drive.Caches (Idx).LBA_Offset, + Data_Buffer => Drive.Caches (Idx).Data, + Success => Success); + if not Success then + Lib.Messages.Put_Line ("ATA could not read on cache fetch!"); + end if; + end Get_Cache_Index; + ---------------------------------------------------------------------------- + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Is_Blocking); + D : constant ATA_Data_Acc := ATA_Data_Acc (Con.To_Pointer (Key)); + Cache_Idx, Progress, Copy_Count, Cache_Offset : Natural := 0; + Current_LBA : Unsigned_64; + begin + Success := True; + Lib.Synchronization.Seize (D.Mutex); + while Progress < Data'Length loop + Current_LBA := (Offset + Unsigned_64 (Progress)) / Sector_Size; + + Get_Cache_Index + (Drive => D, + LBA => Current_LBA, + Idx => Cache_Idx, + Success => Success); + if not Success then + Success := True; + goto Cleanup; + end if; + + Copy_Count := Data'Length - Progress; + Cache_Offset := Natural ((Offset + Unsigned_64 (Progress)) mod + Sector_Size); + if Copy_Count > Sector_Size - Cache_Offset then + Copy_Count := Sector_Size - Cache_Offset; + end if; + Data (Data'First + Progress .. Data'First + Progress + Copy_Count - 1) + := D.Caches (Cache_Idx).Data (Cache_Offset + 1 .. + Cache_Offset + Copy_Count); + Progress := Progress + Copy_Count; + end loop; + + <> + Lib.Synchronization.Release (D.Mutex); + Ret_Count := Progress; + end Read; + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Is_Blocking); + D : constant ATA_Data_Acc := ATA_Data_Acc (Con.To_Pointer (Key)); + Cache_Idx, Progress, Copy_Count, Cache_Offset : Natural := 0; + Current_LBA : Unsigned_64; + begin + Success := True; + Lib.Synchronization.Seize (D.Mutex); + while Progress < Data'Length loop + Current_LBA := (Offset + Unsigned_64 (Progress)) / Sector_Size; + + Get_Cache_Index + (Drive => D, + LBA => Current_LBA, + Idx => Cache_Idx, + Success => Success); + if not Success then + Success := Progress /= 0; + goto Cleanup; + end if; + + Copy_Count := Data'Length - Progress; + Cache_Offset := Natural ((Offset + Unsigned_64 (Progress)) mod + Sector_Size); + if Copy_Count > Sector_Size - Cache_Offset then + Copy_Count := Sector_Size - Cache_Offset; + end if; + D.Caches (Cache_Idx).Data (Cache_Offset + 1 .. + Cache_Offset + Copy_Count) := + Data (Data'First + Progress .. + Data'First + Progress + Copy_Count - 1); + D.Caches (Cache_Idx).Is_Dirty := True; + Progress := Progress + Copy_Count; + end loop; + + <> + Lib.Synchronization.Release (D.Mutex); + Ret_Count := Progress; + end Write; + + function Sync (Key : System.Address) return Boolean is + Drive : constant ATA_Data_Acc := ATA_Data_Acc (Con.To_Pointer (Key)); + Success : Boolean := True; + begin + Lib.Synchronization.Seize (Drive.Mutex); + for Cache of Drive.Caches loop + if Cache.Is_Used and Cache.Is_Dirty then + if not Write_Sector (Drive, Cache.LBA_Offset, Cache.Data) then + Success := False; + goto Cleanup; + end if; + Cache.Is_Dirty := False; + end if; + end loop; + + <> + Lib.Synchronization.Release (Drive.Mutex); + return Success; + end Sync; + + function Sync_Range + (Key : System.Address; + Offset : Unsigned_64; + Count : Unsigned_64) return Boolean + is + Drive : constant ATA_Data_Acc := ATA_Data_Acc (Con.To_Pointer (Key)); + First_LBA : constant Unsigned_64 := Offset / Sector_Size; + Last_LBA : constant Unsigned_64 := (Offset + Count) / Sector_Size; + Success : Boolean := True; + begin + Lib.Synchronization.Seize (Drive.Mutex); + + for Cache of Drive.Caches loop + if Cache.Is_Used and + Cache.Is_Dirty and + Cache.LBA_Offset >= First_LBA and + Cache.LBA_Offset <= Last_LBA + then + if not Write_Sector (Drive, Cache.LBA_Offset, Cache.Data) then + Success := False; + goto Cleanup; + end if; + Cache.Is_Dirty := False; + end if; + end loop; + + <> + Lib.Synchronization.Release (Drive.Mutex); + return Success; + end Sync_Range; +end Devices.ATA; diff --git a/source/arch/x86_64-limine/devices-ata.ads b/source/arch/x86_64-limine/devices-ata.ads new file mode 100644 index 0000000..e64f18b --- /dev/null +++ b/source/arch/x86_64-limine/devices-ata.ads @@ -0,0 +1,111 @@ +-- devices-ata.ads: ATA driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Synchronization; + +package Devices.ATA is + -- Probe for ATA drives and add em. + function Init return Boolean; + +private + + -- Data stored for each drive. + Sector_Size : constant := 512; + subtype Sector_Data is Operation_Data (1 .. Sector_Size); + type Sector_Cache is record + Is_Used : Boolean; + LBA_Offset : Unsigned_64; + Is_Dirty : Boolean; + Data : Sector_Data; + end record; + type Sector_Caches is array (Natural range <>) of Sector_Cache; + + type ATA_Identify is array (1 .. 256) of Unsigned_16; + type ATA_Data is record + Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Is_Master : Boolean; + Data_Port : Unsigned_16; + Error_Port : Unsigned_16; + Count_Port : Unsigned_16; + LBA_Low_Port : Unsigned_16; + LBA_Mid_Port : Unsigned_16; + LBA_High_Port : Unsigned_16; + Device_Port : Unsigned_16; + Command_Port : Unsigned_16; + Control_Port : Unsigned_16; + Sector_Count : Unsigned_64; + Caches : Sector_Caches (1 .. 8000); + Next_Evict : Natural range 1 .. 8000; + end record; + type ATA_Data_Acc is access all ATA_Data; + + -- Probe a port and return an initialized ATA drive, or null if not found. + function Init_Port + (Base_Port : Unsigned_16; + Is_Master : Boolean) return ATA_Data_Acc; + + -- Read a single sector. + procedure Read_Sector + (Drive : ATA_Data_Acc; + LBA : Unsigned_64; + Data_Buffer : out Sector_Data; + Success : out Boolean); + + -- Write a single sector. + function Write_Sector + (Drive : ATA_Data_Acc; + LBA : Unsigned_64; + Data_Buffer : Sector_Data) return Boolean; + + -- Issue an LBA command. + function Issue_Command + (Drive : ATA_Data_Acc; + LBA : Unsigned_64; + Cmd : Unsigned_8) return Boolean; + + -- Poll for ATA comamnd error. + function Poll_Error (Port : Unsigned_16) return Boolean; + + -- Find a cache index for the drive given the desired LBA. + procedure Get_Cache_Index + (Drive : ATA_Data_Acc; + LBA : Unsigned_64; + Idx : out Natural; + Success : out Boolean); + ---------------------------------------------------------------------------- + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + function Sync (Key : System.Address) return Boolean; + + function Sync_Range + (Key : System.Address; + Offset : Unsigned_64; + Count : Unsigned_64) return Boolean; +end Devices.ATA; diff --git a/source/arch/x86_64-limine/devices-fb.adb b/source/arch/x86_64-limine/devices-fb.adb new file mode 100644 index 0000000..6be45a7 --- /dev/null +++ b/source/arch/x86_64-limine/devices-fb.adb @@ -0,0 +1,223 @@ +-- devices-fb.adb: Boot-time memory framebuffer driver. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; +with System; use System; +with Memory; use Memory; +with System.Storage_Elements; use System.Storage_Elements; +with Arch.Limine; + +package body Devices.FB is + package Limine renames Arch.Limine; + + -- Structures used by fbdev. + FB_TYPE_PACKED_PIXELS : constant := 0; + FB_VISUAL_TRUECOLOR : constant := 2; + FB_ACTIVATE_NOW : constant := 0; + FB_VMODE_NONINTERLACED : constant := 0; + type FB_Bitfield is record + Offset : Unsigned_32; + Length : Unsigned_32; + MSB_Right : Unsigned_32; + end record; + type FB_Var_ScreenInfo is record + X_Res : Unsigned_32; + Y_Res : Unsigned_32; + X_Res_Virtual : Unsigned_32; + Y_Res_Virtual : Unsigned_32; + X_Offset : Unsigned_32; + Y_Offset : Unsigned_32; + Bits_Per_Pixel : Unsigned_32; + Grayscale : Unsigned_32; + Red : FB_Bitfield; + Green : FB_Bitfield; + Blue : FB_Bitfield; + Transp : FB_Bitfield; + Non_Std : Unsigned_32; + Activate : Unsigned_32; + Height : Unsigned_32; + Width : Unsigned_32; + Accel_Flags : Unsigned_32; + PixClock : Unsigned_32; + Left_Margin : Unsigned_32; + Right_Margin : Unsigned_32; + Upper_Margin : Unsigned_32; + Lower_Margin : Unsigned_32; + HSync_Len : Unsigned_32; + VSync_Len : Unsigned_32; + Sync : Unsigned_32; + VMode : Unsigned_32; + Rotate : Unsigned_32; + Colorspace : Unsigned_32; + end record; + type FB_Fix_ScreenInfo is record + ID : String (1 .. 16); + SMem_Start : Unsigned_64; + SMem_Length : Unsigned_32; + FB_Type : Unsigned_32; + Type_Aux : Unsigned_32; + Visual : Unsigned_32; + X_Pan_Step : Unsigned_16; + Y_Pan_Step : Unsigned_16; + Y_Wrap_Step : Unsigned_16; + Line_Length : Unsigned_32; + MMIO_Start : Unsigned_64; + MMIO_Length : Unsigned_32; + Accel : Unsigned_32; + Capabilities : Unsigned_16; + end record; + + -- Request to get the Limine framebuffer data. + -- Response is a pointer to a Framebuffer_Response + Framebuffer_Request : Limine.Request := + (ID => Limine.Framebuffer_ID, + Revision => 0, + Response => System.Null_Address) + with Export, Async_Writers; + + -- Data for storing device data. + type Internal_FB_Data is record + Fb : Limine.Framebuffer; + Fixed_Info : FB_Fix_ScreenInfo; + Variable_Info : FB_Var_ScreenInfo; + end record; + type Internal_FB_Data_Acc is access Internal_FB_Data; + + function Init return Boolean is + Device : Resource; + Dev_Name : String := "fb0"; + Success : Boolean := True; + Data : Internal_FB_Data_Acc; + FBPonse : Limine.Framebuffer_Response + with Import, Address => Framebuffer_Request.Response; + begin + if Framebuffer_Request.Response = System.Null_Address then + return True; + end if; + + for I in 1 .. FBPonse.Count loop + declare + Fb : access Limine.Framebuffer + with Import, Address => To_Address (To_Integer + (FBPonse.Framebuffers) + ((Integer_Address (I) - 1) * + (Unsigned_64'Size / 8))); + begin + -- Translate the boot information into fbdev info and register + -- one device per framebuffer. + -- They start at 0 by Linux convention, the best kind of + -- convention! + -- TODO: The 4 red/green/blue/transp values are hardcoded. + -- They can be fetched from the loader instead, which is + -- a bit painful in all honesty. + Data := new Internal_FB_Data' + (Fb => Fb.all, + Fixed_Info => + (ID => "Limine BootFB" & (14 .. 16 => NUL), + SMem_Start => 0, + SMem_Length => Unsigned_32 (Fb.Pitch * Fb.Height), + FB_Type => FB_TYPE_PACKED_PIXELS, + Type_Aux => 0, + Visual => FB_VISUAL_TRUECOLOR, + X_Pan_Step => 0, + Y_Pan_Step => 0, + Y_Wrap_Step => 0, + Line_Length => 0, + MMIO_Start => 0, + MMIO_Length => 0, + Accel => 0, + Capabilities => 0), + Variable_Info => + (X_Res => Unsigned_32 (Fb.Width), + Y_Res => Unsigned_32 (Fb.Height), + X_Res_Virtual => Unsigned_32 (Fb.Width), + Y_Res_Virtual => Unsigned_32 (Fb.Height), + Bits_Per_Pixel => Unsigned_32 (Fb.BPP), + Activate => FB_ACTIVATE_NOW, + VMode => FB_VMODE_NONINTERLACED, + Width => Unsigned_32'Last, + Height => Unsigned_32'Last, + Red => (16, 8, 0), + Green => (08, 8, 0), + Blue => (00, 8, 0), + Transp => (24, 8, 0), -- Look the TODO! + others => 0)); + + Device := + (Data => Data.all'Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Sync => null, + Sync_Range => null, + Read => null, + Write => null, + IO_Control => IO_Control'Access, + Mmap => Mmap'Access, + Poll => null); + + Dev_Name (Dev_Name'Last) := + Character'Val ((I - 1) + Character'Pos ('0')); + Register (Device, Dev_Name, Success); + exit when not Success; + end; + end loop; + + return Success; + end Init; + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean + is + -- fbdev ioctl requests. + FBIOGET_VSCREENINFO : constant := 16#4600#; + FBIOPUT_VSCREENINFO : constant := 16#4601#; + FBIOGET_FSCREENINFO : constant := 16#4602#; + + Dev_Data : Internal_FB_Data with Import, Address => Data; + Var_Req : FB_Var_ScreenInfo with Import, Address => Argument; + Fix_Req : FB_Fix_ScreenInfo with Import, Address => Argument; + begin + case Request is + when FBIOGET_VSCREENINFO => Var_Req := Dev_Data.Variable_Info; + when FBIOPUT_VSCREENINFO => Dev_Data.Variable_Info := Var_Req; + when FBIOGET_FSCREENINFO => Fix_Req := Dev_Data.Fixed_Info; + when others => return False; + end case; + return True; + end IO_Control; + + function Mmap + (Data : System.Address; + Map : Arch.MMU.Page_Table_Acc; + Address : Memory.Virtual_Address; + Length : Unsigned_64; + Flags : Arch.MMU.Page_Permissions) return Boolean + is + Dev_Data : Internal_FB_Data with Import, Address => Data; + IntAddr : constant Integer_Address := To_Integer (Dev_Data.Fb.Address); + begin + return Arch.MMU.Map_Range + (Map => Map, + Virtual_Start => To_Address (Address), + Physical_Start => To_Address (IntAddr - Memory_Offset), + Length => Storage_Count (Length), + Permissions => Flags, + Caching => Arch.MMU.Write_Combining); + end Mmap; +end Devices.FB; diff --git a/source/arch/x86_64-limine/devices-fb.ads b/source/arch/x86_64-limine/devices-fb.ads new file mode 100644 index 0000000..f7edbf4 --- /dev/null +++ b/source/arch/x86_64-limine/devices-fb.ads @@ -0,0 +1,37 @@ +-- devices-fb.ads: Boot-time memory framebuffer driver. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Memory; +with Arch.MMU; + +package Devices.FB is + -- Initialize the device. + function Init return Boolean; + +private + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean; + + function Mmap + (Data : System.Address; + Map : Arch.MMU.Page_Table_Acc; + Address : Memory.Virtual_Address; + Length : Unsigned_64; + Flags : Arch.MMU.Page_Permissions) return Boolean; +end Devices.FB; diff --git a/source/arch/x86_64-limine/devices-hwrng.adb b/source/arch/x86_64-limine/devices-hwrng.adb new file mode 100644 index 0000000..3f30d3d --- /dev/null +++ b/source/arch/x86_64-limine/devices-hwrng.adb @@ -0,0 +1,76 @@ +-- devices-hwrng.adb: Hardware random number generator. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Machine_Code; +with Arch.Snippets; + +package body Devices.HWRNG is + function Init return Boolean is + EAX, EBX, ECX, EDX : Unsigned_32; + Success : Boolean; + begin + -- Check for RDRAND. + Arch.Snippets.Get_CPUID (1, 0, EAX, EBX, ECX, EDX); + if (ECX and Shift_Left (1, 30)) = 0 then + return True; + end if; + + Register + ((Data => System.Null_Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Read => Read'Access, + Write => null, + Sync => null, + Sync_Range => null, + IO_Control => null, + Mmap => null, + Poll => null), "hwrng", Success); + return True; + end Init; + ---------------------------------------------------------------------------- + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + + Val : Unsigned_16; + begin + Data := (others => 0); + + for O of Data loop + System.Machine_Code.Asm + ("1: rdrand %0; jnc 1b", + Outputs => Unsigned_16'Asm_Output ("=r", Val), + Clobber => "memory", + Volatile => True); + + O := Unsigned_8 (Val and 16#FF#); + end loop; + + Ret_Count := Data'Length; + Success := True; + end Read; +end Devices.HWRNG; diff --git a/source/arch/x86_64-limine/devices-hwrng.ads b/source/arch/x86_64-limine/devices-hwrng.ads new file mode 100644 index 0000000..9c7aac5 --- /dev/null +++ b/source/arch/x86_64-limine/devices-hwrng.ads @@ -0,0 +1,30 @@ +-- devices-hwrng.ads: Hardware random number generator. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.HWRNG is + -- Initialize the device. + function Init return Boolean; + +private + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); +end Devices.HWRNG; diff --git a/source/arch/x86_64-limine/devices-i6300esb.adb b/source/arch/x86_64-limine/devices-i6300esb.adb new file mode 100644 index 0000000..c79c0eb --- /dev/null +++ b/source/arch/x86_64-limine/devices-i6300esb.adb @@ -0,0 +1,138 @@ +-- devices-i6300esb.adb: i6300ESB watchdog driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Memory; +with System.Address_To_Access_Conversions; +with System.Storage_Elements; use System.Storage_Elements; + +package body Devices.i6300ESB is + -- TODO: This beautiful piece of hardware is a 2-stage \ ______/ V`-, + -- is a 2-stage watchdog, so far we only use the second } /~~ + -- instant death stage, maybe a software recoverable dog /_)^ --,r' + -- would be nice to expose to userland somehow? |b |b + + package Con is new System.Address_To_Access_Conversions (Dog_Data); + + function Init return Boolean is + Success : Boolean; + Data : Dog_Data_Acc; + PCI_Dev : Arch.PCI.PCI_Device; + PCI_BAR : Arch.PCI.Base_Address_Register; + begin + Arch.PCI.Search_Device (16#8#, 16#80#, 0, 1, PCI_Dev, Success); + if not Success then + return True; + end if; + Arch.PCI.Get_BAR (PCI_Dev, 0, PCI_BAR, Success); + if not Success or else not PCI_BAR.Is_MMIO then + return True; + end if; + + Data := new Dog_Data' + (PCI_Data => PCI_Dev, + Base_Addr => To_Address (Memory.Memory_Offset + PCI_BAR.Base)); + + -- Initialize the device. + Arch.PCI.Write16 (PCI_Dev, CONFIG, DOG_OUTPUT or DOG_INT_TYPE); + Arch.PCI.Write8 (PCI_Dev, LOCK, 0); + Unlock_Registers (Data.Base_Addr); + declare + Reg : Unsigned_16 with Import, Address => Data.Base_Addr + RELOAD; + begin + Reg := DOG_RELOAD or DOG_TIMEOUT; + end; + + Register + ((Data => Con.To_Address (Con.Object_Pointer (Data)), + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Read => null, + Write => Write'Access, + Sync => null, + Sync_Range => null, + IO_Control => IO_Control'Access, + Mmap => null, + Poll => null), "i6300esb", Success); + return Success; + end Init; + ---------------------------------------------------------------------------- + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + D : constant Dog_Data_Acc := Dog_Data_Acc (Con.To_Pointer (Key)); + begin + Keep_Alive (D.Base_Addr); + Ret_Count := Data'Length; + Success := True; + end Write; + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean + is + WDOG_START : constant := 1; + WDOG_STOP : constant := 2; + WDOG_HEARTBEAT : constant := 3; + D : constant Dog_Data_Acc := Dog_Data_Acc (Con.To_Pointer (Data)); + + Timeout : Unsigned_32 with Import, Address => Argument; + TIMER1_Reg : Unsigned_32 with Import, Address => D.Base_Addr + TIMER1; + TIMER2_Reg : Unsigned_32 with Import, Address => D.Base_Addr + TIMER2; + begin + Keep_Alive (D.Base_Addr); + case Request is + when WDOG_START => + Arch.PCI.Write8 (D.PCI_Data, LOCK, DOG_ENABLE); + return True; + when WDOG_STOP => + Arch.PCI.Write8 (D.PCI_Data, LOCK, 0); + return Arch.PCI.Read8 (D.PCI_Data, LOCK) /= 0; + when WDOG_HEARTBEAT => + Unlock_Registers (D.Base_Addr); + TIMER1_Reg := Shift_Left (Timeout, 9); + Unlock_Registers (D.Base_Addr); + TIMER2_Reg := Shift_Left (Timeout, 9); + Keep_Alive (D.Base_Addr); + return True; + when others => + return False; + end case; + end IO_Control; + ---------------------------------------------------------------------------- + procedure Unlock_Registers (Base_Addr : System.Address) is + Reg : Unsigned_16 with Import, Address => Base_Addr + RELOAD; + begin + Reg := UNLOCK1; + Reg := UNLOCK2; + end Unlock_Registers; + + procedure Keep_Alive (Base_Addr : System.Address) is + Reg : Unsigned_16 with Import, Address => Base_Addr + RELOAD; + begin + Unlock_Registers (Base_Addr); + Reg := DOG_RELOAD; + end Keep_Alive; +end Devices.i6300ESB; diff --git a/source/arch/x86_64-limine/devices-i6300esb.ads b/source/arch/x86_64-limine/devices-i6300esb.ads new file mode 100644 index 0000000..eaedbde --- /dev/null +++ b/source/arch/x86_64-limine/devices-i6300esb.ads @@ -0,0 +1,66 @@ +-- devices-i6300esb.ads: i6300ESB watchdog driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.PCI; + +package Devices.i6300ESB is + -- Initialize the device. + function Init return Boolean; + +private + + -- Data stored for the watchdog. + type Dog_Data is record + PCI_Data : Arch.PCI.PCI_Device; + Base_Addr : System.Address; + end record; + type Dog_Data_Acc is access all Dog_Data; + + -- Offsets of several MMIO registers. + TIMER1 : constant := 16#00#; + TIMER2 : constant := 16#04#; + GINTSR : constant := 16#08#; + RELOAD : constant := 16#0C#; + + -- Offsets of PCI registers. + CONFIG : constant := 16#60#; + LOCK : constant := 16#68#; + + -- Magic values and bitfields for register values. + UNLOCK1 : constant := 16#80#; + UNLOCK2 : constant := 16#86#; + DOG_TIMEOUT : constant := 2#1000000000#; + DOG_RELOAD : constant := 2#0100000000#; + DOG_ENABLE : constant := 2#0000000010#; + DOG_OUTPUT : constant := 2#0000000010#; + DOG_INT_TYPE : constant := 2#0000000001#; + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean; + ---------------------------------------------------------------------------- + procedure Unlock_Registers (Base_Addr : System.Address); + procedure Keep_Alive (Base_Addr : System.Address); +end Devices.i6300ESB; diff --git a/source/arch/x86_64-limine/devices-lpt.adb b/source/arch/x86_64-limine/devices-lpt.adb new file mode 100644 index 0000000..e3f5bd6 --- /dev/null +++ b/source/arch/x86_64-limine/devices-lpt.adb @@ -0,0 +1,74 @@ +-- devices-lpt.adb: Parallel port driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Address_To_Access_Conversions; +with Arch.Snippets; + +package body Devices.LPT is + package Conv is new System.Address_To_Access_Conversions (LP_Data); + + function Init return Boolean is + Success : Boolean; + Data : LP_Data_Acc; + begin + for I in LPT_Ports'Range loop + Data := new LP_Data'(Port => LPT_Ports (I)); + Register + ((Data => Conv.To_Address (Conv.Object_Pointer (Data)), + ID => (others => 0), + Is_Block => True, + Block_Size => 4096, + Block_Count => 0, + Read => null, + Write => Write'Access, + Sync => null, + Sync_Range => null, + IO_Control => null, + Mmap => null, + Poll => null), + "lpt" & (Character'Val (I + Character'Pos ('0'))), Success); + end loop; + return Success; + end Init; + ---------------------------------------------------------------------------- + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + LPT : LP_Data with Import, Address => Key; + Strobe : Unsigned_8; + begin + for Val of Data loop + loop + exit when (Arch.Snippets.Port_In (LPT.Port + 1) and 16#80#) /= 0; + end loop; + + Arch.Snippets.Port_Out (LPT.Port, Val); + + Strobe := Arch.Snippets.Port_In (LPT.Port + 2); + Arch.Snippets.Port_Out (LPT.Port + 2, Strobe or 1); + Arch.Snippets.Port_Out (LPT.Port + 2, Strobe); + end loop; + Ret_Count := Data'Length; + Success := True; + end Write; +end Devices.LPT; diff --git a/source/arch/x86_64-limine/devices-lpt.ads b/source/arch/x86_64-limine/devices-lpt.ads new file mode 100644 index 0000000..392e92a --- /dev/null +++ b/source/arch/x86_64-limine/devices-lpt.ads @@ -0,0 +1,38 @@ +-- devices-lpt.ads: Parallel port driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.LPT is + -- Initialize the device. + function Init return Boolean; + +private + + LPT_Ports : constant array (1 .. 3) of Unsigned_16 := + (16#378#, 16#278#, 16#3BC#); + + type LP_Data is record + Port : Unsigned_16; + end record; + type LP_Data_Acc is access LP_Data; + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); +end Devices.LPT; diff --git a/source/arch/x86_64-limine/devices-pc_speaker.adb b/source/arch/x86_64-limine/devices-pc_speaker.adb new file mode 100644 index 0000000..4fde80f --- /dev/null +++ b/source/arch/x86_64-limine/devices-pc_speaker.adb @@ -0,0 +1,80 @@ +-- devices-pc_speaker.adb: PC speaker driver. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Snippets; use Arch.Snippets; + +package body Devices.PC_Speaker is + function Init return Boolean is + Success : Boolean; + begin + Register + ((Data => System.Null_Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Read => null, + Write => null, + Sync => null, + Sync_Range => null, + IO_Control => IO_Control'Access, + Mmap => null, + Poll => null), "pcspeaker", Success); + return Success; + end Init; + + procedure Beep (Frequency : Unsigned_32 := 1000) is + Divisor : constant Unsigned_32 := 1193180 / Frequency; + Tmp : Unsigned_8; + begin + + -- Set the PIT to the frequency we want. + Port_Out (16#43#, 16#B6#); + Port_Out (16#42#, Unsigned_8 (Divisor and 16#FF#)); + Port_Out (16#42#, Unsigned_8 (Shift_Right (Divisor, 8) and 16#FF#)); + + -- Play. + Tmp := Port_In (16#61#); + if Tmp /= (Tmp or 3) then + Port_Out (16#61#, Tmp or 3); + end if; + + -- Wait for a few cycles. + Delay_Execution (300_000_000); + + -- Make it stop. + Port_Out (16#61#, Port_In (16#61#) and 16#FC#); + end Beep; + ---------------------------------------------------------------------------- + procedure Delay_Execution (Cycles : Unsigned_64) is + Next_Stop : constant Unsigned_64 := Read_Cycles + Cycles; + begin + while Read_Cycles < Next_Stop loop null; end loop; + end Delay_Execution; + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean + is + pragma Unreferenced (Data); + pragma Unreferenced (Request); + Frequency : Unsigned_32 with Import, Address => Argument; + begin + Beep (Frequency); + return True; + end IO_Control; +end Devices.PC_Speaker; diff --git a/source/arch/x86_64-limine/devices-pc_speaker.ads b/source/arch/x86_64-limine/devices-pc_speaker.ads new file mode 100644 index 0000000..ecb2122 --- /dev/null +++ b/source/arch/x86_64-limine/devices-pc_speaker.ads @@ -0,0 +1,32 @@ +-- devices-pc_speaker.ads: PC speaker driver. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.PC_Speaker is + -- Initialize the device. + function Init return Boolean; + + -- Beep! + procedure Beep (Frequency : Unsigned_32 := 1000); + +private + + procedure Delay_Execution (Cycles : Unsigned_64); + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean; +end Devices.PC_Speaker; diff --git a/source/arch/x86_64-limine/devices-ps2keyboard.adb b/source/arch/x86_64-limine/devices-ps2keyboard.adb new file mode 100644 index 0000000..a3d243d --- /dev/null +++ b/source/arch/x86_64-limine/devices-ps2keyboard.adb @@ -0,0 +1,182 @@ +-- devices-ps2keyboard.adb: PS2 keyboard driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.IDT; +with Arch.APIC; +with Arch.CPU; +with Arch.Snippets; +with Scheduler; + +package body Devices.PS2Keyboard is + -- Globals to communicate with the interrupt routine. + Has_Data : Boolean := False with Volatile; + Scancodes : array (1 .. 2) of Unsigned_8 := (0, 0) with Volatile; + + function Init return Boolean is + BSP_LAPIC : constant Unsigned_32 := Arch.CPU.Core_Locals (1).LAPIC_ID; + Index : Arch.IDT.IRQ_Index; + Data : Unsigned_8; + Success : Boolean; + begin + -- Set the interrupt up, which is always the 34 (we are 1 based). + Arch.IDT.Load_ISR (Keyboard_Handler'Address, Index, Success); + if not Success then + return False; + end if; + if not Arch.APIC.IOAPIC_Set_Redirect (BSP_LAPIC, 34, Index, True) then + return False; + end if; + + -- Take the chance for initializing the PS2 controller. + -- Disable primary and secondary PS/2 ports + Arch.Snippets.Port_Out (16#64#, 16#AD#); + Arch.Snippets.Port_Out (16#64#, 16#A7#); + + -- Read from port 0x60 to flush the PS/2 controller buffer. + while (Arch.Snippets.Port_In (16#64#) and 1) /= 0 loop + Data := Arch.Snippets.Port_In (16#60#); + end loop; + + -- Enable keyboard interrupt and keyboard scancode translation. + Data := Read_PS2_Config; + Data := Data or Shift_Left (1, 0) or Shift_Left (1, 6); + + -- Enable mouse interrupt if any + if (Data and Shift_Left (1, 5)) /= 0 then + Data := Data or Shift_Left (1, 1); + end if; + + -- Write changes, enable keyboard port, and enable mouse port if any. + Write_PS2_Config (Data); + Write_PS2 (16#64#, 16#AE#); + if (Data and Shift_Left (1, 5)) /= 0 then + Write_PS2 (16#64#, 16#A8#); + end if; + + Register + ((Data => System.Null_Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Sync => null, + Sync_Range => null, + Read => Read'Access, + Write => null, + IO_Control => null, + Mmap => null, + Poll => Poll'Access), "ps2keyboard", Success); + return Success; + end Init; + + function Read_PS2 return Unsigned_8 is + begin + while (Arch.Snippets.Port_In (16#64#) and 1) = 0 loop + Scheduler.Yield_If_Able; + end loop; + return Arch.Snippets.Port_In (16#60#); + end Read_PS2; + + procedure Write_PS2 (Port : Unsigned_16; Value : Unsigned_8) is + begin + while (Arch.Snippets.Port_In (16#64#) and 2) /= 0 loop + Scheduler.Yield_If_Able; + end loop; + Arch.Snippets.Port_Out (Port, Value); + end Write_PS2; + + function Read_PS2_Config return Unsigned_8 is + begin + Write_PS2 (16#64#, 16#20#); + return Read_PS2; + end Read_PS2_Config; + + procedure Write_PS2_Config (Value : Unsigned_8) is + begin + Write_PS2 (16#64#, 16#60#); + Write_PS2 (16#60#, Value); + end Write_PS2_Config; + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + Temp : Boolean := Has_Data; + Code : Unsigned_8; + begin + if Is_Blocking then + loop + exit when Temp; + Scheduler.Yield_If_Able; + Temp := Has_Data; + end loop; + end if; + + if Temp then + Code := Scancodes (2); + if Code = 16#00# then + Data (Data'First) := Scancodes (1); + Ret_Count := 1; + else + Data (Data'First) := Scancodes (1); + Data (Data'First + 1) := Scancodes (2); + Ret_Count := 2; + end if; + + Success := True; + Has_Data := False; + else + Success := False; + Ret_Count := 0; + end if; + end Read; + + procedure Poll + (Data : System.Address; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean) + is + pragma Unreferenced (Data); + begin + Can_Read := Has_Data; + Can_Write := False; + Is_Error := False; + end Poll; + + procedure Keyboard_Handler is + Input : constant Unsigned_8 := Arch.Snippets.Port_In (16#60#); + C1 : constant Unsigned_8 := Scancodes (1); + C2 : constant Unsigned_8 := Scancodes (2); + begin + if C1 = 16#E0# and C2 = 16#00# then + Scancodes (2) := Input; + Has_Data := True; + else + Scancodes (1) := Input; + Scancodes (2) := 16#00#; + Has_Data := Input /= 16#E0#; + end if; + + Arch.APIC.LAPIC_EOI; + end Keyboard_Handler; +end Devices.PS2Keyboard; diff --git a/source/arch/x86_64-limine/devices-ps2keyboard.ads b/source/arch/x86_64-limine/devices-ps2keyboard.ads new file mode 100644 index 0000000..475f9a0 --- /dev/null +++ b/source/arch/x86_64-limine/devices-ps2keyboard.ads @@ -0,0 +1,43 @@ +-- devices-ps2keyboard.ads: PS2 keyboard driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.PS2Keyboard is + -- Initialize the device. + function Init return Boolean; + +private + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Poll + (Data : System.Address; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean); + + function Read_PS2 return Unsigned_8; + procedure Write_PS2 (Port : Unsigned_16; Value : Unsigned_8); + function Read_PS2_Config return Unsigned_8; + procedure Write_PS2_Config (Value : Unsigned_8); + + procedure Keyboard_Handler; +end Devices.PS2Keyboard; diff --git a/source/arch/x86_64-limine/devices-ps2mouse.adb b/source/arch/x86_64-limine/devices-ps2mouse.adb new file mode 100644 index 0000000..de69cf5 --- /dev/null +++ b/source/arch/x86_64-limine/devices-ps2mouse.adb @@ -0,0 +1,331 @@ +-- devices-ps2mouse.adb: PS2 mouse driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch; +with Arch.IDT; +with Arch.APIC; +with Arch.CPU; +with Arch.Snippets; +with Ada.Unchecked_Conversion; +with Scheduler; +with Lib.Messages; + +package body Devices.PS2Mouse is + -- Type used by userland to fetch packets. + type Mouse_Data is record + X_Variation : Integer; + Y_Variation : Integer; + Z_Variation : Integer; + Is_Left_Click : Boolean; + Is_Right_Click : Boolean; + Is_Middle_Click : Boolean; + Is_4th_Button : Boolean; + Is_5th_Button : Boolean; + end record; + + -- Types used by mouse internals. + type Signed_8 is range -128 .. 127 with Size => 8; + function To_Signed is new Ada.Unchecked_Conversion (Unsigned_8, Signed_8); + + -- Data used between the driver and the IRQ routine to synchronize. + Has_Returned : Boolean with Atomic, Volatile; + Return_Data : Mouse_Data with Volatile; + Current_Mouse_Flags : Unsigned_8; + Has_4th_Packet : Boolean := False; + Has_Extra_Buttons : Boolean := False; + Current_Mouse_Cycle : Integer range 1 .. 4 := 1; + + function Init return Boolean is + BSP_LAPIC : constant Unsigned_32 := Arch.CPU.Core_Locals (1).LAPIC_ID; + Index : Arch.IDT.IRQ_Index; + Data, Unused : Unsigned_8; + Success : Boolean; + begin + -- Set the interrupt up, which is always the 45 (we are 1 based). + Arch.IDT.Load_ISR (Mouse_Handler'Address, Index, Success); + if not Success then + return False; + end if; + if not Arch.APIC.IOAPIC_Set_Redirect (BSP_LAPIC, 45, Index, True) then + return False; + end if; + + -- Init the mouse. + Mouse_Wait_Write; + Arch.Snippets.Port_Out (16#64#, 16#A8#); + Mouse_Wait_Write; + Arch.Snippets.Port_Out (16#64#, 16#20#); + Data := Mouse_Read; + Unused := Mouse_Read; + Data := Data or Shift_Left (1, 1); + Data := Data and (not Shift_Left (1, 5)); + Mouse_Wait_Write; + Arch.Snippets.Port_Out (16#64#, 16#60#); + Mouse_Wait_Write; + Arch.Snippets.Port_Out (16#60#, Data); + Unused := Mouse_Read; + Mouse_Write (16#F6#); + Unused := Mouse_Read; + Mouse_Write (16#F4#); + Unused := Mouse_Read; + + -- Try to enable scrollwheel and 4th/5th buttons. + Set_Sample_Rate (200); + Set_Sample_Rate (100); + Set_Sample_Rate (80); + Data := Identify_Mouse; + if Data = 3 then + Has_4th_Packet := True; + Lib.Messages.Put_Line ("Scrollwheel support enabled for mouse"); + Set_Sample_Rate (200); + Set_Sample_Rate (200); + Set_Sample_Rate (80); + Data := Identify_Mouse; + if Data = 4 then + Has_Extra_Buttons := True; + Lib.Messages.Put_Line ("extra button support enabled for mouse"); + end if; + end if; + + -- Restore sample rate to the highest (POWER!!!). + Set_Sample_Rate (200); + + Register + ((Data => System.Null_Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Sync => null, + Sync_Range => null, + Read => Read'Access, + Write => null, + IO_Control => IO_Control'Access, + Mmap => null, + Poll => Poll'Access), "ps2mouse", Success); + return Success; + end Init; + ---------------------------------------------------------------------------- + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + Temp : Boolean := Has_Returned; + Data2 : Mouse_Data with Address => Data (Data'First)'Address; + begin + if Is_Blocking then + loop + exit when Temp; + Arch.Snippets.Wait_For_Interrupt; + Temp := Has_Returned; + end loop; + elsif not Temp then + Success := False; + return; + end if; + + Data2 := Return_Data; + Ret_Count := Return_Data'Size / 8; + Success := True; + Has_Returned := False; + end Read; + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean + is + pragma Unreferenced (Data); + + function To_Integer is + new Ada.Unchecked_Conversion (System.Address, Unsigned_64); + + IOCTL_Enable_2_1_Scaling : constant := 1; + IOCTL_Enable_1_1_Scaling : constant := 2; + IOCTL_Set_Resolution : constant := 3; + IOCTL_Set_Sample_Rate : constant := 4; + + Argument_Integer : constant Unsigned_64 := To_Integer (Argument); + Unused : Unsigned_8; + begin + case Request is + when IOCTL_Enable_2_1_Scaling => + Mouse_Write (16#E7#); + Unused := Mouse_Read; + when IOCTL_Enable_1_1_Scaling => + Mouse_Write (16#E6#); + Unused := Mouse_Read; + when IOCTL_Set_Resolution => + if Argument_Integer <= 3 then + Mouse_Write (16#E8#); + Unused := Mouse_Read; + Mouse_Write (Unsigned_8 (Argument_Integer)); + Unused := Mouse_Read; + else + return False; + end if; + when IOCTL_Set_Sample_Rate => + if Argument_Integer <= 200 then + Mouse_Write (16#F3#); + Unused := Mouse_Read; + Mouse_Write (Unsigned_8 (Argument_Integer)); + Unused := Mouse_Read; + else + return False; + end if; + when others => + return False; + end case; + + Current_Mouse_Cycle := 1; + return True; + end IO_Control; + + procedure Poll + (Data : System.Address; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean) + is + pragma Unreferenced (Data); + begin + Can_Read := Has_Returned; + Can_Write := False; + Is_Error := False; + end Poll; + + procedure Mouse_Handler is + Data : Unsigned_8; + begin + case Current_Mouse_Cycle is + when 1 => + Data := Arch.Snippets.Port_In (16#60#); + Current_Mouse_Flags := Data; + + if (Data and Shift_Left (1, 3)) /= 0 and + (Data and Shift_Left (1, 6)) = 0 and + (Data and Shift_Left (1, 7)) = 0 + then + Current_Mouse_Cycle := 2; + end if; + + Return_Data.Is_Left_Click := (Data and Shift_Left (1, 0)) /= 0; + Return_Data.Is_Right_Click := (Data and Shift_Left (1, 1)) /= 0; + Return_Data.Is_Middle_Click := (Data and Shift_Left (1, 2)) /= 0; + when 2 => + Data := Arch.Snippets.Port_In (16#60#); + Current_Mouse_Cycle := 3; + if (Current_Mouse_Flags and Shift_Left (1, 4)) /= 0 then + Return_Data.X_Variation := Integer (To_Signed (Data)); + else + Return_Data.X_Variation := Integer (Data); + end if; + when 3 => + Data := Arch.Snippets.Port_In (16#60#); + + if (Current_Mouse_Flags and Shift_Left (1, 5)) /= 0 then + Return_Data.Y_Variation := -Integer (To_Signed (Data)); + else + Return_Data.Y_Variation := -Integer (Data); + end if; + + if Has_4th_Packet then + Current_Mouse_Cycle := 4; + else + Current_Mouse_Cycle := 1; + Has_Returned := True; + end if; + when 4 => + Data := Arch.Snippets.Port_In (16#60#); + + -- GNAT (maybe Ada?) doesnt support 4 bit integers, so we have to + -- improvise to take the last 4 bits of the z variation. + if (Data and 2#1000#) /= 0 then + Return_Data.Z_Variation := -(Integer (Data and 2#111#) + 1); + else + Return_Data.Z_Variation := Integer (Data and 2#111#); + end if; + + if Has_Extra_Buttons then + Return_Data.Is_4th_Button := (Data and Shift_Left (1, 4)) /= 0; + Return_Data.Is_5th_Button := (Data and Shift_Left (1, 5)) /= 0; + end if; + + Current_Mouse_Cycle := 1; + Has_Returned := True; + end case; + + Arch.APIC.LAPIC_EOI; + end Mouse_Handler; + + procedure Mouse_Wait_Read is + begin + for I in 1 .. 100_000 loop + exit when (Arch.Snippets.Port_In (16#64#) and Shift_Left (1, 0)) /= 0; + Scheduler.Yield_If_Able; + end loop; + end Mouse_Wait_Read; + + procedure Mouse_Wait_Write is + begin + for I in 1 .. 100_000 loop + exit when (Arch.Snippets.Port_In (16#64#) and Shift_Left (1, 1)) = 0; + Scheduler.Yield_If_Able; + end loop; + end Mouse_Wait_Write; + + function Mouse_Read return Unsigned_8 is + begin + Mouse_Wait_Read; + return Arch.Snippets.Port_In (16#60#); + end Mouse_Read; + + procedure Mouse_Write (Data : Unsigned_8) is + begin + Mouse_Wait_Write; + Arch.Snippets.Port_Out (16#64#, 16#D4#); + Mouse_Wait_Write; + Arch.Snippets.Port_Out (16#60#, Data); + end Mouse_Write; + + procedure Set_Sample_Rate (Rate : Unsigned_8) is + Discard : Unsigned_8; + begin + Mouse_Write (16#F3#); + Discard := Mouse_Read; + Mouse_Write (Rate); + Discard := Mouse_Read; + end Set_Sample_Rate; + + function Identify_Mouse return Unsigned_8 is + Discard : Unsigned_8; + Result : Unsigned_8; + begin + Mouse_Write (16#F5#); + Discard := Mouse_Read; + Mouse_Write (16#F2#); + Discard := Mouse_Read; + Result := Mouse_Read; + Mouse_Write (16#F4#); + return Result; + end Identify_Mouse; +end Devices.PS2Mouse; diff --git a/source/arch/x86_64-limine/devices-ps2mouse.ads b/source/arch/x86_64-limine/devices-ps2mouse.ads new file mode 100644 index 0000000..c3d0db9 --- /dev/null +++ b/source/arch/x86_64-limine/devices-ps2mouse.ads @@ -0,0 +1,50 @@ +-- devices-ps2mouse.ads: PS2 mouse driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.PS2Mouse is + -- Initialize the device. + function Init return Boolean; + +private + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean; + + procedure Poll + (Data : System.Address; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean); + + procedure Mouse_Handler; + procedure Mouse_Wait_Read; + procedure Mouse_Wait_Write; + function Mouse_Read return Unsigned_8; + procedure Mouse_Write (Data : Unsigned_8); + + procedure Set_Sample_Rate (Rate : Unsigned_8); + function Identify_Mouse return Unsigned_8; +end Devices.PS2Mouse; diff --git a/source/arch/x86_64-limine/devices-sata.adb b/source/arch/x86_64-limine/devices-sata.adb new file mode 100644 index 0000000..04d6b13 --- /dev/null +++ b/source/arch/x86_64-limine/devices-sata.adb @@ -0,0 +1,586 @@ +-- devices-sata.adb: SATA driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Address_To_Access_Conversions; +with System.Storage_Elements; use System.Storage_Elements; +with Lib.Messages; +with Devices.Partitions; +with Arch.PCI; +with Arch.MMU; +with Memory; +with Lib.Alignment; + +package body Devices.SATA with SPARK_Mode => Off is + package C1 is new System.Address_To_Access_Conversions (SATA_Data); + package C2 is new System.Address_To_Access_Conversions (HBA_Memory); + package C3 is new System.Address_To_Access_Conversions (FIS_Host_To_Device); + package A is new Lib.Alignment (Unsigned_64); + + function Init return Boolean is + PCI_Dev : Arch.PCI.PCI_Device; + PCI_BAR : Arch.PCI.Base_Address_Register; + Drive_Data : SATA_Data_Acc; + Mem_Addr : Integer_Address; + Dev_Mem : HBA_Memory_Acc; + Drive_Idx : Natural := 0; + Success : Boolean; + Base_Name : constant String := "sata"; + Num_Str : Lib.Messages.Translated_String; + Num_Len : Natural; + begin + for Idx in 1 .. Arch.PCI.Enumerate_Devices (1, 6, 1) loop + Arch.PCI.Search_Device (1, 6, 1, Idx, PCI_Dev, Success); + if not Success then + return True; + end if; + + Arch.PCI.Get_BAR (PCI_Dev, 5, PCI_BAR, Success); + if not Success or else not PCI_BAR.Is_MMIO then + return True; + end if; + + Arch.PCI.Enable_Bus_Mastering (PCI_Dev); + Mem_Addr := PCI_BAR.Base + Memory.Memory_Offset; + Dev_Mem := HBA_Memory_Acc (C2.To_Pointer (To_Address (Mem_Addr))); + + if not Arch.MMU.Map_Range + (Map => Arch.MMU.Kernel_Table, + Physical_Start => To_Address (PCI_BAR.Base), + Virtual_Start => To_Address (Mem_Addr), + Length => Storage_Count (A.Align_Up + (HBA_Memory'Size / 8, Arch.MMU.Page_Size)), + Permissions => + (Is_User_Accesible => False, + Can_Read => True, + Can_Write => True, + Can_Execute => False, + Is_Global => True), + Caching => Arch.MMU.Uncacheable) + then + return False; + end if; + + for I in 1 .. Ports_Per_Controller loop + Drive_Data := Init_Port (Dev_Mem, I); + if Drive_Data /= null then + Drive_Idx := Drive_Idx + 1; + Lib.Messages.Image (Unsigned_32 (Drive_Idx), Num_Str, Num_Len); + + declare + Final_Name : constant String := Base_Name & + Num_Str (Num_Str'Last - Num_Len + 1 .. Num_Str'Last); + begin + Register ( + (Data => C1.To_Address (C1.Object_Pointer (Drive_Data)), + ID => (others => 0), + Is_Block => True, + Block_Size => Sector_Size, + Block_Count => Drive_Data.Sector_Count, + Read => Read'Access, + Write => Write'Access, + Sync => Sync'Access, + Sync_Range => Sync_Range'Access, + IO_Control => null, + Mmap => null, + Poll => null), Final_Name, Success); + if not Success or else + not Partitions.Parse_Partitions + (Final_Name, Fetch (Final_Name)) + then + return False; + end if; + end; + end if; + end loop; + end loop; + + return True; + end Init; + + function Init_Port (M : HBA_Memory_Acc; I : Natural) return SATA_Data_Acc is + Identify : SATA_Identify_Acc; + IPM, Det : Unsigned_8; + Port_Data : HBA_Port_Acc; + Port_FIS : HBA_FIS_Acc; + Cmd_Area : HBA_Command_Area_Acc; + Cmd_TBLs : HBA_Command_TBL_Arr (1 .. Ports_Per_Controller); + Tmp : Integer_Address; + Tmp2 : Unsigned_64; + Dev_Data : SATA_Data_Acc; + Success : Boolean; + begin + -- Ensure the port is populated. + if (M.Port_Usage_Bitmap and Shift_Left (1, I - 1)) = 0 then + return null; + end if; + + -- Check the drive is SATA and not a bridge, SATAPI, or anything weird. + IPM := Unsigned_8 (Shift_Right (M.Ports (I).SATA_Status, 8) and 16#F#); + Det := Unsigned_8 (Shift_Right (M.Ports (I).SATA_Status, 0) and 16#F#); + if IPM /= 16#1# or Det /= 16#3# or M.Ports (I).Signature /= 16#101# then + return null; + end if; + + -- Allocate and initialize all the structures needed in advance. + Port_FIS := new HBA_FIS' + (DS_FIS => (FIS_Type => FIS_Type_DMA_Setup, others => <>), + Reserved_1 => (others => 0), + PS_FIS => (FIS_Type => FIS_Type_PIO_Setup, others => <>), + Reserved_2 => (others => 0), + Reg_FIS => (FIS_Type => FIS_Type_D2H, others => <>), + Reserved_3 => (others => 0), + SDB_FIS => (1 => FIS_Type_Device_Bits, others => 0), + U_FIS => (others => 0), + Reserved_4 => (others => 0)); + + Port_Data := M.Ports (I)'Access; + Tmp := To_Integer (Port_FIS.all'Address); + Tmp2 := Unsigned_64 (Tmp - Memory.Memory_Offset); + Port_Data.FIS_Base := Unsigned_32 (Tmp2 and 16#FFFFFFFF#); + Port_Data.FIS_Upper := Unsigned_32 (Shift_Right (Tmp2, 32)); + + Cmd_Area := new HBA_Command_Area; + Tmp := To_Integer (Cmd_Area.all'Address); + Tmp2 := Unsigned_64 (Tmp - Memory.Memory_Offset); + Port_Data.Command_List_Base := Unsigned_32 (Tmp2 and 16#FFFFFFFF#); + Port_Data.Command_List_Upper := Unsigned_32 (Shift_Right (Tmp2, 32)); + + for I in Cmd_Area.Headers'Range loop + Cmd_TBLs (I) := new HBA_Command_TBL; + Tmp := To_Integer (Cmd_TBLs (I).all'Address); + Tmp2 := Unsigned_64 (Tmp - Memory.Memory_Offset); + Cmd_Area.Headers (I).PRDTL := 8; + Cmd_Area.Headers (I).CTBA := Unsigned_32 (Tmp2 and 16#FFFFFFFF#); + Cmd_Area.Headers (I).CTBAU := Unsigned_32 (Shift_Right (Tmp2, 32)); + end loop; + + -- Find a slot for the identify command and setup the header. + Identify := new SATA_Identify; + Tmp := To_Integer (Identify.all'Address); + Tmp2 := Unsigned_64 (Tmp - Memory.Memory_Offset); + Dev_Data := new SATA_Data' + (Mutex => Lib.Synchronization.Unlocked_Semaphore, + FIS => Port_FIS, + Command_Area => Cmd_Area, + Command_TBLs => Cmd_TBLs, + Port_Data => Port_Data, + Sector_Count => 0, + Caches => (others => (Is_Used => False, others => <>)), + Next_Evict => 1); + Success := Issue_Command + (Drive => Dev_Data, + LBA => 0, + Command => 16#EC#, + Is_Identify => True, + Is_Write => False, + Data_Addr => Tmp2); + if not Success then + Lib.Messages.Put_Line ("SATA error while issuing identify"); + return null; + end if; + + declare + Sectors : Unsigned_64 with Address => Identify (101)'Address; + begin + Dev_Data.Sector_Count := Sectors; + end; + return Dev_Data; + end Init_Port; + + function Issue_Command + (Drive : SATA_Data_Acc; + LBA : Unsigned_64; + Command : Unsigned_8; + Is_Identify : Boolean; + Is_Write : Boolean; + Data_Addr : Unsigned_64) return Boolean + is + L0 : constant Unsigned_64 := Shift_Right (LBA and 16#0000000000FF#, 0); + L1 : constant Unsigned_64 := Shift_Right (LBA and 16#00000000FF00#, 8); + L2 : constant Unsigned_64 := Shift_Right (LBA and 16#000000FF0000#, 16); + L3 : constant Unsigned_64 := Shift_Right (LBA and 16#0000FF000000#, 24); + L4 : constant Unsigned_64 := Shift_Right (LBA and 16#00FF00000000#, 32); + L5 : constant Unsigned_64 := Shift_Right (LBA and 16#FF0000000000#, 40); + + Tmp : Integer_Address; + Slot : Natural; + FIS_Ptr : C3.Object_Pointer; + Spin : Natural; + Tmp3 : Unsigned_32; + begin + -- Make sure we are not going to do all of this for an LBA that does not + -- even exist. + if not Is_Identify and LBA >= Drive.Sector_Count then + return False; + end if; + + -- Find a slot for the identify command and setup the header. + Slot := Find_Command_Slot (Drive.Port_Data); + if Slot = 0 then + return False; + end if; + + Tmp := (FIS_Host_To_Device'Size / 8) / 4; + Drive.Command_Area.Headers (Slot).Control_Flags := Unsigned_5 (Tmp); + Drive.Command_Area.Headers (Slot).A := False; + Drive.Command_Area.Headers (Slot).W := Is_Write; + Drive.Command_Area.Headers (Slot).P := False; + Drive.Command_Area.Headers (Slot).R := False; + Drive.Command_Area.Headers (Slot).B := False; + Drive.Command_Area.Headers (Slot).C := False; + Drive.Command_Area.Headers (Slot).PMPort := 0; + Drive.Command_Area.Headers (Slot).PRDTL := 1; + Drive.Command_Area.Headers (Slot).PRDBC := 0; + + -- Fill the command table of the header with the command. + Drive.Command_TBLs (Slot).FIS_Buffer := (others => 0); + Drive.Command_TBLs (Slot).Command := (others => 0); + Drive.Command_TBLs (Slot).PRDT.DBA := + Unsigned_32 (Data_Addr and 16#FFFFFFFF#); + Drive.Command_TBLs (Slot).PRDT.DBAU := + Unsigned_32 (Shift_Right (Data_Addr, 32)); + Drive.Command_TBLs (Slot).PRDT.DBC := 511; + Drive.Command_TBLs (Slot).PRDT.I := True; + + -- Fill the identify FIS. + FIS_Ptr := C3.To_Pointer (Drive.Command_TBLs (Slot).FIS_Buffer'Address); + FIS_Ptr.FIS_Type := FIS_Type_H2D; + FIS_Ptr.PMPort := 0; + FIS_Ptr.Command_Or_Control := True; + FIS_Ptr.Command := Command; + FIS_Ptr.Feature_Low := 0; + FIS_Ptr.LBA0 := Unsigned_8 (L0); + FIS_Ptr.LBA1 := Unsigned_8 (L1); + FIS_Ptr.LBA2 := Unsigned_8 (L2); + FIS_Ptr.Device := (if Is_Identify then 0 else Shift_Left (1, 6)); + FIS_Ptr.LBA3 := Unsigned_8 (L3); + FIS_Ptr.LBA4 := Unsigned_8 (L4); + FIS_Ptr.LBA5 := Unsigned_8 (L5); + FIS_Ptr.Feature_High := 0; + FIS_Ptr.Count_Low := (if Is_Identify then 0 else 1); + FIS_Ptr.Count_High := 0; + FIS_Ptr.Command_Completion := 0; + FIS_Ptr.Control := 0; + + -- Wait for completion. + Spin := 0; + Tmp3 := ATA_Device_Busy or ATA_Device_DRQ; + loop + if (Drive.Port_Data.Task_File_Data and Tmp3) = 0 then + exit; + end if; + + if Spin >= 1000000 then + return False; + end if; + + Spin := Spin + 1; + end loop; + + -- Start the command engine, poll for success, and stop. + Start_Command_Engine (Drive.Port_Data); + Drive.Port_Data.Command_Issue := Shift_Left (1, Slot - 1); + loop + if (Drive.Port_Data.Command_Issue and Shift_Left (1, Slot - 1)) = 0 + then + exit; + end if; + + if (Drive.Port_Data.Interrupt_Status and Shift_Left (1, 30)) /= 0 then + return False; + end if; + end loop; + Stop_Command_Engine (Drive.Port_Data); + return True; + end Issue_Command; + + function Read_Sector + (Drive : SATA_Data_Acc; + LBA : Unsigned_64; + Data_Buffer : out Sector_Data) return Boolean + is + SAddr : constant System.Address := Data_Buffer'Address; + IAddr : constant Integer_Address := To_Integer (SAddr); + Success : Boolean; + begin + Success := Issue_Command + (Drive => Drive, + LBA => LBA, + Command => 16#25#, + Is_Identify => False, + Is_Write => False, + Data_Addr => Unsigned_64 (IAddr - Memory.Memory_Offset)); + if not Success then + Lib.Messages.Put_Line ("SATA error while reading"); + end if; + return Success; + end Read_Sector; + + function Write_Sector + (Drive : SATA_Data_Acc; + LBA : Unsigned_64; + Data_Buffer : Sector_Data) return Boolean + is + SAddr : constant System.Address := Data_Buffer'Address; + IAddr : constant Integer_Address := To_Integer (SAddr); + Success : Boolean; + begin + Success := Issue_Command + (Drive => Drive, + LBA => LBA, + Command => 16#35#, + Is_Identify => False, + Is_Write => True, + Data_Addr => Unsigned_64 (IAddr - Memory.Memory_Offset)); + if not Success then + Lib.Messages.Put_Line ("SATA error while reading"); + end if; + return Success; + end Write_Sector; + + procedure Get_Cache_Index + (Drive : SATA_Data_Acc; + LBA : Unsigned_64; + Idx : out Natural; + Success : out Boolean) + is + begin + Idx := 0; + + for I in Drive.Caches'Range loop + if Drive.Caches (I).Is_Used and Drive.Caches (I).LBA_Offset = LBA then + Idx := I; + Success := True; + return; + elsif not Drive.Caches (I).Is_Used and Idx = 0 then + Idx := I; + end if; + end loop; + + if Idx = 0 then + Idx := Drive.Next_Evict; + + if Drive.Caches (Drive.Next_Evict).Is_Dirty then + Success := Write_Sector + (Drive => Drive, + LBA => Drive.Caches (Idx).LBA_Offset, + Data_Buffer => Drive.Caches (Idx).Data); + if not Success then + Lib.Messages.Put_Line ("SATA could not write on cache fetch!"); + return; + end if; + end if; + + if Drive.Next_Evict = Drive.Caches'Last then + Drive.Next_Evict := Drive.Caches'First; + else + Drive.Next_Evict := Drive.Next_Evict + 1; + end if; + end if; + + Drive.Caches (Idx) := + (Is_Used => True, + LBA_Offset => LBA, + Is_Dirty => False, + Data => <>); + + Success := Read_Sector + (Drive => Drive, + LBA => Drive.Caches (Idx).LBA_Offset, + Data_Buffer => Drive.Caches (Idx).Data); + if not Success then + Lib.Messages.Put_Line ("SATA could not read on cache fetch!"); + end if; + end Get_Cache_Index; + + function Find_Command_Slot (Port : HBA_Port_Acc) return Natural is + Slots : constant Unsigned_32 := Port.SATA_Active or Port.Command_Issue; + begin + for I in 1 .. Ports_Per_Controller loop + if (Slots and Shift_Left (1, I - 1)) = 0 then + return I; + end if; + end loop; + + return 0; + end Find_Command_Slot; + + procedure Start_Command_Engine (Port : HBA_Port_Acc) is + begin + Port.Command_And_Status := Port.Command_And_Status and not HBA_PxCMD_ST; + loop + if (Port.Command_And_Status and HBA_PxCMD_CR) = 0 then + exit; + end if; + end loop; + Port.Command_And_Status := Port.Command_And_Status or HBA_PxCMD_FRE; + Port.Command_And_Status := Port.Command_And_Status or HBA_PxCMD_ST; + end Start_Command_Engine; + + procedure Stop_Command_Engine (Port : HBA_Port_Acc) is + begin + Port.Command_And_Status := Port.Command_And_Status and not HBA_PxCMD_ST; + loop + if (Port.Command_And_Status and HBA_PxCMD_CR) = 0 then + exit; + end if; + end loop; + Port.Command_And_Status := Port.Command_And_Status and not HBA_PxCMD_FRE; + end Stop_Command_Engine; + ---------------------------------------------------------------------------- + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Is_Blocking); + D : constant SATA_Data_Acc := SATA_Data_Acc (C1.To_Pointer (Key)); + Cache_Idx, Progress, Copy_Count, Cache_Offset : Natural := 0; + Current_LBA : Unsigned_64; + begin + Success := True; + Lib.Synchronization.Seize (D.Mutex); + while Progress < Data'Length loop + Current_LBA := (Offset + Unsigned_64 (Progress)) / Sector_Size; + + Get_Cache_Index + (Drive => D, + LBA => Current_LBA, + Idx => Cache_Idx, + Success => Success); + if not Success then + Success := True; + goto Cleanup; + end if; + + Copy_Count := Data'Length - Progress; + Cache_Offset := Natural ((Offset + Unsigned_64 (Progress)) mod + Sector_Size); + if Copy_Count > Sector_Size - Cache_Offset then + Copy_Count := Sector_Size - Cache_Offset; + end if; + Data (Data'First + Progress .. Data'First + Progress + Copy_Count - 1) + := D.Caches (Cache_Idx).Data (Cache_Offset + 1 .. + Cache_Offset + Copy_Count); + Progress := Progress + Copy_Count; + end loop; + + <> + Lib.Synchronization.Release (D.Mutex); + Ret_Count := Progress; + end Read; + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Is_Blocking); + D : constant SATA_Data_Acc := SATA_Data_Acc (C1.To_Pointer (Key)); + Cache_Idx, Progress, Copy_Count, Cache_Offset : Natural := 0; + Current_LBA : Unsigned_64; + begin + Success := True; + Lib.Synchronization.Seize (D.Mutex); + while Progress < Data'Length loop + Current_LBA := (Offset + Unsigned_64 (Progress)) / Sector_Size; + + Get_Cache_Index + (Drive => D, + LBA => Current_LBA, + Idx => Cache_Idx, + Success => Success); + if not Success then + Success := Progress /= 0; + goto Cleanup; + end if; + + Copy_Count := Data'Length - Progress; + Cache_Offset := Natural ((Offset + Unsigned_64 (Progress)) mod + Sector_Size); + if Copy_Count > Sector_Size - Cache_Offset then + Copy_Count := Sector_Size - Cache_Offset; + end if; + D.Caches (Cache_Idx).Data (Cache_Offset + 1 .. + Cache_Offset + Copy_Count) := + Data (Data'First + Progress .. + Data'First + Progress + Copy_Count - 1); + D.Caches (Cache_Idx).Is_Dirty := True; + Progress := Progress + Copy_Count; + end loop; + + <> + Lib.Synchronization.Release (D.Mutex); + Ret_Count := Progress; + end Write; + + function Sync (Key : System.Address) return Boolean is + Drive : constant SATA_Data_Acc := SATA_Data_Acc (C1.To_Pointer (Key)); + Success : Boolean := True; + begin + Lib.Synchronization.Seize (Drive.Mutex); + for Cache of Drive.Caches loop + if Cache.Is_Used and Cache.Is_Dirty then + if not Write_Sector (Drive, Cache.LBA_Offset, Cache.Data) then + Success := False; + goto Cleanup; + end if; + Cache.Is_Dirty := False; + end if; + end loop; + + <> + Lib.Synchronization.Release (Drive.Mutex); + return Success; + end Sync; + + function Sync_Range + (Key : System.Address; + Offset : Unsigned_64; + Count : Unsigned_64) return Boolean + is + Drive : constant SATA_Data_Acc := SATA_Data_Acc (C1.To_Pointer (Key)); + First_LBA : constant Unsigned_64 := Offset / Sector_Size; + Last_LBA : constant Unsigned_64 := (Offset + Count) / Sector_Size; + Success : Boolean := True; + begin + Lib.Synchronization.Seize (Drive.Mutex); + + for Cache of Drive.Caches loop + if Cache.Is_Used and + Cache.Is_Dirty and + Cache.LBA_Offset >= First_LBA and + Cache.LBA_Offset <= Last_LBA + then + if not Write_Sector (Drive, Cache.LBA_Offset, Cache.Data) then + Success := False; + goto Cleanup; + end if; + Cache.Is_Dirty := False; + end if; + end loop; + + <> + Lib.Synchronization.Release (Drive.Mutex); + return Success; + end Sync_Range; +end Devices.SATA; diff --git a/source/arch/x86_64-limine/devices-sata.ads b/source/arch/x86_64-limine/devices-sata.ads new file mode 100644 index 0000000..5473b23 --- /dev/null +++ b/source/arch/x86_64-limine/devices-sata.ads @@ -0,0 +1,444 @@ +-- devices-sata.ads: SATA driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Synchronization; + +package Devices.SATA with SPARK_Mode => Off is + -- Probe for ATA drives and add em. + function Init return Boolean; + +private + + Sector_Size : constant := 512; + Ports_Per_Controller : constant := 32; + + ATA_Device_Busy : constant := 16#80#; + ATA_Device_DRQ : constant := 16#08#; + + HBA_PxCMD_ST : constant := 16#0001#; + HBA_PxCMD_FRE : constant := 16#0010#; + HBA_PxCMD_FR : constant := 16#4000#; + HBA_PxCMD_CR : constant := 16#8000#; + + type HBA_Padding is array (Natural range <>) of Unsigned_8; + type HBA_Port is record + Command_List_Base : Unsigned_32; + Command_List_Upper : Unsigned_32; + FIS_Base : Unsigned_32; + FIS_Upper : Unsigned_32; + Interrupt_Status : Unsigned_32; + Interrupt_Enable : Unsigned_32; + Command_And_Status : Unsigned_32; + Reserved_1 : Unsigned_32; + Task_File_Data : Unsigned_32; + Signature : Unsigned_32; + SATA_Status : Unsigned_32; + SATA_Control : Unsigned_32; + SATA_Error : Unsigned_32; + SATA_Active : Unsigned_32; + Command_Issue : Unsigned_32; + SATA_Notification : Unsigned_32; + FIS_Switch_Control : Unsigned_32; + Reserved_2 : HBA_Padding (1 .. 44); + Vendor_Specific : HBA_Padding (1 .. 16); + end record with Volatile; + + type HBA_Port_Acc is access all HBA_Port with Volatile; + type HBA_Port_Arr is array (Natural range <>) of aliased HBA_Port with Pack; + + type HBA_Memory is record + Host_Capabilities_1 : Unsigned_32; + Global_Host_Control : Unsigned_32; + Interrupt_Status : Unsigned_32; + Port_Usage_Bitmap : Unsigned_32; + Version : Unsigned_32; + Coalescing_Control : Unsigned_32; + Coalescing_Ports : Unsigned_32; + Enclosure_Location : Unsigned_32; + Enclosure_Control : Unsigned_32; + Host_Capabilities_2 : Unsigned_32; + Handoff_Control : Unsigned_32; + Reserved_1 : HBA_Padding (1 .. 116); + Vendor_Specific : HBA_Padding (1 .. 96); + Ports : HBA_Port_Arr (1 .. Ports_Per_Controller); + end record with Volatile; + type HBA_Memory_Acc is access all HBA_Memory; + + type Unsigned_4 is mod 2 ** 4; + type Unsigned_5 is mod 2 ** 5; + type HBA_Command_Header is record + Control_Flags : Unsigned_5; + A : Boolean; + W : Boolean; + P : Boolean; + R : Boolean; + B : Boolean; + C : Boolean; + Reserved_1 : Boolean; + PMPort : Unsigned_4; + PRDTL : Unsigned_16; + PRDBC : Unsigned_32 with Volatile; + CTBA : Unsigned_32; + CTBAU : Unsigned_32; + Reserved_2 : HBA_Padding (1 .. 16); + end record with Size => 256, Volatile; + for HBA_Command_Header use record + Control_Flags at 0 range 0 .. 4; + A at 0 range 5 .. 5; + W at 0 range 6 .. 6; + P at 0 range 7 .. 7; + R at 0 range 8 .. 8; + B at 0 range 9 .. 9; + C at 0 range 10 .. 10; + Reserved_1 at 0 range 11 .. 11; + PMPort at 0 range 12 .. 15; + PRDTL at 0 range 16 .. 31; + PRDBC at 0 range 32 .. 63; + CTBA at 0 range 64 .. 95; + CTBAU at 0 range 96 .. 127; + Reserved_2 at 0 range 128 .. 255; + end record; + type HBA_Command_Headers is array (Natural range <>) of HBA_Command_Header; + + type Unsigned_9 is mod 2 ** 9; + type Unsigned_22 is mod 2 ** 22; + type HBA_PRDTL is record + DBA : Unsigned_32; + DBAU : Unsigned_32; + Reserved_1 : Unsigned_32; + DBC : Unsigned_22; + Reserved_2 : Unsigned_9; + I : Boolean; + end record with Size => 128; + for HBA_PRDTL use record + DBA at 0 range 0 .. 31; + DBAU at 0 range 32 .. 63; + Reserved_1 at 0 range 64 .. 95; + DBC at 0 range 96 .. 117; + Reserved_2 at 0 range 118 .. 126; + I at 0 range 127 .. 127; + end record; + + type HBA_Command_TBL is record + FIS_Buffer : HBA_Padding (1 .. 64); + Command : HBA_Padding (1 .. 16); + Reserved : HBA_Padding (1 .. 48); + PRDT : HBA_PRDTL; + Padding : HBA_Padding (1 .. 3952); -- Padding to 4k. + end record with Size => 32768, Volatile; + for HBA_Command_TBL use record + FIS_Buffer at 0 range 0 .. 511; + Command at 0 range 512 .. 639; + Reserved at 0 range 640 .. 1023; + PRDT at 0 range 1024 .. 1151; + Padding at 0 range 1152 .. 32767; + end record; + type HBA_Command_TBL_Acc is access all HBA_Command_TBL; + type HBA_Command_TBL_Arr is array (Natural range <>) of HBA_Command_TBL_Acc; + + type HBA_Command_Area is record + Headers : HBA_Command_Headers (1 .. Ports_Per_Controller); + Padding : HBA_Padding (1 .. 3072); -- Padding so it is 4k aligned. + end record with Size => 32768, Volatile; + for HBA_Command_Area use record + Headers at 0 range 0 .. 8191; + Padding at 0 range 8192 .. 32767; + end record; + type HBA_Command_Area_Acc is access HBA_Command_Area; + + FIS_Type_DMA_Setup : constant := 16#41#; + FIS_Type_PIO_Setup : constant := 16#5F#; + FIS_Type_H2D : constant := 16#27#; + FIS_Type_D2H : constant := 16#34#; + FIS_Type_Device_Bits : constant := 16#A1#; + + type FIS_DMA_Setup is record + FIS_Type : Unsigned_8; + PMPort : Unsigned_4; + Reserved_1 : Boolean; + Transfer_Direction : Boolean; + Interrupt : Boolean; + Reserved_2 : Boolean; + Reserved_3 : HBA_Padding (1 .. 2); + Buffer_ID : Unsigned_64; + Reserved_4 : Unsigned_32; + Buffer_Offset : Unsigned_32; + Transfer_Count : Unsigned_32; + Reserved_5 : Unsigned_32; + end record with Size => 224, Volatile; + for FIS_DMA_Setup use record + FIS_Type at 0 range 0 .. 7; + PMPort at 0 range 8 .. 11; + Reserved_1 at 0 range 12 .. 12; + Transfer_Direction at 0 range 13 .. 13; + Interrupt at 0 range 14 .. 14; + Reserved_2 at 0 range 15 .. 15; + Reserved_3 at 0 range 16 .. 31; + Buffer_ID at 0 range 32 .. 95; + Reserved_4 at 0 range 96 .. 127; + Buffer_Offset at 0 range 128 .. 159; + Transfer_Count at 0 range 160 .. 191; + Reserved_5 at 0 range 192 .. 223; + end record; + + type FIS_PIO_Setup is record + FIS_Type : Unsigned_8; + PMPort : Unsigned_4; + Reserved_1 : Boolean; + Transfer_Direction : Boolean; + Interrupt : Boolean; + Reserved_2 : Boolean; + Status : Unsigned_8; + Error : Unsigned_8; + LBA0 : Unsigned_8; + LBA1 : Unsigned_8; + LBA2 : Unsigned_8; + Device : Unsigned_8; + LBA3 : Unsigned_8; + LBA4 : Unsigned_8; + LBA5 : Unsigned_8; + Reserved_3 : Unsigned_8; + Count_Low : Unsigned_8; + Count_High : Unsigned_8; + Reserved_4 : Unsigned_8; + New_Status : Unsigned_8; + Transfer_Count : Unsigned_8; + Reserved_5 : HBA_Padding (1 .. 2); + end record with Size => 152, Volatile; + for FIS_PIO_Setup use record + FIS_Type at 0 range 0 .. 7; + PMPort at 0 range 8 .. 11; + Reserved_1 at 0 range 12 .. 12; + Transfer_Direction at 0 range 13 .. 13; + Interrupt at 0 range 14 .. 14; + Reserved_2 at 0 range 15 .. 15; + Status at 0 range 16 .. 23; + Error at 0 range 24 .. 31; + LBA0 at 0 range 32 .. 39; + LBA1 at 0 range 40 .. 47; + LBA2 at 0 range 48 .. 55; + Device at 0 range 56 .. 63; + LBA3 at 0 range 64 .. 71; + LBA4 at 0 range 72 .. 79; + LBA5 at 0 range 80 .. 87; + Reserved_3 at 0 range 88 .. 95; + Count_Low at 0 range 96 .. 103; + Count_High at 0 range 104 .. 111; + Reserved_4 at 0 range 112 .. 119; + New_Status at 0 range 120 .. 127; + Transfer_Count at 0 range 128 .. 135; + Reserved_5 at 0 range 136 .. 151; + end record; + + type FIS_Host_To_Device is record + FIS_Type : Unsigned_8; + PMPort : Unsigned_4; + Reserved_1 : Boolean; + Reserved_2 : Boolean; + Reserved_3 : Boolean; + Command_Or_Control : Boolean; + Command : Unsigned_8; + Feature_Low : Unsigned_8; + LBA0 : Unsigned_8; + LBA1 : Unsigned_8; + LBA2 : Unsigned_8; + Device : Unsigned_8; + LBA3 : Unsigned_8; + LBA4 : Unsigned_8; + LBA5 : Unsigned_8; + Feature_High : Unsigned_8; + Count_Low : Unsigned_8; + Count_High : Unsigned_8; + Command_Completion : Unsigned_8; + Control : Unsigned_8; + Reserved_4 : HBA_Padding (1 .. 4); + end record with Size => 160, Volatile; + for FIS_Host_To_Device use record + FIS_Type at 0 range 0 .. 7; + PMPort at 0 range 8 .. 11; + Reserved_1 at 0 range 12 .. 12; + Reserved_2 at 0 range 13 .. 13; + Reserved_3 at 0 range 14 .. 14; + Command_Or_Control at 0 range 15 .. 15; + Command at 0 range 16 .. 23; + Feature_Low at 0 range 24 .. 31; + LBA0 at 0 range 32 .. 39; + LBA1 at 0 range 40 .. 47; + LBA2 at 0 range 48 .. 55; + Device at 0 range 56 .. 63; + LBA3 at 0 range 64 .. 71; + LBA4 at 0 range 72 .. 79; + LBA5 at 0 range 80 .. 87; + Feature_High at 0 range 88 .. 95; + Count_Low at 0 range 96 .. 103; + Count_High at 0 range 104 .. 111; + Command_Completion at 0 range 112 .. 119; + Control at 0 range 120 .. 127; + Reserved_4 at 0 range 128 .. 159; + end record; + + type FIS_Device_To_Host is record + FIS_Type : Unsigned_8; + PMPort : Unsigned_4; + Reserved_1 : Boolean; + Transfer_Direction : Boolean; + Interrupt : Boolean; + Reserved_2 : Boolean; + Status : Unsigned_8; + Error : Unsigned_8; + LBA0 : Unsigned_8; + LBA1 : Unsigned_8; + LBA2 : Unsigned_8; + Device : Unsigned_8; + LBA3 : Unsigned_8; + LBA4 : Unsigned_8; + LBA5 : Unsigned_8; + Reserved_3 : Unsigned_8; + Count_Low : Unsigned_8; + Count_High : Unsigned_8; + Reserved_4 : HBA_Padding (1 .. 6); + end record with Size => 160, Volatile; + for FIS_Device_To_Host use record + FIS_Type at 0 range 0 .. 7; + PMPort at 0 range 8 .. 11; + Reserved_1 at 0 range 12 .. 12; + Transfer_Direction at 0 range 13 .. 13; + Interrupt at 0 range 14 .. 14; + Reserved_2 at 0 range 15 .. 15; + Status at 0 range 16 .. 23; + Error at 0 range 24 .. 31; + LBA0 at 0 range 32 .. 39; + LBA1 at 0 range 40 .. 47; + LBA2 at 0 range 48 .. 55; + Device at 0 range 56 .. 63; + LBA3 at 0 range 64 .. 71; + LBA4 at 0 range 72 .. 79; + LBA5 at 0 range 80 .. 87; + Reserved_3 at 0 range 88 .. 95; + Count_Low at 0 range 96 .. 103; + Count_High at 0 range 104 .. 111; + Reserved_4 at 0 range 112 .. 159; + end record; + + type HBA_FIS is record + DS_FIS : FIS_DMA_Setup; + Reserved_1 : HBA_Padding (1 .. 4); + PS_FIS : FIS_PIO_Setup; + Reserved_2 : HBA_Padding (1 .. 12); + Reg_FIS : FIS_Device_To_Host; + Reserved_3 : HBA_Padding (1 .. 4); + SDB_FIS : HBA_Padding (1 .. 8); + U_FIS : HBA_Padding (1 .. 64); + Reserved_4 : HBA_Padding (1 .. 96); + end record with Size => 2048, Volatile; + for HBA_FIS use record + DS_FIS at 0 range 0 .. 223; + Reserved_1 at 0 range 224 .. 255; + PS_FIS at 0 range 256 .. 407; + Reserved_2 at 0 range 408 .. 503; + Reg_FIS at 0 range 504 .. 663; + Reserved_3 at 0 range 664 .. 695; + SDB_FIS at 0 range 696 .. 759; + U_FIS at 0 range 760 .. 1271; + Reserved_4 at 0 range 1272 .. 2039; + end record; + type HBA_FIS_Acc is access HBA_FIS; + + -- Data stored for each drive. + subtype Sector_Data is Operation_Data (1 .. Sector_Size); + type Sector_Cache is record + Is_Used : Boolean; + LBA_Offset : Unsigned_64; + Is_Dirty : Boolean; + Data : Sector_Data; + end record; + type Sector_Caches is array (Natural range <>) of Sector_Cache; + + type SATA_Identify is array (1 .. 256) of Unsigned_16; + type SATA_Identify_Acc is access all SATA_Identify; + type SATA_Data is record + Mutex : aliased Lib.Synchronization.Binary_Semaphore; + FIS : HBA_FIS_Acc; + Command_Area : HBA_Command_Area_Acc; + Command_TBLs : HBA_Command_TBL_Arr (1 .. Ports_Per_Controller); + Port_Data : HBA_Port_Acc; + Sector_Count : Unsigned_64; + Caches : Sector_Caches (1 .. 8000); + Next_Evict : Natural range 1 .. 8000; + end record; + type SATA_Data_Acc is access all SATA_Data; + + -- Probe a port and return an initialized ATA drive, or null if not found. + function Init_Port (M : HBA_Memory_Acc; I : Natural) return SATA_Data_Acc; + + -- Issue a command, and return success or failure. + function Issue_Command + (Drive : SATA_Data_Acc; + LBA : Unsigned_64; + Command : Unsigned_8; + Is_Identify : Boolean; + Is_Write : Boolean; + Data_Addr : Unsigned_64) return Boolean; + + -- Read a single sector. + function Read_Sector + (Drive : SATA_Data_Acc; + LBA : Unsigned_64; + Data_Buffer : out Sector_Data) return Boolean; + + -- Write a single sector. + function Write_Sector + (Drive : SATA_Data_Acc; + LBA : Unsigned_64; + Data_Buffer : Sector_Data) return Boolean; + + -- Find a cache index for the drive given the desired LBA. + procedure Get_Cache_Index + (Drive : SATA_Data_Acc; + LBA : Unsigned_64; + Idx : out Natural; + Success : out Boolean); + + -- Find a free slot in the command header table of a port. + function Find_Command_Slot (Port : HBA_Port_Acc) return Natural; + + -- Start and stop the command engine of a port. + procedure Start_Command_Engine (Port : HBA_Port_Acc); + procedure Stop_Command_Engine (Port : HBA_Port_Acc); + ---------------------------------------------------------------------------- + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + function Sync (Key : System.Address) return Boolean; + + function Sync_Range + (Key : System.Address; + Offset : Unsigned_64; + Count : Unsigned_64) return Boolean; +end Devices.SATA; diff --git a/source/arch/x86_64-limine/devices-serial.adb b/source/arch/x86_64-limine/devices-serial.adb new file mode 100644 index 0000000..fc4f940 --- /dev/null +++ b/source/arch/x86_64-limine/devices-serial.adb @@ -0,0 +1,222 @@ +-- devices-serial.adb: Serial driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Address_To_Access_Conversions; +with Devices.TermIOs; +with Arch.Snippets; + +package body Devices.Serial is + package C1 is new System.Address_To_Access_Conversions (COM_Root); + + function Init return Boolean is + Device_Name : String (1 .. 7) := "serial0"; + Discard : Boolean; + Device : Resource; + Data : COM_Root_Acc; + begin + for I in COM_Ports'Range loop + -- Check if the port exists by writting a value and checking. + Arch.Snippets.Port_Out (COM_Ports (I) + Scratch, 16#55#); + if Arch.Snippets.Port_In (COM_Ports (I) + Scratch) = 16#55# then + -- Disable all interrupts, set baud and FIFO. + Arch.Snippets.Port_Out (COM_Ports (I) + Interrupt_Enable, 16#00#); + Set_Baud (COM_Ports (I), Default_Baud); + Arch.Snippets.Port_Out (COM_Ports (I) + Interrupt_ID, 16#C7#); + Arch.Snippets.Port_Out (COM_Ports (I) + Modem_Control, 2#11#); + + -- Add the device. + if (I = 1) then + Data := COM1'Access; + else + Data := new COM_Root'(Lib.Synchronization.Unlocked_Semaphore, + COM_Ports (I), Default_Baud); + end if; + Device_Name (7) := Character'Val (I + Character'Pos ('0')); + Device := + (Data => C1.To_Address (C1.Object_Pointer (Data)), + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Sync => null, + Sync_Range => null, + Read => Read'Access, + Write => Write'Access, + IO_Control => IO_Control'Access, + Mmap => null, + Poll => Poll'Access); + Register (Device, Device_Name, Discard); + end if; + end loop; + return True; + end Init; + + procedure Init_COM1 is + begin + Arch.Snippets.Port_Out (COM_Ports (1) + Interrupt_Enable, 16#00#); + Set_Baud (COM_Ports (1), Default_Baud); + Arch.Snippets.Port_Out (COM_Ports (1) + Interrupt_ID, 16#C7#); + Arch.Snippets.Port_Out (COM_Ports (1) + Modem_Control, 2#11#); + end Init_COM1; + + procedure Read_COM1 (S : out Operation_Data) is + Count : Natural; + Succ : Boolean; + begin + Read (COM1'Address, 0, S, Count, Succ, True); + end Read_COM1; + + procedure Write_COM1 (C : Character) is + Count : Natural; + Succ : Boolean; + Data : Operation_Data (1 .. 1) with Import, Address => C'Address; + begin + Write (COM1'Address, 0, Data, Count, Succ, True); + end Write_COM1; + + procedure Write_COM1 (S : String) is + begin + if S'Length > 0 then + declare + Count : Natural; + Succ : Boolean; + Data : Operation_Data (1 .. S'Length) + with Import, Address => S (S'First)'Address; + begin + Write (COM1'Address, 0, Data, Count, Succ, True); + end; + end if; + end Write_COM1; + ---------------------------------------------------------------------------- + -- We will not yield instead of pausing here to avoid issues printing + -- inside the scheduler. + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + COM : COM_Root with Import, Address => Key; + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + begin + Lib.Synchronization.Seize (COM.Mutex); + for I of Data loop + while not Can_Receive (COM.Port) loop + Arch.Snippets.Pause; + end loop; + I := Arch.Snippets.Port_In (COM.Port); + end loop; + Lib.Synchronization.Release (COM.Mutex); + Ret_Count := Data'Length; + Success := True; + end Read; + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + COM : COM_Root with Import, Address => Key; + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + begin + Lib.Synchronization.Seize (COM.Mutex); + for I of Data loop + while not Can_Transmit (COM.Port) loop + Arch.Snippets.Pause; + end loop; + Arch.Snippets.Port_Out (COM.Port, I); + end loop; + Lib.Synchronization.Release (COM.Mutex); + Ret_Count := Data'Length; + Success := True; + end Write; + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean + is + COM : COM_Root with Import, Address => Data; + Returned : TermIOs.Main_Data with Import, Address => Argument; + Success : Boolean; + begin + Lib.Synchronization.Seize (COM.Mutex); + case Request is + when TermIOs.TCGETS => + Returned := + (Input_Modes => <>, + Output_Modes => <>, + Control_Modes => <>, + Local_Mode => <>, + Special_Chars => <>, + Input_Baud => COM.Baud, + Output_Baud => COM.Baud); + Success := True; + when TermIOs.TCSETS | TermIOs.TCSETSW | TermIOs.TCSETSF => + Set_Baud (COM.Port, Returned.Output_Baud); + COM.Baud := Returned.Output_Baud; + Success := True; + when others => + Success := False; + end case; + Lib.Synchronization.Release (COM.Mutex); + return Success; + end IO_Control; + + procedure Poll + (Data : System.Address; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean) + is + COM : COM_Root with Import, Address => Data; + begin + Lib.Synchronization.Seize (COM.Mutex); + Can_Write := Can_Transmit (COM.Port); + Can_Read := Can_Receive (COM.Port); + Is_Error := False; + Lib.Synchronization.Release (COM.Mutex); + end Poll; + ---------------------------------------------------------------------------- + function Can_Receive (Port : Unsigned_16) return Boolean is + begin + return (Arch.Snippets.Port_In (Port + Line_Status) and 2#00000001#) /= 0; + end Can_Receive; + + function Can_Transmit (Port : Unsigned_16) return Boolean is + begin + return (Arch.Snippets.Port_In (Port + Line_Status) and 2#01000000#) /= 0; + end Can_Transmit; + + procedure Set_Baud (Port : Unsigned_16; Baud : Unsigned_32) is + New_Div : constant Unsigned_32 := 115200 / Baud; + Low_Div : constant Unsigned_32 := Shift_Right (New_Div, 8); + begin + -- Enable DLAB and set the low and high parts of the divisor. + Arch.Snippets.Port_Out (Port + Line_Control, 16#80#); + Arch.Snippets.Port_Out (Port + DLAB_0, Unsigned_8 (New_Div and 16#FF#)); + Arch.Snippets.Port_Out (Port + DLAB_1, Unsigned_8 (Low_Div and 16#FF#)); + Arch.Snippets.Port_Out (Port + Line_Control, 16#03#); + end Set_Baud; +end Devices.Serial; diff --git a/source/arch/x86_64-limine/devices-serial.ads b/source/arch/x86_64-limine/devices-serial.ads new file mode 100644 index 0000000..8f57fd3 --- /dev/null +++ b/source/arch/x86_64-limine/devices-serial.ads @@ -0,0 +1,93 @@ +-- devices-serial.ads: Serial driver specification. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Synchronization; + +package Devices.Serial is + -- Initialize the serial devices. + function Init return Boolean; + + -- Little functions for debug reading and printing. + procedure Init_COM1; + procedure Read_COM1 (S : out Operation_Data); + procedure Write_COM1 (C : Character); + procedure Write_COM1 (S : String); + +private + + type COM_Root is record + Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Port : Unsigned_16; + Baud : Unsigned_32; + end record; + type COM_Root_Acc is access all COM_Root; + + -- COM ports, the first 2 ones are almost sure to be at that address, the + -- rest are a bit spoty, so we must not forget to test all of them. + COM_Ports : constant array (1 .. 8) of Unsigned_16 := + (16#3F8#, 16#2F8#, 16#3E8#, 16#2E8#, 16#5F8#, 16#4F8#, 16#5E8#, 16#4E8#); + + -- Offsets of several registers. + Data_Register : constant := 0; + Interrupt_Enable : constant := 1; + DLAB_0 : constant := 0; + DLAB_1 : constant := 1; + Interrupt_ID : constant := 2; + Line_Control : constant := 3; + Modem_Control : constant := 4; + Line_Status : constant := 5; + Modem_Status : constant := 6; + Scratch : constant := 7; + + -- Default settings. + Default_Baud : constant := 115200; + + -- COM1 is initialized statically in order for it to be shared easily + -- with debug outputs, while sharing baud, lock, etc... + COM1 : aliased COM_Root := + (Lib.Synchronization.Unlocked_Semaphore, COM_Ports (1), Default_Baud); + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean; + + procedure Poll + (Data : System.Address; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean); + + function Can_Receive (Port : Unsigned_16) return Boolean; + function Can_Transmit (Port : Unsigned_16) return Boolean; + procedure Set_Baud (Port : Unsigned_16; Baud : Unsigned_32); +end Devices.Serial; diff --git a/source/arch/x86_64-limine/linker.ld b/source/arch/x86_64-limine/linker.ld new file mode 100644 index 0000000..c77d8a4 --- /dev/null +++ b/source/arch/x86_64-limine/linker.ld @@ -0,0 +1,67 @@ +/* + * linker.ld: Main linker script of the project. + * Copyright (C) 2024 streaksu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +OUTPUT_FORMAT(elf64-x86-64) +ENTRY(kernel_main) + +PHDRS +{ + text PT_LOAD; + rodata PT_LOAD; + data PT_LOAD; +} + +SECTIONS +{ + . = 0xffffffff80000000; + + text_start = .; + .text : { + *(.text .text.*) + } :text + . = ALIGN(CONSTANT(MAXPAGESIZE)); + text_end = .; + + rodata_start = .; + .rodata : { + *(.rodata .rodata.*) + } :rodata + + .note : { + *(.note.gnu.build-id) + } : rodata + . = ALIGN(CONSTANT(MAXPAGESIZE)); + rodata_end = .; + + data_start = .; + .data : { + *(.data .data.*) + } :data + + .bss : { + *(.bss .bss.*) + *(COMMON) + } :data + . = ALIGN(CONSTANT(MAXPAGESIZE)); + data_end = .; + + /DISCARD/ : { + *(.eh_frame*) + *(.note .note.*) + } +} diff --git a/source/config.ads b/source/config.ads new file mode 100644 index 0000000..bf8507a --- /dev/null +++ b/source/config.ads @@ -0,0 +1,29 @@ +-- config.ads: Configuration values. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Config is + -- Avoid any style checks related to variable replacement. + pragma Style_Checks (Off); + + -- Project name, contact, and basic information. + Name : constant String := $IroncladName; + Version : constant String := $Version; + Arch_Name : constant String := $ArchName; + Bug_Site : constant String := $BugSite; + + -- Configuration for system internals. + Support_Alloc_Only : constant Boolean := $ALLOCONLY; +end Config; diff --git a/source/cryptography/cryptography-chacha20.adb b/source/cryptography/cryptography-chacha20.adb new file mode 100644 index 0000000..316c5a2 --- /dev/null +++ b/source/cryptography/cryptography-chacha20.adb @@ -0,0 +1,65 @@ +-- cryptography-chacha20.adb: Chacha20 implementation. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Cryptography.Chacha20 is + -- Unit passes GNATprove AoRTE, GNAT does not know this. + pragma Suppress (All_Checks); + + function Gen_Key (K : Key; Nonce, Block_ID : Unsigned_64) return Block is + UB : constant Unsigned_64 := Shift_Right (Block_ID, 32) and 16#FFFFFFFF#; + LB : constant Unsigned_64 := Shift_Right (Block_ID, 0) and 16#FFFFFFFF#; + UN : constant Unsigned_64 := Shift_Right (Nonce, 32) and 16#FFFFFFFF#; + LN : constant Unsigned_64 := Shift_Right (Nonce, 0) and 16#FFFFFFFF#; + + Initial_Block : constant Block := ( + -- Hardcoded values of "expa", "nd 3", "2-by", "te k" + 16#65787061#, 16#6E642065#, 16#322D6279#, 16#7465206B#, + K.Value1, K.Value2, K.Value3, K.Value4, + K.Value5, K.Value6, K.Value7, K.Value8, + Unsigned_32 (UB), Unsigned_32 (LB), Unsigned_32 (UN), Unsigned_32 (LN) + ); + B : Block := Initial_Block; + begin + -- Do 2 iterations at once. + for I in 1 .. 20 / 2 loop + -- Odd iteration. + Quarter_Round (B (0), B (4), B (8), B (12)); + Quarter_Round (B (1), B (5), B (9), B (13)); + Quarter_Round (B (2), B (6), B (10), B (14)); + Quarter_Round (B (3), B (7), B (11), B (15)); + + -- Even iteration. + Quarter_Round (B (0), B (5), B (10), B (15)); + Quarter_Round (B (1), B (6), B (11), B (12)); + Quarter_Round (B (2), B (7), B (8), B (13)); + Quarter_Round (B (3), B (4), B (9), B (14)); + end loop; + + -- Sum the initial and final. + for I in B'Range loop + B (I) := B (I) + Initial_Block (I); + end loop; + return B; + end Gen_Key; + + procedure Quarter_Round (A, B, C, D : in out Unsigned_32) is + begin + A := A + B; D := D xor A; D := Rotate_Left (D, 16); + C := C + D; B := B xor C; B := Rotate_Left (B, 12); + A := A + B; D := D xor A; D := Rotate_Left (D, 8); + C := C + D; B := B xor C; B := Rotate_Left (B, 7); + end Quarter_Round; +end Cryptography.Chacha20; diff --git a/source/cryptography/cryptography-chacha20.ads b/source/cryptography/cryptography-chacha20.ads new file mode 100644 index 0000000..29905b9 --- /dev/null +++ b/source/cryptography/cryptography-chacha20.ads @@ -0,0 +1,40 @@ +-- cryptography-chacha20.ads: Chacha20 implementation. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Cryptography.Chacha20 is + -- Implementation of Chacha20 per the book. + -- Source: https://en.wikipedia.org/wiki/Salsa20 + + -- Chacha20 generates keys operating on a user key, nonce, and block + -- number. This key, which is in the format of a 512-bit block, is then + -- XORd with the message for a successful encrytion. + -- For decrypting, the same key must be XORd again. + + type Block is array (0 .. 15) of Unsigned_32; + type Key is record + Value1, Value2, Value3, Value4 : Unsigned_32; + Value5, Value6, Value7, Value8 : Unsigned_32; + end record with Size => 256; + + -- Get a generated key for a combination of key, nonce, and block number. + function Gen_Key (K : Key; Nonce, Block_ID : Unsigned_64) return Block; + +private + + procedure Quarter_Round (A, B, C, D : in out Unsigned_32); +end Cryptography.Chacha20; diff --git a/source/cryptography/cryptography-md5.adb b/source/cryptography/cryptography-md5.adb new file mode 100644 index 0000000..766e745 --- /dev/null +++ b/source/cryptography/cryptography-md5.adb @@ -0,0 +1,119 @@ +-- cryptography-md5.adb: MD5 digest. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Cryptography.MD5 is + -- Unit passes GNATprove AoRTE, GNAT does not know this. + pragma Suppress (All_Checks); + + -- Algorithm adapted from Wikipedia's MD5 pseudocode. + -- https://en.wikipedia.org/wiki/MD5#Pseudocode + -- Code in Wikipedia is CC-BY-SA 3.0, relicensed to BY-SA 4.0 under 4(b), + -- which is GPLv3-Or-Later compatible. + + S : constant array (Unsigned_32 range 0 .. 63) of Natural := + (7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, + 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, + 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, + 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21); + + K : constant array (Unsigned_32 range 0 .. 63) of Unsigned_32 := + (16#d76aa478#, 16#e8c7b756#, 16#242070db#, 16#c1bdceee#, + 16#f57c0faf#, 16#4787c62a#, 16#a8304613#, 16#fd469501#, + 16#698098d8#, 16#8b44f7af#, 16#ffff5bb1#, 16#895cd7be#, + 16#6b901122#, 16#fd987193#, 16#a679438e#, 16#49b40821#, + 16#f61e2562#, 16#c040b340#, 16#265e5a51#, 16#e9b6c7aa#, + 16#d62f105d#, 16#02441453#, 16#d8a1e681#, 16#e7d3fbc8#, + 16#21e1cde6#, 16#c33707d6#, 16#f4d50d87#, 16#455a14ed#, + 16#a9e3e905#, 16#fcefa3f8#, 16#676f02d9#, 16#8d2a4c8a#, + 16#fffa3942#, 16#8771f681#, 16#6d9d6122#, 16#fde5380c#, + 16#a4beea44#, 16#4bdecfa9#, 16#f6bb4b60#, 16#bebfbc70#, + 16#289b7ec6#, 16#eaa127fa#, 16#d4ef3085#, 16#04881d05#, + 16#d9d4d039#, 16#e6db99e5#, 16#1fa27cf8#, 16#c4ac5665#, + 16#f4292244#, 16#432aff97#, 16#ab9423a7#, 16#fc93a039#, + 16#655b59c3#, 16#8f0ccc92#, 16#ffeff47d#, 16#85845dd1#, + 16#6fa87e4f#, 16#fe2ce6e0#, 16#a3014314#, 16#4e0811a1#, + 16#f7537e82#, 16#bd3af235#, 16#2ad7d2bb#, 16#eb86d391#); + + function Digest (Data : MD5_Blocks) return MD5_Hash is + Total_A : Unsigned_32 := 16#67452301#; + Total_B : Unsigned_32 := 16#efcdab89#; + Total_C : Unsigned_32 := 16#98badcfe#; + Total_D : Unsigned_32 := 16#10325476#; + Round_A, Round_B, Round_C, Round_D : Unsigned_32; + F, G : Unsigned_32; + begin + for Block of Data loop + Round_A := Total_A; + Round_B := Total_B; + Round_C := Total_C; + Round_D := Total_D; + + for I in K'Range loop + if I <= 15 then + F := (Round_B and Round_C) or ((not Round_B) and Round_D); + G := I; + elsif I <= 31 then + F := (Round_D and Round_B) or ((not Round_D) and Round_C); + G := (5 * I + 1) mod 16; + elsif I <= 47 then + F := Round_B xor Round_C xor Round_D; + G := (3 * I + 5) mod 16; + else + F := Round_C xor (Round_B or (not Round_D)); + G := (7 * I) mod 16; + end if; + pragma Loop_Invariant (G <= 15); + + F := F + Round_A + K (I) + Block (G); + Round_A := Round_D; + Round_D := Round_C; + Round_C := Round_B; + Round_B := Round_B + Rotate_Left (F, S (I)); + end loop; + + Total_A := Total_A + Round_A; + Total_B := Total_B + Round_B; + Total_C := Total_C + Round_C; + Total_D := Total_D + Round_D; + end loop; + + return (Total_A, Total_B, Total_C, Total_D); + end Digest; + + function To_String (Hash : MD5_Hash) return MD5_String is + Hex_Chars : constant array (0 .. 15) of Character := + ('0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); + Item : MD5_Hash; + Result : MD5_String := (others => '0'); + Temp : Unsigned_32; + Position : Integer range Result'First - 1 .. Result'Last := Result'Last; + begin + for I in Item'Range loop + Item (I) := BSwap32 (Hash (I)); + end loop; + + for Part in reverse Item'Range loop + Temp := Item (Part); + while Position > Result'Last - (5 - Part) * 8 loop + Result (Position) := Hex_Chars (Natural (Temp mod 16)); + Position := Position - 1; + Temp := Temp / 16; + end loop; + end loop; + return Result; + end To_String; +end Cryptography.MD5; diff --git a/source/cryptography/cryptography-md5.ads b/source/cryptography/cryptography-md5.ads new file mode 100644 index 0000000..5f990c4 --- /dev/null +++ b/source/cryptography/cryptography-md5.ads @@ -0,0 +1,36 @@ +-- cryptography-md5.ads: MD5 digest. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Cryptography.MD5 is + -- MD5 manages 512-bit blocks. + type MD5_Hash is array (1 .. 4) of Unsigned_32; + type MD5_Block is array (Unsigned_32 range 0 .. 15) of Unsigned_32; + type MD5_Blocks is array (Natural range <>) of MD5_Block; + + -- Digest a string of binary data into a 128-bit hash. + -- Data is taken already padded according to what MD5 mandates. + function Digest (Data : MD5_Blocks) return MD5_Hash; + + subtype MD5_String is String (1 .. 32); + function To_String (Hash : MD5_Hash) return MD5_String; + +private + + function BSwap32 (V : Unsigned_32) return Unsigned_32; + pragma Import (Intrinsic, BSwap32, "__builtin_bswap32"); +end Cryptography.MD5; diff --git a/source/cryptography/cryptography-random.adb b/source/cryptography/cryptography-random.adb new file mode 100644 index 0000000..7377020 --- /dev/null +++ b/source/cryptography/cryptography-random.adb @@ -0,0 +1,143 @@ +-- cryptography-random.adb: The random number generator of the kernel. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Unchecked_Conversion; +with Memory.Physical; use Memory.Physical; +with Arch.Clocks; +with Memory; use Memory; +with Cryptography.Chacha20; +with Cryptography.MD5; +with Lib.Synchronization; use Lib.Synchronization; + +package body Cryptography.Random is + -- We maintain a pool of entropy that we shift and shuffle with new data + -- every time data is requested to be given. Then, we hash the data with + -- MD5 (but any cryptographic hash would work), and using it to seed a + -- chacha20 keystream. + + pragma Suppress (All_Checks); -- Unit passes GNATprove AoRTE. + + Accumulator_Mutex : aliased Binary_Semaphore := Unlocked_Semaphore; + Entropy_Accumulator : MD5.MD5_Blocks (1 .. 1) := (1 => (others => 16#33#)); + + procedure Fill_Data (Data : out Crypto_Data) is + type Seed is record + Entropy_Hash : MD5.MD5_Hash; + Mono_Sec : Unsigned_64; + Mono_NSec : Unsigned_64; + end record with Size => 256; + function To_Seed is new Ada.Unchecked_Conversion (Seed, Chacha20.Key); + + S : Seed; + Nonce : Unsigned_64; + Cha_Block : Chacha20.Block := (others => 0); + Index : Natural := Cha_Block'Last + 1; + Mini_Index : Natural := 0; + Block_Index : Unsigned_64 := 0; + Temp : Unsigned_32 := 0; + begin + Seize (Accumulator_Mutex); + + Entropy_Adjust; + + S.Entropy_Hash := MD5.Digest (Entropy_Accumulator); + Arch.Clocks.Get_Monotonic_Time (S.Mono_Sec, S.Mono_NSec); + Nonce := S.Mono_NSec; + + for Value of Data loop + if Index > Cha_Block'Last then + Cha_Block := Chacha20.Gen_Key (To_Seed (S), Nonce, Block_Index); + Index := Cha_Block'First; + Block_Index := Block_Index + 1; + end if; + + case Mini_Index is + when 0 => Temp := Shift_Right (Cha_Block (Index), 0); + when 1 => Temp := Shift_Right (Cha_Block (Index), 8); + when 2 => Temp := Shift_Right (Cha_Block (Index), 16); + when 3 => Temp := Shift_Right (Cha_Block (Index), 24); + when others => null; + end case; + Value := Unsigned_8 (Temp and 16#FF#); + + Mini_Index := Mini_Index + 1; + if Mini_Index = 4 then + Index := Index + 1; + Mini_Index := 0; + end if; + end loop; + + Release (Accumulator_Mutex); + end Fill_Data; + + procedure Feed_Entropy (Data : Unsigned_32) is + begin + Seize (Accumulator_Mutex); + Entropy_Accumulator (1) (0) := Entropy_Accumulator (1) (3) xor Data; + Release (Accumulator_Mutex); + end Feed_Entropy; + + procedure Get_Integer (Result : out Unsigned_64) is + Data : Crypto_Data (1 .. 8); + begin + Fill_Data (Data); + Result := Shift_Left (Unsigned_64 (Data (1)), 56) or + Shift_Left (Unsigned_64 (Data (2)), 48) or + Shift_Left (Unsigned_64 (Data (3)), 40) or + Shift_Left (Unsigned_64 (Data (4)), 32) or + Shift_Left (Unsigned_64 (Data (5)), 24) or + Shift_Left (Unsigned_64 (Data (6)), 16) or + Shift_Left (Unsigned_64 (Data (7)), 8) or + Shift_Left (Unsigned_64 (Data (8)), 0); + end Get_Integer; + + procedure Get_Integer (Min, Max : Unsigned_64; Result : out Unsigned_64) is + begin + Get_Integer (Result); + Result := (Result mod (Max + 1 - Min)) + Min; + end Get_Integer; + ---------------------------------------------------------------------------- + procedure Entropy_Adjust is + RSec, RNSec, MSec, MNSec, Avail, Free : Unsigned_64; + S : Memory.Physical.Statistics; + Hashed : constant MD5.MD5_Hash := MD5.Digest (Entropy_Accumulator); + begin + Get_Statistics (S); + Arch.Clocks.Get_Real_Time (RSec, RNSec); + Arch.Clocks.Get_Monotonic_Time (MSec, MNSec); + + Avail := Unsigned_64 (S.Available); + Free := Unsigned_64 (S.Free); + + Entropy_Accumulator (1) := + (0 => Unsigned_32 (Shift_Right (MSec, 32) and 16#FFFFFFFF#), + 1 => Unsigned_32 (MSec and 16#FFFFFFFF#), + 2 => Unsigned_32 (Shift_Right (Avail, 32) and 16#FFFFFFFF#), + 3 => Unsigned_32 (Avail and 16#FFFFFFFF#), + 4 => Unsigned_32 (Shift_Right (RSec, 32) and 16#FFFFFFFF#), + 5 => Unsigned_32 (RSec and 16#FFFFFFFF#), + 6 => Unsigned_32 (Shift_Right (RNSec, 32) and 16#FFFFFFFF#), + 7 => Unsigned_32 (RNSec and 16#FFFFFFFF#), + 8 => Hashed (1), + 9 => Hashed (2), + 10 => Hashed (3), + 11 => Hashed (4), + 12 => Unsigned_32 (Shift_Right (Free, 32) and 16#FFFFFFFF#), + 13 => Unsigned_32 (Free and 16#FFFFFFFF#), + 14 => Unsigned_32 (MNSec and 16#FFFFFFFF#), + 15 => 128); + end Entropy_Adjust; +end Cryptography.Random; diff --git a/source/cryptography/cryptography-random.ads b/source/cryptography/cryptography-random.ads new file mode 100644 index 0000000..0bebdc1 --- /dev/null +++ b/source/cryptography/cryptography-random.ads @@ -0,0 +1,40 @@ +-- cryptography-random.ads: The random number generator of the kernel. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Cryptography.Random is + -- Fill a region in memory with random data. + type Crypto_Data is array (Natural range <>) of Unsigned_8; + procedure Fill_Data (Data : out Crypto_Data); + + -- Contribute a bit of entropy. + procedure Feed_Entropy (Data : Unsigned_32); + + -- Get random integers with optional ranges. + procedure Get_Integer (Result : out Unsigned_64); + + -- Get a random integer between 2 integers. + -- FIXME: Fix the GNATProve annotation. + procedure Get_Integer (Min, Max : Unsigned_64; Result : out Unsigned_64) + with Pre => Max >= Min and Max <= Unsigned_64'Last - 1, + Post => Min <= Result and Result <= Max; + pragma Annotate (GNATprove, False_Positive, "postcondition might fail", + "Counterexample works, could be a gnatprove bug?"); +private + + procedure Entropy_Adjust; +end Cryptography.Random; diff --git a/source/cryptography/cryptography.ads b/source/cryptography/cryptography.ads new file mode 100644 index 0000000..7817ec4 --- /dev/null +++ b/source/cryptography/cryptography.ads @@ -0,0 +1,18 @@ +-- cryptography.ads: Specification of the crypto library. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Cryptography is +end Cryptography; diff --git a/source/devices/devices-console.adb b/source/devices/devices-console.adb new file mode 100644 index 0000000..98c827f --- /dev/null +++ b/source/devices/devices-console.adb @@ -0,0 +1,77 @@ +-- devices-console.adb: Driver for debug output. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Debug; + +package body Devices.Console is + procedure Init (Success : out Boolean) is + Device : Resource; + begin + Device := + (Data => System.Null_Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Read => Read'Access, + Write => Write'Access, + Sync => null, + Sync_Range => null, + IO_Control => null, + Mmap => null, + Poll => null); + Register (Device, "console", Success); + end Init; + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + begin + if Arch.Debug.Supports_Read then + Arch.Debug.Read (Data); + Ret_Count := Data'Length; + Success := True; + else + Ret_Count := 0; + Success := False; + end if; + end Read; + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + begin + Arch.Debug.Print (Data); + Ret_Count := Data'Length; + Success := True; + end Write; +end Devices.Console; diff --git a/source/devices/devices-console.ads b/source/devices/devices-console.ads new file mode 100644 index 0000000..b3c7be3 --- /dev/null +++ b/source/devices/devices-console.ads @@ -0,0 +1,39 @@ +-- devices-console.ads: Driver for debug output. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.Console is + -- Initialize the device. + procedure Init (Success : out Boolean) + with Pre => Is_Initialized = True; + +private + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); +end Devices.Console; diff --git a/source/devices/devices-loopback.adb b/source/devices/devices-loopback.adb new file mode 100644 index 0000000..3b048eb --- /dev/null +++ b/source/devices/devices-loopback.adb @@ -0,0 +1,133 @@ +-- devices-loopback.adb: Network loopback device. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Networking.Interfaces; +with Scheduler; +with Devices.NetInter; + +package body Devices.Loopback is + procedure Init (Success : out Boolean) is + Device : Resource; + Dev : Device_Handle; + Data : constant Loopback_Data_Acc := new Loopback_Data' + (Data => new Loopback_Buffer, + Len => 0); + begin + Device := + (Data => Data.all'Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Read => Read'Access, + Write => Write'Access, + Sync => null, + Sync_Range => null, + IO_Control => IO_Control'Access, + Mmap => null, + Poll => null); + Register (Device, "loopback", Success); + if Success then + Dev := Fetch ("loopback"); + Networking.Interfaces.Register_Interface + (Interfaced => Dev, + IPv4 => (127, 0, 0, 1), + IPv4_Subnet => (255, 0, 0, 0), + IPv6 => (1 .. 15 => 0, 16 => 1), + IPv6_Subnet => (others => 16#FF#), + Success => Success); + Networking.Interfaces.Block (Dev, False, Success); + end if; + end Init; + ---------------------------------------------------------------------------- + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + Dev : Loopback_Data with Import, Address => Key; + begin + while Dev.Len = 0 loop + Scheduler.Yield_If_Able; + end loop; + + if Data'Length > Dev.Len then + Data (Data'First .. Data'First + Dev.Len - 1) := + Dev.Data (1 .. Dev.Len); + Ret_Count := Dev.Len; + Dev.Len := 0; + else + Data := Dev.Data (1 .. Data'Length); + Ret_Count := Data'Length; + Dev.Len := Dev.Len - Data'Length; + end if; + + Success := True; + end Read; + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + Dev : Loopback_Data with Import, Address => Key; + begin + while Dev.Len /= 0 loop + Scheduler.Yield_If_Able; + end loop; + + if Data'Length <= Dev.Data.all'Length then + Dev.Data (1 .. Data'Length) := Data; + Dev.Len := Data'Length; + Ret_Count := Data'Length; + Success := True; + else + Ret_Count := 0; + Success := False; + end if; + end Write; + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean + is + pragma Unreferenced (Data); + begin + case Request is + when NetInter.NET_GETMAC => + declare + Addr : Networking.MAC_Address with Import, Address => Argument; + begin + Addr := (others => 1); + end; + when others => + return False; + end case; + + return True; + end IO_Control; +end Devices.Loopback; diff --git a/source/devices/devices-loopback.ads b/source/devices/devices-loopback.ads new file mode 100644 index 0000000..9600a1a --- /dev/null +++ b/source/devices/devices-loopback.ads @@ -0,0 +1,52 @@ +-- devices-loopback.ads: Network loopback device. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.Loopback is + -- Initialize the device. + procedure Init (Success : out Boolean) + with Pre => Is_Initialized = True; + +private + + subtype Loopback_Buffer is Operation_Data (1 .. 4096 * 4); + type Loopback_Buffer_Acc is access Loopback_Buffer; + type Loopback_Data is record + Data : Loopback_Buffer_Acc; + Len : Natural; + end record; + type Loopback_Data_Acc is access Loopback_Data; + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + function IO_Control + (Data : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean; +end Devices.Loopback; diff --git a/source/devices/devices-netinter.ads b/source/devices/devices-netinter.ads new file mode 100644 index 0000000..47b19cb --- /dev/null +++ b/source/devices/devices-netinter.ads @@ -0,0 +1,20 @@ +-- devices-netinter.ads: Network interface values. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.NetInter is + -- Standard ioctls for devices implementing the netinter interface. + NET_GETMAC : constant := 16#400#; +end Devices.NetInter; diff --git a/source/devices/devices-partitions.adb b/source/devices/devices-partitions.adb new file mode 100644 index 0000000..e30dbf0 --- /dev/null +++ b/source/devices/devices-partitions.adb @@ -0,0 +1,400 @@ +-- devices-partitions.adb: Split a block device into partitions. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Address_To_Access_Conversions; +with Ada.Unchecked_Deallocation; + +package body Devices.Partitions is + -- Data for MBR partitioning. + type MBR_Byte_Data is array (Natural range <>) of Unsigned_8; + type MBR_Entry is record + Status : Unsigned_8; + CHS_First_Sector : MBR_Byte_Data (1 .. 3); + Entry_Type : Unsigned_8; + CHS_Last_Sector : MBR_Byte_Data (1 .. 3); + First_Sector : Unsigned_32; + Sector_Count : Unsigned_32; + end record with Size => 128; + for MBR_Entry use record + Status at 0 range 0 .. 7; + CHS_First_Sector at 0 range 8 .. 31; + Entry_Type at 0 range 32 .. 39; + CHS_Last_Sector at 0 range 40 .. 63; + First_Sector at 0 range 64 .. 95; + Sector_Count at 0 range 96 .. 127; + end record; + type MBR_Entries is array (1 .. 4) of MBR_Entry; + type MBR_Data is record + Boot_Code : MBR_Byte_Data (1 .. 446); + Entries : MBR_Entries; + Boot_Signature : MBR_Byte_Data (1 .. 2); + end record with Size => 4096; + for MBR_Data use record + Boot_Code at 0 range 0 .. 3567; + Entries at 0 range 3568 .. 4079; + Boot_Signature at 0 range 4080 .. 4095; + end record; + type MBR_Data_Acc is access all MBR_Data; + + -- Data for GPT partitioning. + type GPT_Header is record + Signature : String (1 .. 8); + Revision : Unsigned_32; + Header_Size : Unsigned_32; + CRC32 : Unsigned_32; + Reserved_0 : Unsigned_32; + Current_LBA : Unsigned_64; + Backup_LBA : Unsigned_64; + First_Usable_LBA : Unsigned_64; + Last_Usable_LBA : Unsigned_64; + GUID : UUID; + Partition_Entry_LBA : Unsigned_64; + Number_Of_Partitions : Unsigned_32; + Partition_Entry_Size : Unsigned_32; + Partition_Entries_CRC32 : Unsigned_32; + end record with Size => 736; + for GPT_Header use record + Signature at 0 range 0 .. 63; + Revision at 0 range 64 .. 95; + Header_Size at 0 range 96 .. 127; + CRC32 at 0 range 128 .. 159; + Reserved_0 at 0 range 160 .. 191; + Current_LBA at 0 range 192 .. 255; + Backup_LBA at 0 range 256 .. 319; + First_Usable_LBA at 0 range 320 .. 383; + Last_Usable_LBA at 0 range 384 .. 447; + GUID at 0 range 448 .. 575; + Partition_Entry_LBA at 0 range 576 .. 639; + Number_Of_Partitions at 0 range 640 .. 671; + Partition_Entry_Size at 0 range 672 .. 703; + Partition_Entries_CRC32 at 0 range 704 .. 735; + end record; + type GPT_Header_Acc is access all GPT_Header; + type GPT_Partition_Entry is record + Type_GUID_High : Unsigned_64; + Type_GUID_Low : Unsigned_64; + GUID : UUID; + Starting_LBA : Unsigned_64; + Ending_LBA : Unsigned_64; + Attributes : Unsigned_64; + Partition_Name : Wide_String (1 .. 36); + end record with Size => 1024; + for GPT_Partition_Entry use record + Type_GUID_High at 0 range 0 .. 63; + Type_GUID_Low at 0 range 64 .. 127; + GUID at 0 range 128 .. 255; + Starting_LBA at 0 range 256 .. 319; + Ending_LBA at 0 range 320 .. 383; + Attributes at 0 range 384 .. 447; + Partition_Name at 0 range 448 .. 1023; + end record; + type GPT_Entries is array (Natural range <>) of GPT_Partition_Entry; + + -- Datatypes for easing reading sectors up. + procedure Free is new Ada.Unchecked_Deallocation + (Devices.Operation_Data, Devices.Operation_Data_Acc); + + -- Packages for conversions. + package Con1 is new System.Address_To_Access_Conversions (Partition_Data); + package Con2 is new System.Address_To_Access_Conversions (MBR_Data); + package Con3 is new System.Address_To_Access_Conversions (GPT_Header); + + function Parse_Partitions + (Name : String; + Dev : Device_Handle) return Boolean + is + Success, Found_Partitions : Boolean; + begin + if not Devices.Is_Block_Device (Dev) then + return False; + end if; + + Parse_GPT_Partitions (Name, Dev, Found_Partitions, Success); + if Success and Found_Partitions then + return True; + end if; + Parse_MBR_Partitions (Name, Dev, Found_Partitions, Success); + return Success; + end Parse_Partitions; + + procedure Parse_GPT_Partitions + (Name : String; + Dev : Device_Handle; + Found_Partitions : out Boolean; + Success : out Boolean) + is + Block_Size : constant Natural := Devices.Get_Block_Size (Dev); + Sector : Devices.Operation_Data_Acc := + new Devices.Operation_Data (1 .. Block_Size); + S_Addr : constant System.Address := Sector.all'Address; + GPT : GPT_Header_Acc; + Part : Partition_Data_Acc; + + Parts_Per_Sector : Natural; + Part_Count : Natural; + Block : Natural := 0; + I : Natural := 1; + Added_Index : Natural := 1; + Block_Return : Natural; + begin + Success := True; + Found_Partitions := False; + Devices.Read + (Handle => Dev, + Offset => Unsigned_64 (Block_Size), + Ret_Count => Block_Return, + Data => Sector.all, + Success => Success); + if not Success or Block_Return /= Block_Size then + Success := False; + goto Return_End; + end if; + GPT := GPT_Header_Acc (Con3.To_Pointer (S_Addr)); + + if GPT.Signature /= "EFI PART" then + Success := True; + goto Return_End; + end if; + + Part_Count := Natural (GPT.Number_Of_Partitions); + Block := Block_Size * 2; + Parts_Per_Sector := Block_Size / Natural (GPT.Partition_Entry_Size); + + loop + Devices.Read + (Handle => Dev, + Offset => Unsigned_64 (Block), + Ret_Count => Block_Return, + Data => Sector.all, + Success => Success); + if not Success or Block_Return /= Block_Size then + Success := False; + goto Return_End; + end if; + + declare + GPT_Parts : GPT_Entries (1 .. Parts_Per_Sector) with + Import, Address => (S_Addr); + begin + for Partition of GPT_Parts loop + if I >= Part_Count then + Success := True; + goto Return_End; + end if; + if Partition.Type_GUID_High /= 0 and + Partition.Type_GUID_Low /= 0 + then + Found_Partitions := True; + Part := new Partition_Data'( + Inner_Device => Dev, + Block_Size => Block_Size, + LBA_Offset => Partition.Starting_LBA, + LBA_Length => Partition.Ending_LBA - + Partition.Starting_LBA + ); + if not Set_Part + (Name, Added_Index, Block_Size, Part, Partition.GUID) + then + Success := False; + goto Return_End; + end if; + Added_Index := Added_Index + 1; + end if; + I := I + 1; + end loop; + end; + Block := Block + Block_Size; + end loop; + + <> + Free (Sector); + end Parse_GPT_Partitions; + + procedure Parse_MBR_Partitions + (Name : String; + Dev : Device_Handle; + Found_Partitions : out Boolean; + Success : out Boolean) + is + Block_Size : constant Natural := Devices.Get_Block_Size (Dev); + Sector : Devices.Operation_Data_Acc := + new Devices.Operation_Data (1 .. Block_Size); + S_Addr : constant System.Address := Sector.all'Address; + MBR : MBR_Data_Acc; + Part : Partition_Data_Acc; + Block_Return : Natural; + begin + Success := True; + Found_Partitions := False; + Devices.Read + (Handle => Dev, + Offset => 0, + Ret_Count => Block_Return, + Data => Sector.all, + Success => Success); + if not Success or Block_Return /= Block_Size then + Success := False; + goto Return_End; + end if; + MBR := MBR_Data_Acc (Con2.To_Pointer (S_Addr)); + + if MBR.Boot_Signature /= (16#55#, 16#AA#) then + Success := True; + goto Return_End; + end if; + + for I in MBR.Entries'Range loop + if MBR.Entries (I).Sector_Count /= 0 then + Found_Partitions := True; + Part := new Partition_Data' + (Inner_Device => Dev, + Block_Size => Block_Size, + LBA_Offset => Unsigned_64 (MBR.Entries (I).First_Sector), + LBA_Length => Unsigned_64 (MBR.Entries (I).Sector_Count)); + if not Set_Part (Name, I, Block_Size, Part, (others => 0)) then + Success := False; + goto Return_End; + end if; + end if; + end loop; + + <> + Free (Sector); + end Parse_MBR_Partitions; + + function Set_Part + (Name : String; + Index : Positive; + Block_Size : Natural; + Part : Partition_Data_Acc; + ID : UUID) return Boolean + is + Success : Boolean; + begin + Register (( + Data => Con1.To_Address (Con1.Object_Pointer (Part)), + Is_Block => True, + ID => ID, + Block_Size => Block_Size, + Block_Count => Part.LBA_Length, + Sync => Sync'Access, + Sync_Range => Sync_Range'Access, + Read => Read'Access, + Write => Write'Access, + IO_Control => null, + Mmap => null, + Poll => null + ), Name & (1 => 'p', 2 => Character'Val (Index + Character'Pos ('0'))), + Success); + return Success; + end Set_Part; + ---------------------------------------------------------------------------- + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Is_Blocking); + Part : Partition_Data_Acc; + LBA_Offset, LBA_Length, Final_Count : Unsigned_64; + begin + Part := Partition_Data_Acc (Con1.To_Pointer (Key)); + LBA_Offset := Part.LBA_Offset * Unsigned_64 (Part.Block_Size); + LBA_Length := Part.LBA_Length * Unsigned_64 (Part.Block_Size); + + if Offset > LBA_Offset + LBA_Length then + Ret_Count := 0; + Success := True; + return; + end if; + + if Offset + Data'Length > LBA_Offset + LBA_Length then + Final_Count := LBA_Length - Offset; + else + Final_Count := Data'Length; + end if; + + Devices.Read + (Handle => Part.Inner_Device, + Offset => LBA_Offset + Offset, + Ret_Count => Ret_Count, + Data => Data (Data'First .. Data'First + Natural (Final_Count) - 1), + Success => Success); + end Read; + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Is_Blocking); + Part : Partition_Data_Acc; + LBA_Offset, LBA_Length, Final_Count : Unsigned_64; + begin + Part := Partition_Data_Acc (Con1.To_Pointer (Key)); + LBA_Offset := Part.LBA_Offset * Unsigned_64 (Part.Block_Size); + LBA_Length := Part.LBA_Length * Unsigned_64 (Part.Block_Size); + + if Offset > LBA_Offset + LBA_Length then + Ret_Count := 0; + Success := True; + return; + end if; + + if Offset + Data'Length > LBA_Offset + LBA_Length then + Final_Count := LBA_Length - Offset; + else + Final_Count := Data'Length; + end if; + + Devices.Write + (Handle => Part.Inner_Device, + Offset => LBA_Offset + Offset, + Ret_Count => Ret_Count, + Data => Data (Data'First .. Data'First + Natural (Final_Count) - 1), + Success => Success); + end Write; + + function Sync (Key : System.Address) return Boolean is + Part : constant Partition_Data_Acc := + Partition_Data_Acc (Con1.To_Pointer (Key)); + begin + return Devices.Synchronize + (Handle => Part.Inner_Device, + Offset => Part.LBA_Offset * Unsigned_64 (Part.Block_Size), + Count => Part.LBA_Length * Unsigned_64 (Part.Block_Size)); + end Sync; + + function Sync_Range + (Key : System.Address; + Offset : Unsigned_64; + Count : Unsigned_64) return Boolean + is + Part : constant Partition_Data_Acc := + Partition_Data_Acc (Con1.To_Pointer (Key)); + begin + return Devices.Synchronize + (Handle => Part.Inner_Device, + Offset => (Part.LBA_Offset * Unsigned_64 (Part.Block_Size)) + Offset, + Count => Count); + end Sync_Range; +end Devices.Partitions; diff --git a/source/devices/devices-partitions.ads b/source/devices/devices-partitions.ads new file mode 100644 index 0000000..4d74ddf --- /dev/null +++ b/source/devices/devices-partitions.ads @@ -0,0 +1,79 @@ +-- devices-partitions.ads: Split a block device into partitions. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.Partitions is + -- Register the partitions of the passed device as separate devices. + -- The resulting support read/write, and that's it. + -- @param Name Name to prepend all partitions with, p will be added. + -- @param Dev Device to scan partitions for. + -- @return True if everything is nominal, False if one of the systems + -- failed unexpectedly or the requirements are not met. + function Parse_Partitions + (Name : String; + Dev : Device_Handle) return Boolean; + +private + + -- Scan partitions for GPT and MBR. + procedure Parse_GPT_Partitions + (Name : String; + Dev : Device_Handle; + Found_Partitions : out Boolean; + Success : out Boolean); + procedure Parse_MBR_Partitions + (Name : String; + Dev : Device_Handle; + Found_Partitions : out Boolean; + Success : out Boolean); + + -- Register data for a partition. + type Partition_Data is record + Inner_Device : Device_Handle; + Block_Size : Natural; + LBA_Offset : Unsigned_64; + LBA_Length : Unsigned_64; + end record; + type Partition_Data_Acc is access all Partition_Data; + function Set_Part + (Name : String; + Index : Positive; + Block_Size : Natural; + Part : Partition_Data_Acc; + ID : UUID) return Boolean; + ---------------------------------------------------------------------------- + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + function Sync (Key : System.Address) return Boolean; + + function Sync_Range + (Key : System.Address; + Offset : Unsigned_64; + Count : Unsigned_64) return Boolean; +end Devices.Partitions; diff --git a/source/devices/devices-ramdev.adb b/source/devices/devices-ramdev.adb new file mode 100644 index 0000000..48fa08c --- /dev/null +++ b/source/devices/devices-ramdev.adb @@ -0,0 +1,120 @@ +-- devices-ramdev.adb: RAM devices. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; use System; +with Lib.Alignment; + +package body Devices.Ramdev is + -- Ramdev data. + type Ramdev_Data is record + Start_Address : System.Address; + Size : Unsigned_64; + end record; + type Ramdev_Data_Acc is access Ramdev_Data; + + function Init (Modules : Arch.Boot_RAM_Files) return Boolean is + Success : Boolean; + Dev_Res : Resource; + Dev_Name : String := "ramdev0"; + begin + for I in 1 .. Modules'Length loop + Dev_Name (Dev_Name'Last) := Character'Val (I + Character'Pos ('0')); + Dev_Res := Init_Module (Modules (I)); + Devices.Register (Dev_Res, Dev_Name, Success); + if not Success then + return False; + end if; + end loop; + return True; + end Init; + + function Init_Module (Module : Arch.Boot_RAM_File) return Resource is + package A is new Lib.Alignment (Unsigned_64); + Data : constant Ramdev_Data_Acc := new Ramdev_Data' + (Start_Address => Module.Start, + Size => Unsigned_64 (Module.Length)); + begin + return + (Data => Data.all'Address, + Is_Block => False, + ID => (others => 0), + Block_Size => 4096, + Block_Count => A.Divide_Round_Up (Data.Size, 4096), + Read => Read'Access, + Write => Write'Access, + Sync => null, + Sync_Range => null, + IO_Control => null, + Mmap => null, + Poll => null); + end Init_Module; + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Is_Blocking); + Dev : constant Ramdev_Data with Import, Address => Key; + Dev_Size : constant Natural := Natural (Dev.Size); + Dev_Data : constant Operation_Data (1 .. Dev_Size) + with Import, Address => Dev.Start_Address; + + Final_Loc : constant Natural := Natural (Offset) + Data'Length; + To_Write : Natural := Data'Length; + begin + if Final_Loc > Dev_Size then + To_Write := To_Write - (Final_Loc - Dev_Size); + end if; + + Data (Data'First .. Data'First + To_Write - 1) := + Dev_Data (Natural (Offset) + 1 .. Natural (Offset) + To_Write); + + Ret_Count := To_Write; + Success := True; + end Read; + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Is_Blocking); + Dev : constant Ramdev_Data with Import, Address => Key; + Dev_Size : constant Natural := Natural (Dev.Size); + Dev_Data : Operation_Data (1 .. Dev_Size) + with Import, Address => Dev.Start_Address; + + Final_Loc : constant Natural := Natural (Offset) + Data'Length; + To_Write : Natural := Data'Length; + begin + if Final_Loc > Dev_Size then + To_Write := To_Write - (Final_Loc - Dev_Size); + end if; + + Dev_Data (Natural (Offset) + 1 .. Natural (Offset) + To_Write) := + Data (Data'First .. Data'First + To_Write - 1); + + Ret_Count := To_Write; + Success := True; + end Write; +end Devices.Ramdev; diff --git a/source/devices/devices-ramdev.ads b/source/devices/devices-ramdev.ads new file mode 100644 index 0000000..02b27d6 --- /dev/null +++ b/source/devices/devices-ramdev.ads @@ -0,0 +1,42 @@ +-- devices-ramdev.ads: RAM device library. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch; + +package Devices.Ramdev is + -- Initialize devices from a list of RAM files. + function Init (Modules : Arch.Boot_RAM_Files) return Boolean; + +private + + function Init_Module (Module : Arch.Boot_RAM_File) return Resource; + + procedure Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); +end Devices.Ramdev; diff --git a/source/devices/devices-streams.adb b/source/devices/devices-streams.adb new file mode 100644 index 0000000..557f19c --- /dev/null +++ b/source/devices/devices-streams.adb @@ -0,0 +1,186 @@ +-- devices-streams.adb: Virtual stream devices. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Cryptography.Random; + +package body Devices.Streams is + pragma Suppress (All_Checks); -- Unit passes GNATprove AoRTE.. + + procedure Init (Success : out Boolean) is + Success_1, Success_2, Success_3, Success_4 : Boolean; + begin + Register + ((Data => System.Null_Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Read => Null_Read'Access, + Write => Null_Write'Access, + Sync => null, + Sync_Range => null, + IO_Control => null, + Mmap => null, + Poll => null), "null", Success_1); + Register + ((Data => System.Null_Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Read => Zero_Read'Access, + Write => Zero_Write'Access, + Sync => null, + Sync_Range => null, + IO_Control => null, + Mmap => null, + Poll => null), "zero", Success_2); + Register + ((Data => System.Null_Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Read => Random_Read'Access, + Write => Random_Write'Access, + Sync => null, + Sync_Range => null, + IO_Control => null, + Mmap => null, + Poll => null), "random", Success_3); + Register + ((Data => System.Null_Address, + ID => (others => 0), + Is_Block => False, + Block_Size => 4096, + Block_Count => 0, + Read => Random_Read'Access, + Write => Random_Write'Access, + Sync => null, + Sync_Range => null, + IO_Control => null, + Mmap => null, + Poll => null), "urandom", Success_4); + Success := Success_1 and Success_2 and Success_3 and Success_4; + end Init; + ---------------------------------------------------------------------------- + procedure Null_Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + pragma Unreferenced (Data); + pragma Unreferenced (Is_Blocking); + begin + Data := (others => 0); + Ret_Count := 0; + Success := True; + end Null_Read; + + procedure Null_Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + begin + Ret_Count := Data'Length; + Success := True; + end Null_Write; + ---------------------------------------------------------------------------- + procedure Zero_Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + begin + Data := (others => 0); + Ret_Count := Data'Length; + Success := True; + end Zero_Read; + + procedure Zero_Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + begin + Ret_Count := Data'Length; + Success := True; + end Zero_Write; + ---------------------------------------------------------------------------- + procedure Random_Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + begin + Cryptography.Random.Fill_Data (Cryptography.Random.Crypto_Data (Data)); + Ret_Count := Data'Length; + Success := True; + end Random_Read; + + procedure Random_Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean) + is + pragma Unreferenced (Key); + pragma Unreferenced (Offset); + pragma Unreferenced (Is_Blocking); + begin + if Data'Length >= 4 then + Cryptography.Random.Feed_Entropy + (Shift_Left (Unsigned_32 (Data (Data'First + 3)), 24) or + Shift_Left (Unsigned_32 (Data (Data'First + 2)), 16) or + Shift_Left (Unsigned_32 (Data (Data'First + 1)), 8) or + Shift_Left (Unsigned_32 (Data (Data'First + 0)), 0)); + end if; + Ret_Count := Data'Length; + Success := True; + end Random_Write; +end Devices.Streams; diff --git a/source/devices/devices-streams.ads b/source/devices/devices-streams.ads new file mode 100644 index 0000000..728a7e4 --- /dev/null +++ b/source/devices/devices-streams.ads @@ -0,0 +1,71 @@ +-- devices-streams.ads: Virtual stream devices. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.Streams is + -- Initialize the device. + procedure Init (Success : out Boolean) + with Pre => Is_Initialized = True; + +private + + procedure Null_Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Null_Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + ---------------------------------------------------------------------------- + procedure Zero_Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Zero_Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + ---------------------------------------------------------------------------- + procedure Random_Read + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + + procedure Random_Write + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); +end Devices.Streams; diff --git a/source/devices/devices-termios.ads b/source/devices/devices-termios.ads new file mode 100644 index 0000000..e78f24a --- /dev/null +++ b/source/devices/devices-termios.ads @@ -0,0 +1,81 @@ +-- devices-termios.ads: Virtual stream device library specification. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Devices.TermIOs is + -- Structures handled by the termios interface. + type Special_Characters is array (1 .. 11) of Unsigned_32; + type Local_Modes is record + Echo_Input : Boolean; + Do_Erase : Boolean; + Do_Kill : Boolean; + Echo_Newline : Boolean; + Canonical_Mode : Boolean; + Do_Implementation : Boolean; + Generate_Signals : Boolean; + No_Flushing_Signal : Boolean; + Send_Stop : Boolean; + Print_As_Erased : Boolean; + end record with Size => 32; + for Local_Modes use record + Echo_Input at 0 range 0 .. 0; + Do_Erase at 0 range 1 .. 1; + Do_Kill at 0 range 2 .. 2; + Echo_Newline at 0 range 3 .. 3; + Canonical_Mode at 0 range 4 .. 4; + Do_Implementation at 0 range 5 .. 5; + Generate_Signals at 0 range 6 .. 6; + No_Flushing_Signal at 0 range 7 .. 7; + Send_Stop at 0 range 8 .. 8; + Print_As_Erased at 0 range 9 .. 9; + end record; + type Main_Data is record + Input_Modes : Unsigned_32; + Output_Modes : Unsigned_32; + Control_Modes : Unsigned_32; + Local_Mode : Local_Modes; + Special_Chars : Special_Characters; + Input_Baud : Unsigned_32; + Output_Baud : Unsigned_32; + end record with Size => 544; + + type Win_Size is record + Rows : Unsigned_16; + Columns : Unsigned_16; + X_Pixels : Unsigned_16; + Y_Pixels : Unsigned_16; + end record; + + -- Arguments for TCFLSH. + TCIFLUSH : constant := 0; -- Flush only received and not read. + TCOFLUSH : constant := 1; -- Flush only written and not read. + TCIOFLUSH : constant := 2; -- Do both! + + -- Arguments for TCXONC. + TCOOFF : constant := 0; -- Suspend output. + TCOON : constant := 1; -- Restart suspended output. + TCIOFF : constant := 2; -- Suspend transmitting. + TCION : constant := 3; -- Restart transmitting. + + -- Standard ioctls for devices implementing termios. + TCGETS : constant := 16#5401#; + TCSETS : constant := 16#5402#; + TCSETSW : constant := 16#5403#; + TCSETSF : constant := 16#5404#; + TCXONC : constant := 16#540A#; -- Set flow conditions. + TCFLSH : constant := 16#540B#; -- Flush pending data as described. + TIOCGWINSZ : constant := 16#5413#; + TIOCSWINSZ : constant := 16#5414#; +end Devices.TermIOs; diff --git a/source/devices/devices.adb b/source/devices/devices.adb new file mode 100644 index 0000000..48f0177 --- /dev/null +++ b/source/devices/devices.adb @@ -0,0 +1,383 @@ +-- devices.adb: Device management. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Devices.Console; +with Devices.Loopback; +with Devices.Streams; +with Lib.Panic; +with Arch.Hooks; + +package body Devices is + -- Unit passes GNATprove AoRTE, GNAT does not know this. + pragma Suppress (All_Checks); + + procedure Init is + pragma SPARK_Mode (Off); -- Some devices here are not verified. + Success : Boolean; + begin + Devices_Data := new Device_Arr; + for Dev of Devices_Data.all loop + Dev.Is_Present := False; + end loop; + + + Console.Init (Success); + if not Success then goto Panic_Error; end if; + Loopback.Init (Success); + if not Success then goto Panic_Error; end if; + Streams.Init (Success); + if not Success or else not Arch.Hooks.Devices_Hook then + goto Panic_Error; + end if; + + return; + + <> + Lib.Panic.Hard_Panic ("Some devices could not be added"); + end Init; + + procedure Register (Dev : Resource; Name : String; Success : out Boolean) is + begin + -- Search if the name is already taken. + Success := False; + for E of Devices_Data.all loop + if E.Is_Present and then E.Name (1 .. E.Name_Len) = Name then + return; + end if; + end loop; + + -- Allocate. + for I in Devices_Data'Range loop + if not Devices_Data (I).Is_Present then + Devices_Data (I).Is_Present := True; + Devices_Data (I).Name (1 .. Name'Length) := Name; + Devices_Data (I).Name_Len := Name'Length; + Devices_Data (I).Contents := Dev; + Success := True; + exit; + end if; + end loop; + end Register; + + function Fetch (Name : String) return Device_Handle is + begin + for I in Devices_Data'Range loop + if Devices_Data (I).Is_Present and + Devices_Data (I).Name (1 .. Devices_Data (I).Name_Len) = Name + then + return I; + end if; + end loop; + return Error_Handle; + end Fetch; + + function Fetch (ID : UUID) return Device_Handle is + begin + if ID /= Zero_UUID then + for I in Devices_Data'Range loop + if Devices_Data (I).Is_Present and + Devices_Data (I).Contents.ID = ID + then + return I; + end if; + end loop; + end if; + return Error_Handle; + end Fetch; + + function Fetch_UUID (ID : UUID_String) return Device_Handle is + Result : UUID := Zero_UUID; + Returned : Device_Handle; + begin + -- UUID string formats are pretty messy. Representation is integer + -- based, but different UUID versions have different endianess, either + -- mixed or BE-only, so we need to try both. + + -- Check validity. + for I in ID'Range loop + case I is + when 9 | 14 | 19 | 24 => + if ID (I) /= '-' then + return Error_Handle; + end if; + when others => + if not (ID (I) in '0' .. '9') and + not (ID (I) in 'a' .. 'f') and + not (ID (I) in 'A' .. 'F') + then + return Error_Handle; + end if; + end case; + end loop; + + -- Try LE-BE mix first. + Convert_LE (UUID_Fragment (Result (1 .. 4)), ID (1 .. 8)); + Convert_LE (UUID_Fragment (Result (5 .. 6)), ID (10 .. 13)); + Convert_LE (UUID_Fragment (Result (7 .. 8)), ID (15 .. 18)); + Convert_BE (UUID_Fragment (Result (9 .. 10)), ID (20 .. 23)); + Convert_BE (UUID_Fragment (Result (11 .. 16)), ID (25 .. 36)); + Returned := Fetch (Result); + if Returned /= Error_Handle then + return Returned; + end if; + + -- Try all BE. + Convert_BE (UUID_Fragment (Result (1 .. 4)), ID (1 .. 8)); + Convert_BE (UUID_Fragment (Result (5 .. 6)), ID (10 .. 13)); + Convert_BE (UUID_Fragment (Result (7 .. 8)), ID (15 .. 18)); + Convert_BE (UUID_Fragment (Result (9 .. 10)), ID (20 .. 23)); + Convert_BE (UUID_Fragment (Result (11 .. 16)), ID (25 .. 36)); + return Fetch (Result); + end Fetch_UUID; + + function Fetch (Dev : Device_Handle) return UUID is + begin + return Devices_Data (Dev).Contents.ID; + end Fetch; + + procedure Fetch_Name + (Handle : Device_Handle; + Name : out String; + Length : out Natural) + is + begin + Name := Devices_Data (Handle).Name; + Length := Devices_Data (Handle).Name_Len; + end Fetch_Name; + + procedure List (Buffer : out Device_List; Total : out Natural) is + Curr_Index : Natural := 0; + begin + Total := 0; + Buffer := (others => Error_Handle); + + for I in Devices_Data'Range loop + pragma Loop_Invariant (Total <= Devices_Data'Length); + if Devices_Data (I).Is_Present then + Total := Total + 1; + if Curr_Index < Buffer'Length then + Buffer (Buffer'First + Curr_Index) := I; + Curr_Index := Curr_Index + 1; + end if; + end if; + end loop; + + for I in Total + 1 .. Buffer'Length loop + Buffer (Buffer'First + I - 1) := Error_Handle; + end loop; + end List; + ---------------------------------------------------------------------------- + function Is_Block_Device (Handle : Device_Handle) return Boolean is + begin + return Devices_Data (Handle).Contents.Is_Block; + end Is_Block_Device; + + function Get_Block_Count (Handle : Device_Handle) return Unsigned_64 is + begin + return Devices_Data (Handle).Contents.Block_Count; + end Get_Block_Count; + + function Get_Block_Size (Handle : Device_Handle) return Natural is + begin + return Devices_Data (Handle).Contents.Block_Size; + end Get_Block_Size; + + function Get_Unique_ID (Handle : Device_Handle) return Natural is + begin + -- Since handles are unique, reuse them as unique ID. + return Natural (Handle); + end Get_Unique_ID; + + function From_Unique_ID (ID : Natural) return Device_Handle is + begin + return Device_Handle (ID); + end From_Unique_ID; + + function Is_Read_Only (Handle : Device_Handle) return Boolean is + begin + return Devices_Data (Handle).Contents.Write = null; + end Is_Read_Only; + + function Synchronize (Handle : Device_Handle) return Boolean is + Success : Boolean := True; + begin + if Devices_Data (Handle).Contents.Sync /= null then + Success := Devices_Data (Handle).Contents.Sync + (Devices_Data (Handle).Contents.Data); + end if; + return Success; + end Synchronize; + + function Synchronize + (Handle : Device_Handle; + Offset : Unsigned_64; + Count : Unsigned_64) return Boolean + is + Success : Boolean := True; + begin + if Devices_Data (Handle).Contents.Sync_Range /= null then + Success := Devices_Data (Handle).Contents.Sync_Range + (Devices_Data (Handle).Contents.Data, Offset, Count); + elsif Devices_Data (Handle).Contents.Sync /= null then + Success := Devices_Data (Handle).Contents.Sync + (Devices_Data (Handle).Contents.Data); + end if; + return Success; + end Synchronize; + + procedure Read + (Handle : Device_Handle; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean := True) + is + begin + if Devices_Data (Handle).Contents.Read /= null then + Devices_Data (Handle).Contents.Read + (Key => Devices_Data (Handle).Contents.Data, + Offset => Offset, + Data => Data, + Ret_Count => Ret_Count, + Success => Success, + Is_Blocking => Is_Blocking); + else + Data := (others => 0); + Ret_Count := 0; + Success := False; + end if; + end Read; + + procedure Write + (Handle : Device_Handle; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean := True) + is + begin + if Devices_Data (Handle).Contents.Write /= null then + Devices_Data (Handle).Contents.Write + (Key => Devices_Data (Handle).Contents.Data, + Offset => Offset, + Data => Data, + Ret_Count => Ret_Count, + Success => Success, + Is_Blocking => Is_Blocking); + else + Ret_Count := 0; + Success := False; + end if; + end Write; + + function IO_Control + (Handle : Device_Handle; + Request : Unsigned_64; + Argument : System.Address) return Boolean + is + begin + if Devices_Data (Handle).Contents.IO_Control /= null then + return Devices_Data (Handle).Contents.IO_Control + (Devices_Data (Handle).Contents.Data, Request, Argument); + else + return False; + end if; + end IO_Control; + + function Mmap + (Handle : Device_Handle; + Map : Arch.MMU.Page_Table_Acc; + Address : Memory.Virtual_Address; + Length : Unsigned_64; + Flags : Arch.MMU.Page_Permissions) return Boolean + is + begin + if Devices_Data (Handle).Contents.Mmap /= null then + return Devices_Data (Handle).Contents.Mmap + (Devices_Data (Handle).Contents.Data, Map, Address, Length, Flags); + else + return False; + end if; + end Mmap; + + procedure Poll + (Handle : Device_Handle; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean) + is + begin + if Devices_Data (Handle).Contents.Poll /= null then + Devices_Data (Handle).Contents.Poll + (Devices_Data (Handle).Contents.Data, Can_Read, Can_Write, + Is_Error); + else + Can_Read := False; + Can_Write := False; + Is_Error := True; + end if; + end Poll; + ---------------------------------------------------------------------------- + function To_Integer (C : Character) return Unsigned_8 is + Result : Natural; + begin + if C in '0' .. '9' then + Result := Character'Pos (C) - Character'Pos ('0'); + elsif C in 'a' .. 'f' then + Result := Character'Pos (C) - Character'Pos ('a') + 10; + else + Result := Character'Pos (C) - Character'Pos ('A') + 10; + end if; + return Unsigned_8 (Result); + end To_Integer; + + procedure Convert_LE (Frag : out UUID_Fragment; Val : String) is + Res : Unsigned_8; + Idx : Natural := 0; + begin + Frag := (others => 0); + for I in reverse Val'Range loop + Res := To_Integer (Val (I)); + + if (I - Val'First) mod 2 /= 0 then + Frag (Frag'First + Idx) := Res; + else + Frag (Frag'First + Idx) := Frag (Frag'First + Idx) or + Shift_Left (Res, 4); + Idx := Idx + 1; + end if; + end loop; + end Convert_LE; + + procedure Convert_BE (Frag : out UUID_Fragment; Val : String) is + Res : Unsigned_8; + Idx : Natural := 0; + begin + Frag := (others => 0); + for I in Val'Range loop + Res := To_Integer (Val (I)); + + if (I - Val'First) mod 2 /= 0 then + Frag (Frag'First + Idx) := Frag (Frag'First + Idx) or Res; + Idx := Idx + 1; + else + Frag (Frag'First + Idx) := Shift_Left (Res, 4); + end if; + end loop; + end Convert_BE; +end Devices; diff --git a/source/devices/devices.ads b/source/devices/devices.ads new file mode 100644 index 0000000..dc39b11 --- /dev/null +++ b/source/devices/devices.ads @@ -0,0 +1,279 @@ +-- devices.ads: Device management library specification. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with Interfaces; use Interfaces; +with Memory; +with Arch.MMU; + +package Devices is + -- Data to operate with read-write. + -- This data type imposes a hard limit on operation length of + -- Natural. Linux shares this limitation funnily enough. + -- We additionally force a start of 1 because else an array + -- (0 .. Natural'Last) actually contains Natural'Last + 1 entries. + subtype Operation_Count is Natural range 1 .. Natural'Last; + type Operation_Data is array (Operation_Count range <>) of Unsigned_8; + type Operation_Data_Acc is access Operation_Data; + + -- Devices might have a UUID. If all components are 0, they have no UUID. + -- Example for the string version: 123e4567-e89b-12d3-a456-426614174000. + type UUID is array (1 .. 16) of Unsigned_8; + subtype UUID_String is String (1 .. 36); + Zero_UUID : constant UUID := (others => 0); + + -- Data that defines a device. + type Resource is record + Data : System.Address; + ID : UUID; + Is_Block : Boolean; -- True for block dev, false for character dev. + Block_Size : Natural; + Block_Count : Unsigned_64; + + Read : access procedure + (Key : System.Address; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + Write : access procedure + (Key : System.Address; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean); + Sync : access function (Key : System.Address) return Boolean; + Sync_Range : access function + (Key : System.Address; + Offset : Unsigned_64; + Count : Unsigned_64) return Boolean; + IO_Control : access function + (Key : System.Address; + Request : Unsigned_64; + Argument : System.Address) return Boolean; + Mmap : access function + (Key : System.Address; + Map : Arch.MMU.Page_Table_Acc; + Address : Memory.Virtual_Address; + Length : Unsigned_64; + Flags : Arch.MMU.Page_Permissions) return Boolean; + Poll : access procedure + (Handle : System.Address; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean); + end record; + + -- Handle for interfacing with devices, and device conditions. + type Device_Handle is private; + type Device_List is array (Natural range <>) of Device_Handle; + Error_Handle : constant Device_Handle; + + -- Device names have a maximum fixed length. + Max_Name_Length : constant Natural; + + -- Initialize the device registry and register some devices. + -- @return True on success, False if some devices could not be registered. + procedure Init with Post => Is_Initialized = True; + + -- Register a device with a resource description and matching name. + -- @param Dev Device description to register. + -- @param Name Name to register the device with, must be unique. + -- @return True on success, False on failure. + procedure Register (Dev : Resource; Name : String; Success : out Boolean) + with Pre => ((Is_Initialized = True) and Name'Length <= Max_Name_Length), + Post => Is_Initialized = True; + + -- Fetch a device by name. + -- @param Name Name to search. + -- @return A handle on success, or Error_Handle on failure. + function Fetch (Name : String) return Device_Handle + with Pre => ((Is_Initialized = True) and Name'Length <= Max_Name_Length); + + -- Fetch a device by numeric UUID. + -- @param ID UUID to search. + -- @return A handle on success, or Error_Handle on failure. + function Fetch (ID : UUID) return Device_Handle + with Pre => Is_Initialized; + + -- Fetch a device by string representation of a numeric UUID. + -- @param ID UUID to search. + -- @return A handle on success, or Error_Handle on failure. + function Fetch_UUID (ID : UUID_String) return Device_Handle + with Pre => (Is_Initialized = True); + + -- Fetch the numeric UUID of a device. + -- @param Dev Device to report the UUID of. + -- @return The UUID on success, or the Zero UUID if the device has no UUID. + function Fetch (Dev : Device_Handle) return UUID + with Pre => Is_Initialized; + + -- Write the name associated to a device handle to the passed buffer. + -- @param Handle Handle to fetch the name of. + -- @param Name Buffer to write the name. + -- @param Count Count of characters written to the buffer. + procedure Fetch_Name + (Handle : Device_Handle; + Name : out String; + Length : out Natural) + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle) and + (Name'Length = Max_Name_Length)), + Post => (Length >= 0 and Length <= Max_Name_Length); + + -- List all devices registered. + -- @param Buffer Buffer to write the devices. + -- @param Total Returned count of devices, even if it does not fit. + procedure List (Buffer : out Device_List; Total : out Natural) + with Pre => Is_Initialized; + + -- Ghost function for checking whether the device handling is initialized. + function Is_Initialized return Boolean with Ghost; + ---------------------------------------------------------------------------- + -- Fetch generic properties of a device handle. + -- @param Handle Handle to fetch, must be valid, as checking is not done. + -- @return The requested data. + function Is_Block_Device (Handle : Device_Handle) return Boolean + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + function Get_Block_Count (Handle : Device_Handle) return Unsigned_64 + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + function Get_Block_Size (Handle : Device_Handle) return Natural + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + function Is_Read_Only (Handle : Device_Handle) return Boolean + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + + -- Get a unique ID for the device. This does not have anything to do with + -- device UUIDs, and is always supported for a valid handle. + function Get_Unique_ID (Handle : Device_Handle) return Natural + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + + -- Get a device handle from a unique ID. + function From_Unique_ID (ID : Natural) return Device_Handle + with Pre => (Is_Initialized = True); + + -- Synchronize internal device state, in order to ensure coherency. + -- @param Handle Handle to synchronize if supported, must be valid. + -- @return True on success or sync not supported. False on device failure. + function Synchronize (Handle : Device_Handle) return Boolean + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + + -- Synchronize a data range of a device, in order to ensure coherency. + -- @param Handle Handle to synchronize if supported, must be valid. + -- @param Offset Offset to start synchronizing. + -- @param Count Count of bytes to synchronize. + -- @return True on success or sync not supported. False on device failure. + function Synchronize + (Handle : Device_Handle; + Offset : Unsigned_64; + Count : Unsigned_64) return Boolean + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + + -- Read from a device. + -- @param Handle Handle to read if supported, must be valid. + -- @param Offset Byte offset to start reading from, for block devices. + -- @param Count Count of bytes to read. + -- @param Desto Destination address where to write the read data. + -- @param Ret_Count Count of bytes actually read, < count if EOF or error. + -- @param Success True on success, False on non-supported/failure. + -- @param Is_Blocking Whether to do the operation blocking or non-blocking. + procedure Read + (Handle : Device_Handle; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean := True) + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + + -- Write to a device. + -- @param Handle Handle to read if supported, must be valid. + -- @param Offset Byte offset to start writing to, for block devices. + -- @param Count Count of bytes to write. + -- @param To_Write Source address for the data to write. + -- @param Ret_Count Count of bytes actually written, < count if EOF/error. + -- @param Success True on success, False on non-supported/failure. + -- @param Is_Blocking Whether to do the operation blocking or non-blocking. + procedure Write + (Handle : Device_Handle; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean; + Is_Blocking : Boolean := True) + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + + -- Do a device-specific IO control request. + -- @param Handle Handle to operate on, must be valid. + -- @param Request Device-specific request. + -- @param Argument Device-specific argument address. + -- @result True in success, False if not supported or failed. + function IO_Control + (Handle : Device_Handle; + Request : Unsigned_64; + Argument : System.Address) return Boolean + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + + -- Do a device-specific memory map request. + -- @param Handle Handle to operate on, must be valid. + -- @param Map Map to map the device to. + -- @param Address Virtual address to map device memory to. + -- @param Length Length in bytes of the mapping. + -- @result True in success, False if not supported or failed. + function Mmap + (Handle : Device_Handle; + Map : Arch.MMU.Page_Table_Acc; + Address : Memory.Virtual_Address; + Length : Unsigned_64; + Flags : Arch.MMU.Page_Permissions) return Boolean + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + + -- Do a device-specific polling for status. + -- @param Handle Handle to operate on, must be valid. + -- @param Can_Read True if the device can read right now. + -- @param Can_Write True if the device can write right now. + -- @param Is_Error True if the device is in an error state. + procedure Poll + (Handle : Device_Handle; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean) + with Pre => ((Is_Initialized = True) and (Handle /= Error_Handle)); + +private + + type Device_Handle is new Natural range 0 .. 30; + Error_Handle : constant Device_Handle := 0; + Max_Name_Length : constant Natural := 64; + type Device is record + Is_Present : Boolean; + Name : String (1 .. Max_Name_Length); + Name_Len : Natural range 0 .. Max_Name_Length; + Contents : Resource; + end record; + type Device_Arr is array (Device_Handle range 1 .. 30) of Device; + type Device_Arr_Acc is access Device_Arr; + + Devices_Data : Device_Arr_Acc; + + function Is_Initialized return Boolean is (Devices_Data /= null); + ---------------------------------------------------------------------------- + type UUID_Fragment is array (Natural range <>) of Unsigned_8; + + function To_Integer (C : Character) return Unsigned_8; + procedure Convert_LE (Frag : out UUID_Fragment; Val : String); + procedure Convert_BE (Frag : out UUID_Fragment; Val : String); +end Devices; diff --git a/source/ipc/ipc-fifo.adb b/source/ipc/ipc-fifo.adb new file mode 100644 index 0000000..36c48e3 --- /dev/null +++ b/source/ipc/ipc-fifo.adb @@ -0,0 +1,281 @@ +-- ipc-fifo.adb: Pipe creation and management. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Unchecked_Deallocation; +with Scheduler; + +package body IPC.FIFO is + pragma Suppress (All_Checks); + + procedure Free is new Ada.Unchecked_Deallocation (Inner, Inner_Acc); + procedure Free is new Ada.Unchecked_Deallocation + (Devices.Operation_Data, Devices.Operation_Data_Acc); + + function Create (Is_Blocking : Boolean := True) return Inner_Acc is + Data : Devices.Operation_Data_Acc; + begin + Data := new Devices.Operation_Data'(1 .. Default_Data_Length => 0); + return new Inner' + (Reader_Closed => False, + Writer_Closed => False, + Mutex => Lib.Synchronization.Unlocked_Semaphore, + Is_Read_Blocking => Is_Blocking, + Is_Write_Blocking => Is_Blocking, + Data_Count => 0, + Data => Data); + end Create; + + function Is_Read_Blocking (P : Inner_Acc) return Boolean is + begin + return P.Is_Read_Blocking; + end Is_Read_Blocking; + + function Is_Write_Blocking (P : Inner_Acc) return Boolean is + begin + return P.Is_Write_Blocking; + end Is_Write_Blocking; + + procedure Set_Read_Blocking (P : Inner_Acc; B : Boolean) is + begin + Lib.Synchronization.Seize (P.Mutex); + P.Is_Read_Blocking := B; + Lib.Synchronization.Release (P.Mutex); + end Set_Read_Blocking; + + procedure Set_Write_Blocking (P : Inner_Acc; B : Boolean) is + begin + Lib.Synchronization.Seize (P.Mutex); + P.Is_Write_Blocking := B; + Lib.Synchronization.Release (P.Mutex); + end Set_Write_Blocking; + + procedure Poll_Reader + (P : Inner_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean; + Is_Broken : out Boolean) + is + begin + Can_Read := not Is_Empty (P); + Can_Write := False; + Is_Error := False; + Is_Broken := P.Writer_Closed or P.Reader_Closed; + end Poll_Reader; + + procedure Poll_Writer + (P : Inner_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean; + Is_Broken : out Boolean) + is + begin + Can_Read := False; + Can_Write := P.Data_Count /= P.Data'Length; + Is_Error := False; + Is_Broken := False; + end Poll_Writer; + + function Is_Empty (P : Inner_Acc) return Boolean is + begin + return P.Data_Count = 0; + end Is_Empty; + + procedure Close_Reader (To_Close : in out Inner_Acc) is + begin + Lib.Synchronization.Seize (To_Close.Mutex); + To_Close.Reader_Closed := True; + Common_Close (To_Close); + end Close_Reader; + + procedure Close_Writer (To_Close : in out Inner_Acc) is + begin + Lib.Synchronization.Seize (To_Close.Mutex); + To_Close.Writer_Closed := True; + Common_Close (To_Close); + end Close_Writer; + + procedure Close (To_Close : in out Inner_Acc) is + begin + Lib.Synchronization.Seize (To_Close.Mutex); + To_Close.Reader_Closed := True; + To_Close.Writer_Closed := True; + Common_Close (To_Close); + end Close; + + procedure Get_Size (P : Inner_Acc; Size : out Natural) is + begin + Lib.Synchronization.Seize (P.Mutex); + Size := P.Data'Length; + Lib.Synchronization.Release (P.Mutex); + end Get_Size; + + procedure Set_Size (P : Inner_Acc; Size : Natural; Success : out Boolean) is + New_Buffer : Devices.Operation_Data_Acc; + begin + Lib.Synchronization.Seize (P.Mutex); + if Size >= P.Data_Count then + New_Buffer := new Devices.Operation_Data'(1 .. Size => 0); + New_Buffer (1 .. P.Data_Count) := P.Data (1 .. P.Data_Count); + Free (P.Data); + P.Data := New_Buffer; + Success := True; + else + Success := False; + end if; + Lib.Synchronization.Release (P.Mutex); + end Set_Size; + + procedure Read + (To_Read : Inner_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Pipe_Status) + is + Final_Len : Natural := Data'Length; + begin + Data := (others => 0); + + if To_Read.Is_Read_Blocking then + loop + Lib.Synchronization.Seize (To_Read.Mutex); + if To_Read.Data_Count /= 0 then + exit when To_Read.Data_Count /= 0; + end if; + if To_Read.Writer_Closed then + Ret_Count := 0; + Success := Pipe_Success; + Lib.Synchronization.Release (To_Read.Mutex); + return; + end if; + Lib.Synchronization.Release (To_Read.Mutex); + Scheduler.Yield_If_Able; + end loop; + else + Lib.Synchronization.Seize (To_Read.Mutex); + if To_Read.Data_Count = 0 then + Ret_Count := 0; + if To_Read.Writer_Closed then + Success := Pipe_Success; + else + Success := Would_Block_Failure; + end if; + Lib.Synchronization.Release (To_Read.Mutex); + return; + end if; + end if; + + if Final_Len > To_Read.Data_Count then + Final_Len := To_Read.Data_Count; + end if; + if Data'First > Natural'Last - Final_Len then + Final_Len := Natural'Last - Data'First; + end if; + + Data (Data'First .. Data'First + Final_Len - 1) := + To_Read.Data (1 .. Final_Len); + for I in 1 .. Final_Len loop + for J in To_Read.Data'First .. To_Read.Data'Last - 1 loop + To_Read.Data (J) := To_Read.Data (J + 1); + end loop; + if To_Read.Data_Count > 0 then + To_Read.Data_Count := To_Read.Data_Count - 1; + else + exit; + end if; + end loop; + + Lib.Synchronization.Release (To_Read.Mutex); + Ret_Count := Final_Len; + Success := Pipe_Success; + end Read; + + procedure Write + (To_Write : Inner_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Pipe_Status) + is + Len : Natural := Data'Length; + Final : Natural; + begin + if To_Write.Reader_Closed then + Ret_Count := 0; + Success := Broken_Failure; + return; + end if; + + if To_Write.Is_Write_Blocking then + loop + Lib.Synchronization.Seize (To_Write.Mutex); + exit when To_Write.Data_Count /= To_Write.Data'Length; + Lib.Synchronization.Release (To_Write.Mutex); + Scheduler.Yield_If_Able; + end loop; + else + Lib.Synchronization.Seize (To_Write.Mutex); + if To_Write.Data_Count = To_Write.Data'Length then + Ret_Count := 0; + Success := Would_Block_Failure; + Lib.Synchronization.Release (To_Write.Mutex); + return; + end if; + end if; + + if Len > To_Write.Data'Length or else + Len > To_Write.Data'Length - To_Write.Data_Count + then + Final := To_Write.Data'Length; + Len := To_Write.Data'Length - To_Write.Data_Count; + else + Final := To_Write.Data_Count + Len; + end if; + if Data'First > Natural'Last - Len then + Len := Natural'Last - Data'First; + Final := To_Write.Data_Count + Len; + end if; + + if To_Write.Data_Count /= Natural'Last then + To_Write.Data (To_Write.Data_Count + 1 .. Final) := + Data (Data'First .. Data'First + Len - 1); + To_Write.Data_Count := Final; + Ret_Count := Len; + Success := Pipe_Success; + else + Ret_Count := 0; + Success := Would_Block_Failure; + end if; + + Lib.Synchronization.Release (To_Write.Mutex); + end Write; + ---------------------------------------------------------------------------- + procedure Common_Close (To_Close : in out Inner_Acc) is + pragma Annotate + (GNATprove, + False_Positive, + "memory leak", + "Cannot verify that the pipes have only 1 reference, but they do"); + begin + if To_Close.Reader_Closed and To_Close.Writer_Closed then + Free (To_Close.Data); + Free (To_Close); + else + Lib.Synchronization.Release (To_Close.Mutex); + end if; + To_Close := null; + end Common_Close; +end IPC.FIFO; diff --git a/source/ipc/ipc-fifo.ads b/source/ipc/ipc-fifo.ads new file mode 100644 index 0000000..cf9009d --- /dev/null +++ b/source/ipc/ipc-fifo.ads @@ -0,0 +1,156 @@ +-- ipc-fifo.ads: Pipe creation and management. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Synchronization; +with Devices; use Devices; +with Arch.MMU; + +package IPC.FIFO is + -- FIFOs are the simplest and most versatile IPC methods of Ironclad. + -- It's basically a buffer held in memory by the kernel, open for read and + -- write, with independent settings for each operation. + -- + -- A FIFO has 2 sides, a write and read side, each one can be closed + -- separately. The whole object is deallocated when both are closed. + -- + -- If the read side is closed, all subsequent writes will fail until + -- increased. Reads will continue working. This is done instead of a + -- in order to implement UNIXy behaviour easily. Do not hope for the + -- existance of SIGPIPE. + -- + -- FIFOs can be used standalone or to implement other UNIXy interfaces + -- like pipes or UNIX-domain sockets. + + -- Objects used to represent the FIFO. + type Inner is private; + type Inner_Acc is access Inner; + + -- Data inside the FIFO has a default set maximum length. The length is + -- configurable using some functions here. + Default_Data_Length : constant Natural; + + -- Create a fresh FIFO. It will be created with one refcount for the read + -- end and one refcount for the write end. + function Create (Is_Blocking : Boolean := True) return Inner_Acc + with Post => Is_Valid (Create'Result); + + -- Check or change whether the FIFO is blocking or not, for each end. + function Is_Read_Blocking (P : Inner_Acc) return Boolean + with Inline, Pre => Is_Valid (P); + function Is_Write_Blocking (P : Inner_Acc) return Boolean + with Inline, Pre => Is_Valid (P); + procedure Set_Read_Blocking (P : Inner_Acc; B : Boolean) + with Inline, Pre => Is_Valid (P); + procedure Set_Write_Blocking (P : Inner_Acc; B : Boolean) + with Inline, Pre => Is_Valid (P); + + -- Poll the state of a FIFO reader. + procedure Poll_Reader + (P : Inner_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean; + Is_Broken : out Boolean) + with Pre => Is_Valid (P), Post => Is_Valid (P); + + -- Poll the state of a FIFO writer. + procedure Poll_Writer + (P : Inner_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean; + Is_Broken : out Boolean) + with Pre => Is_Valid (P); + + -- Check whether the FIFO is empty. + function Is_Empty (P : Inner_Acc) return Boolean with Pre => Is_Valid (P); + + -- Close the passed end. + procedure Close_Reader (To_Close : in out Inner_Acc) + with Pre => Is_Valid (To_Close), Post => To_Close = null; + procedure Close_Writer (To_Close : in out Inner_Acc) + with Pre => Is_Valid (To_Close), Post => To_Close = null; + + -- Non-specific one just closes both reader and writer. + procedure Close (To_Close : in out Inner_Acc) + with Pre => Is_Valid (To_Close), Post => To_Close = null; + + -- Get the current size of a FIFO. + -- @param P FIFO to configure. + -- @param Size Size of the FIFO. + procedure Get_Size (P : Inner_Acc; Size : out Natural) + with Pre => Is_Valid (P); + + -- Set the current size of a FIFO. + -- @param P FIFO to configure. + -- @param Size Size to set for the FIFO. + -- @param Success True in success, False if there was a failure or the + -- passed size would cause data loss. + procedure Set_Size (P : Inner_Acc; Size : Natural; Success : out Boolean) + with Pre => (Is_Valid (P) and Size < Natural'Last - 100); + + -- Returned status of a pipe operation. + type Pipe_Status is (Pipe_Success, Broken_Failure, Would_Block_Failure); + + -- Read from the reader end of a pipe. + -- @param To_Read Pipe end to read from. + -- @param Data Buffer to write read data. + -- @param Ret_Count Count of data read. + -- @apram Success Return status of the operation. + procedure Read + (To_Read : Inner_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Pipe_Status) + with Pre => Is_Valid (To_Read); + + -- Write to the writer end of a pipe. + -- @param To_Write Pipe end to write to. + -- @param Data Data to write. + -- @param Ret_Count Count of data written. + -- @apram Success Return status of the operation. + procedure Write + (To_Write : Inner_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Pipe_Status) + with Pre => Is_Valid (To_Write); + + -- Ghost function for checking whether a FIFO is properly initialized. + function Is_Valid (P : Inner_Acc) return Boolean with Ghost; + +private + + Default_Data_Length : constant Natural := Arch.MMU.Page_Size * 10; + type Inner is record + Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Reader_Closed : Boolean; + Writer_Closed : Boolean; + Is_Read_Blocking : Boolean; + Is_Write_Blocking : Boolean; + Data_Count : Natural; + Data : Devices.Operation_Data_Acc; + end record; + + function Is_Valid (P : Inner_Acc) return Boolean is + (P /= null and then + P.Data /= null and then + P.Data_Count <= P.Data'Length and then + P.Data'First = 1); + + procedure Common_Close (To_Close : in out Inner_Acc) + with Pre => To_Close /= null, Post => To_Close = null; +end IPC.FIFO; diff --git a/source/ipc/ipc-filelock.adb b/source/ipc/ipc-filelock.adb new file mode 100644 index 0000000..f9fb577 --- /dev/null +++ b/source/ipc/ipc-filelock.adb @@ -0,0 +1,185 @@ +-- ipc-filelock.adb: File locking. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Synchronization; use Lib.Synchronization; +with Scheduler; + +package body IPC.FileLock is + type Lock_Inner is record + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Start : Unsigned_64; + Length : Unsigned_64; + Acquirer : Userland.Process.PID; -- Error_PID if free lock. + Is_Write : Boolean; + end record; + type Lock_Inner_Arr is array (1 .. 20) of Lock_Inner; + + Registry_Mutex : aliased Binary_Semaphore := Unlocked_Semaphore; + Registry : Lock_Inner_Arr := + (others => (VFS.Error_Handle, 0, 0, 0, Error_PID, False)); + + procedure Could_Acquire_Lock + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Start : in out Unsigned_64; + Length : in out Unsigned_64; + Acquirer : in out Userland.Process.PID; + Is_Write : in out Boolean; + Success : out Boolean) + is + Conflicting : Natural; + begin + Lib.Synchronization.Seize (Registry_Mutex); + Inner_Could_Acquire + (Acquired_FS, Acquired_Ino, Start, Length, Is_Write, + Conflicting, Success); + if not Success then + Start := Registry (Conflicting).Start; + Length := Registry (Conflicting).Length; + Acquirer := Registry (Conflicting).Acquirer; + Is_Write := Registry (Conflicting).Is_Write; + end if; + Lib.Synchronization.Release (Registry_Mutex); + end Could_Acquire_Lock; + + procedure Acquire_Lock + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Start : Unsigned_64; + Length : Unsigned_64; + Acquirer : Userland.Process.PID; + Is_Write : Boolean; + Is_Blocking : Boolean; + Success : out Boolean) + is + Conflicting : Natural; + begin + loop + Lib.Synchronization.Seize (Registry_Mutex); + Inner_Could_Acquire + (Acquired_FS, Acquired_Ino, Start, Length, Is_Write, + Conflicting, Success); + if Success then + Success := False; + for L of Registry loop + if L.Acquirer = Error_PID then + L.FS := Acquired_FS; + L.Ino := Acquired_Ino; + L.Start := Start; + L.Length := Length; + L.Acquirer := Acquirer; + L.Is_Write := Is_Write; + Success := True; + exit; + end if; + end loop; + end if; + Lib.Synchronization.Release (Registry_Mutex); + exit when not Is_Blocking or Success; + Scheduler.Yield_If_Able; + end loop; + end Acquire_Lock; + + procedure Release_Lock + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Start : Unsigned_64; + Length : Unsigned_64; + Acquirer : Userland.Process.PID; + Success : out Boolean) + is + pragma Unreferenced (Start); + pragma Unreferenced (Length); + pragma Unreferenced (Acquirer); + begin + Release_Lock (Acquired_FS, Acquired_Ino, Success); + end Release_Lock; + + procedure Release_Lock + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Success : out Boolean) + is + begin + Lib.Synchronization.Seize (Registry_Mutex); + Success := False; + for L of Registry loop + if L.Acquirer /= Error_PID and then + L.FS = Acquired_FS and then + L.Ino = Acquired_Ino + then + L.Acquirer := Error_PID; + Success := True; + exit; + end if; + end loop; + Lib.Synchronization.Release (Registry_Mutex); + end Release_Lock; + + procedure List_All (Buffer : out Lock_Arr; Length : out Natural) is + Curr_Index : Natural := 0; + begin + Buffer := (others => (Error_PID, False, 0, 0, VFS.Error_Handle, 0)); + Length := 0; + + Lib.Synchronization.Seize (Registry_Mutex); + for I in Registry'Range loop + if Registry (I).Acquirer /= Error_PID then + Length := Length + 1; + if Curr_Index < Buffer'Length then + Buffer (Buffer'First + Curr_Index) := + (Acquirer => Registry (I).Acquirer, + Is_Writing => Registry (I).Is_Write, + Start => Registry (I).Start, + Length => Registry (I).Length, + FS => Registry (I).FS, + Ino => Registry (I).Ino); + Curr_Index := Curr_Index + 1; + end if; + end if; + end loop; + Lib.Synchronization.Release (Registry_Mutex); + end List_All; + ---------------------------------------------------------------------------- + procedure Inner_Could_Acquire + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Start : Unsigned_64; + Length : Unsigned_64; + Is_Write : Boolean; + Conflicting : out Natural; + Success : out Boolean) + is + begin + Success := True; + Conflicting := 0; + for I in Registry'Range loop + if Registry (I).Acquirer /= Error_PID and then + Registry (I).FS = Acquired_FS and then + Registry (I).Ino = Acquired_Ino + then + if Registry (I).Is_Write or Is_Write or + (Registry (I).Start <= Start and Registry (I).Length >= Length) + then + Conflicting := I; + Success := False; + exit; + end if; + end if; + end loop; + end Inner_Could_Acquire; +end IPC.FileLock; diff --git a/source/ipc/ipc-filelock.ads b/source/ipc/ipc-filelock.ads new file mode 100644 index 0000000..3fad47f --- /dev/null +++ b/source/ipc/ipc-filelock.ads @@ -0,0 +1,111 @@ +-- ipc-filelock.ads: File locking. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with VFS; use VFS; +with Userland.Process; use Userland.Process; + +package IPC.FileLock is + -- This module implements POSIX-compliant advisory file locking. + + -- Checks whether a lock could be acquired. + -- @param Acquired_FS FS containing the inode to acquire. + -- @param Acquired_Ino Inode to acquire. + -- @param Start Start to lock, or conflicting start. + -- @param Length Lenght to lock, or conflicting length. + -- @param Acquirer Acquirer of the lock, or current holder. + -- @param Is_Write Whether the lock is read (inclusive) or write. + -- @param Success True if the lock could be placed, else, information + -- of one of the holders is returned in other params. + procedure Could_Acquire_Lock + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Start : in out Unsigned_64; + Length : in out Unsigned_64; + Acquirer : in out Userland.Process.PID; + Is_Write : in out Boolean; + Success : out Boolean); + + -- Acquire a lock. + -- @param Acquired_FS FS containing the inode to acquire. + -- @param Acquired_Ino Inode to acquire. + -- @param Start Start to lock. + -- @param Length Lenght to lock. + -- @param Acquirer Acquirer of the lock. + -- @param Is_Write Whether the lock is read (inclusive) or write. + -- @param Is_Blocking Block until blocked, or give up early. + -- @param Success True if the lock could be placed. + procedure Acquire_Lock + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Start : Unsigned_64; + Length : Unsigned_64; + Acquirer : Userland.Process.PID; + Is_Write : Boolean; + Is_Blocking : Boolean; + Success : out Boolean); + + -- Release a lock. + -- @param Acquired_FS FS containing the inode to release. + -- @param Acquired_Ino Inode to release. + -- @param Start Start to unlock. + -- @param Length Lenght to unlock. + -- @param Acquirer Acquirer of the lock. + -- @param Success True if the lock could be unlocked. + procedure Release_Lock + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Start : Unsigned_64; + Length : Unsigned_64; + Acquirer : Userland.Process.PID; + Success : out Boolean); + + -- Release all locks regardless of range and owner. + -- @param Acquired_FS FS containing the inode to release. + -- @param Acquired_Ino Inode to release. + -- @param Success True if the lock could be unlocked. + procedure Release_Lock + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Success : out Boolean); + + -- Information of a file lock for debugging. + type Lock_Info is record + Acquirer : PID; + Is_Writing : Boolean; + Start : Unsigned_64; + Length : Unsigned_64; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + end record; + type Lock_Arr is array (Natural range <>) of Lock_Info; + + -- List all file locks on the system. + -- @param Buffer Where to write all the lock information. + -- @param Length Total count of locks, even if it is > List'Length. + procedure List_All (Buffer : out Lock_Arr; Length : out Natural); + +private + + procedure Inner_Could_Acquire + (Acquired_FS : VFS.FS_Handle; + Acquired_Ino : VFS.File_Inode_Number; + Start : Unsigned_64; + Length : Unsigned_64; + Is_Write : Boolean; + Conflicting : out Natural; + Success : out Boolean); +end IPC.FileLock; diff --git a/source/ipc/ipc-futex.adb b/source/ipc/ipc-futex.adb new file mode 100644 index 0000000..0871c60 --- /dev/null +++ b/source/ipc/ipc-futex.adb @@ -0,0 +1,109 @@ +-- ipc-futex.adb: Fast userland mutex. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Scheduler; +with Lib.Synchronization; use Lib.Synchronization; +with Arch.Clocks; +with Lib.Time; + +package body IPC.Futex is + type Futex_Inner is record + Key : access Unsigned_32; + Wakey_Wakey : Boolean; + Waiters : Unsigned_32; + end record; + type Futex_Arr is array (1 .. 20) of Futex_Inner; + + Registry_Mutex : aliased Binary_Semaphore := Unlocked_Semaphore; + Registry : Futex_Arr := (others => (null, False, 0)); + + function Wait + (Keys : Element_Arr; + Max_Seconds : Unsigned_64; + Max_Nanos : Unsigned_64) return Boolean + is + Curr_Sec, Curr_NSec, Final_Sec, Final_NSec : Unsigned_64; + Idx : array (1 .. Keys'Length) of Natural; + begin + -- Find and/or allocate indexes for the passed mutexes. + for I in Keys'Range loop + if Keys (I).Key.all /= Keys (I).Expected then + return False; + end if; + + Lib.Synchronization.Seize (Registry_Mutex); + for J in Registry'Range loop + if Registry (J).Key = Keys (I).Key then + Idx (I) := J; + Registry (J).Waiters := Registry (J).Waiters + 1; + goto End_Of_Iter; + end if; + end loop; + for J in Registry'Range loop + if Registry (J).Key = null then + Idx (I) := J; + Registry (J).Key := Keys (I).Key; + Registry (J).Wakey_Wakey := False; + Registry (J).Waiters := 1; + goto End_Of_Iter; + end if; + end loop; + + Lib.Synchronization.Release (Registry_Mutex); + return False; + <> + Lib.Synchronization.Release (Registry_Mutex); + end loop; + + -- Now that we have a built list of indexes to wait, we wait. + Arch.Clocks.Get_Monotonic_Time (Final_Sec, Final_NSec); + Lib.Time.Increment (Final_Sec, Final_NSec, Max_Seconds, Max_Nanos); + + for I of Idx loop + Lib.Synchronization.Seize (Registry_Mutex); + if Registry (I).Wakey_Wakey then + Registry (I).Waiters := Registry (I).Waiters - 1; + if Registry (I).Waiters = 0 then + Registry (I).Key := null; + end if; + Lib.Synchronization.Release (Registry_Mutex); + exit; + end if; + Lib.Synchronization.Release (Registry_Mutex); + + Arch.Clocks.Get_Monotonic_Time (Curr_Sec, Curr_NSec); + exit when Lib.Time.Is_Greater_Equal + (Curr_Sec, Curr_NSec, Final_Sec, Final_NSec); + + Scheduler.Yield_If_Able; + end loop; + + return True; + end Wait; + + procedure Wake (Keys : Element_Arr) is + begin + for K of Keys loop + Lib.Synchronization.Seize (Registry_Mutex); + for I in Registry'Range loop + if Registry (I).Key = K.Key then + Registry (I).Wakey_Wakey := True; + end if; + end loop; + Lib.Synchronization.Release (Registry_Mutex); + end loop; + end Wake; +end IPC.Futex; diff --git a/source/ipc/ipc-futex.ads b/source/ipc/ipc-futex.ads new file mode 100644 index 0000000..f48c3b6 --- /dev/null +++ b/source/ipc/ipc-futex.ads @@ -0,0 +1,47 @@ +-- ipc-futex.ads: Fast userland mutex. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package IPC.Futex is + -- This module implements fast userland mutexes, despite the userland tag, + -- they are perfectly usable inside kernel mode as well. + -- + -- These futexes work by watching a memory address for an expected value, + -- with some timeout limits. Once the expected value is found, the thread + -- will wait for explicit wakeup. + + -- Information to depict an element to wait on. + type Element is record + Key : access Unsigned_32; + Expected : Unsigned_32; + end record; + type Element_Arr is array (Natural range <>) of Element; + + -- Wait for a set of keys. + -- @param Keys Keys to wait for. + -- @param Max_Seconds Maximum amount of seconds to wait for. + -- @param Max_Nanos Nanoseconds component of Max_Seconds. + -- @return True in success, False in failure. + function Wait + (Keys : Element_Arr; + Max_Seconds : Unsigned_64; + Max_Nanos : Unsigned_64) return Boolean; + + -- Wake a set of keys. + -- @param Keys Keys to wait for. + procedure Wake (Keys : Element_Arr); +end IPC.Futex; diff --git a/source/ipc/ipc-pty.adb b/source/ipc/ipc-pty.adb new file mode 100644 index 0000000..e92962b --- /dev/null +++ b/source/ipc/ipc-pty.adb @@ -0,0 +1,426 @@ +-- ipc-pty.adb: PTY creation and management. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Unchecked_Deallocation; +with Scheduler; +with Lib.Messages; +with Interfaces; use Interfaces; + +package body IPC.PTY is + pragma Suppress (All_Checks); + + procedure Free is new Ada.Unchecked_Deallocation (Inner, Inner_Acc); + + Tracked_Lock : aliased Lib.Synchronization.Binary_Semaphore := + Lib.Synchronization.Unlocked_Semaphore; + Tracked_Name : Natural := 1; + + function Create return Inner_Acc is + Name_Index : Natural; + Modes : constant Devices.TermIOs.Local_Modes := (others => False); + begin + Lib.Synchronization.Seize (Tracked_Lock); + Name_Index := Tracked_Name; + Tracked_Name := Tracked_Name + 1; + Lib.Synchronization.Release (Tracked_Lock); + + return new Inner' + (Primary_Mutex => Lib.Synchronization.Unlocked_Semaphore, + Secondary_Mutex => Lib.Synchronization.Unlocked_Semaphore, + Global_Data_Mutex => Lib.Synchronization.Unlocked_Semaphore, + Primary_Block => True, + Secondary_Block => True, + Primary_Read => True, + Primary_Transmit => True, + Secondary_Read => True, + Secondary_Transmit => True, + Name_Index => Name_Index, + Term_Info => (0, 0, 0, Modes, (others => 0), 0, 0), + Term_Size => (others => 0), + Was_Closed => False, + Termios_Changed => False, + Primary_Length => 0, + Secondary_Length => 0, + Primary_Data => (others => 0), + Secondary_Data => (others => 0)); + end Create; + + procedure Close (Closed : in out Inner_Acc) is + begin + Lib.Synchronization.Seize (Closed.Primary_Mutex); + Lib.Synchronization.Seize (Closed.Secondary_Mutex); + Lib.Synchronization.Seize (Closed.Global_Data_Mutex); + if Closed.Was_Closed then + Free (Closed); + else + Closed.Was_Closed := True; + Lib.Synchronization.Release (Closed.Primary_Mutex); + Lib.Synchronization.Release (Closed.Secondary_Mutex); + Lib.Synchronization.Release (Closed.Global_Data_Mutex); + end if; + end Close; + + procedure Read_Primary + (To_Read : Inner_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Status) + is + begin + Read_From_End + (To_Read.Primary_Mutex'Access, To_Read.Primary_Length'Access, + To_Read.Primary_Data'Access, To_Read.Primary_Block, + To_Read.Primary_Read, Data, Ret_Count); + Success := PTY_Success; + end Read_Primary; + + procedure Write_Primary + (To_Write : Inner_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Status) + is + begin + Write_To_End + (To_Write.Secondary_Mutex'Access, To_Write.Secondary_Length'Access, + To_Write.Secondary_Data'Access, To_Write.Primary_Block, + To_Write.Primary_Transmit, Data, Ret_Count); + Success := PTY_Success; + end Write_Primary; + + procedure Read_Secondary + (To_Read : Inner_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Status) + is + begin + Read_From_End + (To_Read.Secondary_Mutex'Access, To_Read.Secondary_Length'Access, + To_Read.Secondary_Data'Access, To_Read.Secondary_Block, + To_Read.Secondary_Read, Data, Ret_Count); + Success := PTY_Success; + end Read_Secondary; + + procedure Write_Secondary + (To_Write : Inner_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Status) + is + begin + Write_To_End + (To_Write.Primary_Mutex'Access, To_Write.Primary_Length'Access, + To_Write.Primary_Data'Access, To_Write.Secondary_Block, + To_Write.Secondary_Transmit, Data, Ret_Count); + Success := PTY_Success; + end Write_Secondary; + + procedure Poll_Primary + (P : Inner_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Can_Prio : out Boolean) + is + begin + Lib.Synchronization.Seize (P.Global_Data_Mutex); + Can_Prio := P.Termios_Changed; + P.Termios_Changed := False; + Lib.Synchronization.Release (P.Global_Data_Mutex); + + Lib.Synchronization.Seize (P.Primary_Mutex); + Can_Read := P.Primary_Length /= 0; + Can_Write := P.Primary_Length /= P.Primary_Data'Length; + Lib.Synchronization.Release (P.Primary_Mutex); + end Poll_Primary; + + procedure Poll_Secondary + (P : Inner_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean) + is + begin + Lib.Synchronization.Seize (P.Secondary_Mutex); + Can_Read := P.Secondary_Length /= 0; + Can_Write := P.Secondary_Length /= P.Secondary_Data'Length; + Lib.Synchronization.Release (P.Secondary_Mutex); + end Poll_Secondary; + + procedure Is_Primary_Blocking (P : Inner_Acc; Blocking : out Boolean) is + begin + Lib.Synchronization.Seize (P.Primary_Mutex); + Blocking := P.Primary_Block; + Lib.Synchronization.Release (P.Primary_Mutex); + end Is_Primary_Blocking; + + procedure Set_Primary_Blocking (P : Inner_Acc; Blocking : Boolean) is + begin + Lib.Synchronization.Seize (P.Primary_Mutex); + P.Primary_Block := Blocking; + Lib.Synchronization.Release (P.Primary_Mutex); + end Set_Primary_Blocking; + + procedure Is_Secondary_Blocking (P : Inner_Acc; Blocking : out Boolean) is + begin + Lib.Synchronization.Seize (P.Secondary_Mutex); + Blocking := P.Secondary_Block; + Lib.Synchronization.Release (P.Secondary_Mutex); + end Is_Secondary_Blocking; + + procedure Set_Secondary_Blocking (P : Inner_Acc; Blocking : Boolean) is + begin + Lib.Synchronization.Seize (P.Secondary_Mutex); + P.Secondary_Block := Blocking; + Lib.Synchronization.Release (P.Secondary_Mutex); + end Set_Secondary_Blocking; + + procedure Get_TermIOs (P : Inner_Acc; T : out Devices.TermIOs.Main_Data) is + begin + Lib.Synchronization.Seize (P.Global_Data_Mutex); + T := P.Term_Info; + Lib.Synchronization.Release (P.Global_Data_Mutex); + end Get_TermIOs; + + procedure Set_TermIOs (P : Inner_Acc; T : Devices.TermIOs.Main_Data) is + begin + Lib.Synchronization.Seize (P.Global_Data_Mutex); + P.Term_Info := T; + P.Termios_Changed := True; + Lib.Synchronization.Release (P.Global_Data_Mutex); + end Set_TermIOs; + + procedure Get_WinSize (P : Inner_Acc; W : out Devices.TermIOs.Win_Size) is + begin + Lib.Synchronization.Seize (P.Global_Data_Mutex); + W := P.Term_Size; + Lib.Synchronization.Release (P.Global_Data_Mutex); + end Get_WinSize; + + procedure Set_WinSize (P : Inner_Acc; W : Devices.TermIOs.Win_Size) is + begin + Lib.Synchronization.Seize (P.Global_Data_Mutex); + P.Term_Size := W; + P.Termios_Changed := True; + Lib.Synchronization.Release (P.Global_Data_Mutex); + end Set_WinSize; + + procedure Get_Name (P : Inner_Acc; Str : out String; Len : out Natural) is + Root_Name : constant String := "/dev/pty"; + Buffer : Lib.Messages.Translated_String; + Buffer_Len : Natural; + begin + Lib.Messages.Image (Unsigned_32 (P.Name_Index), Buffer, Buffer_Len); + Len := Root_Name'Length + Buffer_Len; + if Str'Length >= Len then + Str (Str'First .. Str'First + Root_Name'Length - 1) := Root_Name; + Str (Str'First + Root_Name'Length .. Str'First + Len - 1) := + Buffer (Buffer'Last - Buffer_Len + 1 .. Buffer'Last); + end if; + end Get_Name; + + procedure Flush_Primary (P : Inner_Acc; To_Read, To_Transmit : Boolean) is + begin + if To_Read then + Lib.Synchronization.Seize (P.Primary_Mutex); + P.Primary_Data := (others => 0); + P.Primary_Length := 0; + Lib.Synchronization.Release (P.Primary_Mutex); + end if; + if To_Transmit then + Lib.Synchronization.Seize (P.Secondary_Mutex); + P.Secondary_Data := (others => 0); + P.Secondary_Length := 0; + Lib.Synchronization.Release (P.Secondary_Mutex); + end if; + end Flush_Primary; + + procedure Flush_Secondary (P : Inner_Acc; To_Read, To_Transmit : Boolean) is + begin + if To_Read then + Lib.Synchronization.Seize (P.Secondary_Mutex); + P.Secondary_Data := (others => 0); + P.Secondary_Length := 0; + Lib.Synchronization.Release (P.Secondary_Mutex); + end if; + if To_Transmit then + Lib.Synchronization.Seize (P.Primary_Mutex); + P.Primary_Data := (others => 0); + P.Primary_Length := 0; + Lib.Synchronization.Release (P.Primary_Mutex); + end if; + end Flush_Secondary; + + procedure Start_Primary (P : Inner_Acc; To_Read, To_Transmit : Boolean) is + begin + Lib.Synchronization.Seize (P.Global_Data_Mutex); + if To_Read then + P.Primary_Read := True; + end if; + if To_Transmit then + P.Primary_Transmit := True; + end if; + Lib.Synchronization.Release (P.Global_Data_Mutex); + end Start_Primary; + + procedure Start_Secondary (P : Inner_Acc; To_Read, To_Transmit : Boolean) is + begin + Lib.Synchronization.Seize (P.Global_Data_Mutex); + if To_Read then + P.Secondary_Read := True; + end if; + if To_Transmit then + P.Secondary_Transmit := True; + end if; + Lib.Synchronization.Release (P.Global_Data_Mutex); + end Start_Secondary; + + procedure Stop_Primary (P : Inner_Acc; To_Read, To_Transmit : Boolean) is + begin + Lib.Synchronization.Seize (P.Global_Data_Mutex); + if To_Read then + P.Primary_Read := False; + end if; + if To_Transmit then + P.Primary_Transmit := False; + end if; + Lib.Synchronization.Release (P.Global_Data_Mutex); + end Stop_Primary; + + procedure Stop_Secondary (P : Inner_Acc; To_Read, To_Transmit : Boolean) is + begin + Lib.Synchronization.Seize (P.Global_Data_Mutex); + if To_Read then + P.Secondary_Read := False; + end if; + if To_Transmit then + P.Secondary_Transmit := False; + end if; + Lib.Synchronization.Release (P.Global_Data_Mutex); + end Stop_Secondary; + ---------------------------------------------------------------------------- + procedure Read_From_End + (End_Mutex : access Lib.Synchronization.Binary_Semaphore; + Inner_Len : access Data_Length; + Inner_Data : access TTY_Data; + Is_Blocking : Boolean; + Is_Able_To : Boolean; + Data : out Devices.Operation_Data; + Ret_Count : out Natural) + is + begin + Data := (others => 0); + if not Is_Able_To then + Ret_Count := 0; + return; + end if; + + if Is_Blocking then + loop + if Inner_Len.all /= 0 then + Lib.Synchronization.Seize (End_Mutex.all); + exit when Inner_Len.all /= 0; + Lib.Synchronization.Release (End_Mutex.all); + end if; + Scheduler.Yield_If_Able; + end loop; + else + Lib.Synchronization.Seize (End_Mutex.all); + if Inner_Len.all = 0 then + Ret_Count := 0; + Lib.Synchronization.Release (End_Mutex.all); + return; + end if; + end if; + + if Data'Length > Inner_Len.all then + Ret_Count := Inner_Len.all; + else + Ret_Count := Data'Length; + end if; + if Data'First > Natural'Last - Ret_Count then + Ret_Count := Natural'Last - Data'First; + end if; + + Data (Data'First .. Data'First + Ret_Count - 1) := + Inner_Data (1 .. Ret_Count); + for I in 1 .. Ret_Count loop + for J in Inner_Data'First .. Inner_Data'Last - 1 loop + Inner_Data (J) := Inner_Data (J + 1); + end loop; + if Inner_Len.all > 0 then + Inner_Len.all := Inner_Len.all - 1; + else + exit; + end if; + end loop; + + Lib.Synchronization.Release (End_Mutex.all); + end Read_From_End; + + procedure Write_To_End + (End_Mutex : access Lib.Synchronization.Binary_Semaphore; + Inner_Len : access Data_Length; + Inner_Data : access TTY_Data; + Is_Blocking : Boolean; + Is_Able_To : Boolean; + Data : Devices.Operation_Data; + Ret_Count : out Natural) + is + Final : Natural; + begin + if not Is_Able_To then + Ret_Count := 0; + return; + end if; + + if Is_Blocking then + loop + if Inner_Len.all /= Inner_Data'Length then + Lib.Synchronization.Seize (End_Mutex.all); + exit when Inner_Len.all /= Inner_Data'Length; + Lib.Synchronization.Release (End_Mutex.all); + end if; + Scheduler.Yield_If_Able; + end loop; + else + Lib.Synchronization.Seize (End_Mutex.all); + if Inner_Len.all = Data'Length then + Ret_Count := 0; + Lib.Synchronization.Release (End_Mutex.all); + return; + end if; + end if; + + if Data'Length > Inner_Data'Length or else + Data'Length > Inner_Data'Length - Inner_Len.all + then + Final := Inner_Data'Length; + Ret_Count := Inner_Data'Length - Inner_Len.all; + else + Final := Inner_Len.all + Data'Length; + Ret_Count := Data'Length; + end if; + if Data'First > Natural'Last - Ret_Count then + Ret_Count := Natural'Last - Data'First; + Final := Inner_Len.all + Ret_Count; + end if; + + Inner_Data (Inner_Len.all + 1 .. Final) := + Data (Data'First .. Data'First + Ret_Count - 1); + Inner_Len.all := Final; + Lib.Synchronization.Release (End_Mutex.all); + end Write_To_End; +end IPC.PTY; diff --git a/source/ipc/ipc-pty.ads b/source/ipc/ipc-pty.ads new file mode 100644 index 0000000..f012259 --- /dev/null +++ b/source/ipc/ipc-pty.ads @@ -0,0 +1,203 @@ +-- ipc-pty.ads: PTY creation and management. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Devices.TermIOs; +with Lib.Synchronization; +with Arch.MMU; + +package IPC.PTY is + -- PTYs are an IPC method meant to provide bidirectional communication + -- between 2 read/write ports, along with that, what makes it special + -- is storage and awareness of configurable termios data. Usually, the + -- ports are called master/slave, in Ironclad its primary/secondary. A + -- PTY must be closed twice, one for each end. + -- + -- These properties make the most common use of PTYs terminal emulation + -- and as building block for user interfaces. Only blocking operation is + -- available. + -- + -- Unlike most UNIXy kernels out there, PTYs in Ironclad are not bound to + -- files, in this aspect, they act as an unbound FIFO would. + + -- Objects to represent a PTY. + type Inner is private; + type Inner_Acc is access Inner; + + -- Results from operations on PTYs. + type Status is (PTY_Success, PTY_Would_Block); + + -- Create a fresh PTY with 1 refcount. + function Create return Inner_Acc; + + -- Decrease the refcount of a PTY, if zero, free it. + -- @param Closed PTY to decrease the refcount of. + procedure Close (Closed : in out Inner_Acc) with Pre => Is_Valid (Closed); + + -- Read from the primary end of the PTY. + procedure Read_Primary + (To_Read : Inner_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Status) + with Pre => Is_Valid (To_Read); + + -- Write to the primary end of the PTY. + procedure Write_Primary + (To_Write : Inner_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Status) + with Pre => Is_Valid (To_Write); + + -- Read from the secondary end of the PTY. + procedure Read_Secondary + (To_Read : Inner_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Status) + with Pre => Is_Valid (To_Read); + + -- Write to the secondary end of the PTY. + procedure Write_Secondary + (To_Write : Inner_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Status) + with Pre => Is_Valid (To_Write); + + -- Poll the state of a PTY's primary end. + procedure Poll_Primary + (P : Inner_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Can_Prio : out Boolean) + with Pre => Is_Valid (P); + + -- Poll the state of a PTY's secondary end. + procedure Poll_Secondary + (P : Inner_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean) + with Pre => Is_Valid (P); + + -- Get whether the passed PTY is blocking for the primary end. + procedure Is_Primary_Blocking (P : Inner_Acc; Blocking : out Boolean) + with Pre => Is_Valid (P); + + -- Set whether the passed PTY is blocking for the primary end. + procedure Set_Primary_Blocking (P : Inner_Acc; Blocking : Boolean) + with Pre => Is_Valid (P); + + -- Get whether the passed PTY is blocking for the secondary end. + procedure Is_Secondary_Blocking (P : Inner_Acc; Blocking : out Boolean) + with Pre => Is_Valid (P); + + -- Set whether the passed PTY is blocking for the secondary end. + procedure Set_Secondary_Blocking (P : Inner_Acc; Blocking : Boolean) + with Pre => Is_Valid (P); + + -- Get the termios data for the PTY. + procedure Get_TermIOs (P : Inner_Acc; T : out Devices.TermIOs.Main_Data) + with Pre => Is_Valid (P); + + -- Set the termios data for the PTY. + procedure Set_TermIOs (P : Inner_Acc; T : Devices.TermIOs.Main_Data) + with Pre => Is_Valid (P); + + -- Get terminal dimensions. + procedure Get_WinSize (P : Inner_Acc; W : out Devices.TermIOs.Win_Size) + with Pre => Is_Valid (P); + + -- Set terminal dimensions. + procedure Set_WinSize (P : Inner_Acc; W : Devices.TermIOs.Win_Size) + with Pre => Is_Valid (P); + + -- Get the associated VFS entity for the PTY. + procedure Get_Name (P : Inner_Acc; Str : out String; Len : out Natural) + with Pre => Is_Valid (P); + + -- Flush the pending data to read or write of the primary end. + procedure Flush_Primary (P : Inner_Acc; To_Read, To_Transmit : Boolean) + with Pre => Is_Valid (P); + + -- Flush the pending data to read or write of the secondary end. + procedure Flush_Secondary (P : Inner_Acc; To_Read, To_Transmit : Boolean) + with Pre => Is_Valid (P); + + -- Flush the pending data to read or write of the secondary end. + procedure Start_Primary (P : Inner_Acc; To_Read, To_Transmit : Boolean) + with Pre => Is_Valid (P); + + -- Flush the pending data to read or write of the secondary end. + procedure Start_Secondary (P : Inner_Acc; To_Read, To_Transmit : Boolean) + with Pre => Is_Valid (P); + + -- Flush the pending data to read or write of the secondary end. + procedure Stop_Primary (P : Inner_Acc; To_Read, To_Transmit : Boolean) + with Pre => Is_Valid (P); + + -- Flush the pending data to read or write of the secondary end. + procedure Stop_Secondary (P : Inner_Acc; To_Read, To_Transmit : Boolean) + with Pre => Is_Valid (P); + + -- Ghost function for checking whether a PTY is properly initialized. + function Is_Valid (P : Inner_Acc) return Boolean with Ghost; + +private + + subtype Data_Length is Natural range 0 .. Arch.MMU.Page_Size; + subtype TTY_Data is Devices.Operation_Data (1 .. Arch.MMU.Page_Size); + type Inner is record + Primary_Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Secondary_Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Global_Data_Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Primary_Block : Boolean; + Secondary_Block : Boolean; + Primary_Read : Boolean; + Primary_Transmit : Boolean; + Secondary_Read : Boolean; + Secondary_Transmit : Boolean; + Name_Index : Natural; + Term_Info : Devices.TermIOs.Main_Data; + Term_Size : Devices.TermIOs.Win_Size; + Was_Closed : Boolean; + Termios_Changed : Boolean; + Primary_Length : aliased Data_Length; + Secondary_Length : aliased Data_Length; + Primary_Data : aliased TTY_Data; + Secondary_Data : aliased TTY_Data; + end record; + + function Is_Valid (P : Inner_Acc) return Boolean is (P /= null); + + procedure Read_From_End + (End_Mutex : access Lib.Synchronization.Binary_Semaphore; + Inner_Len : access Data_Length; + Inner_Data : access TTY_Data; + Is_Blocking : Boolean; + Is_Able_To : Boolean; + Data : out Devices.Operation_Data; + Ret_Count : out Natural); + + procedure Write_To_End + (End_Mutex : access Lib.Synchronization.Binary_Semaphore; + Inner_Len : access Data_Length; + Inner_Data : access TTY_Data; + Is_Blocking : Boolean; + Is_Able_To : Boolean; + Data : Devices.Operation_Data; + Ret_Count : out Natural); +end IPC.PTY; diff --git a/source/ipc/ipc-shm.adb b/source/ipc/ipc-shm.adb new file mode 100644 index 0000000..654104c --- /dev/null +++ b/source/ipc/ipc-shm.adb @@ -0,0 +1,264 @@ +-- ipc-shm.adb: SysV shared memory segments. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Synchronization; use Lib.Synchronization; +with Memory; +with Memory.Physical; use Memory.Physical; +with Interfaces.C; use Interfaces.C; +with System.Storage_Elements; use System.Storage_Elements; + +package body IPC.SHM is + type Segment_Inner is record + Is_Present : Boolean; + Key : Unsigned_32; + Owner_UID : Unsigned_32; + Owner_GID : Unsigned_32; + Creator_UID : Unsigned_32; + Creator_GID : Unsigned_32; + Mode : Unsigned_64; + Physical_Address : Memory.Physical_Address; + Size : Memory.Size; + Refcount : Natural; + Is_Refcounted : Boolean; + end record; + type Segment_Arr is array (Segment_ID range 1 .. 20) of Segment_Inner; + + Registry_Mutex : aliased Binary_Semaphore := Unlocked_Semaphore; + Registry : Segment_Arr := + (others => (False, 0, 0, 0, 0, 0, 0, 0, 0, 0, False)); + + function Create_Segment + (Wanted_Key : Unsigned_32; + Wanted_Size : Unsigned_64; + Creator_UID : Unsigned_32; + Creator_GID : Unsigned_32; + Mode : Unsigned_64) return Segment_ID + is + Returned : Segment_ID := Error_ID; + begin + Lib.Synchronization.Seize (Registry_Mutex); + for I in Registry'Range loop + if Registry (I).Is_Present and Registry (I).Key = Wanted_Key then + goto Cleanup; + end if; + if not Registry (I).Is_Present and Returned = Error_ID then + Returned := I; + end if; + end loop; + + Registry (Returned).Is_Present := True; + Registry (Returned).Key := Wanted_Key; + Registry (Returned).Owner_UID := Creator_UID; + Registry (Returned).Owner_GID := Creator_GID; + Registry (Returned).Creator_UID := Creator_UID; + Registry (Returned).Creator_GID := Creator_GID; + Registry (Returned).Mode := Mode; + Registry (Returned).Physical_Address := + Alloc (size_t (Wanted_Size)) - Memory.Memory_Offset; + Registry (Returned).Size := Memory.Size (Wanted_Size); + Registry (Returned).Refcount := 0; + Registry (Returned).Is_Refcounted := False; + + <> + Lib.Synchronization.Release (Registry_Mutex); + return Returned; + end Create_Segment; + + function Create_Unkeyed_Segment + (Wanted_Size : Unsigned_64; + Creator_UID : Unsigned_32; + Creator_GID : Unsigned_32; + Mode : Unsigned_64) return Segment_ID + is + Returned : Segment_ID := Error_ID; + begin + Lib.Synchronization.Seize (Registry_Mutex); + for I in Registry'Range loop + if not Registry (I).Is_Present then + Registry (I).Is_Present := True; + Registry (I).Key := 0; + Registry (I).Owner_UID := Creator_UID; + Registry (I).Owner_GID := Creator_GID; + Registry (I).Creator_UID := Creator_UID; + Registry (I).Creator_GID := Creator_GID; + Registry (I).Mode := Mode; + Registry (I).Physical_Address := + Alloc (size_t (Wanted_Size)) - Memory.Memory_Offset; + Registry (I).Size := Memory.Size (Wanted_Size); + Registry (I).Refcount := 0; + Registry (I).Is_Refcounted := False; + Returned := I; + exit; + end if; + end loop; + + Lib.Synchronization.Release (Registry_Mutex); + return Returned; + end Create_Unkeyed_Segment; + + function Get_Segment (Key : Unsigned_32) return Segment_ID is + Returned : Segment_ID := Error_ID; + begin + Lib.Synchronization.Seize (Registry_Mutex); + for I in Registry'Range loop + if Registry (I).Is_Present and Registry (I).Key = Key then + Returned := I; + exit; + end if; + end loop; + Lib.Synchronization.Release (Registry_Mutex); + return Returned; + end Get_Segment; + + procedure Get_Segment_And_Size + (Address : Unsigned_64; + Size : out Unsigned_64; + ID : out Segment_ID) + is + begin + Size := 0; + ID := Error_ID; + + Lib.Synchronization.Seize (Registry_Mutex); + for I in Registry'Range loop + if Registry (I).Is_Present and + Registry (I).Physical_Address = Memory.Physical_Address (Address) + then + Size := Unsigned_64 (Registry (I).Size); + ID := I; + exit; + end if; + end loop; + Lib.Synchronization.Release (Registry_Mutex); + end Get_Segment_And_Size; + + procedure Get_Address + (ID : Segment_ID; + Address : out Unsigned_64; + Size : out Unsigned_64) + is + begin + Lib.Synchronization.Seize (Registry_Mutex); + if Registry (ID).Is_Present then + Address := Unsigned_64 (Registry (ID).Physical_Address); + Size := Unsigned_64 (Registry (ID).Size); + else + Address := 0; + Size := 0; + end if; + Lib.Synchronization.Release (Registry_Mutex); + end Get_Address; + + function Check_Permissions + (ID : Segment_ID; + UID : Unsigned_32; + GID : Unsigned_32) return Boolean + is + Result : Boolean; + begin + Lib.Synchronization.Seize (Registry_Mutex); + if Registry (ID).Is_Present then + Result := UID = Registry (ID).Owner_UID or + (GID = Registry (ID).Owner_GID and + (Registry (ID).Mode and 8#040#) /= 0); + else + Result := False; + end if; + Lib.Synchronization.Release (Registry_Mutex); + return Result; + end Check_Permissions; + + procedure Mark_Refcounted (ID : Segment_ID) is + begin + Lib.Synchronization.Seize (Registry_Mutex); + if Registry (ID).Is_Present then + Registry (ID).Is_Refcounted := True; + Check_And_Maybe_Free (ID); + end if; + Lib.Synchronization.Release (Registry_Mutex); + end Mark_Refcounted; + + procedure Modify_Attachment (ID : Segment_ID; Increment : Boolean) is + begin + Lib.Synchronization.Seize (Registry_Mutex); + if Registry (ID).Is_Present then + Registry (ID).Refcount := + Registry (ID).Refcount + (if Increment then 1 else -1); + Check_And_Maybe_Free (ID); + end if; + Lib.Synchronization.Release (Registry_Mutex); + end Modify_Attachment; + + procedure Modify_Permissions + (ID : Segment_ID; + UID : Unsigned_32; + GID : Unsigned_32; + Mode : Unsigned_64) + is + begin + Lib.Synchronization.Seize (Registry_Mutex); + if Registry (ID).Is_Present then + Registry (ID).Owner_UID := UID; + Registry (ID).Owner_GID := GID; + Registry (ID).Mode := Mode; + end if; + Lib.Synchronization.Release (Registry_Mutex); + end Modify_Permissions; + + procedure Fetch_Information + (ID : Segment_ID; + Info : out Segment_Information; + Found : out Boolean) + is + begin + Lib.Synchronization.Seize (Registry_Mutex); + if Registry (ID).Is_Present then + Info := + (Key => Registry (ID).Key, + Size => Unsigned_64 (Registry (ID).Size), + Owner_UID => Registry (ID).Owner_UID, + Owner_GID => Registry (ID).Owner_GID, + Creator_UID => Registry (ID).Creator_UID, + Creator_GID => Registry (ID).Creator_GID, + Mode => Registry (ID).Mode, + Refcount => Registry (ID).Refcount); + Found := True; + else + Found := False; + end if; + Lib.Synchronization.Release (Registry_Mutex); + end Fetch_Information; + + procedure Get_Total_Size (Size : out Unsigned_64) is + begin + Size := 0; + Lib.Synchronization.Seize (Registry_Mutex); + for Reg of Registry loop + if Reg.Is_Present then + Size := Size + Unsigned_64 (Reg.Size); + end if; + end loop; + Lib.Synchronization.Release (Registry_Mutex); + end Get_Total_Size; + ---------------------------------------------------------------------------- + procedure Check_And_Maybe_Free (ID : Segment_ID) is + begin + if Registry (ID).Refcount = 0 and Registry (ID).Is_Refcounted then + Registry (ID).Is_Present := False; + Free (size_t (Registry (ID).Physical_Address)); + end if; + end Check_And_Maybe_Free; +end IPC.SHM; diff --git a/source/ipc/ipc-shm.ads b/source/ipc/ipc-shm.ads new file mode 100644 index 0000000..11383f1 --- /dev/null +++ b/source/ipc/ipc-shm.ads @@ -0,0 +1,98 @@ +-- ipc-shm.ads: SysV shared memory segments. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package IPC.SHM is + -- This package implements SystemV shared memory segments. + -- Segments must be registered individually and are not freed ever, unless + -- marked as refcounted. That is POSIX behaviour, so make sure to do so! + + -- ID to identify a segment, and error value for no segment. + subtype Segment_ID is Unsigned_32 range 0 .. 20; + Error_ID : constant Segment_ID := 0; + + -- Create a segment with a unique key. + function Create_Segment + (Wanted_Key : Unsigned_32; + Wanted_Size : Unsigned_64; + Creator_UID : Unsigned_32; + Creator_GID : Unsigned_32; + Mode : Unsigned_64) return Segment_ID + with Pre => Wanted_Key /= 0; + + -- Create a segment without a unique key. + function Create_Unkeyed_Segment + (Wanted_Size : Unsigned_64; + Creator_UID : Unsigned_32; + Creator_GID : Unsigned_32; + Mode : Unsigned_64) return Segment_ID; + + -- Fetch a segment from its key. + function Get_Segment (Key : Unsigned_32) return Segment_ID; + + -- Fetch a segment and its size from its physical address. + procedure Get_Segment_And_Size + (Address : Unsigned_64; + Size : out Unsigned_64; + ID : out Segment_ID); + + -- Fetch a segment's physical address and size. + procedure Get_Address + (ID : Segment_ID; + Address : out Unsigned_64; + Size : out Unsigned_64); + + function Check_Permissions + (ID : Segment_ID; + UID : Unsigned_32; + GID : Unsigned_32) return Boolean; + + procedure Mark_Refcounted (ID : Segment_ID); + + -- Mark the segment has either been attached (incremented) or detached + -- (decremented). + procedure Modify_Attachment (ID : Segment_ID; Increment : Boolean); + + procedure Modify_Permissions + (ID : Segment_ID; + UID : Unsigned_32; + GID : Unsigned_32; + Mode : Unsigned_64); + + type Segment_Information is record + Key : Unsigned_32; + Size : Unsigned_64; + Owner_UID : Unsigned_32; + Owner_GID : Unsigned_32; + Creator_UID : Unsigned_32; + Creator_GID : Unsigned_32; + Mode : Unsigned_64; + Refcount : Natural; + end record; + + procedure Fetch_Information + (ID : Segment_ID; + Info : out Segment_Information; + Found : out Boolean); + + -- Get size of all segments of the system. + procedure Get_Total_Size (Size : out Unsigned_64); + +private + + procedure Check_And_Maybe_Free (ID : Segment_ID); +end IPC.SHM; diff --git a/source/ipc/ipc-socket.adb b/source/ipc/ipc-socket.adb new file mode 100644 index 0000000..c6f35e0 --- /dev/null +++ b/source/ipc/ipc-socket.adb @@ -0,0 +1,1029 @@ +-- ipc-socket.adb: Socket creation and management. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Unchecked_Deallocation; +with Scheduler; +with Networking.IPv4; +with Networking.IPv6; +with Networking.Interfaces; + +package body IPC.Socket is + procedure Free is new Ada.Unchecked_Deallocation (Socket, Socket_Acc); + procedure Free is new Ada.Unchecked_Deallocation + (Operation_Data, Operation_Data_Acc); + + function Create + (Dom : Domain; + Typ : DataType; + Is_Blocking : Boolean := True) return Socket_Acc + is + begin + case Dom is + when IPv4 => + case Typ is + when Raw => + return new Socket' + (Mutex => Lib.Synchronization.Unlocked_Semaphore, + Dom => IPv4, + Typ => Raw, + Is_Blocking => Is_Blocking, + IPv4_Cached_Address => (others => 0), + IPv4_Cached_Port => 0); + when others => + return null; + end case; + when IPv6 => + case Typ is + when Raw => + return new Socket' + (Mutex => Lib.Synchronization.Unlocked_Semaphore, + Dom => IPv6, + Typ => Raw, + Is_Blocking => Is_Blocking, + IPv6_Cached_Address => (others => 0), + IPv6_Cached_Port => 0); + when others => + return null; + end case; + when UNIX => + case Typ is + when Stream => + return new Socket' + (Mutex => Lib.Synchronization.Unlocked_Semaphore, + Dom => UNIX, + Typ => Stream, + Is_Listener => False, + Is_Blocking => Is_Blocking, + Connected => null, + Pending_Accept => null, + Established => null, + Data => (others => 0), + Data_Length => 0); + when Datagram => + return new Socket' + (Mutex => Lib.Synchronization.Unlocked_Semaphore, + Dom => UNIX, + Typ => Datagram, + Is_Blocking => Is_Blocking, + Simple_Connected => null, + Data => (others => 0), + Data_Length => 0); + when Raw => + return null; + end case; + end case; + end Create; + + function Get_Domain (Sock : Socket_Acc) return Domain is + begin + return Sock.Dom; + end Get_Domain; + + function Get_Type (Sock : Socket_Acc) return DataType is + begin + return Sock.Typ; + end Get_Type; + + procedure Close (To_Close : in out Socket_Acc) is + begin + Lib.Synchronization.Seize (To_Close.Mutex); + case To_Close.Dom is + when IPv4 | IPv6 => + null; + when UNIX => + Inner_UNIX_Close (To_Close); + end case; + Free (To_Close); + end Close; + + function Is_Blocking (Sock : Socket_Acc) return Boolean is + Result : Boolean; + begin + Lib.Synchronization.Seize (Sock.Mutex); + Result := Sock.Is_Blocking; + Lib.Synchronization.Release (Sock.Mutex); + return Result; + end Is_Blocking; + + procedure Set_Blocking (Sock : Socket_Acc; Is_Blocking : Boolean) is + begin + Lib.Synchronization.Seize (Sock.Mutex); + Sock.Is_Blocking := Is_Blocking; + Lib.Synchronization.Release (Sock.Mutex); + end Set_Blocking; + + procedure Poll + (Sock : Socket_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Broken : out Boolean; + Is_Error : out Boolean) + is + begin + Lib.Synchronization.Seize (Sock.Mutex); + case Sock.Dom is + when IPv4 | IPv6 => + Can_Read := False; + Can_Write := False; + Is_Broken := False; + Is_Error := False; + when UNIX => + Inner_UNIX_Poll (Sock, Can_Read, Can_Write, Is_Broken, Is_Error); + end case; + Lib.Synchronization.Release (Sock.Mutex); + end Poll; + + procedure Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + is + begin + case Sock.Dom is + when IPv4 => Inner_IPv4_Read (Sock, Data, Ret_Count, Success); + when IPv6 => Inner_IPv6_Read (Sock, Data, Ret_Count, Success); + when UNIX => Inner_UNIX_Read (Sock, Data, Ret_Count, Success); + end case; + end Read; + + procedure Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + is + begin + case Sock.Dom is + when IPv4 => Inner_IPv4_Write (Sock, Data, Ret_Count, Success); + when IPv6 => Inner_IPv6_Write (Sock, Data, Ret_Count, Success); + when UNIX => Inner_UNIX_Write (Sock, Data, Ret_Count, Success); + end case; + end Write; + + function Shutdown + (Sock : Socket_Acc; + Do_Receptions : Boolean; + Do_Transmissions : Boolean) return Boolean + is + Suc : Boolean; + begin + Lib.Synchronization.Seize (Sock.Mutex); + case Sock.Dom is + when IPv4 | IPv6 => + Suc := False; + when UNIX => + Suc := Inner_UNIX_Shutdown (Sock, Do_Receptions, Do_Transmissions); + end case; + Lib.Synchronization.Release (Sock.Mutex); + return Suc; + end Shutdown; + + function Is_Listening (Sock : Socket_Acc) return Boolean is + Result : Boolean; + begin + Lib.Synchronization.Seize (Sock.Mutex); + Result := Sock.Is_Listener; + Lib.Synchronization.Release (Sock.Mutex); + return Result; + end Is_Listening; + + function Listen (Sock : Socket_Acc; Backlog : Natural) return Boolean is + pragma Unreferenced (Backlog); + begin + Lib.Synchronization.Seize (Sock.Mutex); + Sock.Is_Listener := True; + Lib.Synchronization.Release (Sock.Mutex); + return True; + end Listen; + + procedure Accept_Connection + (Sock : Socket_Acc; + Is_Blocking : Boolean := True; + Result : out Socket_Acc) + is + Path : String (1 .. 0); + Len : Natural; + begin + Lib.Synchronization.Seize (Sock.Mutex); + case Sock.Dom is + when IPv4 | IPv6 => + Result := null; + when UNIX => + Accept_Connection (Sock, Is_Blocking, Path, Len, Result); + end case; + Lib.Synchronization.Release (Sock.Mutex); + end Accept_Connection; + ---------------------------------------------------------------------------- + procedure Get_Bound + (Sock : Socket_Acc; + Addr : out Networking.IPv4_Address; + Port : out Networking.IPv4_Port; + Success : out Boolean) + is + pragma Unreferenced (Sock); + begin + Addr := (others => 0); + Port := 0; + Success := False; + end Get_Bound; + + procedure Get_Peer + (Sock : Socket_Acc; + Addr : out Networking.IPv4_Address; + Port : out Networking.IPv4_Port; + Success : out Boolean) + is + pragma Unreferenced (Sock); + begin + Addr := (others => 0); + Port := 0; + Success := False; + end Get_Peer; + + function Bind + (Sock : Socket_Acc; + Addr : Networking.IPv4_Address; + Port : Networking.IPv4_Port) return Boolean + is + pragma Unreferenced (Sock); + pragma Unreferenced (Addr); + pragma Unreferenced (Port); + begin + return False; + end Bind; + + function Connect + (Sock : Socket_Acc; + Addr : Networking.IPv4_Address; + Port : Networking.IPv4_Port) return Boolean + is + begin + case Sock.Typ is + when Raw => + Sock.IPv4_Cached_Address := Addr; + Sock.IPv4_Cached_Port := Port; + return True; + when others => + return False; + end case; + end Connect; + + procedure Accept_Connection + (Sock : Socket_Acc; + Is_Blocking : Boolean := True; + Peer_Address : out Networking.IPv4_Address; + Peer_Port : out Networking.IPv4_Port; + Result : out Socket_Acc) + is + pragma Unreferenced (Sock); + pragma Unreferenced (Is_Blocking); + begin + Peer_Address := (others => 0); + Peer_Port := 0; + Result := null; + end Accept_Connection; + + procedure Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Addr : Networking.IPv4_Address; + Port : Networking.IPv4_Port; + Success : out Socket_Status) + is + pragma Unreferenced (Port); + + Succ : Boolean; + Dev : Devices.Device_Handle; + Src : Networking.IPv4_Address; + Hdr_Size : constant Natural := Networking.IPv4.IPv4_Packet_Header'Size; + begin + case Sock.Typ is + when Raw => + Networking.Interfaces.Get_Suitable_Interface (Addr, Dev); + if Dev = Devices.Error_Handle then + Data := (others => 0); + Ret_Count := 0; + Success := Would_Block; + return; + end if; + Networking.Interfaces.Get_Interface_Address (Dev, Src); + + Devices.Read (Dev, 0, Data, Ret_Count, Succ); + Data (Data'First .. Data'Last - (Hdr_Size / 8)) := + Data (Data'First + (Hdr_Size / 8) .. Data'Last); + Ret_Count := Ret_Count - (Hdr_Size / 8); + if Succ then + Success := Plain_Success; + else + Success := Would_Block; + end if; + when others => + Data := (others => 0); + Ret_Count := 0; + Success := Is_Bad_Type; + end case; + end Read; + + procedure Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Addr : Networking.IPv4_Address; + Port : Networking.IPv4_Port; + Success : out Socket_Status) + is + pragma Unreferenced (Port); + + Succ : Boolean; + Dev : Devices.Device_Handle; + Tmp_Data : Operation_Data_Acc; + Src : Networking.IPv4_Address; + Hdr : Networking.IPv4.IPv4_Packet_Header; + + Hdr_Data : Operation_Data (1 .. Hdr'Size / 8) + with Import, Address => Hdr'Address; + begin + case Sock.Typ is + when Raw => + Networking.Interfaces.Get_Suitable_Interface (Addr, Dev); + if Dev = Devices.Error_Handle then + Ret_Count := 0; + Success := Would_Block; + return; + end if; + Networking.Interfaces.Get_Interface_Address (Dev, Src); + + Hdr := Networking.IPv4.Generate_Header (Src, Addr, Data'Length); + Tmp_Data := new Operation_Data (1 .. Data'Length + (Hdr'Size / 8)); + Tmp_Data (1 .. Hdr_Data'Length) := Hdr_Data; + Tmp_Data (Hdr_Data'Length + 1 .. Tmp_Data'Last) := Data; + + Devices.Write (Dev, 0, Tmp_Data.all, Ret_Count, Succ); + Free (Tmp_Data); + + if Succ then + Success := Plain_Success; + else + Success := Would_Block; + end if; + when others => + Ret_Count := 0; + Success := Is_Bad_Type; + end case; + end Write; + ---------------------------------------------------------------------------- + procedure Get_Bound + (Sock : Socket_Acc; + Addr : out Networking.IPv6_Address; + Port : out Networking.IPv6_Port; + Success : out Boolean) + is + pragma Unreferenced (Sock); + begin + Addr := (others => 0); + Port := 0; + Success := False; + end Get_Bound; + + procedure Get_Peer + (Sock : Socket_Acc; + Addr : out Networking.IPv6_Address; + Port : out Networking.IPv6_Port; + Success : out Boolean) + is + pragma Unreferenced (Sock); + begin + Addr := (others => 0); + Port := 0; + Success := False; + end Get_Peer; + + + function Bind + (Sock : Socket_Acc; + Addr : Networking.IPv6_Address; + Port : Networking.IPv6_Port) return Boolean + is + pragma Unreferenced (Sock); + pragma Unreferenced (Addr); + pragma Unreferenced (Port); + begin + return False; + end Bind; + + function Connect + (Sock : Socket_Acc; + Addr : Networking.IPv6_Address; + Port : Networking.IPv6_Port) return Boolean + is + begin + case Sock.Typ is + when Raw => + Sock.IPv6_Cached_Address := Addr; + Sock.IPv6_Cached_Port := Port; + return True; + when others => + return False; + end case; + end Connect; + + procedure Accept_Connection + (Sock : Socket_Acc; + Is_Blocking : Boolean := True; + Peer_Address : out Networking.IPv6_Address; + Peer_Port : out Networking.IPv6_Port; + Result : out Socket_Acc) + is + pragma Unreferenced (Sock); + pragma Unreferenced (Is_Blocking); + begin + Peer_Address := (others => 0); + Peer_Port := 0; + Result := null; + end Accept_Connection; + + procedure Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Addr : Networking.IPv6_Address; + Port : Networking.IPv6_Port; + Success : out Socket_Status) + is + pragma Unreferenced (Port); + + Succ : Boolean; + Dev : Devices.Device_Handle; + Src : Networking.IPv6_Address; + Hdr_Size : constant Natural := Networking.IPv6.IPv6_Packet_Header'Size; + begin + case Sock.Typ is + when Raw => + Networking.Interfaces.Get_Suitable_Interface (Addr, Dev); + if Dev = Devices.Error_Handle then + Data := (others => 0); + Ret_Count := 0; + Success := Would_Block; + return; + end if; + Networking.Interfaces.Get_Interface_Address (Dev, Src); + + Devices.Read (Dev, 0, Data, Ret_Count, Succ); + Data (Data'First .. Data'Last - (Hdr_Size / 8)) := + Data (Data'First + (Hdr_Size / 8) .. Data'Last); + Ret_Count := Ret_Count - (Hdr_Size / 8); + if Succ then + Success := Plain_Success; + else + Success := Would_Block; + end if; + when others => + Ret_Count := 0; + Success := Is_Bad_Type; + end case; + end Read; + + procedure Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Addr : Networking.IPv6_Address; + Port : Networking.IPv6_Port; + Success : out Socket_Status) + is + pragma Unreferenced (Port); + + Succ : Boolean; + Dev : Devices.Device_Handle; + Tmp_Data : Operation_Data_Acc; + Src : Networking.IPv6_Address; + Hdr : Networking.IPv6.IPv6_Packet_Header; + + Hdr_Data : Operation_Data (1 .. Hdr'Size / 8) + with Import, Address => Hdr'Address; + begin + case Sock.Typ is + when Raw => + Networking.Interfaces.Get_Suitable_Interface (Addr, Dev); + if Dev = Devices.Error_Handle then + Ret_Count := 0; + Success := Would_Block; + return; + end if; + Networking.Interfaces.Get_Interface_Address (Dev, Src); + + Hdr := Networking.IPv6.Generate_Header (Src, Addr, Data'Length); + Tmp_Data := new Operation_Data (1 .. Data'Length + (Hdr'Size / 8)); + Tmp_Data (1 .. Hdr_Data'Length) := Hdr_Data; + Tmp_Data (Hdr_Data'Length + 1 .. Tmp_Data'Last) := Data; + + Devices.Write (Dev, 0, Tmp_Data.all, Ret_Count, Succ); + Free (Tmp_Data); + + if Succ then + Success := Plain_Success; + else + Success := Would_Block; + end if; + when others => + Ret_Count := 0; + Success := Is_Bad_Type; + end case; + end Write; + ---------------------------------------------------------------------------- + procedure Get_Bound + (Sock : Socket_Acc; + Path : out String; + Length : out Natural; + Success : out Boolean) + is + begin + Path := (others => ' '); + Length := 0; + Success := False; + + Lib.Synchronization.Seize (UNIX_Bound_Mutex); + for Ent of UNIX_Bound_Sockets loop + if Ent.Sock = Sock then + Path (Path'First .. Path'First + Ent.Path_Len - 1) := + Ent.Path (1 .. Ent.Path_Len); + Length := Ent.Path_Len; + Success := True; + exit; + end if; + end loop; + Lib.Synchronization.Release (UNIX_Bound_Mutex); + end Get_Bound; + + procedure Get_Peer + (Sock : Socket_Acc; + Path : out String; + Length : out Natural; + Success : out Boolean) + is + begin + Path := (others => ' '); + Length := 0; + Success := False; + + Lib.Synchronization.Seize (UNIX_Bound_Mutex); + for Ent of UNIX_Bound_Sockets loop + if Ent.Sock = Sock.Established then + if Path'Length >= Ent.Path_Len then + Path (Path'First .. Path'First + Ent.Path_Len - 1) := + Ent.Path (1 .. Ent.Path_Len); + else + Path := Ent.Path (1 .. Path'Length); + end if; + Length := Ent.Path_Len; + Success := True; + exit; + end if; + end loop; + Lib.Synchronization.Release (UNIX_Bound_Mutex); + end Get_Peer; + + function Bind (Sock : Socket_Acc; Path : String) return Boolean is + Success : Boolean := False; + begin + if Path'Length = 0 or Path'Length > Bind_Path_Max then + return False; + end if; + + Lib.Synchronization.Seize (UNIX_Bound_Mutex); + + for Ent of UNIX_Bound_Sockets loop + if Ent.Sock = Sock then + goto Cleanup; + end if; + end loop; + for Ent of UNIX_Bound_Sockets loop + if Ent.Sock = null then + Ent.Sock := Sock; + Ent.Path (1 .. Path'Length) := Path; + Ent.Path_Len := Path'Length; + Success := True; + goto Cleanup; + end if; + end loop; + + <> + Lib.Synchronization.Release (UNIX_Bound_Mutex); + return Success; + end Bind; + + function Connect (Sock : Socket_Acc; Path : String) return Boolean is + To_Connect : Socket_Acc; + Success : Boolean; + begin + Lib.Synchronization.Seize (UNIX_Bound_Mutex); + + To_Connect := Get_Bound (Path); + if To_Connect = null then + Success := False; + goto End_Return; + end if; + case Sock.Typ is + when Stream => + Sock.Connected := To_Connect; + loop + if To_Connect.Pending_Accept = null then + To_Connect.Pending_Accept := Sock; + exit; + end if; + Scheduler.Yield_If_Able; + end loop; + loop + exit when Sock.Pending_Accept /= null; + Scheduler.Yield_If_Able; + end loop; + when others => + Sock.Simple_Connected := To_Connect; + end case; + + Success := True; + + <> + Lib.Synchronization.Release (UNIX_Bound_Mutex); + return Success; + end Connect; + + procedure Accept_Connection + (Sock : Socket_Acc; + Is_Blocking : Boolean := True; + Peer_Address : out String; + Peer_Address_Length : out Natural; + Result : out Socket_Acc) + is + Tmp : Socket_Acc; + begin + Peer_Address := (others => ' '); + Peer_Address_Length := 0; + Result := null; + + Lib.Synchronization.Seize (Sock.Mutex); + + if Sock.Is_Listener then + loop + if Sock.Pending_Accept /= null then + Result := Create + (Sock.Pending_Accept.Dom, + Sock.Pending_Accept.Typ, + Is_Blocking); + + Tmp := Sock.Pending_Accept; + Result.Established := Sock; + Tmp.Pending_Accept := Result; + Result.Pending_Accept := Tmp; + Sock.Pending_Accept := null; + exit; + end if; + exit when not Sock.Is_Blocking; + Scheduler.Yield_If_Able; + end loop; + end if; + + Lib.Synchronization.Release (Sock.Mutex); + end Accept_Connection; + + procedure Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Path : String; + Success : out Socket_Status) + is + Discard : Boolean; + Temp : constant Socket_Acc := Sock.Simple_Connected; + begin + Discard := Connect (Sock, Path); + Inner_UNIX_Read (Sock, Data, Ret_Count, Success); + Sock.Simple_Connected := Temp; + end Read; + + procedure Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Path : String; + Success : out Socket_Status) + is + Discard : Boolean; + Temp : constant Socket_Acc := Sock.Simple_Connected; + begin + Discard := Connect (Sock, Path); + Inner_UNIX_Write (Sock, Data, Ret_Count, Success); + Sock.Simple_Connected := Temp; + end Write; + ---------------------------------------------------------------------------- + procedure Inner_IPv4_Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + is + begin + Read + (Sock => Sock, + Data => Data, + Ret_Count => Ret_Count, + Addr => Sock.IPv4_Cached_Address, + Port => Sock.IPv4_Cached_Port, + Success => Success); + end Inner_IPv4_Read; + + procedure Inner_IPv4_Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + is + begin + Write + (Sock => Sock, + Data => Data, + Ret_Count => Ret_Count, + Addr => Sock.IPv4_Cached_Address, + Port => Sock.IPv4_Cached_Port, + Success => Success); + end Inner_IPv4_Write; + ---------------------------------------------------------------------------- + procedure Inner_IPv6_Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + is + begin + Read + (Sock => Sock, + Data => Data, + Ret_Count => Ret_Count, + Addr => Sock.IPv6_Cached_Address, + Port => Sock.IPv6_Cached_Port, + Success => Success); + end Inner_IPv6_Read; + + procedure Inner_IPv6_Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + is + begin + Write + (Sock => Sock, + Data => Data, + Ret_Count => Ret_Count, + Addr => Sock.IPv6_Cached_Address, + Port => Sock.IPv6_Cached_Port, + Success => Success); + end Inner_IPv6_Write; + ---------------------------------------------------------------------------- + function Get_Bound (Path : String) return Socket_Acc is + begin + for Ent of UNIX_Bound_Sockets loop + if Ent.Sock /= null and then Ent.Path (1 .. Ent.Path_Len) = Path then + return Ent.Sock; + end if; + end loop; + return null; + end Get_Bound; + + procedure Inner_UNIX_Close (To_Close : Socket_Acc) is + begin + Lib.Synchronization.Seize (UNIX_Bound_Mutex); + for Ent of UNIX_Bound_Sockets loop + if Ent.Sock = To_Close then + Ent.Sock := null; + exit; + end if; + end loop; + Lib.Synchronization.Release (UNIX_Bound_Mutex); + end Inner_UNIX_Close; + + procedure Inner_UNIX_Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + is + Len : Natural := Data'Length; + begin + <> + if Sock.Is_Blocking then + loop + Lib.Synchronization.Seize (Sock.Mutex); + exit when Sock.Data_Length /= 0; + Lib.Synchronization.Release (Sock.Mutex); + Scheduler.Yield_If_Able; + end loop; + else + Lib.Synchronization.Seize (Sock.Mutex); + end if; + + case Sock.Typ is + when Stream => + if Sock.Is_Listener or Sock.Pending_Accept = null then + Data := (others => 0); + Ret_Count := 0; + Success := Is_Bad_Type; + goto Cleanup; + elsif Sock.Data_Length = 0 then + if Sock.Is_Blocking then + Lib.Synchronization.Release (Sock.Mutex); + goto Retry; + else + Data := (others => 0); + Ret_Count := 0; + Success := Would_Block; + goto Cleanup; + end if; + end if; + + if Len > Sock.Data_Length then + Len := Sock.Data_Length; + end if; + if Data'First > Natural'Last - Len then + Len := Natural'Last - Data'First; + end if; + + Data (Data'First .. Data'First + Len - 1) := + Sock.Data (1 .. Len); + for I in 1 .. Len loop + for J in Sock.Data'First .. Sock.Data'Last - 1 loop + Sock.Data (J) := Sock.Data (J + 1); + end loop; + if Sock.Data_Length > 0 then + Sock.Data_Length := Sock.Data_Length - 1; + else + exit; + end if; + end loop; + + Ret_Count := Len; + Success := Plain_Success; + when others => + if Sock.Data_Length <= Data'Length then + Data (1 .. Sock.Data_Length) := + Sock.Data (1 .. Sock.Data_Length); + Ret_Count := Sock.Data_Length; + Success := Plain_Success; + else + Ret_Count := 0; + Success := Would_Block; + end if; + end case; + + <> + Lib.Synchronization.Release (Sock.Mutex); + end Inner_UNIX_Read; + + procedure Inner_UNIX_Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + is + Len : Natural := Data'Length; + Final : Natural; + begin + case Sock.Typ is + when Stream => + if Sock.Is_Listener or Sock.Pending_Accept = null then + Ret_Count := 0; + Success := Is_Bad_Type; + return; + end if; + + <> + if Sock.Is_Blocking then + loop + Lib.Synchronization.Seize (Sock.Pending_Accept.Mutex); + exit when Sock.Pending_Accept.Data_Length /= + Default_Socket_Size; + Lib.Synchronization.Release (Sock.Pending_Accept.Mutex); + Scheduler.Yield_If_Able; + end loop; + else + Lib.Synchronization.Seize (Sock.Pending_Accept.Mutex); + end if; + + Lib.Synchronization.Seize (Sock.Mutex); + + if Sock.Pending_Accept.Data_Length = Default_Socket_Size then + if Sock.Is_Blocking then + Lib.Synchronization.Release (Sock.Mutex); + goto Retry; + else + Ret_Count := 0; + Success := Would_Block; + goto Cleanup; + end if; + end if; + + if Len > Default_Socket_Size or else + Len > Default_Socket_Size - Sock.Pending_Accept.Data_Length + then + Final := Default_Socket_Size; + Len := Default_Socket_Size - Sock.Pending_Accept.Data_Length; + else + Final := Sock.Pending_Accept.Data_Length + Len; + end if; + + Sock.Pending_Accept.Data + (Sock.Pending_Accept.Data_Length + 1 .. Final) := + Data (Data'First .. Data'First + Len - 1); + Sock.Pending_Accept.Data_Length := Final; + + Ret_Count := Len; + Success := Plain_Success; + <> + Lib.Synchronization.Release (Sock.Pending_Accept.Mutex); + Lib.Synchronization.Release (Sock.Mutex); + when others => + if Sock.Simple_Connected = null or + Data'Length <= Default_Socket_Size + then + Ret_Count := 0; + Success := Would_Block; + return; + end if; + + + Lib.Synchronization.Seize (Sock.Simple_Connected.Mutex); + if Sock.Simple_Connected.Data_Length = 0 and then + Data'Length <= Default_Socket_Size + then + Sock.Simple_Connected.Data (1 .. Data'Length) := Data; + Sock.Simple_Connected.Data_Length := Data'Length; + Ret_Count := Data'Length; + Success := Plain_Success; + else + Ret_Count := 0; + Success := Would_Block; + end if; + Lib.Synchronization.Release (Sock.Simple_Connected.Mutex); + end case; + end Inner_UNIX_Write; + + procedure Inner_UNIX_Poll + (Sock : Socket_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Broken : out Boolean; + Is_Error : out Boolean) + is + begin + case Sock.Typ is + when Stream => + if Sock.Is_Listener then + Can_Read := Sock.Pending_Accept /= null; + Can_Write := Can_Read; + Is_Broken := False; + Is_Error := False; + else + Can_Read := Sock.Data_Length /= 0; + Can_Write := Sock.Pending_Accept /= null and then + Sock.Pending_Accept.Data_Length /= Default_Socket_Size; + Is_Broken := False; + Is_Error := False; + end if; + when others => + Can_Read := Sock.Data_Length /= 0; + Can_Write := Sock.Simple_Connected /= null; + Is_Broken := False; + Is_Error := False; + end case; + end Inner_UNIX_Poll; + + function Inner_UNIX_Shutdown + (Sock : Socket_Acc; + Do_Receptions : Boolean; + Do_Transmissions : Boolean) return Boolean + is + pragma Unreferenced (Do_Receptions); + pragma Unreferenced (Do_Transmissions); + begin + if Sock.Established /= null then + Sock.Established.Established := null; + Sock.Established := null; + end if; + return True; + end Inner_UNIX_Shutdown; +end IPC.Socket; diff --git a/source/ipc/ipc-socket.ads b/source/ipc/ipc-socket.ads new file mode 100644 index 0000000..bf11d74 --- /dev/null +++ b/source/ipc/ipc-socket.ads @@ -0,0 +1,573 @@ +-- ipc-socket.ads: Socket creation and management. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Synchronization; +with Devices; use Devices; +with Networking; + +package IPC.Socket is + -- Here lies the implementation of the quintessential POSIX IPC, be it + -- local IPC or remote internet access. + + type Domain is + (IPv4, -- IPv4-based networking. + IPv6, -- IPv6-based networking. + UNIX); -- UNIX-domain sockets for local IPC. + + type DataType is + (Stream, -- Connection-based streams. TCP for networked domains. + Datagram, -- Connection-less datagrams. UDP for networked domains. + Raw); -- Raw non-cleaned packets, not always available (UNIX). + + -- Data structures to define a socket. + type Socket (Dom : Domain; Typ : DataType) is private; + type Socket_Acc is access Socket; + + -- Returned status of a socket operation. + type Socket_Status is + (Plain_Success, -- Unconditional success. + Is_Bad_Type, -- A listener is needed but the socket is not one, etc. + Would_Block); -- The socket would block, and we don't want that. + + -- Default size in bytes of a socket buffer. + Default_Socket_Size : constant Natural; + ---------------------------------------------------------------------------- + -- Socket independent operations. + + -- Create a fresh socket. + -- @param Dom Domain of the socket. + -- @param Typ Type of socket. + -- @param Is_Blocking True if blocking, False if not blocking. + -- @return The socket on success, null on failure. + function Create + (Dom : Domain; + Typ : DataType; + Is_Blocking : Boolean := True) return Socket_Acc; + + -- Get the domain of a socket, which is good to know because data changes. + -- @param Sock Socket to check. + -- @return Domain of the socket. + function Get_Domain (Sock : Socket_Acc) return Domain + with Pre => Sock /= null; + + -- Get the type of a socket, which is good to know because only some + -- sockets implement some operations! + -- @param Sock Socket to check. + -- @return Data type of the socket. + function Get_Type (Sock : Socket_Acc) return DataType + with Pre => Sock /= null; + + -- Close the socket, if possible. + -- @param To_Close Socket to free and close, will be always set to null. + procedure Close (To_Close : in out Socket_Acc) + with Pre => To_Close /= null, Post => To_Close = null; + + -- Get whether the socket is blocking. + -- @param Sock Socket to check. + -- @return True if blocking, False if not. + function Is_Blocking (Sock : Socket_Acc) return Boolean + with Pre => Sock /= null; + + -- Set whether the socket is blocking. + -- @param Sock Socket to modify. + -- @param Is_Blocking True if blocking, False if not. + procedure Set_Blocking (Sock : Socket_Acc; Is_Blocking : Boolean) + with Pre => Sock /= null; + + -- Poll the availability of operations that can be done to a socket. + -- @param Sock Socket to operate on. + -- @param Can_Read True if a read operation would not block. + -- @param Can_Write True if a write operation would not block. + -- @param Is_Broken True if the other end has closed. + -- @param Is_Error True if an error condition was triggered. + procedure Poll + (Sock : Socket_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Broken : out Boolean; + Is_Error : out Boolean) + with Pre => Sock /= null; + + -- Read from a socket. + -- @param Sock Socket to read from, or its connection. + -- @param Data Data to read to. + -- @param Ret_Count Count of data read. + -- @param Success Resulting status of the operation. + procedure Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + with Pre => Sock /= null; + + -- Write to a socket. + -- @param Sock Socket to write to, or its connection. + -- @param Data Data to write. + -- @param Ret_Count Count of written data. + -- @param Success Resulting status of the operation. + procedure Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status) + with Pre => Sock /= null; + + -- Disconnect the socket from all or part of a duplex connection (TX-RX). + -- When doing this with connection-based sockets will cause in the ceasing + -- of communication, while doing so with connection-less sockets will cause + -- on the effects of 'connect' to be forgotten for the passed channel. + -- @param Sock Socket to disconnect + -- @param Do_Receptions If True, disable future RX for this connection. + -- @param Do_Transmissions If True, disable future TX for this connection. + -- @return True on success, False on failure (not connected?). + function Shutdown + (Sock : Socket_Acc; + Do_Receptions : Boolean; + Do_Transmissions : Boolean) return Boolean; + + -- Get whether the socket is listening. + -- @param Sock Socket to check. + -- @return True if listening, False if not. + function Is_Listening (Sock : Socket_Acc) return Boolean + with Pre => Sock /= null; + + -- Make a socket into a listener, which makes the socket only able of + -- accepting connections using Accept. + -- @param Sock Socket to use for listening, must be stream. + -- @param Backlog Hint as to how many connections to prepare for. + -- @return True on success, False on failure. + function Listen (Sock : Socket_Acc; Backlog : Natural) return Boolean + with Pre => Sock /= null and then Get_Type (Sock) = Stream; + + -- Accept a new connection, creating a connected socket for interfacing. + -- @param Sock Server listening socket to use for accepting. + -- @param Is_Blocking True to make the accepted socket blocking. + -- @param Result New accepted socket, or null on failure. + procedure Accept_Connection + (Sock : Socket_Acc; + Is_Blocking : Boolean := True; + Result : out Socket_Acc) + with Pre => Sock /= null and then Get_Type (Sock) = Stream; + ---------------------------------------------------------------------------- + -- IPv4-specific versions of operations, along with domain-specific stuff. + -- These operations use IPv4 addresses and ports. + + -- Get the address of the passed socket. + -- @param Sock Socket to get the address of. + -- @param Addr Fetched address. + -- @param Port Fetched port. + -- @param Success True in success, False if not supported / not bound. + procedure Get_Bound + (Sock : Socket_Acc; + Addr : out Networking.IPv4_Address; + Port : out Networking.IPv4_Port; + Success : out Boolean) + with Pre => Sock /= null and then Get_Domain (Sock) = IPv4; + + -- Get the address of the passed socket's peer set with 'connect'. + -- @param Sock Socket to get the address of. + -- @param Addr Fetched address. + -- @param Port Fetched port. + -- @param Success True in success, False if not supported / not connected. + procedure Get_Peer + (Sock : Socket_Acc; + Addr : out Networking.IPv4_Address; + Port : out Networking.IPv4_Port; + Success : out Boolean) + with Pre => Sock /= null and then Get_Domain (Sock) = IPv4; + + -- Bind a socket to an address. + -- @param Sock Socket to bind to an address. + -- @param Addr Fetched address. + -- @param Port Fetched port. + -- @return True on success, False on failure. + function Bind + (Sock : Socket_Acc; + Addr : Networking.IPv4_Address; + Port : Networking.IPv4_Port) return Boolean + with Pre => Sock /= null and then Get_Domain (Sock) = IPv4; + + -- Connect a socket, if connection-based, the function will do handshake + -- and all the shinenigans. Connection-less sockets will use from now on + -- this address only for sending and receiving. + -- @param Sock Socket to use to connect. + -- @param Addr Fetched address. + -- @param Port Fetched port. + -- @return True on success, False on failure. + function Connect + (Sock : Socket_Acc; + Addr : Networking.IPv4_Address; + Port : Networking.IPv4_Port) return Boolean + with Pre => Sock /= null and then Get_Domain (Sock) = IPv4; + + -- Accept a new connection, creating a connected socket for interfacing. + -- @param Sock Server listening socket to use for accepting. + -- @param Is_Blocking True to make the accepted socket blocking. + -- @param Peer_Address Address of the connected. + -- @param Peer_Port Port of the connected. + -- @param Result ew accepted socket, or null on failure. + procedure Accept_Connection + (Sock : Socket_Acc; + Is_Blocking : Boolean := True; + Peer_Address : out Networking.IPv4_Address; + Peer_Port : out Networking.IPv4_Port; + Result : out Socket_Acc) + with Pre => Sock /= null and then + Get_Domain (Sock) = IPv4 and then + Get_Type (Sock) = Stream; + + -- Read from a connection-less socket. + -- @param Sock Socket to read from, or its connection. + -- @param Data Data to read to. + -- @param Ret_Count Count of data read. + -- @param Addr IPv4 address to read from. + -- @param Port IPv4 port. + -- @param Success Resulting status of the operation. + procedure Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Addr : Networking.IPv4_Address; + Port : Networking.IPv4_Port; + Success : out Socket_Status) + with Pre => Sock /= null and then + Get_Domain (Sock) = IPv4 and then + Get_Type (Sock) /= Stream; + + -- Write to a connection-less socket. + -- @param Sock Socket to write to, or its connection. + -- @param Data Data to write. + -- @param Ret_Count Count of written data. + -- @param Addr IPv4 address to read from. + -- @param Port IPv4 port. + -- @param Success Resulting status of the operation. + procedure Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Addr : Networking.IPv4_Address; + Port : Networking.IPv4_Port; + Success : out Socket_Status) + with Pre => Sock /= null and then + Get_Domain (Sock) = IPv4 and then + Get_Type (Sock) /= Stream; + ---------------------------------------------------------------------------- + -- IPv6-specific versions of operations, along with domain-specific stuff. + -- These operations use IPv6 addresses and ports. + + -- Get the address of the passed socket. + -- @param Sock Socket to get the address of. + -- @param Addr Fetched address. + -- @param Port Fetched port. + -- @param Success True in success, False if not supported / not bound. + procedure Get_Bound + (Sock : Socket_Acc; + Addr : out Networking.IPv6_Address; + Port : out Networking.IPv6_Port; + Success : out Boolean) + with Pre => Sock /= null and then Get_Domain (Sock) = IPv4; + + -- Get the address of the passed socket's peer set with 'connect'. + -- @param Sock Socket to get the address of. + -- @param Addr Fetched address. + -- @param Port Fetched port. + -- @param Success True in success, False if not supported / not connected. + procedure Get_Peer + (Sock : Socket_Acc; + Addr : out Networking.IPv6_Address; + Port : out Networking.IPv6_Port; + Success : out Boolean) + with Pre => Sock /= null and then Get_Domain (Sock) = IPv6; + + -- Bind a socket to an address. + -- @param Sock Socket to bind to an address. + -- @param Addr Fetched address. + -- @param Port Fetched port. + -- @return True on success, False on failure. + function Bind + (Sock : Socket_Acc; + Addr : Networking.IPv6_Address; + Port : Networking.IPv6_Port) return Boolean + with Pre => Sock /= null and then Get_Domain (Sock) = IPv6; + + -- Connect a socket, if connection-based, the function will do handshake + -- and all the shinenigans. Connection-less sockets will use from now on + -- this address only for sending and receiving. + -- @param Sock Socket to use to connect. + -- @param Addr Fetched address. + -- @param Port Fetched port. + -- @return True on success, False on failure. + function Connect + (Sock : Socket_Acc; + Addr : Networking.IPv6_Address; + Port : Networking.IPv6_Port) return Boolean + with Pre => Sock /= null and then Get_Domain (Sock) = IPv6; + + -- Accept a new connection, creating a connected socket for interfacing + -- with it. If blocking, the operation will block. + -- @param Sock Server listening socket to use for accepting. + -- @param Is_Blocking True to make the accepted socket blocking. + -- @param Peer_Address Address of the connected. + -- @param Peer_Port Port of the connected. + -- @param Result ew accepted socket, or null on failure. + procedure Accept_Connection + (Sock : Socket_Acc; + Is_Blocking : Boolean := True; + Peer_Address : out Networking.IPv6_Address; + Peer_Port : out Networking.IPv6_Port; + Result : out Socket_Acc) + with Pre => Sock /= null and then + Get_Domain (Sock) = IPv6 and then + Get_Type (Sock) = Stream; + + -- Read from a connection-less socket. + -- @param Sock Socket to read from, or its connection. + -- @param Data Data to read to. + -- @param Ret_Count Count of data read. + -- @param Addr IPv6 address to read from. + -- @param Port IPv6 port. + -- @param Success Resulting status of the operation. + procedure Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Addr : Networking.IPv6_Address; + Port : Networking.IPv6_Port; + Success : out Socket_Status) + with Pre => Sock /= null and then + Get_Domain (Sock) = IPv6 and then + Get_Type (Sock) /= Stream; + + -- Write to a socket. + -- @param Sock Socket to write to, or its connection. + -- @param Data Data to write. + -- @param Ret_Count Count of written data. + -- @param Addr IPv6 address to read from. + -- @param Port IPv6 port. + -- @param Success Resulting status of the operation. + procedure Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Addr : Networking.IPv6_Address; + Port : Networking.IPv6_Port; + Success : out Socket_Status) + with Pre => Sock /= null and then + Get_Domain (Sock) = IPv6 and then + Get_Type (Sock) /= Stream; + ---------------------------------------------------------------------------- + -- UNIX-specific versions of operations, along with domain-specific stuff. + -- These operations use paths. + + -- Get the address of the passed socket. Since only UNIX sockets + -- are supported, these functions handle paths. + -- @param Sock Socket to get the address of. + -- @param Path Buffer to write the fetched path. + -- @param Length Output path length, may be bigger if not fit. + -- @param Success True in success, False if not supported / not bound. + procedure Get_Bound + (Sock : Socket_Acc; + Path : out String; + Length : out Natural; + Success : out Boolean) + with Pre => Sock /= null and then Get_Domain (Sock) = UNIX; + + -- Get the address of the passed socket's peer. + -- @param Sock Socket to get the address of. + -- @param Path Buffer to write the fetched path. + -- @param Length Output path length, may be bigger if not fit. + -- @param Success True in success, False if not supported / not connected. + procedure Get_Peer + (Sock : Socket_Acc; + Path : out String; + Length : out Natural; + Success : out Boolean) + with Pre => Sock /= null and then Get_Domain (Sock) = UNIX; + + -- Bind a socket to an address, since we only support UNIX sockets, this + -- takes the shape of a path, but will probably change in the future. + -- @param Sock Socket to bind to an address. + -- @param Path Path to bind the socket to, must be unique. + -- @return True on success, False on failure. + function Bind (Sock : Socket_Acc; Path : String) return Boolean + with Pre => Sock /= null and then Get_Domain (Sock) = UNIX; + + -- Connect a socket to a socket previously bound with Bind. + -- This process initiates the handshake that the other end will continue + -- with its functions Listen and Accept, unless blocking, this function + -- will block until accepted. + -- @param Sock Socket to use to connect. + -- @param Path Previously bound path to connect to. + -- @return True on success, False on failure. + function Connect (Sock : Socket_Acc; Path : String) return Boolean + with Pre => Sock /= null and then Get_Domain (Sock) = UNIX; + + -- Accept a new connection, creating a connected socket for interfacing + -- with it. If blocking, the operation will block. + -- @param Sock Server listening socket to use for accepting. + -- @param Is_Blocking True to make the accepted socket blocking. + -- @param Peer_Address Address of the connected socket. + -- @param Peer_Address_Length Stored length, may be longer if doesnt fit. + -- @param Result New accepted socket, or null on failure. + procedure Accept_Connection + (Sock : Socket_Acc; + Is_Blocking : Boolean := True; + Peer_Address : out String; + Peer_Address_Length : out Natural; + Result : out Socket_Acc) + with Pre => Sock /= null and then + Get_Domain (Sock) = UNIX and then + Get_Type (Sock) = Stream; + + -- Read from a connection-less socket. + -- @param Sock Socket to read from, or its connection. + -- @param Data Data to read to. + -- @param Ret_Count Count of data read. + -- @param Path Path to read from. + -- @param Success Resulting status of the operation. + procedure Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Path : String; + Success : out Socket_Status) + with Pre => Sock /= null and then + Get_Domain (Sock) = IPv6 and then + Get_Type (Sock) /= Stream; + + -- Write to a socket. + -- @param Sock Socket to write to, or its connection. + -- @param Data Data to write. + -- @param Ret_Count Count of written data. + -- @param Path Path to write to. + -- @param Success Resulting status of the operation. + procedure Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Path : String; + Success : out Socket_Status) + with Pre => Sock /= null and then + Get_Domain (Sock) = IPv6 and then + Get_Type (Sock) /= Stream; + +private + + Default_Socket_Size : constant Natural := 16#2000#; + + type Socket (Dom : Domain; Typ : DataType) is record + Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Is_Blocking : Boolean; + + case Dom is + when UNIX => + Data : Devices.Operation_Data (1 .. Default_Socket_Size); + Data_Length : Natural range 0 .. Default_Socket_Size; + case Typ is + when Stream => + Is_Listener : Boolean; + Connected : Socket_Acc; + Pending_Accept : Socket_Acc; + Established : Socket_Acc; + when others => + Simple_Connected : Socket_Acc; + end case; + when IPv4 => + case Typ is + when Raw => + IPv4_Cached_Address : Networking.IPv4_Address; + IPv4_Cached_Port : Networking.IPv4_Port; + when others => + null; + end case; + when IPv6 => + case Typ is + when Raw => + IPv6_Cached_Address : Networking.IPv6_Address; + IPv6_Cached_Port : Networking.IPv6_Port; + when others => + null; + end case; + end case; + end record; + ---------------------------------------------------------------------------- + -- IPv4 functions. + procedure Inner_IPv4_Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status); + + procedure Inner_IPv4_Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status); + ---------------------------------------------------------------------------- + -- IPv6 functions. + procedure Inner_IPv6_Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status); + + procedure Inner_IPv6_Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status); + ---------------------------------------------------------------------------- + -- UNIX socket fun. + Bind_Path_Max : constant := 100; + type Bound_Socket is record + Sock : Socket_Acc; + Path : String (1 .. Bind_Path_Max); + Path_Len : Natural range 1 .. Bind_Path_Max; + end record; + + UNIX_Bound_Mutex : aliased Lib.Synchronization.Binary_Semaphore := + Lib.Synchronization.Unlocked_Semaphore; + UNIX_Bound_Sockets : array (1 .. 10) of Bound_Socket := + (others => (Sock => null, Path => (others => ' '), Path_Len => 1)); + + function Get_Bound (Path : String) return Socket_Acc; + + procedure Inner_UNIX_Close (To_Close : Socket_Acc); + + procedure Inner_UNIX_Read + (Sock : Socket_Acc; + Data : out Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status); + + procedure Inner_UNIX_Write + (Sock : Socket_Acc; + Data : Devices.Operation_Data; + Ret_Count : out Natural; + Success : out Socket_Status); + + procedure Inner_UNIX_Poll + (Sock : Socket_Acc; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Broken : out Boolean; + Is_Error : out Boolean); + + function Inner_UNIX_Shutdown + (Sock : Socket_Acc; + Do_Receptions : Boolean; + Do_Transmissions : Boolean) return Boolean; +end IPC.Socket; diff --git a/source/ipc/ipc.ads b/source/ipc/ipc.ads new file mode 100644 index 0000000..b6cb70e --- /dev/null +++ b/source/ipc/ipc.ads @@ -0,0 +1,18 @@ +-- ipc.ads: Specification of the ipc library. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package IPC is +end IPC; diff --git a/source/kernel_main.adb b/source/kernel_main.adb new file mode 100644 index 0000000..242b3a3 --- /dev/null +++ b/source/kernel_main.adb @@ -0,0 +1,224 @@ +-- kernel_main.adb: Main functions of the freestanding kernel. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch; +with Arch.Clocks; +with Arch.Hooks; +with Devices; use Devices; +with VFS; use VFS; +with Lib.Cmdline; +with Lib.Messages; +with Lib.Panic; +with Userland.Loader; +with Userland.Process; use Userland.Process; +with Userland; +with Scheduler; +with Networking.ARP; +with Lib.Runtime; +pragma Unreferenced (Lib.Runtime); +with Config; + +package body Kernel_Main is + procedure Entrypoint (Cmdline : String) is + Init_Path : Userland.String_Acc; + Init_Args : Userland.Argument_Arr_Acc; + Init_Env : Userland.Environment_Arr (1 .. 0); + Value : String (1 .. Devices.Max_Name_Length); + Value_Len : Natural; + Found : Boolean; + Init_Dev : Devices.Device_Handle; + Init_FS : VFS.FS_Handle; + Init_Ino : VFS.File_Inode_Number; + Init_PID : PID; + Success : VFS.FS_Status; + Init_Stdin : constant String := "null"; + Init_Stdout : constant String := "console"; + begin + -- Initialize several printing-needed subsystems. + Arch.Clocks.Initialize_Sources; + + -- Enable dmesg buffers and such. + Lib.Messages.Enable_Logging; + + -- Disable checks because of variable expansion going over line limit. + pragma Style_Checks (Off); + Lib.Messages.Put_Line (Config.Name & " " & Config.Version); + Lib.Messages.Put_Line ("Please report bugs at " & Config.Bug_Site); + pragma Style_Checks (On); + + -- Initialize several subsystems. + Userland.Process.Init; + Networking.ARP.Initialize; + Devices.Init; + VFS.Init; + + -- Now that all services are up, run thru some errands. + Arch.Hooks.Register_RAM_Files; + + -- Initialize the scheduler. + if not Scheduler.Init then + Lib.Panic.Hard_Panic ("Could not initialize the scheduler"); + end if; + + -- Before loading init, check if the user wants us to enable thingies. + if Lib.Cmdline.Is_Key_Present (Cmdline, Lib.Cmdline.No_Program_ASLR) then + Lib.Messages.Put_Line ("Disabled loader ASLR"); + Userland.Loader.Disable_ASLR; + end if; + if Lib.Cmdline.Is_Key_Present (Cmdline, Lib.Cmdline.No_Location_ASLR) + then + Lib.Messages.Put_Line ("Disabled process ASLR"); + Userland.Process.Disable_ASLR; + end if; + + -- Mount a root if specified. + Lib.Cmdline.Get_Key_Value + (Cmdline, Lib.Cmdline.Root_UUID_Key, Value, Found, Value_Len); + if Found and Value_Len = Devices.UUID_String'Length then + Lib.Messages.Put_Line ("Searching root " & Value (1 .. Value_Len)); + Init_Dev := Devices.Fetch_UUID (Value (1 .. Value_Len)); + if Init_Dev /= Devices.Error_Handle then + Devices.Fetch_Name (Init_Dev, Value, Value_Len); + else + Lib.Messages.Put_Line ("Failed to find " & Value (1 .. Value_Len)); + end if; + else + Lib.Cmdline.Get_Key_Value + (Cmdline, Lib.Cmdline.Root_Key, Value, Found, Value_Len); + end if; + if Found and Value_Len /= 0 then + Lib.Messages.Put_Line ("Mounting root " & Value (1 .. Value_Len)); + VFS.Mount (Value (1 .. Value_Len), "/", False, False, Found); + if not Found then + Lib.Messages.Put_Line ("Failed mount " & Value (1 .. Value_Len)); + end if; + end if; + + -- Fetch an init or panic. + Lib.Cmdline.Get_Key_Value + (Cmdline, Lib.Cmdline.Init_Key, Value, Found, Value_Len); + if Found and Value_Len /= 0 then + Init_Path := new String'(Value (1 .. Value_Len)); + else + Lib.Panic.Hard_Panic ("No init was found"); + end if; + + -- Prepare arguments. + Lib.Cmdline.Get_Key_Value + (Cmdline, Lib.Cmdline.Init_Arg_Key, Value, Found, Value_Len); + if Found and Value_Len /= 0 then + declare + Arg_Count : Natural := 0; + First_Idx : Natural; + Last_Idx : Natural; + Arg_Len : Natural; + List_Idx : Natural; + begin + for C of Value (1 .. Value_Len) loop + if C = ' ' then + Arg_Count := Arg_Count + 1; + end if; + end loop; + Arg_Count := Arg_Count + 1; + + Init_Args := new Userland.Argument_Arr (1 .. 1 + Arg_Count); + Init_Args (1) := Init_Path; + List_Idx := 2; + First_Idx := 1; + Last_Idx := Value (1 .. Value_Len)'First; + while Value (1 .. Value_Len)'Last >= Last_Idx loop + if First_Idx > Value (1 .. Value_Len)'Last then + goto END_PARSE; + end if; + + Arg_Len := 0; + Last_Idx := First_Idx; + while Value (1 .. Value_Len)'Last >= Last_Idx and then + Value (Last_Idx) /= ' ' + loop + Arg_Len := Arg_Len + 1; + Last_Idx := Last_Idx + 1; + end loop; + + Init_Args (List_Idx) := + new String'(Value (First_Idx .. Last_Idx - 1)); + List_Idx := List_Idx + 1; + First_Idx := Last_Idx + 1; + end loop; + <> + end; + + Lib.Messages.Put_Line + ("Booting init: " & Init_Path.all & " " & Value (1 .. Value_Len)); + else + Init_Args := new Userland.Argument_Arr'(1 => Init_Path); + Lib.Messages.Put_Line ("Booting init: " & Init_Args.all (1).all); + end if; + + -- Mount /dev. + VFS.Mount ("zero", "/dev/", VFS.FS_DEV, False, False, Found); + if not Found then + Lib.Panic.Hard_Panic ("Failed to mount /dev"); + end if; + + -- Init an init or panic. + Lib.Cmdline.Get_Key_Value + (Cmdline, Lib.Cmdline.Init_Key, Value, Found, Value_Len); + if Found and Value_Len /= 0 then + Init_Args (1) := new String'(Value (1 .. Value_Len)); + + Open + (Path => Value (1 .. Value_Len), + Key => Init_FS, + Ino => Init_Ino, + Success => Success, + User => 0, + Want_Read => True, + Want_Write => False); + + if Success = VFS.FS_Success then + Init_PID := Userland.Loader.Start_Program + (Init_Args.all (1).all, Init_FS, Init_Ino, Init_Args.all, + Init_Env, Init_Stdin, Init_Stdout, Init_Stdout); + if Init_PID /= Error_PID then + Userland.Process.Set_Identifier + (Init_PID, Init_Args.all (1).all); + + Open + (Path => "/", + Key => Init_FS, + Ino => Init_Ino, + Success => Success, + User => 0, + Want_Read => True, + Want_Write => False); + + Userland.Process.Set_CWD (Init_PID, Init_FS, Init_Ino); + else + Lib.Panic.Hard_Panic ("Could not start init"); + end if; + Close (Init_FS, Init_Ino); + else + Lib.Panic.Hard_Panic ("Init could not be opened"); + end if; + else + Lib.Panic.Hard_Panic ("No init was specified"); + end if; + + -- Going idle into the scheduler. + Scheduler.Idle_Core; + end Entrypoint; +end Kernel_Main; diff --git a/source/kernel_main.ads b/source/kernel_main.ads new file mode 100644 index 0000000..c673d10 --- /dev/null +++ b/source/kernel_main.ads @@ -0,0 +1,26 @@ +-- kernel_main.ads: Main functions of the freestanding kernel. +-- Copyright (C) 2022 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Kernel_Main is + -- The main function of the freestanding kernel, this will usually be + -- called by entrypoint functions from source/arch. The state assumed when + -- calling this function is: + -- - A valid virtual mapping, with the PMM and VMM already initialized. + -- The PMM and VMM are started with Init_Allocator and Init respectively. + -- - Cores apart of this one having called Idle_Core in the scheduler, and + -- with common global state loaded, basically ready to go. + procedure Entrypoint (Cmdline : String); +end Kernel_Main; diff --git a/source/lib/lib-alignment.adb b/source/lib/lib-alignment.adb new file mode 100644 index 0000000..97fe554 --- /dev/null +++ b/source/lib/lib-alignment.adb @@ -0,0 +1,41 @@ +-- lib-alignment.adb: Generic alignment functions. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Storage_Elements; use System.Storage_Elements; + +package body Lib.Alignment is + -- Unit passes GNATprove AoRTE, GNAT does not know this. + pragma Suppress (All_Checks); + + function Align_Up (Value, Alignment : T) return T is + Value2 : constant Integer_Address := Integer_Address (Value); + Align2 : constant Integer_Address := Integer_Address (Alignment); + begin + return T ((Value2 + Align2 - 1) and not (Align2 - 1)); + end Align_Up; + + function Align_Down (Value, Alignment : T) return T is + Value2 : constant Integer_Address := Integer_Address (Value); + Align2 : constant Integer_Address := Integer_Address (Alignment); + begin + return T (Value2 and not (Align2 - 1)); + end Align_Down; + + function Divide_Round_Up (Dividend, Divisor : T) return T is + begin + return (Dividend + (Divisor - 1)) / Divisor; + end Divide_Round_Up; +end Lib.Alignment; diff --git a/source/lib/lib-alignment.ads b/source/lib/lib-alignment.ads new file mode 100644 index 0000000..f82380d --- /dev/null +++ b/source/lib/lib-alignment.ads @@ -0,0 +1,43 @@ +-- lib-alignment.ads: Generic alignment functions. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +generic + type T is mod <>; +package Lib.Alignment with Pure is + -- This functions are meant for powers of 2, using this for non powers of + -- two is bogus, and broken. + + -- Align up a value. + -- @param Value The value to align to the passed alignment + -- @param Alignment Power-of-2 alignment to align to. + -- @return The aligned value. + function Align_Up (Value, Alignment : T) return T + with Pre => Alignment /= 0 and (Alignment and (Alignment - 1)) = 0, + Post => Align_Up'Result rem Alignment = 0; + + -- Align down a value. + -- @param Value The value to align to the passed alignment + -- @param Alignment Power-of-2 alignment to align to. + -- @return The aligned value. + function Align_Down (Value, Alignment : T) return T + with Pre => Alignment /= 0 and (Alignment and (Alignment - 1)) = 0, + Post => Align_Down'Result rem Alignment = 0; + + -- Divide and round up. + function Divide_Round_Up (Dividend, Divisor : T) return T + with Pre => (Dividend + (Divisor - 1) <= T'Last) and (Divisor > 1), + Post => Divide_Round_Up'Result mod Divisor = 0; +end Lib.Alignment; diff --git a/source/lib/lib-atomic.ads b/source/lib/lib-atomic.ads new file mode 100644 index 0000000..1e16f55 --- /dev/null +++ b/source/lib/lib-atomic.ads @@ -0,0 +1,68 @@ +-- lib-atomic.ads: Atomic operations. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with Interfaces; use Interfaces; + +package Lib.Atomic is + -- Values from libgnat/s-atopri.ads for memory ordering. + Mem_Relaxed : constant := 0; -- Implies no ordering constraints. + Mem_Consume : constant := 1; -- Implemented right now as acquire. + Mem_Acquire : constant := 2; -- Happens before constraint from the release. + Mem_Release : constant := 3; -- Happens before constraint to acquire. + Mem_Acq_Rel : constant := 4; -- Both acquire and release. + Mem_Seq_Cst : constant := 5; -- Enforces all ordering. + + subtype Mem_Model is Integer range Mem_Relaxed .. Mem_Seq_Cst; + + generic + type Atomic_Type is mod <>; + function Atomic_Load + (Ptr : System.Address; + Model : Mem_Model := Mem_Seq_Cst) return Atomic_Type; + pragma Import (Intrinsic, Atomic_Load, "__atomic_load_n"); + + function Atomic_Load_8 is new Atomic_Load (Unsigned_8); + function Atomic_Load_16 is new Atomic_Load (Unsigned_16); + function Atomic_Load_32 is new Atomic_Load (Unsigned_32); + function Atomic_Load_64 is new Atomic_Load (Unsigned_64); + + generic + type Atomic_Type2 is mod <>; + function Atomic_Fetch_Add + (Ptr : System.Address; + Val : Atomic_Type2; + Model : Mem_Model := Mem_Seq_Cst) return Atomic_Type2; + pragma Import (Intrinsic, Atomic_Fetch_Add, "__atomic_fetch_add"); + + generic + type Atomic_Type3 is mod <>; + function Atomic_Fetch_Sub + (Ptr : System.Address; + Val : Atomic_Type3; + Model : Mem_Model := Mem_Seq_Cst) return Atomic_Type3; + pragma Import (Intrinsic, Atomic_Fetch_Sub, "__atomic_fetch_sub"); + + function Atomic_Test_And_Set + (Pointer : System.Address; + Model : Mem_Model := Mem_Seq_Cst) return Boolean; + pragma Import (Intrinsic, Atomic_Test_And_Set, "__atomic_test_and_set"); + + procedure Atomic_Clear + (Pointer : System.Address; + Model : Mem_Model := Mem_Seq_Cst); + pragma Import (Intrinsic, Atomic_Clear, "__atomic_clear"); +end Lib.Atomic; diff --git a/source/lib/lib-cmdline.adb b/source/lib/lib-cmdline.adb new file mode 100644 index 0000000..f7243e0 --- /dev/null +++ b/source/lib/lib-cmdline.adb @@ -0,0 +1,115 @@ +-- lib-cmdline.adb: Parsing command line options. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Lib.Cmdline is + -- Unit passes GNATprove AoRTE, GNAT does not know this. + pragma Suppress (All_Checks); + + procedure Get_Key_Value + (Cmdline, Key : String; + Returned : out String; + Found : out Boolean; + Length : out Natural) + is + Last_Index : Integer; + Do_Until_Quotes : Boolean; + Returned_Idx : Natural := Returned'First; + begin + Returned := (others => ' '); + + Find_Key (Cmdline, Key, Found, Last_Index); + if not Found then + goto Not_Found; + end if; + + Last_Index := Last_Index + 1; + if Cmdline'Last < Last_Index or else Cmdline (Last_Index) /= '=' then + goto Found_But_No_Value; + end if; + + Last_Index := Last_Index + 1; + if Cmdline'Last > Last_Index then + Do_Until_Quotes := Cmdline (Last_Index) = '"'; + if Do_Until_Quotes then + Last_Index := Last_Index + 1; + end if; + else + Do_Until_Quotes := False; + end if; + + Length := 0; + + while Cmdline'Last >= Last_Index loop + if Returned'Last < Returned_Idx then + goto Found_But_No_Value; + end if; + + if Cmdline (Last_Index) = ' ' then + if not Do_Until_Quotes then + return; + end if; + elsif Cmdline (Last_Index) = '"' then + if Do_Until_Quotes then + return; + end if; + end if; + + Returned (Returned_Idx) := Cmdline (Last_Index); + Returned_Idx := Returned_Idx + 1; + Length := Length + 1; + Last_Index := Last_Index + 1; + end loop; + + return; + + <> + Found := False; + Length := 0; + return; + + <> + Found := True; + Length := 0; + end Get_Key_Value; + + function Is_Key_Present (Cmdline, Key : String) return Boolean is + Found : Boolean; + Discard : Natural; + begin + Find_Key (Cmdline, Key, Found, Discard); + return Found; + end Is_Key_Present; + ---------------------------------------------------------------------------- + procedure Find_Key + (Cmdline, Key : String; + Found : out Boolean; + End_Index : out Natural) + is + Curr_Index : Integer; + begin + for I in 1 .. Cmdline'Length - Key'Length + 1 loop + Curr_Index := Cmdline'First + (I - 1); + if Key = Cmdline (Curr_Index .. Curr_Index + (Key'Length - 1)) then + Found := True; + End_Index := Curr_Index + (Key'Length - 1); + return; + end if; + end loop; + + Found := False; + End_Index := 0; + end Find_Key; +end Lib.Cmdline; diff --git a/source/lib/lib-cmdline.ads b/source/lib/lib-cmdline.ads new file mode 100644 index 0000000..24f43e5 --- /dev/null +++ b/source/lib/lib-cmdline.ads @@ -0,0 +1,54 @@ +-- lib-cmdline.ads: Parsing command line options. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Lib.Cmdline is + -- The format of the command line is as such: + -- arg1=val1 arg2=val2 arg3="val3 val4" ... argN=(")valN(") + -- Double quotes used for values with spaces. + + -- Some notable keys specified in the documentation. + Root_Key : constant String := "root"; -- Device to use as /. + Root_UUID_Key : constant String := "rootuuid"; -- UUID to use as /. + Init_Key : constant String := "init"; -- Init to load. + Init_Arg_Key : constant String := "initargs"; -- init's arguments. + No_Program_ASLR : constant String := "noprogaslr"; -- Program ASLR. + No_Location_ASLR : constant String := "nolocaslr"; -- Location ASLR. + + -- Get the value of a key. + -- @param Cmdline Command line to search in. + -- @param Key Key to search for. + -- @return An allocated string pointer, or null in failure. + procedure Get_Key_Value + (Cmdline, Key : String; + Returned : out String; + Found : out Boolean; + Length : out Natural) + with Pre => Key'Length /= 0 and Returned'First = 1; + + -- Check whether an option is present. + -- @param Cmdline Command line to search in. + -- @param Key Key to search for. + -- @return True if found, or False if not found. + function Is_Key_Present (Cmdline, Key : String) return Boolean + with Pre => Cmdline'Length /= 0 and Key'Length /= 0; + +private + + procedure Find_Key + (Cmdline, Key : String; + Found : out Boolean; + End_Index : out Natural); +end Lib.Cmdline; diff --git a/source/lib/lib-messages.adb b/source/lib/lib-messages.adb new file mode 100644 index 0000000..02f22f4 --- /dev/null +++ b/source/lib/lib-messages.adb @@ -0,0 +1,131 @@ +-- lib-messages.adb: Utilities for reporting messages to the user. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Characters.Latin_1; +with Arch.Debug; + +package body Lib.Messages with + Refined_State => (Message_State => + (Messages_Mutex, Curr_Entry, Small_Log_Buffer, Log_Ring_Buffer)) +is + -- Unit passes GNATprove AoRTE, GNAT does not know this. + pragma Suppress (All_Checks); + + procedure Enable_Logging is + begin + Lib.Synchronization.Seize (Messages_Mutex); + Log_Ring_Buffer := new Message_Buffer'(1 .. 100 => (others => ' ')); + Log_Ring_Buffer (1 .. Small_Log_Buffer'Length) := Small_Log_Buffer; + Lib.Synchronization.Release (Messages_Mutex); + end Enable_Logging; + + procedure Put_Line (Message : String) is + Timestamp : String (1 .. 10); + Final : String (1 .. Max_Line) := (others => ' '); + Last_Idx : Natural; + begin + Get_Timestamp (Timestamp); + Final (1) := '('; + Final (2 .. 11) := Timestamp; + Final (12 .. 13) := ") "; + Final (14 .. Message'Length + 13) := Message; + + Lib.Synchronization.Seize (Messages_Mutex); + + if Log_Ring_Buffer /= null then + Last_Idx := Log_Ring_Buffer'Last; + Log_Ring_Buffer (Curr_Entry) := Final; + else + Last_Idx := Small_Log_Buffer'Last; + Small_Log_Buffer (Curr_Entry) := Final; + end if; + + Arch.Debug.Print (Final); + Arch.Debug.Print (Ada.Characters.Latin_1.CR); + Arch.Debug.Print (Ada.Characters.Latin_1.LF); + + Curr_Entry := Curr_Entry + 1; + if Curr_Entry > Last_Idx then + Curr_Entry := 1; + end if; + + Lib.Synchronization.Release (Messages_Mutex); + end Put_Line; + + procedure Dump_Logs (Buffer : out String; Length : out Natural) is + Idx : Natural := 0; + begin + Lib.Synchronization.Seize (Messages_Mutex); + + for C of Buffer loop + C := ' '; + end loop; + Length := Log_Ring_Buffer'Length * Max_Line; + + if Buffer'Length < Length or Buffer'Length mod Max_Line /= 0 then + return; + end if; + + for Line of Log_Ring_Buffer.all loop + Buffer (Buffer'First + Idx .. Buffer'First + Idx + Max_Line - 1) := + Line; + Idx := Idx + Max_Line; + end loop; + + Lib.Synchronization.Release (Messages_Mutex); + end Dump_Logs; + ---------------------------------------------------------------------------- + procedure Image + (Value : Unsigned_32; + Buffer : out Translated_String; + Length : out Translated_Length; + Use_Hex : Boolean := False) + is + begin + Image (Unsigned_64 (Value), Buffer, Length, Use_Hex); + end Image; + + procedure Image + (Value : Unsigned_64; + Buffer : out Translated_String; + Length : out Translated_Length; + Use_Hex : Boolean := False) + is + Conversion : constant String := "0123456789ABCDEF"; + To_Convert : Unsigned_64 := Value; + Base : constant Unsigned_64 := (if Use_Hex then 16 else 10); + Current : Natural := Buffer'Last; + begin + Buffer := (others => '0'); + while To_Convert /= 0 and Current >= Buffer'First loop + pragma Loop_Invariant (Current <= Buffer'Last); + Buffer (Current) := Conversion (Integer (To_Convert rem Base) + 1); + To_Convert := To_Convert / Base; + Current := Current - 1; + end loop; + Length := Buffer'Length - Current; + end Image; + ---------------------------------------------------------------------------- + procedure Get_Timestamp (Timestamp : out Timestamp_Str) is + Stp : Translated_String; + Stp_Len : Natural; + Sec, NSec : Unsigned_64; + begin + Arch.Clocks.Get_Monotonic_Time (Sec, NSec); + Image (Sec, Stp, Stp_Len, True); + Timestamp := Stp (11 .. Stp'Last); + end Get_Timestamp; +end Lib.Messages; diff --git a/source/lib/lib-messages.ads b/source/lib/lib-messages.ads new file mode 100644 index 0000000..f06fb7c --- /dev/null +++ b/source/lib/lib-messages.ads @@ -0,0 +1,103 @@ +-- lib-messages.ads: Utilities for reporting messages to the user. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Arch.Clocks; +with Lib.Synchronization; use Lib.Synchronization; + +package Lib.Messages with + Abstract_State => Message_State, + Initializes => Message_State +is + -- Maximum length of a single log line. + Max_Line : constant := 80; + + -- Enable in-memory message logging. + -- Until this function is called, the kernel uses a really small built-in + -- buffer. + procedure Enable_Logging + with Pre => not Is_Initialized, + Post => Is_Initialized, + Global => (In_Out => Message_State); + + -- Header added to warning messages. + Warning_String : constant String := "Warning: "; + + -- Prints a string to debug outputs and adds a newline. + -- @param Message String to print to append with a new line. + procedure Put_Line (Message : String) + with Pre => Message'Length <= Max_Line - 13, + Global => (In_Out => ( + Arch.Clocks.Monotonic_Clock_State, + Message_State)); + + -- Dump the logs from the ring buffer, they may be out of order! + -- @param Buffer Buffer to store the messages. + -- @param Length Total length in bytes of the logs, even if it doesnt fit. + procedure Dump_Logs (Buffer : out String; Length : out Natural) + with Pre => Is_Initialized and Buffer'First = 1, + Global => (In_Out => (Message_State)); + ---------------------------------------------------------------------------- + -- Types for translation strings. + subtype Translated_String is String (1 .. 20); + subtype Translated_Length is Natural range 0 .. 20; + + -- Put the value of an integer into a buffer, starting from the end. + -- @param Value Value to translate. + -- @param Buffer Buffer to build. + -- @param Length Written length. + -- @param Use_Hex True for hex, false for decimal. + procedure Image + (Value : Unsigned_32; + Buffer : out Translated_String; + Length : out Translated_Length; + Use_Hex : Boolean := False); + + -- Put the value of an integer into a buffer, starting from the end. + -- @param Value Value to translate. + -- @param Buffer Buffer to build. + -- @param Length Written length. + -- @param Use_Hex True for hex, false for decimal. + procedure Image + (Value : Unsigned_64; + Buffer : out Translated_String; + Length : out Translated_Length; + Use_Hex : Boolean := False); + ---------------------------------------------------------------------------- + -- Ghost function for checking whether login was initialized. + function Is_Initialized return Boolean with Ghost; + +private + + -- Buffers for holding log lines. + type Message_Buffer is array (Natural range <>) of String (1 .. Max_Line); + type Message_Buffer_Acc is access Message_Buffer (1 .. 100); + + Messages_Mutex : aliased Binary_Semaphore := Unlocked_Semaphore + with Part_Of => Message_State; + Curr_Entry : Natural := 1 + with Part_Of => Message_State; + Small_Log_Buffer : Message_Buffer (1 .. 15) := (others => (1 .. 80 => ' ')) + with Part_Of => Message_State; + Log_Ring_Buffer : Message_Buffer_Acc := null + with Part_Of => Message_State; + + subtype Timestamp_Str is String (1 .. 10); + procedure Get_Timestamp (Timestamp : out Timestamp_Str) + with Global => (In_Out => Arch.Clocks.Monotonic_Clock_State); + + function Is_Initialized return Boolean is (Log_Ring_Buffer /= null); +end Lib.Messages; diff --git a/source/lib/lib-panic.adb b/source/lib/lib-panic.adb new file mode 100644 index 0000000..502944d --- /dev/null +++ b/source/lib/lib-panic.adb @@ -0,0 +1,48 @@ +-- lib-panic.adb: Soft and hard panic functions. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Hooks; +with Arch.Snippets; +with Lib.Synchronization; + +package body Lib.Panic with + Refined_State => (Panic_State => Panic_Mutex) +is + Panic_Mutex : aliased Synchronization.Binary_Semaphore := + Synchronization.Unlocked_Semaphore; + + procedure Hard_Panic (Message : String) is + begin + -- Ensure only this core panics. + Synchronization.Seize (Panic_Mutex); + + -- Tell the rest of the cores to go take a nap, forever. + Arch.Hooks.Panic_SMP_Hook; + + -- Print the error and lights out. + Messages.Put_Line (HP & " --:::-+*. " & RC); + Messages.Put_Line (HP & " .... =%%%%%%:++==..:+#: " & RC); + Messages.Put_Line (HP & "+*+++++**++=-. +:%%%%%=+%%%:.-%%. " & RC); + Messages.Put_Line (HP & "--=+++=-----=**+. .+:%%%%*-%%%:.-%% " & RC); + Messages.Put_Line (HP & "-=++++++----#@@=#- -:=%%%%:%%%-.:%%: " & RC); + Messages.Put_Line (HP & "++++++++*@@==%%-+#= +.%%%#:%%%-.:%%# " & RC); + Messages.Put_Line (HP & "+++++++--+==*%%**-# .+*- *%%=..#%%+ " & RC); + Messages.Put_Line (HP & "+++++++=----====-=% -: .- " & RC); + Messages.Put_Line (HP & "++++++++=---=+++++% + " & RC); + Messages.Put_Line (Panic_Header & Message & RC); + Arch.Snippets.HCF; + end Hard_Panic; +end Lib.Panic; diff --git a/source/lib/lib-panic.ads b/source/lib/lib-panic.ads new file mode 100644 index 0000000..4eaa228 --- /dev/null +++ b/source/lib/lib-panic.ads @@ -0,0 +1,39 @@ +-- lib-panic.ads: For when recovering is not an option! +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Messages; +with Arch.Clocks; +with Ada.Characters.Latin_1; + +package Lib.Panic with + Abstract_State => Panic_State, + Initializes => Panic_State +is + -- String header and ending to be added to passed message strings. + HP : constant String := Ada.Characters.Latin_1.ESC & "[31m"; + RC : constant String := Ada.Characters.Latin_1.ESC & "[0m"; + Panic_Header : constant String := HP & "Panic: "; + + -- For situations that are too risky for recovery! + -- @param Message Message to print before halting the system. + procedure Hard_Panic (Message : String) + with Pre => + Message'Length <= Messages.Max_Line - Panic_Header'Length - RC'Length, + Global => + (In_Out => (Panic_State, Arch.Clocks.Monotonic_Clock_State, + Messages.Message_State)), + No_Return; +end Lib.Panic; diff --git a/source/lib/lib-runtime.adb b/source/lib/lib-runtime.adb new file mode 100644 index 0000000..b470162 --- /dev/null +++ b/source/lib/lib-runtime.adb @@ -0,0 +1,101 @@ +-- lib-runtime.adb: Functions needed by the compiler. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Messages; +with Lib.Panic; +with System.Storage_Elements; use System.Storage_Elements; +with Interfaces; use Interfaces; + +package body Lib.Runtime with SPARK_Mode => Off is + -- Failing a check here would just make it infinitely recursive. + pragma Suppress (All_Checks); + + procedure Last_Chance_Handler (File : System.Address; Line : Integer) is + Line_Len : Natural; + Line_Buffer : Messages.Translated_String; + File_String : String (1 .. Lib.C_String_Length (File)) + with Address => File, Import; + begin + Messages.Image (Unsigned_32 (Line), Line_Buffer, Line_Len); + Lib.Panic.Hard_Panic + ("Ada exception triggered at " & File_String & ":" & + Line_Buffer (Line_Buffer'Last - Line_Len + 1 .. Line_Buffer'Last)); + end Last_Chance_Handler; + ---------------------------------------------------------------------------- + function MemCmp (S1, S2 : System.Address; Size : size_t) return int is + Str1 : array (1 .. Size) of Unsigned_8 with Address => S1, Import; + Str2 : array (1 .. Size) of Unsigned_8 with Address => S2, Import; + begin + for I in 1 .. Size loop + if Str1 (I) /= Str2 (I) then + if Str1 (I) < Str2 (I) then + return -1; + else + return 1; + end if; + end if; + end loop; + return 0; + end MemCmp; + + function MemCpy + (Desto, Source : System.Address; + Size : size_t) return System.Address + is + Dst : array (1 .. Size) of Unsigned_8 with Address => Desto, Import; + Src : array (1 .. Size) of Unsigned_8 with Address => Source, Import; + begin + for I in 1 .. Size loop + Dst (I) := Src (I); + end loop; + return Desto; + end MemCpy; + + function MemMove + (Desto, Source : System.Address; + Size : size_t) return System.Address + is + Dst : array (1 .. Size) of Unsigned_8 with Address => Desto, Import; + Src : array (1 .. Size) of Unsigned_8 with Address => Source, Import; + Desto_Int : constant Integer_Address := To_Integer (Desto); + Source_Int : constant Integer_Address := To_Integer (Source); + begin + if Source_Int > Desto_Int then + for I in Dst'Range loop + Dst (I) := Src (I); + end loop; + elsif Source_Int < Desto_Int then + for I in reverse Dst'Range loop + Dst (I) := Src (I); + end loop; + end if; + return Desto; + end MemMove; + + function MemSet + (Desto : System.Address; + Value : Integer; + Size : size_t) return System.Address + is + Val : constant Unsigned_8 := Unsigned_8 (Value); + Dst : array (1 .. Size) of Unsigned_8 with Address => Desto, Import; + begin + for C of Dst loop + C := Val; + end loop; + return Desto; + end MemSet; +end Lib.Runtime; diff --git a/source/lib/lib-runtime.ads b/source/lib/lib-runtime.ads new file mode 100644 index 0000000..b92d2c7 --- /dev/null +++ b/source/lib/lib-runtime.ads @@ -0,0 +1,45 @@ +-- lib-runtime.ads: Functions needed by the compiler. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with Interfaces.C; use Interfaces.C; + +-- This are glue functions generated by the compiler that we must fill. +-- Most of them are for error-reporting, and the names are preset. + +package Lib.Runtime with SPARK_Mode => Off is + -- Called for runtime checks. + procedure Last_Chance_Handler (File : System.Address; Line : Integer) + with Export, Convention => C, Obsolescent, + External_Name => "__gnat_last_chance_handler"; + ---------------------------------------------------------------------------- + -- These functions are called for memory moves and copying primitives. + function MemCmp (S1, S2 : System.Address; Size : size_t) return int + with Export, Convention => C, External_Name => "memcmp", Obsolescent; + function MemCpy + (Desto, Source : System.Address; + Size : size_t) return System.Address + with Export, Convention => C, External_Name => "memcpy", Obsolescent; + function MemMove + (Desto, Source : System.Address; + Size : size_t) return System.Address + with Export, Convention => C, External_Name => "memmove", Obsolescent; + function MemSet + (Desto : System.Address; + Value : Integer; + Size : size_t) return System.Address + with Export, Convention => C, External_Name => "memset", Obsolescent; +end Lib.Runtime; diff --git a/source/lib/lib-synchronization.adb b/source/lib/lib-synchronization.adb new file mode 100644 index 0000000..8df22da --- /dev/null +++ b/source/lib/lib-synchronization.adb @@ -0,0 +1,71 @@ +-- lib-synchronization.adb: Synchronization primitives and such. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Atomic; use Lib.Atomic; +with Arch; +with Arch.Snippets; + +package body Lib.Synchronization with SPARK_Mode => Off is + -- Both locks do a rough wait until the lock is free for cache-locality. + -- https://en.wikipedia.org/wiki/Test_and_test-and-set + + procedure Seize (Semaphore : aliased in out Binary_Semaphore) is + begin + loop + if not Atomic_Test_And_Set (Semaphore.Is_Locked'Address, Mem_Acquire) + then + return; + end if; + Poll_Until_Zero (Semaphore.Is_Locked'Address); + end loop; + end Seize; + + procedure Release (Semaphore : aliased in out Binary_Semaphore) is + begin + Atomic_Clear (Semaphore.Is_Locked'Address, Mem_Release); + end Release; + ---------------------------------------------------------------------------- + procedure Seize (Lock : aliased in out Critical_Lock) is + begin + loop + Arch.Snippets.Disable_Interrupts; + if not Atomic_Test_And_Set (Lock.Is_Locked'Address, Mem_Acquire) + then + return; + end if; + Arch.Snippets.Enable_Interrupts; + Poll_Until_Zero (Lock.Is_Locked'Address); + end loop; + end Seize; + + procedure Release + (Lock : aliased in out Critical_Lock; + Do_Not_Lift : Boolean := False) + is + begin + Atomic_Clear (Lock.Is_Locked'Address, Mem_Release); + if not Do_Not_Lift then + Arch.Snippets.Enable_Interrupts; + end if; + end Release; + ---------------------------------------------------------------------------- + procedure Poll_Until_Zero (Address : System.Address) is + begin + while Atomic_Load_8 (Address, Mem_Relaxed) /= 0 loop + Arch.Snippets.Pause; + end loop; + end Poll_Until_Zero; +end Lib.Synchronization; diff --git a/source/lib/lib-synchronization.ads b/source/lib/lib-synchronization.ads new file mode 100644 index 0000000..4f988a6 --- /dev/null +++ b/source/lib/lib-synchronization.ads @@ -0,0 +1,66 @@ +-- lib-synchronization.ads: Specification of the synchronization library. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with System; + +package Lib.Synchronization is + -- A simple binary semaphore that will busy loop with no complications. + type Binary_Semaphore is private; + Unlocked_Semaphore : constant Binary_Semaphore; + + -- Lock a semaphore, and not return until locked. + -- @param Semaphore Semaphore to lock. + procedure Seize (Semaphore : aliased in out Binary_Semaphore); + + -- Release a semaphore unconditionally. + -- @param Semaphore Semaphore to release. + procedure Release (Semaphore : aliased in out Binary_Semaphore); + ---------------------------------------------------------------------------- + -- Sometimes you may want a simple binary semaphore, but contention is + -- fatal. For that critical locks will disable interrupts along the usual + -- binary semaphore business. + -- If you are considering using them, be careful! Improper use will + -- potentially obliterate the system, or tank performance, or both! + type Critical_Lock is private; + Unlocked_Critical : constant Critical_Lock; + + -- Lock a critical section, and not return until locked, disabling + -- interrupts. + -- @param Lock Lock to use. + procedure Seize (Lock : aliased in out Critical_Lock); + + -- Release a critical section unconditionally + -- @param Lock Lock to use. + -- @param Do_Not_Lift If True, interrupts wont be enabled, else, they will. + procedure Release + (Lock : aliased in out Critical_Lock; + Do_Not_Lift : Boolean := False); + +private + + type Binary_Semaphore is record + Is_Locked : Unsigned_8; + end record; + Unlocked_Semaphore : constant Binary_Semaphore := (others => 0); + ---------------------------------------------------------------------------- + type Critical_Lock is record + Is_Locked : Unsigned_8; + end record; + Unlocked_Critical : constant Critical_Lock := (others => 0); + ---------------------------------------------------------------------------- + procedure Poll_Until_Zero (Address : System.Address); +end Lib.Synchronization; diff --git a/source/lib/lib-time.adb b/source/lib/lib-time.adb new file mode 100644 index 0000000..7155f28 --- /dev/null +++ b/source/lib/lib-time.adb @@ -0,0 +1,63 @@ +-- lib-time.adb: Time-related functions. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Lib.Time is + -- Unit passes GNATprove AoRTE, GNAT does not know this. + pragma Suppress (All_Checks); + + procedure Normalize (Seconds, Nanoseconds : in out Unsigned_64) is + Nanosecond_Seconds : constant Unsigned_64 := Nanoseconds / USec_Per_Sec; + begin + if Seconds <= Unsigned_64'Last - Nanosecond_Seconds then + Seconds := Seconds + Nanosecond_Seconds; + else + Seconds := Unsigned_64'Last; + end if; + Nanoseconds := Nanoseconds mod USec_Per_Sec; + end Normalize; + + procedure Increment + (Seconds1, Nanoseconds1 : in out Unsigned_64; + Seconds2, Nanoseconds2 : Unsigned_64) + is + begin + if Seconds1 > Unsigned_64'Last - Seconds2 then + Seconds1 := Unsigned_64'Last; + else + Seconds1 := Seconds1 + Seconds2; + end if; + Nanoseconds1 := Nanoseconds1 + Nanoseconds2; + Normalize (Seconds1, Nanoseconds1); + end Increment; + + procedure Substract + (Seconds1, Nanoseconds1 : in out Unsigned_64; + Seconds2, Nanoseconds2 : Unsigned_64) + is + begin + Seconds1 := Seconds1 - Seconds2; + if Nanoseconds1 < Nanoseconds2 then + Seconds1 := Seconds1 - 1; + Nanoseconds1 := USec_Per_Sec + Nanoseconds1; + end if; + Nanoseconds1 := Nanoseconds1 - Nanoseconds2; + end Substract; + + function Is_Greater_Equal (S1, NS1, S2, NS2 : Unsigned_64) return Boolean is + begin + return (S1 > S2) or ((S1 = S2) and (NS1 >= NS2)); + end Is_Greater_Equal; +end Lib.Time; diff --git a/source/lib/lib-time.ads b/source/lib/lib-time.ads new file mode 100644 index 0000000..b1abe69 --- /dev/null +++ b/source/lib/lib-time.ads @@ -0,0 +1,77 @@ +-- lib-time.ads: Time-related functions. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; + +package Lib.Time is + -- Inside Ironclad, time is often refered to as a tuple of seconds and + -- nanoseconds. These functions make manipulating those values easier. + + -- Normalize a number of seconds and nanoseconds, by making sure + -- no seconds are held in the nanoseconds field. + -- @param Seconds Seconds to normalize. + -- @param Nanoseconds Nanoseconds to normalize. + procedure Normalize (Seconds, Nanoseconds : in out Unsigned_64) + with Post => Is_Normalized (Nanoseconds); + pragma Annotate (GNATprove, False_Positive, "postcondition might fail", + "Impossible with the mod in the body, idk why it doesn't catch it"); + + -- Add two passed timestamps write the normalized sum to the first one. + -- @param Seconds1 Seconds to add and result value. + -- @param Nanoseconds1 Nanoseconds to add and result value. + -- @param Seconds2 Seconds to add. + -- @param Nanoseconds2 Nanoseconds to add. + procedure Increment + (Seconds1, Nanoseconds1 : in out Unsigned_64; + Seconds2, Nanoseconds2 : Unsigned_64) + with Post => Is_Normalized (Nanoseconds1); + + -- Substract two timestamps, for things like getting a delta. The first + -- one will be used for output as well, and must be bigger than the second. + -- @param Seconds1 Seconds to substract from and result value. + -- @param Nanoseconds1 Nanoseconds to substract from and result value. + -- @param Seconds2 Seconds to substract. + -- @param Nanoseconds2 Nanoseconds to substract. + procedure Substract + (Seconds1, Nanoseconds1 : in out Unsigned_64; + Seconds2, Nanoseconds2 : Unsigned_64) + with Pre => + Is_Normalized (Nanoseconds1) and then + Is_Normalized (Nanoseconds2) and then + Is_Greater_Equal (Seconds1, Nanoseconds1, Seconds2, Nanoseconds2), + Post => Is_Normalized (Nanoseconds1); + + -- Compare two timestamps. + -- @param S1 First second to compare. + -- @param NS1 First nanosecond to compare. + -- @param S2 Second second to compare. + -- @param NS2 Second nanosecond to compare. + -- @return True if the first timestamp is greater or equal. + function Is_Greater_Equal (S1, NS1, S2, NS2 : Unsigned_64) return Boolean + with Pre => Is_Normalized (NS1) and Is_Normalized (NS2); + + -- Ghost function for checking whether a timestamp is normalized. + function Is_Normalized (NS : Unsigned_64) return Boolean with Ghost; + +private + + MSec_Per_Sec : constant := 1_000; + USec_Per_MSec : constant := 1_000_000; + USec_Per_Sec : constant := USec_Per_MSec * MSec_Per_Sec; + + function Is_Normalized (NS : Unsigned_64) return Boolean is + (NS < USec_Per_Sec); +end Lib.Time; diff --git a/source/lib/lib.adb b/source/lib/lib.adb new file mode 100644 index 0000000..a623d03 --- /dev/null +++ b/source/lib/lib.adb @@ -0,0 +1,65 @@ +-- lib.ads: Generic library functions. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Characters.Latin_1; +with System.Storage_Elements; use System.Storage_Elements; + +package body Lib is + -- Unit passes GNATprove AoRTE, GNAT does not know this. + pragma Suppress (All_Checks); + pragma Warnings ( + GNATprove, + Off, + "indirect writes to ""C"" through a potential alias are ignored", + Reason => "No alias are taken" + ); + + function C_String_Length (Addr : Address) return Natural is + Length : Natural := 0; + begin + loop + declare + C : constant Character + with Address => Addr + Storage_Offset (Length), Import; + begin + exit when C = Ada.Characters.Latin_1.NUL or Length = Natural'Last; + Length := Length + 1; + end; + end loop; + return Length; + end C_String_Length; + ---------------------------------------------------------------------------- + function Least_Common_Multiple (Val1, Val2 : Integer) return Integer is + begin + if Val1 = 0 or Val2 = 0 then + return 0; + end if; + return (abs (Val1 * Val2)) / Greatest_Common_Divisor (Val1, Val2); + end Least_Common_Multiple; + + function Greatest_Common_Divisor (Val1, Val2 : Integer) return Integer is + M : Integer := Val1; + N : Integer := Val2; + T : Integer; + begin + while N /= 0 loop + T := M; + M := N; + N := T mod N; + end loop; + return M; + end Greatest_Common_Divisor; +end Lib; diff --git a/source/lib/lib.ads b/source/lib/lib.ads new file mode 100644 index 0000000..9994051 --- /dev/null +++ b/source/lib/lib.ads @@ -0,0 +1,35 @@ +-- lib.ads: Specification of generic library functions. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; use System; + +package Lib with Pure is + -- Get the length of a C-Style string. + -- @param Addr Address of the C-Style, NUL-terminated string to check. + -- @return Length of the passed string. + function C_String_Length (Addr : Address) return Natural + with Pre => Addr /= System.Null_Address; + ---------------------------------------------------------------------------- + -- Calculate the least common multiple. + function Least_Common_Multiple (Val1, Val2 : Integer) return Integer + with Pre => (Val1 > 0 and Val1 <= 40000) and + (Val2 > 0 and Val2 <= 40000); + + -- Calculate the greatest common divisor. + function Greatest_Common_Divisor (Val1, Val2 : Integer) return Integer + with Pre => Val1 /= 0 or Val2 /= 0, + Post => Greatest_Common_Divisor'Result /= 0; +end Lib; diff --git a/source/main.adb b/source/main.adb new file mode 100644 index 0000000..2731d7e --- /dev/null +++ b/source/main.adb @@ -0,0 +1,29 @@ +-- main.adb: Stub main function. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +-- The project uses GPRBuild for compilation, because gnatprove and others +-- themselves depend on GPRBuild, issue is GPRBuild requires a main file +-- with a main function, which forces some weird semantics on us. This little +-- stub lets GPRBuild be happy while we stay happy. + +with Arch.Entrypoint; +pragma Unreferenced (Arch.Entrypoint); +with Kernel_Main; + +procedure Main is +begin + Kernel_Main.Entrypoint (""); +end Main; diff --git a/source/memory/memory-physical.adb b/source/memory/memory-physical.adb new file mode 100644 index 0000000..c603fc5 --- /dev/null +++ b/source/memory/memory-physical.adb @@ -0,0 +1,266 @@ +-- memory-physical.adb: Physical memory allocator and other utils. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Lib.Panic; +with Lib.Synchronization; use Lib.Synchronization; +with Lib.Alignment; +with Arch.MMU; +with System; use System; +with Lib.Messages; +with Config; +with Userland.OOM_Failure; + +package body Memory.Physical is + Block_Size : constant := Arch.MMU.Page_Size; + Block_Free : constant Boolean := True; + Block_Used : constant Boolean := False; + type Bitmap is array (Unsigned_64 range <>) of Boolean with Pack; + + -- Information that the allocator keeps track of. + Total_Memory, Available_Memory, Free_Memory : Memory.Size; + Block_Count : Unsigned_64 := 0; + Bitmap_Length : Memory.Size := 0; + Bitmap_Address : Virtual_Address := Null_Address; + Bitmap_Last_Used : Unsigned_64 := 0; + Alloc_Mutex : aliased Binary_Semaphore := Unlocked_Semaphore; + + -- Header of each memory allocation. + type Allocation_Header is record + Block_Count : Size; + Signature : Size; + end record; + + function Calculate_Signature (Count : Size) return Size is + begin + return Count xor 2#10001011101010#; + end Calculate_Signature; + + procedure Init_Allocator (Memmap : Arch.Boot_Memory_Map) is + Adjusted_Length : Storage_Count := 0; + Adjusted_Start : System.Address := System.Null_Address; + begin + for E of Memmap loop + if E.MemType = Arch.Memory_Free then + Free_Memory := Free_Memory + Size (E.Length); + end if; + end loop; + declare + Sta : constant Size := Size (To_Integer (Memmap (Memmap'Last).Start)); + Len : constant Size := Size (Memmap (Memmap'Last).Length); + begin + Available_Memory := Free_Memory; + Total_Memory := Sta + Len; + end; + + -- Calculate what we will need for the bitmap, and find a hole for it. + Block_Count := Unsigned_64 (Total_Memory) / Block_Size; + Bitmap_Length := Size (Block_Count) / 8; + for E of Memmap loop + if E.MemType = Arch.Memory_Free and Size (E.Length) > Bitmap_Length + then + Bitmap_Address := To_Integer (E.Start) + Memory_Offset; + Adjusted_Length := E.Length - Storage_Count (Bitmap_Length); + Adjusted_Start := E.Start + Storage_Count (Bitmap_Length); + Free_Memory := Free_Memory - Bitmap_Length; + exit; + end if; + end loop; + if Bitmap_Address = Null_Address then + Lib.Panic.Hard_Panic ("Could not allocate the bitmap"); + end if; + + -- Initialize and fill the bitmap. + declare + Bitmap_Body : Bitmap (0 .. Block_Count - 1) with Import; + for Bitmap_Body'Address use To_Address (Bitmap_Address); + Index : Unsigned_64 := 0; + Block_Value : Boolean; + Block_Start, Block_Length : Unsigned_64; + begin + for Item of Bitmap_Body loop + Item := Block_Used; + end loop; + + for E of Memmap loop + if E.MemType = Arch.Memory_Free then + Block_Value := Block_Free; + else + Block_Value := Block_Used; + end if; + + if E.Start = To_Address (Bitmap_Address - Memory_Offset) then + Block_Start := Unsigned_64 (To_Integer (Adjusted_Start)); + Block_Length := Unsigned_64 (Adjusted_Length); + else + Block_Start := Unsigned_64 (To_Integer (E.Start)); + Block_Length := Unsigned_64 (E.Length); + end if; + + while Index < Block_Length loop + Bitmap_Body ((Block_Start + Index) / Block_Size) := Block_Value; + Index := Index + Block_Size; + end loop; + end loop; + end; + end Init_Allocator; + + function Alloc (Sz : Interfaces.C.size_t) return Virtual_Address is + package Align is new Lib.Alignment (Memory.Size); + + Bitmap_Body : Bitmap (0 .. Block_Count - 1) with Import; + for Bitmap_Body'Address use To_Address (Bitmap_Address); + + Did_OOM_Once : Boolean := False; + First_Found_Index : Unsigned_64 := 0; + Found_Count : Unsigned_64 := 0; + Size : Memory.Size := Memory.Size (Sz); + Blocks_To_Allocate : Memory.Size; + begin + -- Check the specific GNAT semantics. + if Size = Memory.Size (Interfaces.C.size_t'Last) then + Lib.Panic.Hard_Panic ("Storage error (size_t'Last passed)"); + elsif Size = 0 then + Size := 1; + end if; + + -- Calculate how many blocks to allocate, if we are doing alloconly, we + -- do not need to use blocks for headers and checksums. + Size := Align.Align_Up (Size, Block_Size); + Blocks_To_Allocate := Size / Block_Size; + if not Config.Support_Alloc_Only then + Blocks_To_Allocate := Blocks_To_Allocate + 1; + end if; + + -- Search for contiguous blocks, as many as needed. + Lib.Synchronization.Seize (Alloc_Mutex); + <> + for I in Bitmap_Last_Used + 1 .. Block_Count - 1 loop + if Bitmap_Body (I) = Block_Free then + if First_Found_Index = 0 or I /= First_Found_Index + Found_Count + then + First_Found_Index := I; + Found_Count := 1; + else + Found_Count := Found_Count + 1; + end if; + + if Blocks_To_Allocate = Memory.Size (Found_Count) then + goto Fill_Bitmap; + end if; + end if; + end loop; + + -- Rewind to the beggining if memory was not found and we did not do + -- it already. + if Bitmap_Last_Used /= Bitmap_Body'First then + Bitmap_Last_Used := Bitmap_Body'First; + goto Search_Blocks; + end if; + + -- Handle OOM. + if Did_OOM_Once then + Lib.Panic.Hard_Panic ("Exhausted memory (OOM)"); + else + Lib.Messages.Put_Line ("OOM imminent, running handlers"); + Did_OOM_Once := True; + Lib.Synchronization.Release (Alloc_Mutex); + Userland.OOM_Failure.Handle_Failure; + Lib.Synchronization.Seize (Alloc_Mutex); + First_Found_Index := 0; + Found_Count := 0; + goto Search_Blocks; + end if; + + <> + for I in 1 .. Blocks_To_Allocate loop + Bitmap_Body (First_Found_Index + Unsigned_64 (I - 1)) := Block_Used; + end loop; + + -- Set statistic, global variables, the allocation header and return. + Bitmap_Last_Used := First_Found_Index; + Free_Memory := Free_Memory - (Blocks_To_Allocate * Block_Size); + Lib.Synchronization.Release (Alloc_Mutex); + + -- If we are doing alloc only, we only have to return the allocated + -- address, else, we have to actually fill the header and checksums. + declare + Ret : constant Virtual_Address := + Virtual_Address (First_Found_Index * Block_Size) + Memory_Offset; + Header : Allocation_Header with Import, Address => To_Address (Ret); + Data : array (1 .. Blocks_To_Allocate * Block_Size) of Unsigned_8 + with Import, Address => To_Address (Ret); + begin + for V of Data loop + V := 0; + end loop; + + if Config.Support_Alloc_Only then + return Ret; + else + Header := + (Block_Count => Blocks_To_Allocate, + Signature => Calculate_Signature (Blocks_To_Allocate)); + return Ret + Block_Size; + end if; + end; + end Alloc; + + procedure Free (Address : Interfaces.C.size_t) is + Real_Address : Virtual_Address := Virtual_Address (Address); + Real_Block : Unsigned_64; + Bitmap_Body : Bitmap (0 .. Block_Count - 1) + with Address => To_Address (Bitmap_Address), Import; + begin + -- Ensure the address is in the higher half and not null. + if Real_Address = 0 or Config.Support_Alloc_Only then + return; + elsif Real_Address < Memory_Offset then + Real_Address := Real_Address + Memory_Offset; + end if; + + -- Free the blocks in the header. + declare + IAddr : constant Integer_Address := Real_Address - Block_Size; + SAddr : constant System.Address := To_Address (IAddr); + Header : Allocation_Header with Import, Address => SAddr; + begin + Lib.Synchronization.Seize (Alloc_Mutex); + + if Calculate_Signature (Header.Block_Count) = Header.Signature then + Real_Block := Unsigned_64 (IAddr - Memory_Offset) / Block_Size; + Free_Memory := Free_Memory + (Header.Block_Count * Block_Size); + for I in 1 .. Header.Block_Count loop + Bitmap_Body (Real_Block + Unsigned_64 (I - 1)) := Block_Free; + end loop; + else + Lib.Messages.Put_Line ("Tried to deallocate a corrupted block!"); + end if; + + Lib.Synchronization.Release (Alloc_Mutex); + end; + end Free; + + procedure Get_Statistics (Stats : out Statistics) is + begin + Lib.Synchronization.Seize (Alloc_Mutex); + Stats := + (Total => Total_Memory, + Available => Available_Memory, + Free => Free_Memory); + Lib.Synchronization.Release (Alloc_Mutex); + end Get_Statistics; +end Memory.Physical; diff --git a/source/memory/memory-physical.ads b/source/memory/memory-physical.ads new file mode 100644 index 0000000..0913818 --- /dev/null +++ b/source/memory/memory-physical.ads @@ -0,0 +1,60 @@ +-- memory-physical.ads: Specification of the physical memory allocator. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch; use Arch; +with Interfaces.C; + +package Memory.Physical is + -- Initialize the allocator with a memmap. + -- @param Memmap Memory map to use to initialize the allocator. + procedure Init_Allocator (Memmap : Arch.Boot_Memory_Map); + + -- Called when doing 'new'. + -- @param Sz Size to allocate in bytes. Sz = size_t'Last will + -- unconditionally error, and Sz as 0 for allocating a small, + -- freeable block. These are Ada-mandated semantics for `new`. + -- @return Address of the allocated object in the higher half. + -- The block pointed by the address is: + -- - Not zero'd out, since SPARK requires us to initialize it ourselves. + -- - For Sz >= Page_Size, alignment is Page_Size. Else, it is unspecified. + -- - Never null, errors are handled internally, this includes OOM. + function Alloc (Sz : Interfaces.C.size_t) return Memory.Virtual_Address + with Export, Convention => C, External_Name => "__gnat_malloc"; + + -- Called by Unchecked_Deallocation, it deallocates a previously allocated + -- block, apart of that, it has no special Ada semantics. + -- @param Address Address of the object to free, higher half or not. + procedure Free (Address : Interfaces.C.size_t) + with Export, Convention => C, External_Name => "__gnat_free"; + + -- Allocator-wide memory statistics. + -- @field Total Total physical memory of the system. + -- @field Available Non-reserved memory amount managed by the allocator. + -- @field Free Free allocator-managed memory in the system. + type Statistics is record + Total : Memory.Size; + Available : Memory.Size; + Free : Memory.Size; + end record; + + -- Fetch memory statistics as defined in the Statistics record. + -- @param Stats Where to return the stats. + procedure Get_Statistics (Stats : out Statistics); + +private + + function Calculate_Signature (Count : Size) return Size; +end Memory.Physical; diff --git a/source/memory/memory.ads b/source/memory/memory.ads new file mode 100644 index 0000000..ef0d762 --- /dev/null +++ b/source/memory/memory.ads @@ -0,0 +1,36 @@ +-- memory.ads: System-wide memory definitions. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Storage_Elements; use System.Storage_Elements; + +package Memory is + type Size is mod 2 ** Standard'Address_Size; -- Any object in bytes. + + -- Some notable memory locations. + Null_Address : constant := 0; + + -- The kernel has a memory window into the rest of physical memory mapped + -- at the beggining of the higher half. The kernel code itself is mapped + -- 2 GiB at the end of the address space. + Kernel_Offset : constant := Size'Last - (16#80000000# - 1); + Memory_Offset : constant := 16#FFFF800000000000#; + + -- The maximum physical address we can have is as much as we can fit into + -- the higher half, with a virtual address covering the whole space. + Physical_Max : constant := Kernel_Offset - Memory_Offset; + subtype Physical_Address is Integer_Address range 0 .. Physical_Max; + subtype Virtual_Address is Integer_Address; +end Memory; diff --git a/source/networking/networking-arp.adb b/source/networking/networking-arp.adb new file mode 100644 index 0000000..b5136e0 --- /dev/null +++ b/source/networking/networking-arp.adb @@ -0,0 +1,127 @@ +-- networking-arp.adb: Address resolution, from MAC to IP (be it 4 or 6). +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Networking.ARP is + pragma Suppress (All_Checks); -- Unit passes GNATprove AoRTE. + + procedure Initialize is + begin + Interface_Entries := new ARP_Entries'(others => + (MAC => (others => 0), + IP4 => (others => 0), + IP4_Subnet => (others => 0), + IP6 => (others => 0), + IP6_Subnet => (others => 0))); + end Initialize; + + procedure Add_Static + (MAC : MAC_Address; + IP4 : IPv4_Address; + IP4_Subnet : IPv4_Address; + IP6 : IPv6_Address; + IP6_Subnet : IPv6_Address) + is + begin + for E of Interface_Entries.all loop + if E.MAC = (0, 0, 0, 0, 0, 0) then + E := (MAC, IP4, IP4_Subnet, IP6, IP6_Subnet); + return; + end if; + end loop; + end Add_Static; + + procedure Modify_Static + (MAC : MAC_Address; + IP4 : IPv4_Address; + IP4_Subnet : IPv4_Address) + is + begin + for E of Interface_Entries.all loop + if E.MAC = MAC then + E.IP4 := IP4; + E.IP4_Subnet := IP4_Subnet; + return; + end if; + end loop; + end Modify_Static; + + procedure Modify_Static + (MAC : MAC_Address; + IP6 : IPv6_Address; + IP6_Subnet : IPv6_Address) + is + begin + for E of Interface_Entries.all loop + if E.MAC = MAC then + E.IP6 := IP6; + E.IP6_Subnet := IP6_Subnet; + return; + end if; + end loop; + end Modify_Static; + + procedure Lookup (MAC : MAC_Address; IP, Subnet : out IPv4_Address) is + begin + for E of Interface_Entries.all loop + if E.MAC = MAC then + IP := E.IP4; + Subnet := E.IP4_Subnet; + return; + end if; + end loop; + + IP := (others => 0); + Subnet := (others => 0); + end Lookup; + + procedure Lookup (MAC : MAC_Address; IP, Subnet : out IPv6_Address) is + begin + for E of Interface_Entries.all loop + if E.MAC = MAC then + IP := E.IP6; + Subnet := E.IP6_Subnet; + return; + end if; + end loop; + + IP := (others => 0); + Subnet := (others => 0); + end Lookup; + + procedure Lookup (IP : IPv4_Address; MAC : out MAC_Address) is + begin + for E of Interface_Entries.all loop + if E.IP4 = IP then + MAC := E.MAC; + return; + end if; + end loop; + + MAC := (others => 0); + end Lookup; + + procedure Lookup (IP : IPv6_Address; MAC : out MAC_Address) is + begin + for E of Interface_Entries.all loop + if E.IP6 = IP then + MAC := E.MAC; + return; + end if; + end loop; + + MAC := (others => 0); + end Lookup; +end Networking.ARP; diff --git a/source/networking/networking-arp.ads b/source/networking/networking-arp.ads new file mode 100644 index 0000000..0258d86 --- /dev/null +++ b/source/networking/networking-arp.ads @@ -0,0 +1,86 @@ +-- networking-arp.ads: Address resolution, from MAC to IP (be it 4 or 6). +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Networking.ARP is + -- While ARP stands for the IPv4 address resolution protocol, this module + -- abstracts both IPv4 ARP and other ARPs for IPv6 and others. + -- + -- Addresses will be cached if discovery is needed, which can lead to + -- inconsistent lookup times if requests are needed after an eviction. + + -- Initialize the module. + procedure Initialize + with Pre => not Is_Initialized, + Post => Is_Initialized; + + -- Add a static address for an interface's MAC address. + -- These addresses will never be evicted from cache, so use of these + -- addresses can be assumed to always be consistent. + procedure Add_Static + (MAC : MAC_Address; + IP4 : IPv4_Address; + IP4_Subnet : IPv4_Address; + IP6 : IPv6_Address; + IP6_Subnet : IPv6_Address) + with Pre => Is_Initialized; + + procedure Modify_Static + (MAC : MAC_Address; + IP4 : IPv4_Address; + IP4_Subnet : IPv4_Address) + with Pre => Is_Initialized; + + procedure Modify_Static + (MAC : MAC_Address; + IP6 : IPv6_Address; + IP6_Subnet : IPv6_Address) + with Pre => Is_Initialized; + + -- Lookup the associated IPv4 addresses for a MAC address. + procedure Lookup (MAC : MAC_Address; IP, Subnet : out IPv4_Address) + with Pre => Is_Initialized; + + -- Lookup the associated IPv6 addresses for a MAC address. + procedure Lookup (MAC : MAC_Address; IP, Subnet : out IPv6_Address) + with Pre => Is_Initialized; + + -- Lookup the associated MAC address for an IPv4 one. + procedure Lookup (IP : IPv4_Address; MAC : out MAC_Address) + with Pre => Is_Initialized; + + -- Lookup the associated MAC address for an IPv6 one. + procedure Lookup (IP : IPv6_Address; MAC : out MAC_Address) + with Pre => Is_Initialized; + + -- Ghost function for checking whether the device handling is initialized. + function Is_Initialized return Boolean with Ghost; + +private + + type ARP_Entry is record + MAC : MAC_Address; + IP4 : IPv4_Address; + IP4_Subnet : IPv4_Address; + IP6 : IPv6_Address; + IP6_Subnet : IPv6_Address; + end record; + type ARP_Entries is array (1 .. 50) of ARP_Entry; + type ARP_Entries_Acc is access ARP_Entries; + + Interface_Entries : ARP_Entries_Acc := null; + + function Is_Initialized return Boolean is (Interface_Entries /= null); +end Networking.ARP; diff --git a/source/networking/networking-interfaces.adb b/source/networking/networking-interfaces.adb new file mode 100644 index 0000000..8804608 --- /dev/null +++ b/source/networking/networking-interfaces.adb @@ -0,0 +1,239 @@ +-- networking-interfaces.adb: Networking interface management. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Devices.NetInter; use Devices.NetInter; + +package body Networking.Interfaces is + pragma Suppress (All_Checks); -- Unit passes GNATprove AoRTE. + + type Inner_Interface is record + Handle : Device_Handle; + MAC : MAC_Address; + Is_Blocked : Boolean; + end record; + type Inner_Arr is array (1 .. Max_Interface_Count) of Inner_Interface; + + Interfaces_Lock : aliased Binary_Semaphore := Unlocked_Semaphore; + Interfaces : Inner_Arr := + (others => (Devices.Error_Handle, (others => 0), True)); + + procedure Register_Interface + (Interfaced : Devices.Device_Handle; + IPv4 : IPv4_Address; + IPv4_Subnet : IPv4_Address; + IPv6 : IPv6_Address; + IPv6_Subnet : IPv6_Address; + Success : out Boolean) + is + pragma SPARK_Mode (Off); -- We need the 'Address here. + begin + Success := False; + Seize (Interfaces_Lock); + for Int of Interfaces loop + if Int.Handle = Devices.Error_Handle then + Int.Handle := Interfaced; + Int.Is_Blocked := True; + Success := IO_Control (Interfaced, NET_GETMAC, Int.MAC'Address); + ARP.Add_Static (Int.MAC, IPv4, IPv4_Subnet, IPv6, IPv6_Subnet); + exit; + end if; + end loop; + Release (Interfaces_Lock); + end Register_Interface; + + procedure Get_Interface_Address + (Interfaced : Devices.Device_Handle; + IP : out IPv4_Address) + is + IP_Sub : IPv4_Address; + begin + IP := (others => 0); + Seize (Interfaces_Lock); + for Int of Interfaces loop + if Int.Handle = Interfaced then + ARP.Lookup (Int.MAC, IP, IP_Sub); + exit; + end if; + end loop; + Release (Interfaces_Lock); + end Get_Interface_Address; + + procedure Get_Interface_Address + (Interfaced : Devices.Device_Handle; + IP : out IPv6_Address) + is + IP_Sub : IPv6_Address; + begin + IP := (others => 0); + Seize (Interfaces_Lock); + for Int of Interfaces loop + if Int.Handle = Interfaced then + ARP.Lookup (Int.MAC, IP, IP_Sub); + exit; + end if; + end loop; + Release (Interfaces_Lock); + end Get_Interface_Address; + + procedure Block + (Interfaced : Devices.Device_Handle; + Is_Blocked : Boolean; + Success : out Boolean) + is + begin + Success := False; + Seize (Interfaces_Lock); + for Int of Interfaces loop + if Int.Handle = Interfaced then + Int.Is_Blocked := Is_Blocked; + Success := True; + exit; + end if; + end loop; + Release (Interfaces_Lock); + end Block; + + procedure Get_Suitable_Interface + (IP : IPv4_Address; + Interfaced : out Devices.Device_Handle) + is + IP_Sub : IPv4_Address; + IP2 : IPv4_Address; + begin + Interfaced := Devices.Error_Handle; + Seize (Interfaces_Lock); + for Int of Interfaces loop + if Int.Handle /= Devices.Error_Handle and not Int.Is_Blocked then + ARP.Lookup (Int.MAC, IP2, IP_Sub); + for I in IP_Sub'Range loop + if IP_Sub (I) /= 0 and then IP (I) /= IP2 (I) then + goto End_Iter; + end if; + end loop; + Interfaced := Int.Handle; + exit; + <> + end if; + end loop; + Release (Interfaces_Lock); + end Get_Suitable_Interface; + + procedure Get_Suitable_Interface + (IP : IPv6_Address; + Interfaced : out Devices.Device_Handle) + is + IP_Sub : IPv6_Address; + IP2 : IPv6_Address; + begin + Interfaced := Devices.Error_Handle; + Seize (Interfaces_Lock); + for Int of Interfaces loop + if Int.Handle /= Devices.Error_Handle and not Int.Is_Blocked then + ARP.Lookup (Int.MAC, IP2, IP_Sub); + for I in IP_Sub'Range loop + if IP_Sub (I) /= 0 and then IP (I) /= IP2 (I) then + goto End_Iter; + end if; + end loop; + Interfaced := Int.Handle; + exit; + <> + end if; + end loop; + Release (Interfaces_Lock); + end Get_Suitable_Interface; + + procedure Modify_Addresses + (Interfaced : Devices.Device_Handle; + IP : IPv4_Address; + IP_Subnet : IPv4_Address; + Success : out Boolean) + is + begin + Success := False; + Seize (Interfaces_Lock); + for Int of Interfaces loop + if Int.Handle = Interfaced then + ARP.Modify_Static (Int.MAC, IP, IP_Subnet); + Success := True; + exit; + end if; + end loop; + Release (Interfaces_Lock); + end Modify_Addresses; + + procedure Modify_Addresses + (Interfaced : Devices.Device_Handle; + IP : IPv6_Address; + IP_Subnet : IPv6_Address; + Success : out Boolean) + is + begin + Success := False; + Seize (Interfaces_Lock); + for Int of Interfaces loop + if Int.Handle = Interfaced then + ARP.Modify_Static (Int.MAC, IP, IP_Subnet); + Success := True; + exit; + end if; + end loop; + Release (Interfaces_Lock); + end Modify_Addresses; + + procedure List_Interfaces (Buffer : out Interface_Arr; Len : out Natural) is + pragma Annotate (GNATprove, False_Positive, + "cannot prove upper bound for Buffer'Length", + "not entirely sure how that happens"); + Curr_Index : Natural := 0; + begin + Len := 0; + Buffer := (others => + (Handle => Devices.Error_Handle, + Is_Blocked => True, + MAC => (others => 0), + IPv4 => (others => 0), + IPv4_Subnet => (others => 0), + IPv6 => (others => 0), + IPv6_Subnet => (others => 0))); + + Seize (Interfaces_Lock); + for I in Interfaces'Range loop + if Interfaces (I).Handle /= Devices.Error_Handle then + Len := Len + 1; + if Curr_Index < Buffer'Length then + Buffer (Buffer'First + Curr_Index).Handle := + Interfaces (I).Handle; + Buffer (Buffer'First + Curr_Index).Is_Blocked := + Interfaces (I).Is_Blocked; + Buffer (Buffer'First + Curr_Index).MAC := Interfaces (I).MAC; + + ARP.Lookup + (Buffer (Buffer'First + Curr_Index).MAC, + Buffer (Buffer'First + Curr_Index).IPv4, + Buffer (Buffer'First + Curr_Index).IPv4_Subnet); + ARP.Lookup + (Buffer (Buffer'First + Curr_Index).MAC, + Buffer (Buffer'First + Curr_Index).IPv6, + Buffer (Buffer'First + Curr_Index).IPv6_Subnet); + + Curr_Index := Curr_Index + 1; + end if; + end if; + end loop; + Release (Interfaces_Lock); + end List_Interfaces; +end Networking.Interfaces; diff --git a/source/networking/networking-interfaces.ads b/source/networking/networking-interfaces.ads new file mode 100644 index 0000000..67851d9 --- /dev/null +++ b/source/networking/networking-interfaces.ads @@ -0,0 +1,107 @@ +-- networking-interfaces.ads: Networking interface management. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Devices; use Devices; +with Networking.ARP; + +package Networking.Interfaces is + -- Ironclad depends on userland to register networking interfaces for + -- sockets to be created with them. + + -- Maximum number of interfaces. + Max_Interface_Count : constant Natural; + + -- Register a device as a networking interface. + -- The kernel will figure out the supported protocols and addresses by + -- using the standard low-level networking interface. + -- All interfaces are added blocked, must be unblocked before use. + -- @param Interfaced Device to try to use a a networking interface. + -- @param Success True in success, False in failure. + procedure Register_Interface + (Interfaced : Devices.Device_Handle; + IPv4 : IPv4_Address; + IPv4_Subnet : IPv4_Address; + IPv6 : IPv6_Address; + IPv6_Subnet : IPv6_Address; + Success : out Boolean); + + -- Fetch the registered address of an interface. + procedure Get_Interface_Address + (Interfaced : Devices.Device_Handle; + IP : out IPv4_Address) + with Pre => ARP.Is_Initialized; + + procedure Get_Interface_Address + (Interfaced : Devices.Device_Handle; + IP : out IPv6_Address) + with Pre => ARP.Is_Initialized; + + -- Block or unblock an interface. + -- @param Interfaced Device to modify. + -- @param Is_Blocked True for blocking broadcast, False for not doing so. + -- @param Success True in success, False in failure (not found). + procedure Block + (Interfaced : Devices.Device_Handle; + Is_Blocked : Boolean; + Success : out Boolean); + + -- Fetch a registered interface device by address. + procedure Get_Suitable_Interface + (IP : IPv4_Address; + Interfaced : out Devices.Device_Handle) + with Pre => ARP.Is_Initialized; + + procedure Get_Suitable_Interface + (IP : IPv6_Address; + Interfaced : out Devices.Device_Handle) + with Pre => ARP.Is_Initialized; + + procedure Modify_Addresses + (Interfaced : Devices.Device_Handle; + IP : IPv4_Address; + IP_Subnet : IPv4_Address; + Success : out Boolean) + with Pre => ARP.Is_Initialized; + + procedure Modify_Addresses + (Interfaced : Devices.Device_Handle; + IP : IPv6_Address; + IP_Subnet : IPv6_Address; + Success : out Boolean) + with Pre => ARP.Is_Initialized; + + -- Information reported about an interface. + type Interface_Info is record + Handle : Devices.Device_Handle; + Is_Blocked : Boolean; + MAC : MAC_Address; + IPv4 : IPv4_Address; + IPv4_Subnet : IPv4_Address; + IPv6 : IPv6_Address; + IPv6_Subnet : IPv6_Address; + end record; + type Interface_Arr is array (Natural range <>) of Interface_Info; + + -- List all registered interfaces as well as their attributes. + -- @param Buffer Buffer to write to. + -- @param Len Written count, even if it doesnt fit. + procedure List_Interfaces (Buffer : out Interface_Arr; Len : out Natural) + with Pre => ARP.Is_Initialized; + +private + + Max_Interface_Count : constant Natural := 5; +end Networking.Interfaces; diff --git a/source/networking/networking-ipv4.adb b/source/networking/networking-ipv4.adb new file mode 100644 index 0000000..95c94fd --- /dev/null +++ b/source/networking/networking-ipv4.adb @@ -0,0 +1,41 @@ +-- networking-ipv4.adb: IPv4 support. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Networking.IPv4 is + pragma Suppress (All_Checks); -- Unit passes GNATprove AoRTE. + + function Generate_Header + (Source_IP, Desto_IP : IPv4_Address; + Data_Length : Natural) return IPv4_Packet_Header + is + Size : constant Unsigned_16 := IPv4_Packet_Header'Size; + begin + return + (Version => 4, + IHL => 5, + DSCP => 0, + ECN => 0, + Total_Length => (Size / 8) + Unsigned_16 (Data_Length), + Identification => 0, + Flags => 0, + Fragment_Offset => 0, + Time_To_Live => Unsigned_8'Last, + Protocol => 0, + Header_Checksum => 0, + Source_IP => Source_IP, + Destination_IP => Desto_IP); + end Generate_Header; +end Networking.IPv4; diff --git a/source/networking/networking-ipv4.ads b/source/networking/networking-ipv4.ads new file mode 100644 index 0000000..a3580ab --- /dev/null +++ b/source/networking/networking-ipv4.ads @@ -0,0 +1,67 @@ +-- networking-ipv4.ads: IPv4 support. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; + +package Networking.IPv4 is + -- Structure of an IPv4 header. + type Unsigned_2 is mod 2**2; + type Unsigned_3 is mod 2**3; + type Unsigned_4 is mod 2**4; + type Unsigned_6 is mod 2**6; + type Unsigned_13 is mod 2**13; + + -- Little does GNAT know, byte arrays dont have endianness... + pragma Warnings (Off, "scalar storage order specified"); + type IPv4_Packet_Header is record + Version : Unsigned_4; + IHL : Unsigned_4; + DSCP : Unsigned_6; + ECN : Unsigned_2; + Total_Length : Unsigned_16; + Identification : Unsigned_16; + Flags : Unsigned_3; + Fragment_Offset : Unsigned_13; + Time_To_Live : Unsigned_8; + Protocol : Unsigned_8; + Header_Checksum : Unsigned_16; + Source_IP : IPv4_Address; + Destination_IP : IPv4_Address; + end record with Size => 160, Bit_Order => System.High_Order_First, + Scalar_Storage_Order => System.High_Order_First; + for IPv4_Packet_Header use record + Version at 0 range 0 .. 3; + IHL at 0 range 4 .. 7; + DSCP at 1 range 0 .. 5; + ECN at 1 range 6 .. 7; + Total_Length at 2 range 0 .. 15; + Identification at 4 range 0 .. 15; + Flags at 6 range 0 .. 2; + Fragment_Offset at 6 range 3 .. 15; + Time_To_Live at 8 range 0 .. 7; + Protocol at 9 range 0 .. 7; + Header_Checksum at 10 range 0 .. 15; + Source_IP at 12 range 0 .. 31; + Destination_IP at 16 range 0 .. 31; + end record; + pragma Warnings (On, "scalar storage order specified"); + + function Generate_Header + (Source_IP, Desto_IP : IPv4_Address; + Data_Length : Natural) return IPv4_Packet_Header + with Pre => Data_Length <= + Natural (Unsigned_16'Last - (IPv4_Packet_Header'Size / 8)); +end Networking.IPv4; diff --git a/source/networking/networking-ipv6.adb b/source/networking/networking-ipv6.adb new file mode 100644 index 0000000..446c16a --- /dev/null +++ b/source/networking/networking-ipv6.adb @@ -0,0 +1,35 @@ +-- networking-ipv6.adb: IPv6 support. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Networking.IPv6 is + pragma Suppress (All_Checks); -- Unit passes GNATprove AoRTE. + + function Generate_Header + (Source_IP, Desto_IP : IPv6_Address; + Data_Length : Natural) return IPv6_Packet_Header + is + begin + return + (Version => 6, + Trafic_Class => 0, + Flow_Label => 0, + Payload_Length => Unsigned_16 (Data_Length), + Next_Header => 6, -- Placeholder. + Hop_Limit => Unsigned_8'Last, + Source_IP => Source_IP, + Destination_IP => Desto_IP); + end Generate_Header; +end Networking.IPv6; diff --git a/source/networking/networking-ipv6.ads b/source/networking/networking-ipv6.ads new file mode 100644 index 0000000..4780339 --- /dev/null +++ b/source/networking/networking-ipv6.ads @@ -0,0 +1,54 @@ +-- networking-ipv6.ads: IPv6 support. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; + +package Networking.IPv6 is + -- Structure of an IPv6 header. + type Unsigned_4 is mod 2**4; + type Unsigned_20 is mod 2**20; + + -- Little does GNAT know, byte arrays dont have endianness... + pragma Warnings (Off, "scalar storage order specified"); + type IPv6_Packet_Header is record + Version : Unsigned_4; + Trafic_Class : Unsigned_8; + Flow_Label : Unsigned_20; + Payload_Length : Unsigned_16; + Next_Header : Unsigned_8; + Hop_Limit : Unsigned_8; + Source_IP : IPv6_Address; + Destination_IP : IPv6_Address; + end record with Size => 320, Bit_Order => System.High_Order_First, + Scalar_Storage_Order => System.High_Order_First; + for IPv6_Packet_Header use record + Version at 0 range 0 .. 3; + Trafic_Class at 0 range 4 .. 11; + Flow_Label at 0 range 12 .. 31; + Payload_Length at 4 range 0 .. 15; + Next_Header at 6 range 0 .. 7; + Hop_Limit at 7 range 0 .. 7; + Source_IP at 8 range 0 .. 127; + Destination_IP at 24 range 0 .. 127; + end record; + pragma Warnings (On, "scalar storage order specified"); + + function Generate_Header + (Source_IP, Desto_IP : IPv6_Address; + Data_Length : Natural) return IPv6_Packet_Header + with Pre => Data_Length <= + Natural (Unsigned_16'Last - (IPv6_Packet_Header'Size / 8)); +end Networking.IPv6; diff --git a/source/networking/networking.adb b/source/networking/networking.adb new file mode 100644 index 0000000..c49b6c0 --- /dev/null +++ b/source/networking/networking.adb @@ -0,0 +1,51 @@ +-- networking.adb: Specification of networking library. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Characters.Latin_1; + +package body Networking is + pragma Suppress (All_Checks); -- Unit passes GNATprove AoRTE. + + procedure Get_Hostname (Name : out String; Length : out Natural) is + begin + Name := (others => Ada.Characters.Latin_1.NUL); + + if Name'Length < Hostname_Length then + Length := Name'Length; + else + Length := Hostname_Length; + end if; + + Seize (Hostname_Lock); + Name (Name'First .. Name'First + Length - 1) := Hostname (1 .. Length); + Release (Hostname_Lock); + end Get_Hostname; + + procedure Set_Hostname (Name : String; Success : out Boolean) is + begin + if Name'Length = 0 or Name'Length > Hostname'Length then + Success := False; + return; + end if; + + Seize (Hostname_Lock); + Hostname_Length := Name'Length; + Hostname (1 .. Name'Length) := Name; + Release (Hostname_Lock); + Success := True; + end Set_Hostname; +end Networking; + diff --git a/source/networking/networking.ads b/source/networking/networking.ads new file mode 100644 index 0000000..e1c8c65 --- /dev/null +++ b/source/networking/networking.ads @@ -0,0 +1,55 @@ +-- networking.ads: Networking library. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Lib.Synchronization; use Lib.Synchronization; + +package Networking is + -- Networking types. + type MAC_Address is array (1 .. 6) of Unsigned_8; + type IPv4_Address is array (1 .. 4) of Unsigned_8; + type IPv6_Address is array (1 .. 16) of Unsigned_8; + type IPv4_Port is new Unsigned_16; + type IPv6_Port is new Unsigned_16; + + -- Standard submasks. + IPv4_8_Submask : constant IPv4_Address := (255, 0, 0, 0); + IPv6_128_Submask : constant IPv6_Address := (others => 16#FF#); + ---------------------------------------------------------------------------- + -- Maximum size of a hostname. + Hostname_Max_Len : constant Natural; + + -- Fetch the system's hostname. + -- @param Name Buffer to write the hostname. + -- @param Length Length of the hostname, even if it doesn't fit. + procedure Get_Hostname (Name : out String; Length : out Natural) + with Pre => Name'Length /= 0 and then + Name'Last <= Natural'Last - Hostname_Max_Len; + + -- Set the system's hostname. + -- @param Name Hostname to set; + -- @return True on success, False on failure. + procedure Set_Hostname (Name : String; Success : out Boolean); + +private + + Hostname_Max_Len : constant Natural := 255; + + Hostname_Lock : aliased Binary_Semaphore := Unlocked_Semaphore; + Hostname_Length : Natural range 0 .. Hostname_Max_Len := 4; + Hostname : String (1 .. Hostname_Max_Len) := "none" & (1 .. 251 => ' '); + +end Networking; diff --git a/source/pragmas.adc b/source/pragmas.adc new file mode 100644 index 0000000..2f56b0f --- /dev/null +++ b/source/pragmas.adc @@ -0,0 +1,45 @@ +-- pragmas.adc: Project pragmas. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +-- Resource to check meaning: https://gcc.gnu.org/onlinedocs/gnat_rm.pdf + +pragma Restrictions (No_Obsolescent_Features); +pragma Restrictions (No_Elaboration_Code); +pragma Restrictions (No_Floating_Point); +pragma Restrictions (No_Finalization); +pragma Restrictions (No_Secondary_Stack); +pragma Restrictions (No_Exception_Propagation); +pragma Restrictions (No_Tasking); +pragma Restrictions (No_Protected_Types); +pragma Restrictions (No_Delay); +pragma Restrictions (No_Dispatch); +pragma Restrictions (No_Implicit_Dynamic_Code); +pragma Ada_2022; +pragma SPARK_Mode (On); + +-- Disable these warnings. +-- +-- The first one is because every function that does not have a 'when others' +-- exception section will just generate that warning, and thats not necesarily +-- something we want to do when we want to remove exceptions in the long run +-- from the whole kernel as part of formal verification, and until we do +-- that it actually makes reading compiler outputs quite hard. +-- +-- The second one is just that Ada 2022 generates those warnings and going +-- thru the whole kernel to replace () for [] with no obvious gain past that +-- is a bit absurd. +pragma Warnings (Off, "may call Last_Chance_Handler"); +pragma Warnings (Off, "array aggregate using () is an obsolescent syntax"); diff --git a/source/rts/a-charac.ads b/source/rts/a-charac.ads new file mode 100644 index 0000000..67484e1 --- /dev/null +++ b/source/rts/a-charac.ads @@ -0,0 +1,12 @@ +-- a-charac.ads: Root character library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Ada.Characters with Pure is +end Ada.Characters; diff --git a/source/rts/a-chlat1.ads b/source/rts/a-chlat1.ads new file mode 100644 index 0000000..b5d759d --- /dev/null +++ b/source/rts/a-chlat1.ads @@ -0,0 +1,247 @@ +-- a-chlat1.ads: Latin_1 character library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Ada.Characters.Latin_1 with Pure is + -- Control Characters + NUL : constant Character := Character'Val (0); + SOH : constant Character := Character'Val (1); + STX : constant Character := Character'Val (2); + ETX : constant Character := Character'Val (3); + EOT : constant Character := Character'Val (4); + ENQ : constant Character := Character'Val (5); + ACK : constant Character := Character'Val (6); + BEL : constant Character := Character'Val (7); + BS : constant Character := Character'Val (8); + HT : constant Character := Character'Val (9); + LF : constant Character := Character'Val (10); + VT : constant Character := Character'Val (11); + FF : constant Character := Character'Val (12); + CR : constant Character := Character'Val (13); + SO : constant Character := Character'Val (14); + SI : constant Character := Character'Val (15); + DLE : constant Character := Character'Val (16); + DC1 : constant Character := Character'Val (17); + DC2 : constant Character := Character'Val (18); + DC3 : constant Character := Character'Val (19); + DC4 : constant Character := Character'Val (20); + NAK : constant Character := Character'Val (21); + SYN : constant Character := Character'Val (22); + ETB : constant Character := Character'Val (23); + CAN : constant Character := Character'Val (24); + EM : constant Character := Character'Val (25); + SUB : constant Character := Character'Val (26); + ESC : constant Character := Character'Val (27); + FS : constant Character := Character'Val (28); + GS : constant Character := Character'Val (29); + RS : constant Character := Character'Val (30); + US : constant Character := Character'Val (31); + + -- ISO 646 Graphic Characters + Space : constant Character := ' '; -- Character'Val(32) + Exclamation : constant Character := '!'; -- Character'Val(33) + Quotation : constant Character := '"'; -- Character'Val(34) + Number_Sign : constant Character := '#'; -- Character'Val(35) + Dollar_Sign : constant Character := '$'; -- Character'Val(36) + Percent_Sign : constant Character := '%'; -- Character'Val(37) + Ampersand : constant Character := '&'; -- Character'Val(38) + Apostrophe : constant Character := '''; -- Character'Val(39) + Left_Parenthesis : constant Character := '('; -- Character'Val(40) + Right_Parenthesis : constant Character := ')'; -- Character'Val(41) + Asterisk : constant Character := '*'; -- Character'Val(42) + Plus_Sign : constant Character := '+'; -- Character'Val(43) + Comma : constant Character := ','; -- Character'Val(44) + Hyphen : constant Character := '-'; -- Character'Val(45) + Minus_Sign : Character renames Hyphen; + Full_Stop : constant Character := '.'; -- Character'Val(46) + Solidus : constant Character := '/'; -- Character'Val(47) + Colon : constant Character := ':'; -- Character'Val(58) + Semicolon : constant Character := ';'; -- Character'Val(59) + Less_Than_Sign : constant Character := '<'; -- Character'Val(60) + Equals_Sign : constant Character := '='; -- Character'Val(61) + Greater_Than_Sign : constant Character := '>'; -- Character'Val(62) + Question : constant Character := '?'; -- Character'Val(63) + Commercial_At : constant Character := '@'; -- Character'Val(64) + Left_Square_Bracket : constant Character := '['; -- Character'Val (91) + Reverse_Solidus : constant Character := '\'; -- Character'Val (92) + Right_Square_Bracket : constant Character := ']'; -- Character'Val (93) + Circumflex : constant Character := '^'; -- Character'Val (94) + Low_Line : constant Character := '_'; -- Character'Val (95) + Grave : constant Character := '`'; -- Character'Val (96) + LC_A : constant Character := 'a'; -- Character'Val (97) + LC_B : constant Character := 'b'; -- Character'Val (98) + LC_C : constant Character := 'c'; -- Character'Val (99) + LC_D : constant Character := 'd'; -- Character'Val (100) + LC_E : constant Character := 'e'; -- Character'Val (101) + LC_F : constant Character := 'f'; -- Character'Val (102) + LC_G : constant Character := 'g'; -- Character'Val (103) + LC_H : constant Character := 'h'; -- Character'Val (104) + LC_I : constant Character := 'i'; -- Character'Val (105) + LC_J : constant Character := 'j'; -- Character'Val (106) + LC_K : constant Character := 'k'; -- Character'Val (107) + LC_L : constant Character := 'l'; -- Character'Val (108) + LC_M : constant Character := 'm'; -- Character'Val (109) + LC_N : constant Character := 'n'; -- Character'Val (110) + LC_O : constant Character := 'o'; -- Character'Val (111) + LC_P : constant Character := 'p'; -- Character'Val (112) + LC_Q : constant Character := 'q'; -- Character'Val (113) + LC_R : constant Character := 'r'; -- Character'Val (114) + LC_S : constant Character := 's'; -- Character'Val (115) + LC_T : constant Character := 't'; -- Character'Val (116) + LC_U : constant Character := 'u'; -- Character'Val (117) + LC_V : constant Character := 'v'; -- Character'Val (118) + LC_W : constant Character := 'w'; -- Character'Val (119) + LC_X : constant Character := 'x'; -- Character'Val (120) + LC_Y : constant Character := 'y'; -- Character'Val (121) + LC_Z : constant Character := 'z'; -- Character'Val (122) + Left_Curly_Bracket : constant Character := '{'; -- Character'Val (123) + Vertical_Line : constant Character := '|'; -- Character'Val (124) + Right_Curly_Bracket : constant Character := '}'; -- Character'Val (125) + Tilde : constant Character := '~'; -- Character'Val (126) + DEL : constant Character := Character'Val (127); + + -- ISO 6429 Control Characters. + IS4 : Character renames FS; + IS3 : Character renames GS; + IS2 : Character renames RS; + IS1 : Character renames US; + Reserved_128 : constant Character := Character'Val (128); + Reserved_129 : constant Character := Character'Val (129); + BPH : constant Character := Character'Val (130); + NBH : constant Character := Character'Val (131); + Reserved_132 : constant Character := Character'Val (132); + NEL : constant Character := Character'Val (133); + SSA : constant Character := Character'Val (134); + ESA : constant Character := Character'Val (135); + HTS : constant Character := Character'Val (136); + HTJ : constant Character := Character'Val (137); + VTS : constant Character := Character'Val (138); + PLD : constant Character := Character'Val (139); + PLU : constant Character := Character'Val (140); + RI : constant Character := Character'Val (141); + SS2 : constant Character := Character'Val (142); + SS3 : constant Character := Character'Val (143); + DCS : constant Character := Character'Val (144); + PU1 : constant Character := Character'Val (145); + PU2 : constant Character := Character'Val (146); + STS : constant Character := Character'Val (147); + CCH : constant Character := Character'Val (148); + MW : constant Character := Character'Val (149); + SPA : constant Character := Character'Val (150); + EPA : constant Character := Character'Val (151); + SOS : constant Character := Character'Val (152); + Reserved_153 : constant Character := Character'Val (153); + SCI : constant Character := Character'Val (154); + CSI : constant Character := Character'Val (155); + ST : constant Character := Character'Val (156); + OSC : constant Character := Character'Val (157); + PM : constant Character := Character'Val (158); + APC : constant Character := Character'Val (159); + + -- Other graphic characters. + No_Break_Space : constant Character := Character'Val (160); + NBSP : Character renames No_Break_Space; + Inverted_Exclamation : constant Character := Character'Val (161); + Cent_Sign : constant Character := Character'Val (162); + Pound_Sign : constant Character := Character'Val (163); + Currency_Sign : constant Character := Character'Val (164); + Yen_Sign : constant Character := Character'Val (165); + Broken_Bar : constant Character := Character'Val (166); + Section_Sign : constant Character := Character'Val (167); + Diaeresis : constant Character := Character'Val (168); + Copyright_Sign : constant Character := Character'Val (169); + Feminine_Ordinal_Indicator : constant Character := Character'Val (170); + Left_Angle_Quotation : constant Character := Character'Val (171); + Not_Sign : constant Character := Character'Val (172); + Soft_Hyphen : constant Character := Character'Val (173); + Registered_Trade_Mark_Sign : constant Character := Character'Val (174); + Macron : constant Character := Character'Val (175); + Degree_Sign : constant Character := Character'Val (176); + Ring_Above : Character renames Degree_Sign; + Plus_Minus_Sign : constant Character := Character'Val (177); + Superscript_Two : constant Character := Character'Val (178); + Superscript_Three : constant Character := Character'Val (179); + Acute : constant Character := Character'Val (180); + Micro_Sign : constant Character := Character'Val (181); + Pilcrow_Sign : constant Character := Character'Val (182); + Paragraph_Sign : Character renames Pilcrow_Sign; + Middle_Dot : constant Character := Character'Val (183); + Cedilla : constant Character := Character'Val (184); + Superscript_One : constant Character := Character'Val (185); + Masculine_Ordinal_Indicator : constant Character := Character'Val (186); + Right_Angle_Quotation : constant Character := Character'Val (187); + Fraction_One_Quarter : constant Character := Character'Val (188); + Fraction_One_Half : constant Character := Character'Val (189); + Fraction_Three_Quarters : constant Character := Character'Val (190); + Inverted_Question : constant Character := Character'Val (191); + UC_A_Grave : constant Character := Character'Val (192); + UC_A_Acute : constant Character := Character'Val (193); + UC_A_Circumflex : constant Character := Character'Val (194); + UC_A_Tilde : constant Character := Character'Val (195); + UC_A_Diaeresis : constant Character := Character'Val (196); + UC_A_Ring : constant Character := Character'Val (197); + UC_AE_Diphthong : constant Character := Character'Val (198); + UC_C_Cedilla : constant Character := Character'Val (199); + UC_E_Grave : constant Character := Character'Val (200); + UC_E_Acute : constant Character := Character'Val (201); + UC_E_Circumflex : constant Character := Character'Val (202); + UC_E_Diaeresis : constant Character := Character'Val (203); + UC_I_Grave : constant Character := Character'Val (204); + UC_I_Acute : constant Character := Character'Val (205); + UC_I_Circumflex : constant Character := Character'Val (206); + UC_I_Diaeresis : constant Character := Character'Val (207); + UC_Icelandic_Eth : constant Character := Character'Val (208); + UC_N_Tilde : constant Character := Character'Val (209); + UC_O_Grave : constant Character := Character'Val (210); + UC_O_Acute : constant Character := Character'Val (211); + UC_O_Circumflex : constant Character := Character'Val (212); + UC_O_Tilde : constant Character := Character'Val (213); + UC_O_Diaeresis : constant Character := Character'Val (214); + Multiplication_Sign : constant Character := Character'Val (215); + UC_O_Oblique_Stroke : constant Character := Character'Val (216); + UC_U_Grave : constant Character := Character'Val (217); + UC_U_Acute : constant Character := Character'Val (218); + UC_U_Circumflex : constant Character := Character'Val (219); + UC_U_Diaeresis : constant Character := Character'Val (220); + UC_Y_Acute : constant Character := Character'Val (221); + UC_Icelandic_Thorn : constant Character := Character'Val (222); + LC_German_Sharp_S : constant Character := Character'Val (223); + LC_A_Grave : constant Character := Character'Val (224); + LC_A_Acute : constant Character := Character'Val (225); + LC_A_Circumflex : constant Character := Character'Val (226); + LC_A_Tilde : constant Character := Character'Val (227); + LC_A_Diaeresis : constant Character := Character'Val (228); + LC_A_Ring : constant Character := Character'Val (229); + LC_AE_Diphthong : constant Character := Character'Val (230); + LC_C_Cedilla : constant Character := Character'Val (231); + LC_E_Grave : constant Character := Character'Val (232); + LC_E_Acute : constant Character := Character'Val (233); + LC_E_Circumflex : constant Character := Character'Val (234); + LC_E_Diaeresis : constant Character := Character'Val (235); + LC_I_Grave : constant Character := Character'Val (236); + LC_I_Acute : constant Character := Character'Val (237); + LC_I_Circumflex : constant Character := Character'Val (238); + LC_I_Diaeresis : constant Character := Character'Val (239); + LC_Icelandic_Eth : constant Character := Character'Val (240); + LC_N_Tilde : constant Character := Character'Val (241); + LC_O_Grave : constant Character := Character'Val (242); + LC_O_Acute : constant Character := Character'Val (243); + LC_O_Circumflex : constant Character := Character'Val (244); + LC_O_Tilde : constant Character := Character'Val (245); + LC_O_Diaeresis : constant Character := Character'Val (246); + Division_Sign : constant Character := Character'Val (247); + LC_O_Oblique_Stroke : constant Character := Character'Val (248); + LC_U_Grave : constant Character := Character'Val (249); + LC_U_Acute : constant Character := Character'Val (250); + LC_U_Circumflex : constant Character := Character'Val (251); + LC_U_Diaeresis : constant Character := Character'Val (252); + LC_Y_Acute : constant Character := Character'Val (253); + LC_Icelandic_Thorn : constant Character := Character'Val (254); + LC_Y_Diaeresis : constant Character := Character'Val (255); +end Ada.Characters.Latin_1; diff --git a/source/rts/a-unccon.ads b/source/rts/a-unccon.ads new file mode 100644 index 0000000..1926802 --- /dev/null +++ b/source/rts/a-unccon.ads @@ -0,0 +1,17 @@ +-- a-unccon.ads: Unchecked conversion library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +generic + type Source (<>) is limited private; + type Target (<>) is limited private; +function Ada.Unchecked_Conversion (S : Source) return Target with Pure; + +-- If this go in the with instead, it detonates, idk why. +pragma Import (Intrinsic, Ada.Unchecked_Conversion); diff --git a/source/rts/a-uncdea.ads b/source/rts/a-uncdea.ads new file mode 100644 index 0000000..fbce7d7 --- /dev/null +++ b/source/rts/a-uncdea.ads @@ -0,0 +1,18 @@ +-- a-uncdea.ads: Unchecked deallocation library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +generic + type Object (<>) is limited private; + type Name is access Object; +procedure Ada.Unchecked_Deallocation (X : in out Name) + with Preelaborate, Depends => (X => null, null => X), Post => X = null; + +-- If this go in the with instead, it detonates, idk why. +pragma Import (Intrinsic, Ada.Unchecked_Deallocation); diff --git a/source/rts/ada.ads b/source/rts/ada.ads new file mode 100644 index 0000000..f402441 --- /dev/null +++ b/source/rts/ada.ads @@ -0,0 +1,12 @@ +-- ada.ads: Root Ada library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Ada with Pure is +end Ada; diff --git a/source/rts/i-c.ads b/source/rts/i-c.ads new file mode 100644 index 0000000..286369c --- /dev/null +++ b/source/rts/i-c.ads @@ -0,0 +1,41 @@ +-- i-c.ads: C interface library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Interfaces.C with Pure is + -- Broad limits from that might be useful. + CHAR_BIT : constant := 8; + SCHAR_MIN : constant := -128; + SCHAR_MAX : constant := 127; + UCHAR_MAX : constant := 255; + + -- The bulk of the types. + type int is new Integer; + type short is new Short_Integer; + type long is range -(2 ** (Long_Integer'Size - Integer'(1))) .. + +(2 ** (Long_Integer'Size - Integer'(1))) - 1; + type signed_char is range SCHAR_MIN .. SCHAR_MAX with Size => CHAR_BIT; + type unsigned is mod 2 ** int'Size; + type unsigned_short is mod 2 ** short'Size; + type unsigned_long is mod 2 ** long'Size; + type unsigned_char is mod (UCHAR_MAX + 1) with Size => CHAR_BIT; + subtype plain_char is unsigned_char; + type ptrdiff_t is range -(2 ** (Standard'Address_Size - Integer'(1))) .. + +(2 ** (Standard'Address_Size - Integer'(1)) - 1); + type size_t is mod 2 ** Standard'Address_Size; + type char is new Character; + type char_array is array (size_t range <>) of aliased char with + Component_Size => CHAR_BIT; + type wchar_t is new Wide_Character with Size => Standard'Wchar_T_Size; + type wchar_array is array (size_t range <>) of aliased wchar_t; + type char16_t is new Wide_Character; + type char16_array is array (size_t range <>) of aliased char16_t; + type char32_t is new Wide_Wide_Character; + type char32_array is array (size_t range <>) of aliased char32_t; +end Interfaces.C; diff --git a/source/rts/interfac.ads b/source/rts/interfac.ads new file mode 100644 index 0000000..cb3b3bf --- /dev/null +++ b/source/rts/interfac.ads @@ -0,0 +1,120 @@ +-- interfac.ads: Interface datatypes. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package Interfaces with Pure is + type Integer_8 is range -2 ** 7 .. 2 ** 7 - 1 with Size => 8; + type Integer_16 is range -2 ** 15 .. 2 ** 15 - 1 with Size => 16; + type Integer_32 is range -2 ** 31 .. 2 ** 31 - 1 with Size => 32; + type Integer_64 is range -2 ** 63 .. 2 ** 63 - 1 with Size => 64; + type Unsigned_8 is mod 2 ** 8 with Size => 8; + type Unsigned_16 is mod 2 ** 16 with Size => 16; + type Unsigned_32 is mod 2 ** 32 with Size => 32; + type Unsigned_64 is mod 2 ** 64 with Size => 64; + + function Shift_Left + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Shift_Right + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Shift_Right_Arithmetic + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Rotate_Left + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Rotate_Right + (Value : Unsigned_8; + Amount : Natural) return Unsigned_8 + with Import, Convention => Intrinsic, Static; + + function Shift_Left + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Shift_Right + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Shift_Right_Arithmetic + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Rotate_Left + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Rotate_Right + (Value : Unsigned_16; + Amount : Natural) return Unsigned_16 + with Import, Convention => Intrinsic, Static; + + function Shift_Left + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Shift_Right + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Shift_Right_Arithmetic + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Rotate_Left + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Rotate_Right + (Value : Unsigned_32; + Amount : Natural) return Unsigned_32 + with Import, Convention => Intrinsic, Static; + + function Shift_Left + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; + + function Shift_Right + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; + + function Shift_Right_Arithmetic + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; + + function Rotate_Left + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; + + function Rotate_Right + (Value : Unsigned_64; + Amount : Natural) return Unsigned_64 + with Import, Convention => Intrinsic, Static; +end Interfaces; diff --git a/source/rts/riscv64-limine/system.ads b/source/rts/riscv64-limine/system.ads new file mode 100644 index 0000000..7d907d6 --- /dev/null +++ b/source/rts/riscv64-limine/system.ads @@ -0,0 +1,73 @@ +-- system.ads: System definitions. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package System with Pure is + type Name is (SYSTEM_NAME_RISCV64_LIMINE_IRONCLAD); + System_Name : constant Name := SYSTEM_NAME_RISCV64_LIMINE_IRONCLAD; + + -- System-Dependent limits. + Min_Int : constant := -2 ** (Standard'Max_Integer_Size - 1); + Max_Int : constant := 2 ** (Standard'Max_Integer_Size - 1) - 1; + Max_Binary_Modulus : constant := 2 ** Standard'Max_Integer_Size; + Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; + Storage_Unit : constant := 8; + Word_Size : constant := Standard'Word_Size; + Memory_Size : constant := 2 ** Long_Integer'Size; + + -- Address shinenigans + type Address is private; + Null_Address : constant Address; + + function "<" (Left, Right : Address) return Boolean; + function "<=" (Left, Right : Address) return Boolean; + function ">" (Left, Right : Address) return Boolean; + function ">=" (Left, Right : Address) return Boolean; + function "=" (Left, Right : Address) return Boolean; + pragma Import (Intrinsic, "<"); + pragma Import (Intrinsic, "<="); + pragma Import (Intrinsic, ">"); + pragma Import (Intrinsic, ">="); + pragma Import (Intrinsic, "="); + + -- Bit-order shinenigans. + type Bit_Order is (High_Order_First, Low_Order_First); + Default_Bit_Order : constant Bit_Order := Low_Order_First; + +private + + type Address is mod Memory_Size; + Null_Address : constant Address := 0; + + -- Platform-defining parameters mandated by mister GNAT. + Backend_Divide_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; + Command_Line_Args : constant Boolean := False; + Configurable_Run_Time : constant Boolean := True; + Denorm : constant Boolean := True; + Duration_32_Bits : constant Boolean := False; + Exit_Status_Supported : constant Boolean := False; + Machine_Overflows : constant Boolean := False; + Machine_Rounds : constant Boolean := True; + Preallocated_Stacks : constant Boolean := False; + Signed_Zeros : constant Boolean := True; + Stack_Check_Default : constant Boolean := False; + Stack_Check_Probes : constant Boolean := False; + Stack_Check_Limits : constant Boolean := False; + Support_Aggregates : constant Boolean := True; + Support_Atomic_Primitives : constant Boolean := True; + Support_Composite_Assign : constant Boolean := True; + Support_Composite_Compare : constant Boolean := True; + Support_Long_Shifts : constant Boolean := True; + Always_Compatible_Rep : constant Boolean := False; + Suppress_Standard_Library : constant Boolean := True; + Use_Ada_Main_Program_Name : constant Boolean := False; + ZCX_By_Default : constant Boolean := False; + GCC_ZCX_Support : constant Boolean := False; +end System; diff --git a/source/rts/s-atacco.ads b/source/rts/s-atacco.ads new file mode 100644 index 0000000..154ecbd --- /dev/null +++ b/source/rts/s-atacco.ads @@ -0,0 +1,27 @@ +-- s-atacco.ads: Address to access conversions. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +generic + type Object (<>) is limited private; +package System.Address_To_Access_Conversions is + pragma Preelaborate; + pragma Compile_Time_Warning + (Object'Unconstrained_Array, + "Object is unconstrained array type, To_Pointer may not have bounds"); + + type Object_Pointer is access all Object with Size => Standard'Address_Size; + + function To_Pointer (Value : Address) return Object_Pointer; + function To_Address (Value : Object_Pointer) return Address + with SPARK_Mode => Off; + + pragma Import (Intrinsic, To_Pointer); + pragma Import (Intrinsic, To_Address); +end System.Address_To_Access_Conversions; diff --git a/source/rts/s-maccod.ads b/source/rts/s-maccod.ads new file mode 100644 index 0000000..c7dbe5e --- /dev/null +++ b/source/rts/s-maccod.ads @@ -0,0 +1,93 @@ +-- s-maccod.ads: Inline assembly utilities. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package System.Machine_Code with SPARK_Mode => Off, Pure is + -- All of this works inside GNAT, this is literally just placeholders + -- because Ada wants it this way. Names and everything are basically + -- forced. + + type Asm_Input_Operand is private; + type Asm_Output_Operand is private; + type Asm_Insn is private; + type Asm_Input_Operand_List is array (Integer range <>) of + Asm_Input_Operand; + type Asm_Output_Operand_List is array (Integer range <>) of + Asm_Output_Operand; + + No_Input_Operands : constant Asm_Input_Operand; + No_Output_Operands : constant Asm_Output_Operand; + + procedure Asm + (Template : String; + Outputs : Asm_Output_Operand_List; + Inputs : Asm_Input_Operand_List; + Clobber : String := ""; + Volatile : Boolean := False); + + procedure Asm + (Template : String; + Outputs : Asm_Output_Operand := No_Output_Operands; + Inputs : Asm_Input_Operand_List; + Clobber : String := ""; + Volatile : Boolean := False); + + procedure Asm + (Template : String; + Outputs : Asm_Output_Operand_List; + Inputs : Asm_Input_Operand := No_Input_Operands; + Clobber : String := ""; + Volatile : Boolean := False); + + procedure Asm + (Template : String; + Outputs : Asm_Output_Operand := No_Output_Operands; + Inputs : Asm_Input_Operand := No_Input_Operands; + Clobber : String := ""; + Volatile : Boolean := False); + + function Asm + (Template : String; + Outputs : Asm_Output_Operand_List; + Inputs : Asm_Input_Operand_List; + Clobber : String := ""; + Volatile : Boolean := False) return Asm_Insn; + + function Asm + (Template : String; + Outputs : Asm_Output_Operand := No_Output_Operands; + Inputs : Asm_Input_Operand_List; + Clobber : String := ""; + Volatile : Boolean := False) return Asm_Insn; + + function Asm + (Template : String; + Outputs : Asm_Output_Operand_List; + Inputs : Asm_Input_Operand := No_Input_Operands; + Clobber : String := ""; + Volatile : Boolean := False) return Asm_Insn; + + function Asm + (Template : String; + Outputs : Asm_Output_Operand := No_Output_Operands; + Inputs : Asm_Input_Operand := No_Input_Operands; + Clobber : String := ""; + Volatile : Boolean := False) return Asm_Insn; + + pragma Import (Intrinsic, Asm); + +private + + type Asm_Input_Operand is new Integer; + type Asm_Output_Operand is new Integer; + type Asm_Insn is new Integer; + + No_Input_Operands : constant Asm_Input_Operand := 0; + No_Output_Operands : constant Asm_Output_Operand := 0; +end System.Machine_Code; diff --git a/source/rts/s-stoele.adb b/source/rts/s-stoele.adb new file mode 100644 index 0000000..ca265b5 --- /dev/null +++ b/source/rts/s-stoele.adb @@ -0,0 +1,53 @@ +-- s-stoele.ads: Storage elements library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +with Ada.Unchecked_Conversion; + +package body System.Storage_Elements is + pragma Suppress (All_Checks); + + function To_Addr is new Ada.Unchecked_Conversion (Storage_Offset, Address); + function To_Off is new Ada.Unchecked_Conversion (Address, Storage_Offset); + + function To_Address (Value : Integer_Address) return Address is + begin + return Address (Value); + end To_Address; + + function To_Integer (Value : Address) return Integer_Address is + begin + return Integer_Address (Value); + end To_Integer; + + function "+" (Left : Address; Right : Storage_Offset) return Address is + begin + return To_Address (To_Integer (Left) + To_Integer (To_Addr (Right))); + end "+"; + + function "+" (Left : Storage_Offset; Right : Address) return Address is + begin + return To_Address (To_Integer (To_Addr (Left)) + To_Integer (Right)); + end "+"; + + function "-" (Left : Address; Right : Storage_Offset) return Address is + begin + return To_Address (To_Integer (Left) - To_Integer (To_Addr (Right))); + end "-"; + + function "-" (Left, Right : Address) return Storage_Offset is + begin + return To_Off (To_Address (To_Integer (Left) - To_Integer (Right))); + end "-"; + + function "mod" (L : Address; R : Storage_Offset) return Storage_Offset is + begin + return Storage_Offset (To_Integer (L) mod Integer_Address (R)); + end "mod"; +end System.Storage_Elements; diff --git a/source/rts/s-stoele.ads b/source/rts/s-stoele.ads new file mode 100644 index 0000000..6b7a2ec --- /dev/null +++ b/source/rts/s-stoele.ads @@ -0,0 +1,60 @@ +-- s-stoele.ads: Storage elements library. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package System.Storage_Elements with Pure is + type Storage_Offset is range + -(2 ** (Integer'(Standard'Address_Size) - 1)) .. + +(2 ** (Integer'(Standard'Address_Size) - 1)) - 1; + + subtype Storage_Count is Storage_Offset range 0 .. Storage_Offset'Last; + type Storage_Element is mod 2 ** Storage_Unit with Size => Storage_Unit; + + -- "This type is used by the expander to implement aggregate copy" + -- Sure, whatever... + pragma Universal_Aliasing (Storage_Element); + + function "+" (Left : Address; Right : Storage_Offset) return Address; + pragma Convention (Intrinsic, "+"); + pragma Inline_Always ("+"); + pragma Pure_Function ("+"); + + function "+" (Left : Storage_Offset; Right : Address) return Address; + pragma Convention (Intrinsic, "+"); + pragma Inline_Always ("+"); + pragma Pure_Function ("+"); + + function "-" (Left : Address; Right : Storage_Offset) return Address; + pragma Convention (Intrinsic, "-"); + pragma Inline_Always ("-"); + pragma Pure_Function ("-"); + + function "-" (Left, Right : Address) return Storage_Offset; + pragma Convention (Intrinsic, "-"); + pragma Inline_Always ("-"); + pragma Pure_Function ("-"); + + function "mod" (L : Address; R : Storage_Offset) return Storage_Offset + with Pre => R /= 0; + pragma Convention (Intrinsic, "mod"); + pragma Inline_Always ("mod"); + pragma Pure_Function ("mod"); + ---------------------------------------------------------------------------- + type Integer_Address is mod Memory_Size; + + function To_Address (Value : Integer_Address) return Address; + pragma Convention (Intrinsic, To_Address); + pragma Inline_Always (To_Address); + pragma Pure_Function (To_Address); + + function To_Integer (Value : Address) return Integer_Address; + pragma Convention (Intrinsic, To_Integer); + pragma Inline_Always (To_Integer); + pragma Pure_Function (To_Integer); +end System.Storage_Elements; diff --git a/source/rts/s-unstyp.ads b/source/rts/s-unstyp.ads new file mode 100644 index 0000000..ebf664c --- /dev/null +++ b/source/rts/s-unstyp.ads @@ -0,0 +1,246 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- S Y S T E M . U N S I G N E D _ T Y P E S -- +-- -- +-- S p e c -- +-- -- +-- Copyright (C) 1992-2023, Free Software Foundation, Inc. -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 3, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. -- +-- -- +-- As a special exception under Section 7 of GPL version 3, you are granted -- +-- additional permissions described in the GCC Runtime Library Exception, -- +-- version 3.1, as published by the Free Software Foundation. -- +-- -- +-- You should have received a copy of the GNU General Public License and -- +-- a copy of the GCC Runtime Library Exception along with this program; -- +-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- +-- . -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +-- This package contains definitions of standard unsigned types that +-- correspond in size to the standard signed types declared in Standard, +-- and (unlike the types in Interfaces) have corresponding names. It +-- also contains some related definitions for other specialized types +-- used by the compiler in connection with packed array types. + +package System.Unsigned_Types with Pure is + type Short_Short_Unsigned is mod 2 ** Short_Short_Integer'Size; + type Short_Unsigned is mod 2 ** Short_Integer'Size; + type Unsigned is mod 2 ** Integer'Size; + type Long_Unsigned is mod 2 ** Long_Integer'Size; + type Long_Long_Unsigned is mod 2 ** Long_Long_Integer'Size; + type Long_Long_Long_Unsigned is mod Max_Binary_Modulus; + + type Packed_Byte is mod 2 ** 8; + for Packed_Byte'Size use 8; + pragma Universal_Aliasing (Packed_Byte); + -- Component type for Packed_Bytes1, Packed_Bytes2 and Packed_Byte4 arrays. + -- As this type is used by the compiler to implement operations on user + -- packed array, it needs to be able to alias any type. + + type Packed_Bytes1 is array (Natural range <>) of aliased Packed_Byte; + for Packed_Bytes1'Alignment use 1; + for Packed_Bytes1'Component_Size use Packed_Byte'Size; + pragma Suppress_Initialization (Packed_Bytes1); + -- This is the type used to implement packed arrays where no alignment + -- is required. This includes the cases of 1,2,4 (where we use direct + -- masking operations), and all odd component sizes (where the clusters + -- are not aligned anyway, see, e.g. System.Pack_07 in file s-pack07 + -- for details. + + type Packed_Bytes2 is new Packed_Bytes1; + for Packed_Bytes2'Alignment use Integer'Min (2, Standard'Maximum_Alignment); + pragma Suppress_Initialization (Packed_Bytes2); + -- This is the type used to implement packed arrays where an alignment + -- of 2 (is possible) is helpful for maximum efficiency of the get and + -- set routines in the corresponding library unit. This is true of all + -- component sizes that are even but not divisible by 4 (other than 2 for + -- which we use direct masking operations). In such cases, the clusters + -- can be assumed to be 2-byte aligned if the array is aligned. See for + -- example System.Pack_10 in file s-pack10). + + type Packed_Bytes4 is new Packed_Bytes1; + for Packed_Bytes4'Alignment use Integer'Min (4, Standard'Maximum_Alignment); + pragma Suppress_Initialization (Packed_Bytes4); + -- This is the type used to implement packed arrays where an alignment + -- of 4 (if possible) is helpful for maximum efficiency of the get and + -- set routines in the corresponding library unit. This is true of all + -- component sizes that are divisible by 4 (other than powers of 2, which + -- are either handled by direct masking or not packed at all). In such + -- cases the clusters can be assumed to be 4-byte aligned if the array + -- is aligned (see System.Pack_12 in file s-pack12 as an example). + + type Rev_Packed_Bytes1 is new Packed_Bytes1; + pragma Suppress_Initialization (Rev_Packed_Bytes1); + -- This is equivalent to Packed_Bytes1, but for packed arrays with reverse + -- scalar storage order. But the Scalar_Storage_Order attribute cannot be + -- set directly here, see Exp_Pakd for more details. + + type Rev_Packed_Bytes2 is new Packed_Bytes2; + pragma Suppress_Initialization (Rev_Packed_Bytes2); + -- This is equivalent to Packed_Bytes2, but for packed arrays with reverse + -- scalar storage order. But the Scalar_Storage_Order attribute cannot be + -- set directly here, see Exp_Pakd for more details. + + type Rev_Packed_Bytes4 is new Packed_Bytes4; + pragma Suppress_Initialization (Rev_Packed_Bytes4); + -- This is equivalent to Packed_Bytes4, but for packed arrays with reverse + -- scalar storage order. But the Scalar_Storage_Order attribute cannot be + -- set directly here, see Exp_Pakd for more details. + + type Bits_1 is mod 2**1; + type Bits_2 is mod 2**2; + type Bits_4 is mod 2**4; + -- Types used for packed array conversions + + subtype Bytes_F is Packed_Bytes4 (1 .. Float'Size / 8); + -- Type used in implementation of Is_Negative intrinsic (see Exp_Intr) + + function Shift_Left + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Shift_Right + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Shift_Right_Arithmetic + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Rotate_Left + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Rotate_Right + (Value : Short_Short_Unsigned; + Amount : Natural) return Short_Short_Unsigned; + + function Shift_Left + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Shift_Right + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Shift_Right_Arithmetic + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Rotate_Left + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Rotate_Right + (Value : Short_Unsigned; + Amount : Natural) return Short_Unsigned; + + function Shift_Left + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Shift_Right + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Shift_Right_Arithmetic + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Rotate_Left + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Rotate_Right + (Value : Unsigned; + Amount : Natural) return Unsigned; + + function Shift_Left + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Shift_Right + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Shift_Right_Arithmetic + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Rotate_Left + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Rotate_Right + (Value : Long_Unsigned; + Amount : Natural) return Long_Unsigned; + + function Shift_Left + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Shift_Right + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Shift_Right_Arithmetic + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Rotate_Left + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Rotate_Right + (Value : Long_Long_Unsigned; + Amount : Natural) return Long_Long_Unsigned; + + function Shift_Left + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + function Shift_Right + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + function Shift_Right_Arithmetic + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + function Rotate_Left + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + function Rotate_Right + (Value : Long_Long_Long_Unsigned; + Amount : Natural) return Long_Long_Long_Unsigned; + + pragma Import (Intrinsic, Shift_Left); + pragma Import (Intrinsic, Shift_Right); + pragma Import (Intrinsic, Shift_Right_Arithmetic); + pragma Import (Intrinsic, Rotate_Left); + pragma Import (Intrinsic, Rotate_Right); + + -- The following definitions are obsolescent. They were needed by the + -- previous version of the compiler and runtime, but are not needed + -- by the current version. We retain them to help with bootstrap path + -- problems. Also they seem harmless, and if any user programs have + -- been using these types, why discombobulate them? + + subtype Packed_Bytes is Packed_Bytes4; + subtype Packed_Bytes_Unaligned is Packed_Bytes1; + +end System.Unsigned_Types; diff --git a/source/rts/x86_64-limine/system.ads b/source/rts/x86_64-limine/system.ads new file mode 100644 index 0000000..d230c49 --- /dev/null +++ b/source/rts/x86_64-limine/system.ads @@ -0,0 +1,73 @@ +-- system.ads: System definitions. +-- +-- This specification is derived from the Ada Reference Manual. In accordance +-- with the copyright of the original source, you can freely copy and modify +-- this specification, provided that if you redistribute a modified version, +-- any changes are clearly indicated. +-- +-- This file is based on the distribution by the GNAT project, which is +-- distributed under the GPLv3 with the GCC runtime exception. + +package System with Pure is + type Name is (SYSTEM_NAME_X86_64_LIMINE_IRONCLAD); + System_Name : constant Name := SYSTEM_NAME_X86_64_LIMINE_IRONCLAD; + + -- System-Dependent limits. + Min_Int : constant := -2 ** (Standard'Max_Integer_Size - 1); + Max_Int : constant := 2 ** (Standard'Max_Integer_Size - 1) - 1; + Max_Binary_Modulus : constant := 2 ** Standard'Max_Integer_Size; + Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; + Storage_Unit : constant := 8; + Word_Size : constant := Standard'Word_Size; + Memory_Size : constant := 2 ** Long_Integer'Size; + + -- Address shinenigans + type Address is private; + Null_Address : constant Address; + + function "<" (Left, Right : Address) return Boolean; + function "<=" (Left, Right : Address) return Boolean; + function ">" (Left, Right : Address) return Boolean; + function ">=" (Left, Right : Address) return Boolean; + function "=" (Left, Right : Address) return Boolean; + pragma Import (Intrinsic, "<"); + pragma Import (Intrinsic, "<="); + pragma Import (Intrinsic, ">"); + pragma Import (Intrinsic, ">="); + pragma Import (Intrinsic, "="); + + -- Bit-order shinenigans. + type Bit_Order is (High_Order_First, Low_Order_First); + Default_Bit_Order : constant Bit_Order := Low_Order_First; + +private + + type Address is mod Memory_Size; + Null_Address : constant Address := 0; + + -- Platform-defining parameters mandated by mister GNAT. + Backend_Divide_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; + Command_Line_Args : constant Boolean := False; + Configurable_Run_Time : constant Boolean := True; + Denorm : constant Boolean := True; + Duration_32_Bits : constant Boolean := False; + Exit_Status_Supported : constant Boolean := False; + Machine_Overflows : constant Boolean := False; + Machine_Rounds : constant Boolean := True; + Preallocated_Stacks : constant Boolean := False; + Signed_Zeros : constant Boolean := True; + Stack_Check_Default : constant Boolean := False; + Stack_Check_Probes : constant Boolean := False; + Stack_Check_Limits : constant Boolean := False; + Support_Aggregates : constant Boolean := True; + Support_Atomic_Primitives : constant Boolean := True; + Support_Composite_Assign : constant Boolean := True; + Support_Composite_Compare : constant Boolean := True; + Support_Long_Shifts : constant Boolean := True; + Always_Compatible_Rep : constant Boolean := False; + Suppress_Standard_Library : constant Boolean := True; + Use_Ada_Main_Program_Name : constant Boolean := False; + ZCX_By_Default : constant Boolean := False; + GCC_ZCX_Support : constant Boolean := False; +end System; diff --git a/source/scheduler.adb b/source/scheduler.adb new file mode 100644 index 0000000..092fff2 --- /dev/null +++ b/source/scheduler.adb @@ -0,0 +1,828 @@ +-- scheduler.adb: Thread scheduler. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with Lib.Synchronization; +with Lib.Panic; +with System.Storage_Elements; use System.Storage_Elements; +with Userland.Process; +with Arch; +with Arch.Local; +with Arch.Clocks; +with Arch.Snippets; +with Lib; +with Lib.Time; + +package body Scheduler is + Kernel_Stack_Size : constant := 16#2000#; + type Thread_Stack is array (Natural range <>) of Unsigned_8; + type Thread_Stack_64 is array (Natural range <>) of Unsigned_64; + type Kernel_Stack is array (1 .. Kernel_Stack_Size) of Unsigned_8; + type Kernel_Stack_Acc is access Kernel_Stack; + + type Thread_Cluster is record + Is_Present : Boolean; + Algorithm : Cluster_Algorithm; + RR_Quantum : Natural; + Is_Interruptible : Boolean; + Percentage : Natural range 0 .. 100; + Progress_Seconds : Unsigned_64; + Progress_Nanos : Unsigned_64; + end record; + type Cluster_Arr is array (TCID range 1 .. TCID'Last) of Thread_Cluster; + type Cluster_Arr_Acc is access Cluster_Arr; + + type Thread_Info is record + Is_Present : Boolean with Atomic; + Is_Running : Boolean with Atomic; + Path : String (1 .. 20); + Path_Len : Natural range 0 .. 20; + Nice : Niceness; + Cluster : TCID; + TCB_Pointer : System.Address; + PageMap : Arch.MMU.Page_Table_Acc; + Kernel_Stack : Kernel_Stack_Acc; + GP_State : Arch.Context.GP_Context; + FP_State : Arch.Context.FP_Context; + C_State : Arch.Context.Core_Context; + Process : Userland.Process.PID; + Yield_Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Last_Sched_Sec : Unsigned_64; + Last_Sched_NSec : Unsigned_64; + System_Sec : Unsigned_64; + System_NSec : Unsigned_64; + User_Sec : Unsigned_64; + User_NSec : Unsigned_64; + System_Tmp_Sec : Unsigned_64; + System_Tmp_NSec : Unsigned_64; + User_Tmp_Sec : Unsigned_64; + User_Tmp_NSec : Unsigned_64; + end record; + type Thread_Info_Arr is array (TID range 1 .. TID'Last) of Thread_Info; + type Thread_Info_Arr_Acc is access Thread_Info_Arr; + + -- Scheduling timeslices are calculated using a major frame + -- (or cluster frame) and a minor frame (or cluster quantum). + -- Both are calculated from the total slice. + Total_Slice : constant := 1_000_000; -- A second. + + Scheduler_Mutex : aliased Lib.Synchronization.Critical_Lock; + Cluster_Pool : Cluster_Arr_Acc; + Thread_Pool : Thread_Info_Arr_Acc; + + -- In order to keep statistics of usage, we keep a list of buckets of + -- 1 minute resolution, and calculate resolution on demand. + -- We take advantage of the monotic clock starting at 0 in boot. + type Stats_Bucket_Arr is array (1 .. 15) of Unsigned_32; + Last_Bucket : Unsigned_64 := 0; + Buckets : Stats_Bucket_Arr := (others => 0); + + function Init return Boolean is + begin + -- Initialize registries. + Thread_Pool := new Thread_Info_Arr; + Cluster_Pool := new Cluster_Arr; + for Th of Thread_Pool.all loop + Th.Is_Present := False; + Th.Kernel_Stack := null; + end loop; + for Cl of Cluster_Pool (Cluster_Pool'First + 1 .. Cluster_Pool'Last) loop + Cl.Is_Present := False; + Cl.Progress_Seconds := 0; + Cl.Progress_Nanos := 0; + end loop; + + -- Create the default cluster. + Cluster_Pool (Cluster_Pool'First).Is_Present := True; + Cluster_Pool (Cluster_Pool'First).Algorithm := Cluster_RR; + Cluster_Pool (Cluster_Pool'First).Is_Interruptible := True; + Cluster_Pool (Cluster_Pool'First).RR_Quantum := 4000; + Cluster_Pool (Cluster_Pool'First).Percentage := 100; + Cluster_Pool (Cluster_Pool'First).Progress_Seconds := 0; + Cluster_Pool (Cluster_Pool'First).Progress_Nanos := 0; + + Is_Initialized := True; + Lib.Synchronization.Release (Scheduler_Mutex, True); + return True; + end Init; + + procedure Idle_Core is + To_Test : Boolean; + begin + loop + To_Test := Is_Initialized; + exit when To_Test; + Arch.Snippets.Pause; + end loop; + Arch.Local.Reschedule_ASAP; + Waiting_Spot; + end Idle_Core; + + function Create_User_Thread + (Address : Virtual_Address; + Args : Userland.Argument_Arr; + Env : Userland.Environment_Arr; + Map : Arch.MMU.Page_Table_Acc; + Vector : Userland.ELF.Auxval; + Cluster : TCID; + Stack_Size : Unsigned_64; + PID : Natural) return TID + is + Stack_Permissions : constant Arch.MMU.Page_Permissions := + (Is_User_Accesible => True, + Can_Read => True, + Can_Write => True, + Can_Execute => False, + Is_Global => False); + + Proc : constant Userland.Process.PID := Userland.Process.Convert (PID); + New_TID : TID := Error_TID; + GP_State : Arch.Context.GP_Context; + FP_State : Arch.Context.FP_Context; + Result : System.Address; + Stack_Top : Unsigned_64; + Success : Boolean; + begin + -- Initialize thread state. Start by mapping the user stack. + Stack_Top := Userland.Process.Get_Stack_Base (Proc); + Userland.Process.Set_Stack_Base (Proc, Stack_Top + Stack_Size); + Arch.MMU.Map_Allocated_Range + (Map => Map, + Physical_Start => Result, + Virtual_Start => To_Address (Virtual_Address (Stack_Top)), + Length => Storage_Offset (Stack_Size), + Permissions => Stack_Permissions, + Success => Success); + if not Success then + goto Cleanup; + end if; + + declare + Sz : constant Natural := Natural (Stack_Size); + Stk_8 : Thread_Stack (1 .. Sz) with Import, Address => Result; + Stk_64 : Thread_Stack_64 (1 .. Sz / 8) with Import, Address => Result; + Index_8 : Natural := Stk_8'Last; + Index_64 : Natural := Stk_64'Last; + begin + -- Load env into the stack. + for En of reverse Env loop + Stk_8 (Index_8) := 0; + Index_8 := Index_8 - 1; + for C of reverse En.all loop + Stk_8 (Index_8) := Character'Pos (C); + Index_8 := Index_8 - 1; + end loop; + end loop; + + -- Load argv into the stack. + for Arg of reverse Args loop + Stk_8 (Index_8) := 0; + Index_8 := Index_8 - 1; + for C of reverse Arg.all loop + Stk_8 (Index_8) := Character'Pos (C); + Index_8 := Index_8 - 1; + end loop; + end loop; + + -- Get the equivalent 64-bit stack index and align it to 16 bytes. + Index_64 := (Index_8 / 8) - ((Index_8 / 8) mod 16); + Index_64 := Index_64 - ((Args'Length + Env'Length + 3) mod 2); + + -- Load auxval. + Stk_64 (Index_64 - 0) := 0; + Stk_64 (Index_64 - 1) := Userland.ELF.Auxval_Null; + Stk_64 (Index_64 - 2) := Vector.Entrypoint; + Stk_64 (Index_64 - 3) := Userland.ELF.Auxval_Entrypoint; + Stk_64 (Index_64 - 4) := Vector.Program_Headers; + Stk_64 (Index_64 - 5) := Userland.ELF.Auxval_Program_Headers; + Stk_64 (Index_64 - 6) := Vector.Program_Header_Count; + Stk_64 (Index_64 - 7) := Userland.ELF.Auxval_Header_Count; + Stk_64 (Index_64 - 8) := Vector.Program_Header_Size; + Stk_64 (Index_64 - 9) := Userland.ELF.Auxval_Header_Size; + Index_64 := Index_64 - 10; + + -- Load envp taking into account the pointers at the beginning. + Index_8 := Stk_8'Last; + Stk_64 (Index_64) := 0; -- Null at the end of envp. + Index_64 := Index_64 - 1; + for En of reverse Env loop + Index_8 := (Index_8 - En.all'Length) - 1; + Stk_64 (Index_64) := Stack_Top + Unsigned_64 (Index_8); + Index_64 := Index_64 - 1; + end loop; + + -- Load argv into the stack. + Stk_64 (Index_64) := 0; -- Null at the end of argv. + Index_64 := Index_64 - 1; + for Arg of reverse Args loop + Index_8 := (Index_8 - Arg.all'Length) - 1; + Stk_64 (Index_64) := Stack_Top + Unsigned_64 (Index_8); + Index_64 := Index_64 - 1; + end loop; + + -- Write argc and we are done! + Stk_64 (Index_64) := Args'Length; + Index_64 := Index_64 - 1; + + -- Initialize context information. + Index_64 := Index_64 * 8; + Arch.Context.Init_GP_Context + (GP_State, + To_Address (Integer_Address (Stack_Top + Unsigned_64 (Index_64))), + To_Address (Address)); + Arch.Context.Init_FP_Context (FP_State); + + New_TID := Create_User_Thread + (GP_State => GP_State, + FP_State => FP_State, + Map => Map, + PID => PID, + Cluster => Cluster, + TCB => System.Null_Address); + end; + + <> + return New_TID; + end Create_User_Thread; + + function Create_User_Thread + (Address : Virtual_Address; + Map : Arch.MMU.Page_Table_Acc; + Stack_Addr : Unsigned_64; + TLS_Addr : Unsigned_64; + Cluster : TCID; + PID : Natural) return TID + is + New_TID : TID; + GP_State : Arch.Context.GP_Context; + FP_State : Arch.Context.FP_Context; + begin + Arch.Context.Init_GP_Context + (GP_State, + To_Address (Integer_Address (Stack_Addr)), + To_Address (Address)); + Arch.Context.Init_FP_Context (FP_State); + New_TID := Create_User_Thread + (GP_State => GP_State, + FP_State => FP_State, + Map => Map, + PID => PID, + Cluster => Cluster, + TCB => To_Address (Integer_Address (TLS_Addr))); + return New_TID; + end Create_User_Thread; + + function Create_User_Thread + (GP_State : Arch.Context.GP_Context; + FP_State : Arch.Context.FP_Context; + Map : Arch.MMU.Page_Table_Acc; + Cluster : TCID; + PID : Natural; + TCB : System.Address) return TID + is + New_TID : TID := Error_TID; + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + + -- Find a new TID. + for I in Thread_Pool'Range loop + if not Thread_Pool (I).Is_Present and not Thread_Pool (I).Is_Running + then + New_TID := I; + goto Found_TID; + end if; + end loop; + goto End_Return; + + <> + if Thread_Pool (New_TID).Kernel_Stack = null then + Thread_Pool (New_TID).Kernel_Stack := new Kernel_Stack; + end if; + + Thread_Pool (New_TID).Is_Present := True; + Thread_Pool (New_TID).Is_Running := False; + Thread_Pool (New_TID).Path := (others => ' '); + Thread_Pool (New_TID).Path_Len := 0; + Thread_Pool (New_TID).Nice := 0; + Thread_Pool (New_TID).Cluster := Cluster; + Thread_Pool (New_TID).PageMap := Map; + Thread_Pool (New_TID).TCB_Pointer := TCB; + Thread_Pool (New_TID).GP_State := GP_State; + Thread_Pool (New_TID).FP_State := FP_State; + Thread_Pool (New_TID).Process := Userland.Process.Convert (PID); + Thread_Pool (New_TID).Last_Sched_Sec := 0; + Thread_Pool (New_TID).Last_Sched_NSec := 0; + Thread_Pool (New_TID).System_Sec := 0; + Thread_Pool (New_TID).System_NSec := 0; + Thread_Pool (New_TID).User_Sec := 0; + Thread_Pool (New_TID).User_NSec := 0; + Thread_Pool (New_TID).System_Tmp_Sec := 0; + Thread_Pool (New_TID).System_Tmp_NSec := 0; + Thread_Pool (New_TID).User_Tmp_Sec := 0; + Thread_Pool (New_TID).User_Tmp_NSec := 0; + + Lib.Synchronization.Release (Thread_Pool (New_TID).Yield_Mutex); + + Arch.Context.Success_Fork_Result (Thread_Pool (New_TID).GP_State); + + <> + Lib.Synchronization.Release (Scheduler_Mutex); + return New_TID; + end Create_User_Thread; + + procedure Delete_Thread (Thread : TID) is + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + if Thread_Pool (Thread).Is_Present then + Thread_Pool (Thread).Is_Present := False; + end if; + Lib.Synchronization.Release (Scheduler_Mutex); + end Delete_Thread; + + procedure Yield_If_Able is + Curr_TID : constant TID := Arch.Local.Get_Current_Thread; + begin + if Curr_TID /= Error_TID and then + Cluster_Pool (Thread_Pool (Curr_TID).Cluster).Is_Interruptible + then + Lib.Synchronization.Seize (Thread_Pool (Curr_TID).Yield_Mutex); + Arch.Local.Reschedule_ASAP; + Lib.Synchronization.Seize (Thread_Pool (Curr_TID).Yield_Mutex); + Lib.Synchronization.Release (Thread_Pool (Curr_TID).Yield_Mutex); + end if; + end Yield_If_Able; + + procedure Bail is + Thread : constant TID := Arch.Local.Get_Current_Thread; + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + if Thread_Pool (Thread).Is_Present then + Thread_Pool (Thread).Is_Present := False; + end if; + Lib.Synchronization.Release (Scheduler_Mutex, True); + Arch.Local.Reschedule_ASAP; + Waiting_Spot; + end Bail; + + procedure Get_Runtime_Times + (Thread : TID; + System_Seconds, System_Nanoseconds : out Unsigned_64; + User_Seconds, User_Nanoseconds : out Unsigned_64) + is + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + System_Seconds := Thread_Pool (Thread).System_Sec; + System_Nanoseconds := Thread_Pool (Thread).System_NSec; + User_Seconds := Thread_Pool (Thread).User_Sec; + User_Nanoseconds := Thread_Pool (Thread).User_NSec; + Lib.Synchronization.Release (Scheduler_Mutex); + end Get_Runtime_Times; + + procedure Signal_Kernel_Entry (Thread : TID) is + T1, T2 : Unsigned_64; + Discard : Boolean; + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + Arch.Clocks.Get_Monotonic_Time (T1, T2); + + Thread_Pool (Thread).System_Tmp_Sec := T1; + Thread_Pool (Thread).System_Tmp_NSec := T2; + + Lib.Time.Substract + (T1, T2, + Thread_Pool (Thread).User_Tmp_Sec, + Thread_Pool (Thread).User_Tmp_NSec); + Lib.Time.Increment + (Thread_Pool (Thread).User_Sec, Thread_Pool (Thread).User_NSec, + T1, T2); + Lib.Synchronization.Release (Scheduler_Mutex); + end Signal_Kernel_Entry; + + procedure Signal_Kernel_Exit (Thread : TID) is + Temp_Sec, Temp_NSec : Unsigned_64; + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + Arch.Clocks.Get_Monotonic_Time (Temp_Sec, Temp_NSec); + + Thread_Pool (Thread).User_Tmp_Sec := Temp_Sec; + Thread_Pool (Thread).User_Tmp_NSec := Temp_NSec; + + if Thread_Pool (Thread).System_Tmp_Sec /= 0 or + Thread_Pool (Thread).System_Tmp_NSec /= 0 + then + Lib.Time.Substract + (Seconds1 => Temp_Sec, + Nanoseconds1 => Temp_NSec, + Seconds2 => Thread_Pool (Thread).System_Tmp_Sec, + Nanoseconds2 => Thread_Pool (Thread).System_Tmp_NSec); + Lib.Time.Increment + (Thread_Pool (Thread).System_Sec, Thread_Pool (Thread).System_NSec, + Temp_Sec, Temp_NSec); + end if; + Lib.Synchronization.Release (Scheduler_Mutex); + end Signal_Kernel_Exit; + ---------------------------------------------------------------------------- + function Set_Scheduling_Algorithm + (Cluster : TCID; + Algo : Cluster_Algorithm; + Quantum : Natural; + Is_Interruptible : Boolean) return Boolean + is + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + Cluster_Pool (Cluster).Algorithm := Algo; + Cluster_Pool (Cluster).RR_Quantum := Quantum; + Cluster_Pool (Cluster).Is_Interruptible := Is_Interruptible; + Lib.Synchronization.Release (Scheduler_Mutex); + return True; + end Set_Scheduling_Algorithm; + + function Set_Time_Slice (Cluster : TCID; Per : Natural) return Boolean is + Consumed : Natural := 0; + Success : Boolean; + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + for I in Cluster_Pool'Range loop + if Cluster_Pool (I).Is_Present and I /= Cluster then + Consumed := Consumed + Cluster_Pool (I).Percentage; + end if; + end loop; + + if Cluster_Pool (Cluster).Is_Present and Per <= (100 - Consumed) then + Cluster_Pool (Cluster).Percentage := Per; + Success := True; + else + Success := False; + end if; + Lib.Synchronization.Release (Scheduler_Mutex); + return Success; + end Set_Time_Slice; + + function Create_Cluster return TCID is + Returned : TCID; + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + for I in Cluster_Pool'Range loop + if not Cluster_Pool (I).Is_Present then + Cluster_Pool (I) := + (Is_Present => True, + Algorithm => Cluster_RR, + Is_Interruptible => False, + RR_Quantum => 4000, + Percentage => 0, + others => 0); + Returned := I; + goto Cleanup; + end if; + end loop; + Returned := Error_TCID; + <> + Lib.Synchronization.Release (Scheduler_Mutex); + return Returned; + end Create_Cluster; + + function Delete_Cluster (Cluster : TCID) return Boolean is + Success : Boolean; + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + if Cluster_Pool (Cluster).Is_Present then + Cluster_Pool (Cluster).Is_Present := False; + Success := True; + else + Success := False; + end if; + Lib.Synchronization.Release (Scheduler_Mutex); + return Success; + end Delete_Cluster; + + function Switch_Cluster (Cluster : TCID; Thread : TID) return Boolean is + Success : Boolean; + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + if Cluster_Pool (Cluster).Is_Present and + Thread_Pool (Thread).Is_Present + then + Thread_Pool (Thread).Cluster := Cluster; + Success := True; + else + Success := False; + end if; + Lib.Synchronization.Release (Scheduler_Mutex); + return Success; + end Switch_Cluster; + ---------------------------------------------------------------------------- + function Get_Niceness (Thread : TID) return Niceness is + begin + return Thread_Pool (Thread).Nice; + end Get_Niceness; + + procedure Set_Niceness (Thread : TID; Nice : Niceness) is + begin + Thread_Pool (Thread).Nice := Nice; + end Set_Niceness; + + procedure Get_Name (Thread : TID; Name : out String; Len : out Natural) is + begin + if Name'Length >= Thread_Pool (Thread).Path_Len and + Thread_Pool (Thread).Path_Len /= 0 + then + Name (Name'First .. Name'First + Thread_Pool (Thread).Path_Len - 1) := + Thread_Pool (Thread).Path (1 .. Thread_Pool (Thread).Path_Len); + Len := Thread_Pool (Thread).Path_Len; + else + Name := (others => ' '); + Len := 0; + end if; + end Get_Name; + + procedure Set_Name (Thread : TID; Name : String; Success : out Boolean) is + begin + if Name'Length <= Thread_Pool (Thread).Path'Length then + Thread_Pool (Thread).Path (1 .. Name'Length) := Name; + Thread_Pool (Thread).Path_Len := Name'Length; + Success := True; + else + Success := False; + end if; + end Set_Name; + ---------------------------------------------------------------------------- + procedure Get_Load_Averages (Avg_1, Avg_5, Avg_15 : out Unsigned_32) is + begin + Lib.Synchronization.Seize (Scheduler_Mutex); + Avg_1 := Buckets (Buckets'First) * 100; + + Avg_5 := 0; + for Val of Buckets (Buckets'First .. Buckets'First + 4) loop + Avg_5 := Avg_5 + (Val * 100); + end loop; + Avg_5 := Avg_5 / 5; + + Avg_15 := 0; + for Val of Buckets loop + Avg_15 := Avg_15 + (Val * 100); + end loop; + Avg_15 := Avg_15 / 15; + + Lib.Synchronization.Release (Scheduler_Mutex); + end Get_Load_Averages; + ---------------------------------------------------------------------------- + procedure Scheduler_ISR (State : Arch.Context.GP_Context) is + Current_TID : constant TID := Arch.Local.Get_Current_Thread; + Next_TID : TID := Error_TID; + Next_State : Arch.Context.GP_Context; + Timeout, Max_Next_Timeout : Natural; + Curr_Cluster, Next_Cluster : TCID := Error_TCID; + Curr_Sec, Curr_NSec : Unsigned_64; + Count : Unsigned_32; + begin + Arch.Clocks.Get_Monotonic_Time (Curr_Sec, Curr_NSec); + + Lib.Synchronization.Seize (Scheduler_Mutex); + + -- Adjust the moving stats if at least a minute has passed since + -- last poll. + if Curr_Sec >= Last_Bucket + 60 then + Last_Bucket := Curr_Sec; + Count := 0; + for I in Thread_Pool'First .. Thread_Pool'Last loop + if Thread_Pool (I).Is_Present then + Count := Count + 1; + end if; + end loop; + Add_Bucket_And_Shift (Count); + end if; + + -- If we come from a thread, we can do cluster management and logic. + -- Else, we just need to go to a thread, any, and pick up from there. + if Current_TID /= Error_TID then + Curr_Cluster := Thread_Pool (Current_TID).Cluster; + Lib.Synchronization.Release (Thread_Pool (Current_TID).Yield_Mutex); + Lib.Time.Substract + (Thread_Pool (Current_TID).Last_Sched_Sec, + Thread_Pool (Current_TID).Last_Sched_NSec, Curr_Sec, Curr_NSec); + Lib.Time.Increment + (Cluster_Pool (Curr_Cluster).Progress_Seconds, + Cluster_Pool (Curr_Cluster).Progress_Nanos, Curr_Sec, Curr_NSec); + + if Has_Available_Time (Curr_Cluster) then + Next_Cluster := Curr_Cluster; + else + -- Find a new cluster with available time. + for I in Curr_Cluster + 1 .. Cluster_Pool'Last loop + if Has_Available_Time (I) then + Next_Cluster := I; + exit; + end if; + end loop; + if Next_Cluster = Error_TCID then + for I in Cluster_Pool'First .. Curr_Cluster - 1 loop + if Has_Available_Time (I) then + Next_Cluster := I; + exit; + end if; + end loop; + end if; + + -- If we find no new clusters, we just reset em. + if Next_Cluster = Error_TCID then + for C of Cluster_Pool.all loop + C.Progress_Seconds := 0; + C.Progress_Nanos := 0; + end loop; + Next_Cluster := Curr_Cluster; + end if; + end if; + + Max_Next_Timeout := + (Total_Slice * Cluster_Pool (Curr_Cluster).Percentage / 100) - + Natural (Cluster_Pool (Curr_Cluster).Progress_Nanos / 1000); + + case Cluster_Pool (Next_Cluster).Algorithm is + when Cluster_RR => + Timeout := + Cluster_Pool (Next_Cluster).RR_Quantum - + ((Cluster_Pool (Next_Cluster).RR_Quantum / 40) * + Thread_Pool (Current_TID).Nice); + if Timeout > Max_Next_Timeout then + Timeout := Max_Next_Timeout; + end if; + when Cluster_Cooperative => + Timeout := Max_Next_Timeout; + end case; + + -- Find the next thread from said cluster using the algorithm. + -- Cluter_Cooperative finds new threads the same way as RR, so we + -- do not need to handle it especially. + for I in Current_TID + 1 .. Thread_Pool'Last loop + if Is_Switchable (I, Next_Cluster) then + Next_TID := I; + goto Found_TID_TCID_Combo; + end if; + end loop; + if Current_TID /= Error_TID then + for I in Thread_Pool'First .. Current_TID - 1 loop + if Is_Switchable (I, Next_Cluster) then + Next_TID := I; + goto Found_TID_TCID_Combo; + end if; + end loop; + end if; + else + Timeout := 4000; + for I in Thread_Pool'Range loop + if Thread_Pool (I).Is_Present and not Thread_Pool (I).Is_Running + then + Next_TID := I; + Next_Cluster := Thread_Pool (I).Cluster; + goto Found_TID_TCID_Combo; + end if; + end loop; + end if; + + -- We only get here if the thread search did not find anything, and we + -- are just going back to whoever called. + Lib.Synchronization.Release (Scheduler_Mutex, True); + Arch.Local.Reschedule_In (Timeout); + return; + + <> + -- Save state. + if Current_TID /= Error_TID then + Thread_Pool (Current_TID).Is_Running := False; + + if Thread_Pool (Current_TID).Is_Present then + Thread_Pool (Current_TID).TCB_Pointer := Arch.Local.Fetch_TCB; + Thread_Pool (Current_TID).GP_State := State; + Arch.Context.Save_Core_Context (Thread_Pool (Current_TID).C_State); + Arch.Context.Save_FP_Context (Thread_Pool (Current_TID).FP_State); + else + Arch.Context.Destroy_FP_Context + (Thread_Pool (Current_TID).FP_State); + end if; + end if; + + -- Set the last time of entry to userland if none. + Arch.Clocks.Get_Monotonic_Time + (Thread_Pool (Next_TID).Last_Sched_Sec, + Thread_Pool (Next_TID).Last_Sched_NSec); + if Thread_Pool (Next_TID).User_Tmp_Sec = 0 and + Thread_Pool (Next_TID).User_Tmp_NSec = 0 + then + Thread_Pool (Next_TID).User_Tmp_Sec := + Thread_Pool (Next_TID).Last_Sched_Sec; + Thread_Pool (Next_TID).User_Tmp_NSec := + Thread_Pool (Next_TID).Last_Sched_NSec; + end if; + + -- Rearm the timer for next tick and unlock. + Arch.Local.Reschedule_In (Timeout); + + -- Reset state. + if not Arch.MMU.Make_Active (Thread_Pool (Next_TID).PageMap) then + Lib.Panic.Hard_Panic ("Could not make reschedule map active"); + end if; + Arch.Local.Set_Current_Process (Thread_Pool (Next_TID).Process); + Arch.Local.Set_Current_Thread (Next_TID); + Thread_Pool (Next_TID).Is_Running := True; + Arch.Local.Set_Stacks + (Thread_Pool (Next_TID).C_State, + Thread_Pool (Next_TID).Kernel_Stack (Kernel_Stack'Last)'Address); + Arch.Local.Load_TCB (Thread_Pool (Next_TID).TCB_Pointer); + Arch.Context.Load_FP_Context (Thread_Pool (Next_TID).FP_State); + Next_State := Thread_Pool (Next_TID).GP_State; + Lib.Synchronization.Release (Scheduler_Mutex, True); + Arch.Context.Load_GP_Context (Next_State); + end Scheduler_ISR; + ---------------------------------------------------------------------------- + procedure List_All (List : out Thread_Listing_Arr; Total : out Natural) is + Curr_Index : Natural := 0; + begin + List := (others => (Error_TID, Error_TCID, 0)); + Total := 0; + + Lib.Synchronization.Seize (Scheduler_Mutex); + for I in Thread_Pool.all'Range loop + if Thread_Pool (I).Is_Present then + Total := Total + 1; + if Curr_Index < Thread_Pool'Length then + List (List'First + Curr_Index) := + (I, Thread_Pool (I).Cluster, + Userland.Process.Convert (Thread_Pool (I).Process)); + Curr_Index := Curr_Index + 1; + end if; + end if; + end loop; + Lib.Synchronization.Release (Scheduler_Mutex); + end List_All; + + procedure List_All (List : out Cluster_Listing_Arr; Total : out Natural) is + Curr_Index : Natural := 0; + begin + List := (others => (Error_TCID, Cluster_RR, False, 0)); + Total := 0; + + Lib.Synchronization.Seize (Scheduler_Mutex); + for I in Cluster_Pool.all'Range loop + if Cluster_Pool (I).Is_Present then + Total := Total + 1; + if Curr_Index < Thread_Pool'Length then + List (List'First + Curr_Index) := + (I, + Cluster_Pool (I).Algorithm, + Cluster_Pool (I).Is_Interruptible, + Cluster_Pool (I).RR_Quantum); + Curr_Index := Curr_Index + 1; + end if; + end if; + end loop; + Lib.Synchronization.Release (Scheduler_Mutex); + end List_All; + ---------------------------------------------------------------------------- + procedure Waiting_Spot is + begin + Arch.Snippets.Enable_Interrupts; + loop Arch.Snippets.Wait_For_Interrupt; end loop; + end Waiting_Spot; + + function Has_Available_Time (C : TCID) return Boolean is + Secs : Unsigned_64 := Cluster_Pool (C).Progress_Seconds / 1_000_000; + Nanos : Unsigned_64 := Cluster_Pool (C).Progress_Nanos / 1_000; + begin + if Secs > Unsigned_64 (Natural'Last) then + Secs := Unsigned_64 (Natural'Last); + end if; + if Nanos > Unsigned_64 (Natural'Last) then + Nanos := Unsigned_64 (Natural'Last); + end if; + + return Natural (Secs) * Natural (Nanos) < + Total_Slice * Cluster_Pool (C).Percentage / 100; + end Has_Available_Time; + + function Is_Switchable (T : TID; C : TCID) return Boolean is + Th : Thread_Info renames Thread_Pool (T); + begin + return Th.Is_Present and not Th.Is_Running and Th.Cluster = C; + end Is_Switchable; + + procedure Add_Bucket_And_Shift (Last_Bucket : Unsigned_32) is + begin + for I in reverse Buckets'First .. Buckets'Last - 1 loop + Buckets (I + 1) := Buckets (I); + end loop; + Buckets (Buckets'First) := Last_Bucket; + end Add_Bucket_And_Shift; +end Scheduler; diff --git a/source/scheduler.ads b/source/scheduler.ads new file mode 100644 index 0000000..b592fb2 --- /dev/null +++ b/source/scheduler.ads @@ -0,0 +1,183 @@ +-- scheduler.ads: Thread scheduler. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with Interfaces; use Interfaces; +with Memory; use Memory; +with Userland; +with Userland.ELF; +with Arch.MMU; +with Arch.Context; + +package Scheduler is + -- Types to represent threads and thread clusters. + type TID is private; + type TCID is private; + Error_TID : constant TID; + Error_TCID : constant TCID; + ---------------------------------------------------------------------------- + -- Initialize the scheduler, return true on success, false on failure. + function Init return Boolean; + + -- Use when doing nothing and we want the scheduler to put us to work. + -- Doubles as the function to initialize core locals. + procedure Idle_Core with No_Return; + + -- Creates a userland thread, and queues it for execution. + -- Return thread ID or 0 on failure. + function Create_User_Thread + (Address : Virtual_Address; + Args : Userland.Argument_Arr; + Env : Userland.Environment_Arr; + Map : Arch.MMU.Page_Table_Acc; + Vector : Userland.ELF.Auxval; + Cluster : TCID; + Stack_Size : Unsigned_64; + PID : Natural) return TID; + + -- Create a userland thread with no arguments. + function Create_User_Thread + (Address : Virtual_Address; + Map : Arch.MMU.Page_Table_Acc; + Stack_Addr : Unsigned_64; + TLS_Addr : Unsigned_64; + Cluster : TCID; + PID : Natural) return TID; + + -- Create a user thread with a context. + function Create_User_Thread + (GP_State : Arch.Context.GP_Context; + FP_State : Arch.Context.FP_Context; + Map : Arch.MMU.Page_Table_Acc; + Cluster : TCID; + PID : Natural; + TCB : System.Address) return TID; + + -- Removes a thread, kernel or user, from existance (if it exists). + procedure Delete_Thread (Thread : TID); + + -- If interruptible, give up the rest of our execution time and go back to + -- rescheduling, else just return. + procedure Yield_If_Able; + + -- Make the callee thread be dequed. + procedure Bail with No_Return; + + -- Get runtime times of the thread. + procedure Get_Runtime_Times + (Thread : TID; + System_Seconds, System_Nanoseconds : out Unsigned_64; + User_Seconds, User_Nanoseconds : out Unsigned_64); + + -- Signal to the scheduler that a thread has entered or exited kernel + -- space (for time keeping reasons). + procedure Signal_Kernel_Entry (Thread : TID); + procedure Signal_Kernel_Exit (Thread : TID); + ---------------------------------------------------------------------------- + -- Cluster creation, deletion, and management. + + -- Algorithms used inside clusters for internal scheduling. + type Cluster_Algorithm is + (Cluster_RR, -- Cluster will do a priority round robin. + Cluster_Cooperative); -- Cluster will do cooperative scheduling. + + function Set_Scheduling_Algorithm + (Cluster : TCID; + Algo : Cluster_Algorithm; + Quantum : Natural; + Is_Interruptible : Boolean) return Boolean; + + function Set_Time_Slice (Cluster : TCID; Per : Natural) return Boolean; + + function Create_Cluster return TCID; + function Delete_Cluster (Cluster : TCID) return Boolean; + + function Switch_Cluster (Cluster : TCID; Thread : TID) return Boolean; + ---------------------------------------------------------------------------- + -- Some scheduling algorithms allow priority, in those cases, it is + -- interacted with using POSIX-compatible niceness. + subtype Niceness is Integer range -20 .. 20; + Default_Niceness : constant Niceness := 0; + + function Get_Niceness (Thread : TID) return Niceness; + procedure Set_Niceness (Thread : TID; Nice : Niceness); + + procedure Get_Name (Thread : TID; Name : out String; Len : out Natural); + procedure Set_Name (Thread : TID; Name : String; Success : out Boolean); + ---------------------------------------------------------------------------- + -- Get the number of processes set to run over various periods of time. + -- @param Avg_1 1 minute average * 100. + -- @param Avg_5 5 minute average * 100. + -- @param Avg_15 15 minute average * 100. + procedure Get_Load_Averages (Avg_1, Avg_5, Avg_15 : out Unsigned_32); + ---------------------------------------------------------------------------- + -- Hook to be called by the architecture for reescheduling of the callee + -- core. + procedure Scheduler_ISR (State : Arch.Context.GP_Context); + ---------------------------------------------------------------------------- + -- Functions to convert from IDs to user readable values and viceversa. + function Convert (Thread : TID) return Natural; + function Convert (Group : TCID) return Natural; + function Convert (Value : Natural) return TID; + function Convert (Value : Natural) return TCID; + + type Thread_Listing is record + Thread : TID; + Cluster : TCID; + Proc : Natural; + end record; + type Thread_Listing_Arr is array (Natural range <>) of Thread_Listing; + + type Cluster_Listing is record + Cluster : TCID; + Cluster_Algo : Cluster_Algorithm; + Cluster_Int : Boolean; + Cluster_Quan : Natural; + end record; + type Cluster_Listing_Arr is array (Natural range <>) of Cluster_Listing; + + -- List all threads on the system. + -- @param List Where to write all the thread information. + -- @param Total Total count of processes, even if it is > List'Length. + procedure List_All (List : out Thread_Listing_Arr; Total : out Natural); + procedure List_All (List : out Cluster_Listing_Arr; Total : out Natural); + +private + + type TID is new Natural range 0 .. 100; + type TCID is new Natural range 0 .. 20; + Error_TID : constant TID := 0; + Error_TCID : constant TCID := 0; + + Is_Initialized : Boolean + with Atomic, Volatile, Async_Readers => True, Async_Writers => True, + Effective_Reads => True, Effective_Writes => True; + + procedure Waiting_Spot with No_Return; + + function Has_Available_Time (C : TCID) return Boolean; + + function Is_Switchable (T : TID; C : TCID) return Boolean; + + procedure Add_Bucket_And_Shift (Last_Bucket : Unsigned_32); + + function Convert (Thread : TID) return Natural is (Natural (Thread)); + function Convert (Group : TCID) return Natural is (Natural (Group)); + function Convert (Value : Natural) return TID is + ((if Value > Natural (TID'Last) then Error_TID else TID (Value))); + function Convert (Value : Natural) return TCID is + ((if Value > Natural (TCID'Last) then Error_TCID else TCID (Value))); +end Scheduler; diff --git a/source/userland/userland-corefile.adb b/source/userland/userland-corefile.adb new file mode 100644 index 0000000..3f66fa1 --- /dev/null +++ b/source/userland/userland-corefile.adb @@ -0,0 +1,76 @@ +-- userland-corefile.adb: Corefile generator. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Devices; +with Interfaces; use Interfaces; +with Arch.Local; +with Userland.Process; use Userland.Process; +with Userland.MAC; use Userland.MAC; +with Lib.Messages; +with VFS; use VFS; + +package body Userland.Corefile is + procedure Generate_Corefile (Ctx : Arch.Context.GP_Context) is + Proc : constant Process.PID := Arch.Local.Get_Current_Process; + PID_Val : constant Unsigned_64 := Unsigned_64 (Process.Convert (Proc)); + Core_Lim : constant Limit_Value := Get_Limit (Proc, Core_Size_Limit); + File_Lim : Limit_Value := Get_Limit (Proc, File_Size_Limit); + PID_Len : Natural; + PID_Buf : Lib.Messages.Translated_String; + Success : VFS.FS_Status; + Core_FS : VFS.FS_Handle; + Core_Ino : VFS.File_Inode_Number; + Ctx_Len : Natural; + Ctx_Data : Devices.Operation_Data (1 .. Ctx'Size / 8) + with Import, Address => Ctx'Address; + begin + if Core_Lim = 0 then + return; + elsif Core_Lim < File_Lim then + File_Lim := Core_Lim; + end if; + + Lib.Messages.Image (PID_Val, PID_Buf, PID_Len); + + declare + File_Path : constant String := "/tmp/" & + PID_Buf (PID_Buf'Last - PID_Len + 1 .. PID_Buf'Last) & ".core"; + begin + VFS.Create_Node (File_Path, VFS.File_Regular, 8#777#, Success, 0); + if Success /= VFS.FS_Success then + Lib.Messages.Put_Line ("Could not create core file " & File_Path); + return; + end if; + + VFS.Open (File_Path, Core_FS, Core_Ino, Success, 0, True, True); + if Success /= VFS.FS_Success then + Lib.Messages.Put_Line ("Could not open core file " & File_Path); + return; + end if; + + VFS.Write (Core_FS, Core_Ino, 0, Ctx_Data, Ctx_Len, True, Success); + if Success /= VFS.FS_Success or Ctx_Len /= Ctx_Data'Length then + Lib.Messages.Put_Line ("Could not write core file " & File_Path); + return; + end if; + + Success := VFS.Synchronize (Core_FS, Core_Ino, False); + Lib.Messages.Put_Line + ("Dumped core at " & File_Path & " (" & + VFS.FS_Status'Image (Success) & ")"); + end; + end Generate_Corefile; +end Userland.Corefile; diff --git a/source/userland/userland-corefile.ads b/source/userland/userland-corefile.ads new file mode 100644 index 0000000..91574e7 --- /dev/null +++ b/source/userland/userland-corefile.ads @@ -0,0 +1,24 @@ +-- userland-corefile.ads: Corefile generator. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Arch.Context; +with VFS; + +package Userland.Corefile is + -- Generate a corefile for the current process and passed context. + procedure Generate_Corefile (Ctx : Arch.Context.GP_Context) + with Pre => VFS.Is_Initialized; +end Userland.Corefile; diff --git a/source/userland/userland-elf.adb b/source/userland/userland-elf.adb new file mode 100644 index 0000000..22355ba --- /dev/null +++ b/source/userland/userland-elf.adb @@ -0,0 +1,209 @@ +-- userland-elf.adb: ELF loading. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Storage_Elements; use System.Storage_Elements; +with Memory; use Memory; +with Lib.Alignment; +with Devices; +with Userland.Syscall; + +package body Userland.ELF is + function Load_ELF + (FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Map : Arch.MMU.Page_Table_Acc; + Requested_Base : Unsigned_64) return Parsed_ELF + is + use VFS; + + Base : Unsigned_64 := Requested_Base; + Header : ELF_Header; + Header_Bytes : constant Natural := ELF_Header'Size / 8; + Header_Data : Devices.Operation_Data (1 .. Header_Bytes) + with Import, Address => Header'Address; + + Result : Parsed_ELF := + (Was_Loaded => False, + Entrypoint => System.Null_Address, + Linker_Path => null, + Vector => + (Entrypoint => 0, + Program_Headers => 0, + Program_Header_Count => 0, + Program_Header_Size => 0), + Exec_Stack => True); + + Ret_Count : Natural; + Pos : Unsigned_64 := 0; + Discard : Boolean; + Success : FS_Status; + begin + -- Read and check the header. + VFS.Read (FS, Ino, Pos, Header_Data, Ret_Count, True, Success); + Pos := Pos + Unsigned_64 (Ret_Count); + if Success /= FS_Success or Ret_Count /= Header_Bytes or + Header.Identifier (1 .. 4) /= ELF_Signature + then + return Result; + end if; + + -- If we have a dynamic ELF, we may run into the issue of it specifying + -- to load itself at 0, which can result on odd behaviour on + -- NULL-dereferences. For ease of debugging and predictable behaviour, + -- we will add a small 1 page slide. Since they are dynamic to begin + -- with, it wont hurt. + if Header.ELF_Type = ET_DYN and Base = 0 then + Base := Arch.MMU.Page_Size; + end if; + + -- Assign the data we already know. + Result.Entrypoint := Header.Entrypoint + Storage_Offset (Base); + Result.Vector.Entrypoint := Unsigned_64 (To_Integer (Result.Entrypoint)); + Result.Vector.Program_Header_Size := Program_Header'Size / 8; + Result.Vector.Program_Header_Count := + Unsigned_64 (Header.Program_Header_Count); + + -- Loop the program headers and either load them, or get info. + declare + PHDRs : array (1 .. Header.Program_Header_Count) of Program_Header; + HSize : constant Unsigned_64 := + Unsigned_64 (Header.Program_Header_Size); + RSize : constant Unsigned_64 := HSize * PHDRs'Length; + PHDRs_Data : Devices.Operation_Data (1 .. Natural (RSize)) + with Import, Address => PHDRs'Address; + begin + if HSize = 0 or PHDRs'Length = 0 then + return Result; + end if; + + Pos := Header.Program_Header_List; + VFS.Read (FS, Ino, Pos, PHDRs_Data, Ret_Count, True, Success); + Pos := Pos + Unsigned_64 (Ret_Count); + if Success /= FS_Success or Ret_Count /= Natural (RSize) then + return Result; + end if; + + for HDR of PHDRs loop + case HDR.Segment_Type is + when Program_Loadable_Segment => + if not Load_Header (FS, Ino, HDR, Map, Base) then + return Result; + end if; + when Program_Header_Table_Segment => + Result.Vector.Program_Headers := Base + HDR.Virt_Address; + when Program_Interpreter_Segment => + Result.Linker_Path := Get_Linker (FS, Ino, HDR); + when Program_GNU_Stack => + Result.Exec_Stack := (HDR.Flags and Flags_Executable) /= 0; + when others => + null; + end case; + end loop; + + -- Return success. + Result.Was_Loaded := True; + return Result; + end; + end Load_ELF; + ---------------------------------------------------------------------------- + function Get_Linker + (FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Header : Program_Header) return String_Acc + is + use VFS; + Discard : Unsigned_64; + Ret : constant String_Acc := new String (1 .. Header.File_Size_Bytes); + Ret_Data : Devices.Operation_Data (1 .. Header.File_Size_Bytes) + with Import, Address => Ret (1)'Address; + Ret_Count : Natural; + Discard2 : Boolean; + Success : FS_Status; + begin + VFS.Read (FS, Ino, Header.Offset, Ret_Data, Ret_Count, True, Success); + if Success = FS_Success and Ret_Count = Header.File_Size_Bytes then + return Ret; + else + return null; + end if; + end Get_Linker; + + function Load_Header + (FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Header : Program_Header; + Map : Arch.MMU.Page_Table_Acc; + Base : Unsigned_64) return Boolean + is + use VFS; + package A1 is new Lib.Alignment (Unsigned_64); + package A2 is new Lib.Alignment (Integer_Address); + + MisAlign : constant Unsigned_64 := + Header.Virt_Address and (Arch.MMU.Page_Size - 1); + Load_Size : constant Unsigned_64 := MisAlign + Header.Mem_Size_Bytes; + ELF_Virtual : constant Virtual_Address := + Virtual_Address (Base + Header.Virt_Address); + Flags : constant Arch.MMU.Page_Permissions := + (Is_User_Accesible => True, + Can_Read => (Header.Flags and Flags_Read) /= 0, + Can_Write => (Header.Flags and Flags_Write) /= 0, + Can_Execute => (Header.Flags and Flags_Executable) /= 0, + Is_Global => False); + Ret_Count : Natural; + Success1 : Boolean; + Success2 : FS_Status; + Result : System.Address; + Ali_V : Integer_Address; + Ali_L : Unsigned_64; + begin + Success1 := Userland.Syscall.Check_Userland_Mappability + (Map, ELF_Virtual, Load_Size); + if not Success1 or + (Flags.Can_Execute and Flags.Can_Write) or + Header.Alignment = 0 or + (Header.Alignment and (Header.Alignment - 1)) /= 0 + then + return False; + end if; + + Ali_V := A2.Align_Down (ELF_Virtual, Integer_Address (Header.Alignment)); + Ali_L := A1.Align_Up (Load_Size, Header.Alignment); + if Ali_V mod Arch.MMU.Page_Size /= 0 or Ali_L mod Arch.MMU.Page_Size /= 0 + then + return False; + end if; + + Arch.MMU.Map_Allocated_Range + (Map => Map, + Virtual_Start => To_Address (Ali_V), + Length => Storage_Count (Ali_L), + Permissions => Flags, + Physical_Start => Result, + Success => Success1); + if not Success1 then + return False; + end if; + + declare + Load2 : Devices.Operation_Data (1 .. Header.File_Size_Bytes) + with Import, Address => Result + Storage_Offset (MisAlign); + begin + VFS.Read (FS, Ino, Header.Offset, Load2, Ret_Count, True, Success2); + return Success2 = FS_Success and Ret_Count = Header.File_Size_Bytes; + end; + end Load_Header; +end Userland.ELF; diff --git a/source/userland/userland-elf.ads b/source/userland/userland-elf.ads new file mode 100644 index 0000000..d17caaa --- /dev/null +++ b/source/userland/userland-elf.ads @@ -0,0 +1,142 @@ +-- userland-elf.ads: ELF loading library. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with Interfaces; use Interfaces; +with VFS; +with Arch.MMU; + +package Userland.ELF is + type String_Acc is access String; + + -- Auxval values. + Auxval_Null : constant := 0; + Auxval_Program_Headers : constant := 3; + Auxval_Header_Size : constant := 4; + Auxval_Header_Count : constant := 5; + Auxval_Entrypoint : constant := 9; + type Auxval is record + Entrypoint : Unsigned_64; + Program_Headers : Unsigned_64; + Program_Header_Count : Unsigned_64; + Program_Header_Size : Unsigned_64; + end record; + + type Parsed_ELF is record + Was_Loaded : Boolean; + Entrypoint : System.Address; + Linker_Path : String_Acc; + Vector : Auxval; + Exec_Stack : Boolean; + end record; + + -- Load an ELF from a file into memory with the passed base, and map it + -- into the passed map. Return parsed info about the ELF. + function Load_ELF + (FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Map : Arch.MMU.Page_Table_Acc; + Requested_Base : Unsigned_64) return Parsed_ELF; + +private + + -- ELF types. + ET_DYN : constant := 3; + + -- Segment types. + Program_Loadable_Segment : constant := 1; + Program_Dynamic_Segment : constant := 2; + Program_Interpreter_Segment : constant := 3; + Program_Header_Table_Segment : constant := 6; + Program_GNU_Stack : constant := 16#6474E551#; + + -- Masks for the flags field. + Flags_Executable : constant := 1; + Flags_Write : constant := 2; + Flags_Read : constant := 4; + type Program_Header is record + Segment_Type : Unsigned_32; + Flags : Unsigned_32; + Offset : Unsigned_64; + Virt_Address : Unsigned_64; + Phys_Address : System.Address; + File_Size_Bytes : Natural; + Mem_Size_Bytes : Unsigned_64; + Alignment : Unsigned_64; + end record; + for Program_Header use record + Segment_Type at 0 range 0 .. 31; + Flags at 0 range 32 .. 63; + Offset at 0 range 64 .. 127; + Virt_Address at 0 range 128 .. 191; + Phys_Address at 0 range 192 .. 255; + File_Size_Bytes at 0 range 256 .. 319; + Mem_Size_Bytes at 0 range 320 .. 383; + Alignment at 0 range 384 .. 447; + end record; + for Program_Header'Size use 448; + + type ELF_ID_Field is array (Natural range <>) of Unsigned_8; + ELF_Signature : constant ELF_ID_Field (1 .. 4) := + (16#7F#, Character'Pos ('E'), Character'Pos ('L'), Character'Pos ('F')); + type ELF_Header is record + Identifier : ELF_ID_Field (1 .. 16); + ELF_Type : Unsigned_16; + Machine : Unsigned_16; + Version : Unsigned_32; + Entrypoint : System.Address; + Program_Header_List : Unsigned_64; + Section_Header_List : Unsigned_64; + Flags : Unsigned_32; + Header_Size : Unsigned_16; + Program_Header_Size : Unsigned_16; + Program_Header_Count : Unsigned_16; + Section_Header_Size : Unsigned_16; + Section_Header_Count : Unsigned_16; + Section_Names_Index : Unsigned_16; + end record; + for ELF_Header use record + Identifier at 0 range 0 .. 127; + ELF_Type at 0 range 128 .. 143; + Machine at 0 range 144 .. 159; + Version at 0 range 160 .. 191; + Entrypoint at 0 range 192 .. 255; + Program_Header_List at 0 range 256 .. 319; + Section_Header_List at 0 range 320 .. 383; + Flags at 0 range 384 .. 415; + Header_Size at 0 range 416 .. 431; + Program_Header_Size at 0 range 432 .. 447; + Program_Header_Count at 0 range 448 .. 463; + Section_Header_Size at 0 range 464 .. 479; + Section_Header_Count at 0 range 480 .. 495; + Section_Names_Index at 0 range 496 .. 511; + end record; + for ELF_Header'Size use 512; + + -- Get the linker path string from a given interpreter program header. + function Get_Linker + (FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Header : Program_Header) return String_Acc; + + -- Load and map a loadable program header to memory. + function Load_Header + (FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Header : Program_Header; + Map : Arch.MMU.Page_Table_Acc; + Base : Unsigned_64) return Boolean; +end Userland.ELF; diff --git a/source/userland/userland-loader.adb b/source/userland/userland-loader.adb new file mode 100644 index 0000000..e9dc35f --- /dev/null +++ b/source/userland/userland-loader.adb @@ -0,0 +1,346 @@ +-- userland-loader.adb: Program loader. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Characters.Latin_1; +with Ada.Unchecked_Deallocation; +with Interfaces; use Interfaces; +with System; +with System.Storage_Elements; use System.Storage_Elements; +with Arch.MMU; +with Memory; use Memory; +with Userland.ELF; use Userland.ELF; +with Scheduler; use Scheduler; +with Userland.Memory_Locations; +with Lib.Alignment; +with Cryptography.Random; +with Devices; +with Userland.MAC; use Userland.MAC; + +package body Userland.Loader is + Do_ASLR : Boolean := True; + + procedure Disable_ASLR is + begin + Do_ASLR := False; + end Disable_ASLR; + + function Start_Program + (Exec_Path : String; + FS : FS_Handle; + Ino : File_Inode_Number; + Arguments : Argument_Arr; + Environment : Environment_Arr; + StdIn_Path : String; + StdOut_Path : String; + StdErr_Path : String) return PID + is + Returned_PID : PID; + Discard : Natural; + Success : VFS.FS_Status; + Success1, Success2, Success3 : Boolean; + User_Stdin, User_StdOut, User_StdErr : File_Description_Acc; + begin + Process.Create_Process (Error_PID, Returned_PID); + if Returned_PID = Error_PID then + goto Error; + end if; + Process.Set_Common_Map + (Returned_PID, + Arch.MMU.Fork_Table (Arch.MMU.Kernel_Table)); + if not Start_Program (Exec_Path, FS, Ino, Arguments, Environment, + Returned_PID) + then + goto Error_Process; + end if; + + User_Stdin := new File_Description' + (Children_Count => 0, + Description => Description_Inode, + Inner_Is_Locked => False, + Inner_Is_Blocking => True, + Inner_Ino_Read => True, + Inner_Ino_Write => False, + Inner_Ino_Pos => 0, + Inner_Ino_FS => VFS.Error_Handle, + Inner_Ino => 0); + User_StdOut := new File_Description' + (Children_Count => 0, + Description => Description_Inode, + Inner_Is_Locked => False, + Inner_Is_Blocking => True, + Inner_Ino_Read => False, + Inner_Ino_Write => True, + Inner_Ino_Pos => 0, + Inner_Ino_FS => VFS.Error_Handle, + Inner_Ino => 0); + User_StdErr := new File_Description' + (Children_Count => 0, + Description => Description_Inode, + Inner_Is_Locked => False, + Inner_Is_Blocking => True, + Inner_Ino_Read => False, + Inner_Ino_Write => True, + Inner_Ino_Pos => 0, + Inner_Ino_FS => VFS.Error_Handle, + Inner_Ino => 0); + + VFS.Open + (Path => "/dev/" & StdIn_Path, + Key => User_Stdin.Inner_Ino_FS, + Ino => User_Stdin.Inner_Ino, + Success => Success, + User => 0, + Want_Read => True, + Want_Write => False); + if Success /= FS_Success then + return Error_PID; + end if; + VFS.Open + (Path => "/dev/" & StdOut_Path, + Key => User_StdOut.Inner_Ino_FS, + Ino => User_StdOut.Inner_Ino, + Success => Success, + User => 0, + Want_Read => False, + Want_Write => True); + if Success /= FS_Success then + return Error_PID; + end if; + VFS.Open + (Path => "/dev/" & StdErr_Path, + Key => User_StdErr.Inner_Ino_FS, + Ino => User_StdErr.Inner_Ino, + Success => Success, + User => 0, + Want_Read => False, + Want_Write => True); + if Success /= FS_Success then + return Error_PID; + end if; + + Process.Add_File (Returned_PID, User_Stdin, Discard, Success1); + Process.Add_File (Returned_PID, User_StdOut, Discard, Success2); + Process.Add_File (Returned_PID, User_StdErr, Discard, Success3); + + if Success1 and Success2 and Success3 then + return Returned_PID; + end if; + + <> + Process.Delete_Process (Returned_PID); + <> + return Error_PID; + end Start_Program; + + function Start_Program + (Exec_Path : String; + FS : FS_Handle; + Ino : File_Inode_Number; + Arguments : Argument_Arr; + Environment : Environment_Arr; + Proc : PID) return Boolean + is + begin + return Start_ELF (FS, Ino, Arguments, Environment, Proc) or else + Start_Shebang (Exec_Path, FS, Ino, Arguments, Environment, Proc); + end Start_Program; + + function Start_ELF + (FS : FS_Handle; + Ino : File_Inode_Number; + Arguments : Argument_Arr; + Environment : Environment_Arr; + Proc : PID) return Boolean + is + package Aln is new Lib.Alignment (Unsigned_64); + + Loaded_ELF, LD_ELF : ELF.Parsed_ELF; + Entrypoint : Virtual_Address; + LD_Slide : Unsigned_64; + LD_Path : String (1 .. 100); + LD_FS : FS_Handle; + LD_Ino : File_Inode_Number; + Success : FS_Status; + Success2 : Boolean; + begin + -- Load the executable. + Loaded_ELF := ELF.Load_ELF (FS, Ino, Process.Get_Common_Map (Proc), + Memory_Locations.Program_Offset); + if not Loaded_ELF.Was_Loaded then + goto Error; + end if; + + if Loaded_ELF.Linker_Path /= null then + -- Interpreter paths are relative, so we build an absolute one on + -- the spot using Path, which is absolute. + LD_Path (9 .. Loaded_ELF.Linker_Path.all'Length + 8) := + Loaded_ELF.Linker_Path (1 .. Loaded_ELF.Linker_Path.all'Length); + Open (LD_Path (9 .. 7 + Loaded_ELF.Linker_Path.all'Length), LD_FS, + LD_Ino, Success, 0, True, False); + if Success /= VFS.FS_Success then + goto Error; + end if; + if Do_ASLR then + Cryptography.Random.Get_Integer + (Memory_Locations.LD_Offset_Min, + Memory_Locations.LD_Offset_Max, + LD_Slide); + LD_Slide := Aln.Align_Up (LD_Slide, Arch.MMU.Page_Size); + else + LD_Slide := Memory_Locations.LD_Offset_Min; + end if; + LD_ELF := ELF.Load_ELF (LD_FS, LD_Ino, Process.Get_Common_Map (Proc), + LD_Slide); + Entrypoint := To_Integer (LD_ELF.Entrypoint); + if not LD_ELF.Was_Loaded then + goto Error; + end if; + Close (LD_FS, LD_Ino); + else + Entrypoint := To_Integer (Loaded_ELF.Entrypoint); + end if; + + declare + Returned_TID : constant Scheduler.TID := Scheduler.Create_User_Thread + (Address => Entrypoint, + Args => Arguments, + Env => Environment, + Map => Process.Get_Common_Map (Proc), + Vector => Loaded_ELF.Vector, + Cluster => Scheduler.Convert (1), + Stack_Size => Unsigned_64 (Get_Limit (Proc, Stack_Size_Limit)), + PID => Process.Convert (Proc)); + begin + if Returned_TID = Error_TID then + goto Error; + end if; + + Process.Add_Thread (Proc, Returned_TID, Success2); + if not Success2 then + Scheduler.Delete_Thread (Returned_TID); + goto Error; + end if; + return True; + end; + + <> + return False; + end Start_ELF; + + function Start_Shebang + (Exec_Path : String; + FS : FS_Handle; + Ino : File_Inode_Number; + Arguments : Argument_Arr; + Environment : Environment_Arr; + Proc : PID) return Boolean + is + procedure Free is new Ada.Unchecked_Deallocation (String, String_Acc); + + Path_Len : Natural := 0; + Arg_Len : Natural := 0; + Pos : Unsigned_64 := 0; + Path : String (1 .. 100); + Path_Data : Devices.Operation_Data (1 .. 100) + with Import, Address => Path'Address; + Arg : String (1 .. 100); + Char : Character; + Char_Data : Devices.Operation_Data (1 .. 1) + with Import, Address => Char'Address; + Char_Len : Natural; + Success : VFS.FS_Status; + Returned : Boolean; + Banged_FS : FS_Handle; + Banged_Ino : File_Inode_Number; + Path_Acc : String_Acc; + Arg_Acc : String_Acc; + begin + Read (FS, Ino, 0, Path_Data (1 .. 2), Path_Len, True, Success); + if Success /= VFS.FS_Success or Path_Len /= 2 or Path (1 .. 2) /= "#!" + then + return False; + end if; + Pos := Pos + Unsigned_64 (Path_Len); + + -- Format of a shebang: #![maybe spaces]path [arg]newline + Path_Len := 0; + loop + Read (FS, Ino, Pos, Char_Data, Char_Len, True, Success); + if Success /= VFS.FS_Success or Char_Len /= 1 then + return False; + end if; + case Char is + when ' ' => Pos := Pos + 1; + when others => exit; + end case; + end loop; + loop + Read (FS, Ino, Pos, Char_Data, Char_Len, True, Success); + Pos := Pos + Unsigned_64 (Char_Len); + if Success /= VFS.FS_Success or Char_Len /= 1 then + return False; + end if; + case Char is + when ' ' => exit; + when Ada.Characters.Latin_1.LF => goto Return_Shebang; + when others => Path_Len := Path_Len + 1; Path (Path_Len) := Char; + end case; + end loop; + loop + Read (FS, Ino, Pos, Char_Data, Char_Len, True, Success); + Pos := Pos + Unsigned_64 (Char_Len); + if Success /= VFS.FS_Success or Char_Len /= 1 then + return False; + end if; + case Char is + when Ada.Characters.Latin_1.LF | ' ' => exit; + when others => Arg_Len := Arg_Len + 1; Arg (Arg_Len) := Char; + end case; + end loop; + + <> + Open (Path (1 .. Path_Len), Banged_FS, Banged_Ino, Success, 0, True, + False); + if Success /= FS_Success then + return False; + end if; + + Path_Acc := new String'(Path (1 .. Path_Len)); + Arg_Acc := new String'(Arg (1 .. Arg_Len)); + + if Arg_Len /= 0 then + Returned := Start_Program + (Exec_Path => Exec_Path, + FS => Banged_FS, + Ino => Banged_Ino, + Arguments => (Path_Acc, Arg_Acc) & Arguments, + Environment => Environment, + Proc => Proc); + else + Returned := Start_Program + (Exec_Path => Exec_Path, + FS => Banged_FS, + Ino => Banged_Ino, + Arguments => (Path_Acc) & Arguments, + Environment => Environment, + Proc => Proc); + end if; + + Free (Path_Acc); + Free (Arg_Acc); + return Returned; + end Start_Shebang; +end Userland.Loader; diff --git a/source/userland/userland-loader.ads b/source/userland/userland-loader.ads new file mode 100644 index 0000000..636fa2c --- /dev/null +++ b/source/userland/userland-loader.ads @@ -0,0 +1,65 @@ +-- userland-loader.ads: Specification of the program loader. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Userland.Process; use Userland.Process; +with VFS; use VFS; + +package Userland.Loader is + -- By default, the offsets of loaded programs are randomized, this + -- behaviour can be disabled at boottime. + procedure Disable_ASLR; + + -- Start a program from a passed file, and create a process for it with + -- 1 thread running it. + -- The format of the file is guessed. + -- Return the PID, or 0 if failure. + function Start_Program + (Exec_Path : String; + FS : FS_Handle; + Ino : File_Inode_Number; + Arguments : Argument_Arr; + Environment : Environment_Arr; + StdIn_Path : String; + StdOut_Path : String; + StdErr_Path : String) return PID; + + -- Same as above but with an existing process instead. + -- Returns true on success, false on failure. + function Start_Program + (Exec_Path : String; + FS : FS_Handle; + Ino : File_Inode_Number; + Arguments : Argument_Arr; + Environment : Environment_Arr; + Proc : PID) return Boolean; + + -- Start specifically an ELF file. + function Start_ELF + (FS : FS_Handle; + Ino : File_Inode_Number; + Arguments : Argument_Arr; + Environment : Environment_Arr; + Proc : PID) return Boolean; + + -- Start specifically a shebang. + function Start_Shebang + (Exec_Path : String; + FS : FS_Handle; + Ino : File_Inode_Number; + Arguments : Argument_Arr; + Environment : Environment_Arr; + Proc : PID) return Boolean; +end Userland.Loader; diff --git a/source/userland/userland-mac.adb b/source/userland/userland-mac.adb new file mode 100644 index 0000000..d9947b6 --- /dev/null +++ b/source/userland/userland-mac.adb @@ -0,0 +1,128 @@ +-- userland-mac.adb: Mandatory access control. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body Userland.MAC is + -- Unit passes GNATprove AoRTE, GNAT does not know this. + pragma Suppress (All_Checks); + + function Get_Enforcement (Ctx : Context) return Enforcement is + begin + return Ctx.Action; + end Get_Enforcement; + + procedure Set_Enforcement (Ctx : in out Context; Act : Enforcement) is + begin + Ctx.Action := Act; + end Set_Enforcement; + + function Get_Capabilities (Ctx : Context) return Capabilities is + begin + return Ctx.Caps; + end Get_Capabilities; + + procedure Set_Capabilities (Ctx : in out Context; Caps : Capabilities) is + begin + Ctx.Caps := Caps; + end Set_Capabilities; + + function Check_Permissions + (Data : Context; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number) return Permissions + is + Has_Elements : Boolean := False; + begin + for E of Data.Filters loop + if E.Is_Used then + Has_Elements := True; + if not E.Is_Device and E.FS = FS and E.Ino = Ino then + return E.Perms; + end if; + end if; + end loop; + + if Has_Elements then + return (others => False); + else + return (Can_Append_Only => False, others => True); + end if; + end Check_Permissions; + + procedure Add_Entity + (Data : in out Context; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Perms : Permissions; + Status : out Addition_Status) + is + begin + for E of Data.Filters loop + if E.Is_Used and not E.Is_Device and E.FS = FS and E.Ino = Ino then + if Perms = E.Perms then + Status := Success; + else + Status := Is_Conflicting; + end if; + return; + end if; + end loop; + + Add_Filter + (Data => Data, + Filt => (True, False, FS, Ino, Perms), + Status => Status); + end Add_Entity; + + function Get_Limit + (Data : Context; + Resource : Limit_Type) return Limit_Value + is + begin + return Data.Limits (Resource); + end Get_Limit; + + procedure Set_Limit + (Data : in out Context; + Resource : Limit_Type; + Limit : Limit_Value; + Could_Set : out Boolean) + is + begin + if Limit <= Data.Limits (Resource) then + Data.Limits (Resource) := Limit; + Could_Set := True; + else + Could_Set := False; + end if; + end Set_Limit; + ---------------------------------------------------------------------------- + procedure Add_Filter + (Data : in out Context; + Filt : Filter; + Status : out Addition_Status) + is + begin + for E of Data.Filters loop + if not E.Is_Used then + E := Filt; + Status := Success; + return; + end if; + end loop; + + Status := No_Space; + end Add_Filter; +end Userland.MAC; diff --git a/source/userland/userland-mac.ads b/source/userland/userland-mac.ads new file mode 100644 index 0000000..30c9ece --- /dev/null +++ b/source/userland/userland-mac.ads @@ -0,0 +1,180 @@ +-- userland-mac.ads: Mandatory access control. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with VFS; use VFS; + +package Userland.MAC is + -- Capabilities a process can have, which rule kinds of operations it can + -- access. + type Capabilities is record + Can_Change_Scheduling : Boolean; + Can_Spawn_Others : Boolean; + Can_Access_Entropy : Boolean; + Can_Modify_Memory : Boolean; + Can_Use_Networking : Boolean; + Can_Manage_Networking : Boolean; + Can_Manage_Mounts : Boolean; + Can_Manage_Power : Boolean; + Can_Trace_Children : Boolean; + Can_Change_UIDs : Boolean; + Can_Manage_MAC : Boolean; + Can_Use_Clocks : Boolean; + Can_Signal_All : Boolean; + Can_Change_GIDs : Boolean; + Can_Bypass_IPC_Checks : Boolean; + end record; + + -- Permissions a file can have. + type Permissions is record + Includes_Contents : Boolean; -- Affects children if a directory. + Can_Read : Boolean; -- Read permissions. + Can_Write : Boolean; -- Write permissions. + Can_Execute : Boolean; -- Execute permissions. + Can_Append_Only : Boolean; -- Can open files append only. + Can_Lock_Files : Boolean; -- Can lock the affected files. + end record; + + -- When a MAC failure is encountered, we can do a series of things. + type Enforcement is + (Deny, -- Just deny the operation with an appropiate error. + Deny_And_Scream, -- Deny and obnoxiously report the error. + Kill); -- Don't panic process, but you are already dead. + + -- MAC allows specifying limits for several resources. + type Limit_Value is new Unsigned_64; + type Limit_Type is + (Core_Size_Limit, -- Core file dump size limit. + CPU_Time_Limit, -- Total CPU time in seconds. + File_Size_Limit, -- Total file size. + Opened_File_Limit, -- Limit on opened file descriptor for the process. + Stack_Size_Limit, -- Limit on stack size. + Memory_Size_Limit); -- Limit on total virtual memory size. + + -- Type to wrap all the storage and permissions for a MAC context. + type Context is private; + Default_Context : constant Context; + + -- Get the associated action for enforcement with the context. + -- @param Ctx The context to operate on. + -- @return The enforcement. + function Get_Enforcement (Ctx : Context) return Enforcement; + + -- Get the associated action for enforcement with the context. + -- @param Ctx The context to operate on. + -- @param Act The enforcement to set. + procedure Set_Enforcement (Ctx : in out Context; Act : Enforcement); + + -- Get the capabilities on the passed context. + -- @param Ctx The context to operate on. + -- @return The capabilities. + function Get_Capabilities (Ctx : Context) return Capabilities; + + -- Set the capabilities on the passed context. + -- @param Ctx The context to operate on. + -- @param Caps Capabilities to set. + procedure Set_Capabilities (Ctx : in out Context; Caps : Capabilities); + + -- Check permissions associated to an already added inode and FS combo. + -- If no files are added to the context with permissions, all files return + -- permission. + -- @param Data MAC instance to use. + -- @param FS FS handle to check. + -- @param Ino Inode to check. + -- @return Returned permissions. + function Check_Permissions + (Data : Context; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number) return Permissions; + + -- Status one can return from an addition of a path to MAC permissions. + type Addition_Status is (Success, No_Space, Is_Conflicting); + + -- Add an entity for MAC. + -- @param Data MAC instance to modify. + -- @param FS Filesystem to check. + -- @param Ino Inode to check. + -- @param Perms Permissions to add. + -- @param Status Status of the operation. + procedure Add_Entity + (Data : in out Context; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Perms : Permissions; + Status : out Addition_Status) + with Pre => FS /= VFS.Error_Handle; + + -- Get the limit of a resource. + -- @param Data MAC instance to modify. + -- @param Resource Resource to limit. + -- @param Limit Limit of the resource. + function Get_Limit + (Data : Context; + Resource : Limit_Type) return Limit_Value; + + -- Set the limit of a resource. + -- @param Data MAC instance to modify. + -- @param Resource Resource to limit. + -- @param Limit Limit of the resource. + -- @param Could_Set True if the value was lower than previous and was set. + procedure Set_Limit + (Data : in out Context; + Resource : Limit_Type; + Limit : Limit_Value; + Could_Set : out Boolean); + +private + + Filter_Path_Length : constant := 75; + type Filter is record + Is_Used : Boolean; + Is_Device : Boolean; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Perms : Permissions; + end record; + + type Filter_Arr is array (Natural range <>) of Filter; + type Limit_Arr is array (Limit_Type) of Limit_Value; + type Context is record + Action : Enforcement; + Caps : Capabilities; + Limits : Limit_Arr; + Filters : Filter_Arr (1 .. 30); + end record; + + Default_Context : constant Context := + (Action => Deny, + Caps => (others => True), + Limits => + (Core_Size_Limit => 0, -- Disabled by default due to privacy. + CPU_Time_Limit => Limit_Value'Last, + File_Size_Limit => Limit_Value'Last, + Opened_File_Limit => Limit_Value'Last, + Stack_Size_Limit => 16#400000#, -- 4 MiB by default. + Memory_Size_Limit => Limit_Value'Last), + Filters => (others => + (Is_Used => False, + Is_Device => False, + FS => VFS.Error_Handle, + Ino => 0, + Perms => (others => False)))); + + procedure Add_Filter + (Data : in out Context; + Filt : Filter; + Status : out Addition_Status); +end Userland.MAC; diff --git a/source/userland/userland-memory_failure.adb b/source/userland/userland-memory_failure.adb new file mode 100644 index 0000000..f2ced4f --- /dev/null +++ b/source/userland/userland-memory_failure.adb @@ -0,0 +1,38 @@ +-- userland-memoryfailure.adb: Code to manage memory failures. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Panic; + +package body Userland.Memory_Failure is + procedure Get_System_Policy (Pol : out Policy) is + begin + Seize (Config_Mutex); + Pol := Mem_Policy; + Release (Config_Mutex); + end Get_System_Policy; + + procedure Set_System_Policy (Pol : Policy) is + begin + Seize (Config_Mutex); + Mem_Policy := Pol; + Release (Config_Mutex); + end Set_System_Policy; + + procedure Handle_Failure is + begin + Lib.Panic.Hard_Panic ("Hardware memory failure unhandled!"); + end Handle_Failure; +end Userland.Memory_Failure; diff --git a/source/userland/userland-memory_failure.ads b/source/userland/userland-memory_failure.ads new file mode 100644 index 0000000..108dae2 --- /dev/null +++ b/source/userland/userland-memory_failure.ads @@ -0,0 +1,39 @@ +-- userland-memoryfailure.ads: Code to manage memory failures. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Synchronization; use Lib.Synchronization; + +package Userland.Memory_Failure is + -- Policy for the handlers to follow. + type Policy is + (Hard_Panic, -- Not do any recovery, just panic the system, simple as. + Soft_Kill, -- Kill the affected processes when they step on it. + Hard_Kill); -- Kill the processes eagerly. + + -- Get the system-wide policy. + procedure Get_System_Policy (Pol : out Policy); + + -- Set the system-wide policy. + procedure Set_System_Policy (Pol : Policy); + + -- Actually handle the failure. + procedure Handle_Failure; + +private + + Config_Mutex : aliased Binary_Semaphore := Unlocked_Semaphore; + Mem_Policy : Policy := Hard_Panic; +end Userland.Memory_Failure; diff --git a/source/userland/userland-memory_locations.ads b/source/userland/userland-memory_locations.ads new file mode 100644 index 0000000..1319958 --- /dev/null +++ b/source/userland/userland-memory_locations.ads @@ -0,0 +1,30 @@ +-- userland-memorylocations.ads: Notable memory ranges for userland locations. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Userland.Memory_Locations is + -- Fixed memory locations we cannot randomize because they can be hardcoded + -- by userland (linker addresses and such). + Program_Offset : constant := 16#00000000#; + + -- Values we can randomize are given in min and max boundaries. + -- (size is until the next structure). + LD_Offset_Min : constant := 16#00060000000#; + LD_Offset_Max : constant := 16#000F0000000#; + Mmap_Anon_Min : constant := 16#10000000000#; + Mmap_Anon_Max : constant := 16#F0000000000#; + Stack_Jump_Min : constant := 16#10000000000#; -- Stack is a jump from anon. + Stack_Jump_Max : constant := 16#20000000000#; +end Userland.Memory_Locations; diff --git a/source/userland/userland-oom_failure.adb b/source/userland/userland-oom_failure.adb new file mode 100644 index 0000000..67084fb --- /dev/null +++ b/source/userland/userland-oom_failure.adb @@ -0,0 +1,85 @@ +-- userland-oom_failure.adb: Code to manage OOM failures. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with Arch.MMU; use Arch.MMU; +with Userland.Process; use Userland.Process; +with Userland.Syscall; +with Lib.Messages; + +package body Userland.OOM_Failure is + procedure Get_Killing_Config (Enabled : out Boolean) is + begin + Seize (Config_Mutex); + Enabled := Is_Killing_Allowed; + Release (Config_Mutex); + end Get_Killing_Config; + + procedure Configure_Killing (Enabled : Boolean) is + begin + Seize (Config_Mutex); + Is_Killing_Allowed := Enabled; + Release (Config_Mutex); + end Configure_Killing; + + procedure Handle_Failure is + Count : Natural; + Items : Process.Process_Info_Arr (1 .. 10); + Map : Arch.MMU.Page_Table_Acc; + Guilty : Natural; + Guilty_Size : Unsigned_64; + Size : Unsigned_64; + Str : Lib.Messages.Translated_String; + begin + -- TODO: Free internal memory. + if Is_Killing_Allowed then + -- Get a selection of 10 processes. + Process.List_All (Items, Count); + if Count > Items'Length then + Count := Items'Last; + end if; + + -- Check the one with the highest memory mapped of the 10. + Guilty := 0; + Guilty_Size := 0; + for I in Items'First .. Count loop + Map := Process.Get_Common_Map (Items (I).Process); + if Map /= null then + Size := Arch.MMU.Get_User_Mapped_Size (Map); + if Size > Guilty_Size then + Guilty := I; + Guilty_Size := Size; + end if; + end if; + end loop; + + -- Once a guilty process has been chosen, move to execution. + if Guilty /= 0 and then Items (Guilty).Process /= Process.Error_PID + then + Lib.Messages.Image + (Unsigned_64 (Convert (Items (Guilty).Process)), Str, Count); + Lib.Messages.Put_Line + ("Killing PID " & + Str (Str'Last - Count + 1 .. Str'Last) & + " '" & + Items (Guilty).Identifier (1 .. Items (Guilty).Identifier_Len) + & + "' after being deemed guilty"); + Syscall.Do_Exit (Items (Guilty).Process, 1); + end if; + end if; + end Handle_Failure; +end Userland.OOM_Failure; diff --git a/source/userland/userland-oom_failure.ads b/source/userland/userland-oom_failure.ads new file mode 100644 index 0000000..14335b0 --- /dev/null +++ b/source/userland/userland-oom_failure.ads @@ -0,0 +1,35 @@ +-- userland-oom_failure.ads: Code to manage OOM failures. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Synchronization; use Lib.Synchronization; + +package Userland.OOM_Failure is + -- Set whether process killing during OOM failures is enabled or not. + -- @param Enabled True if enabled, False if disabled. + procedure Get_Killing_Config (Enabled : out Boolean); + + -- Set whether process killing during OOM failures is enabled or not. + -- @param Enabled True to enable, False to disable. + procedure Configure_Killing (Enabled : Boolean); + + -- To be called by the allocator to handle OOM conditions. + procedure Handle_Failure; + +private + + Config_Mutex : aliased Binary_Semaphore := Unlocked_Semaphore; + Is_Killing_Allowed : Boolean := True; +end Userland.OOM_Failure; diff --git a/source/userland/userland-process.adb b/source/userland/userland-process.adb new file mode 100644 index 0000000..ef84041 --- /dev/null +++ b/source/userland/userland-process.adb @@ -0,0 +1,1002 @@ +-- userland-process.adb: Process registry, PIDs, and all the fuzz. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Time; +with Lib.Alignment; +with Lib.Messages; +with Ada.Unchecked_Deallocation; +with Arch.Local; +with Cryptography.Random; +with Userland.Memory_Locations; +with IPC.FileLock; + +package body Userland.Process is + procedure Free is new Ada.Unchecked_Deallocation + (Process_Data, Process_Data_Acc); + + Do_ASLR : Boolean := True; + + procedure Init is + begin + Registry := new Process_Arr'(others => null); + Lib.Synchronization.Release (Registry_Mutex); + end Init; + + procedure Disable_ASLR is + begin + Do_ASLR := False; + end Disable_ASLR; + + procedure Get_Children + (Proc : PID; + Buf : out Children_Arr; + Len : out Natural) + is + Index : Natural := 0; + begin + Buf := (others => Error_PID); + Len := 0; + Lib.Synchronization.Seize (Registry_Mutex); + for I in Registry.all'Range loop + if Registry (I) /= null and then Registry (I).Parent = Proc + then + Len := Len + 1; + if Index < Buf'Length then + Buf (Buf'First + Index) := I; + Index := Index + 1; + end if; + end if; + end loop; + Lib.Synchronization.Release (Registry_Mutex); + end Get_Children; + + procedure List_All (List : out Process_Info_Arr; Total : out Natural) is + Curr_Index : Natural := 0; + begin + List := + (others => + (Identifier => (others => ' '), + Identifier_Len => 0, + Process => Error_PID, + Parent => 0, + User => 0, + Is_Being_Traced => False, + Has_Exited => False)); + Total := 0; + + Lib.Synchronization.Seize (Registry_Mutex); + for I in Registry.all'Range loop + if Registry (I) /= null then + Total := Total + 1; + if Curr_Index < List'Length then + Lib.Synchronization.Seize (Registry (I).Data_Mutex); + List (List'First + Curr_Index) := + (Identifier => Registry (I).Identifier (1 .. 20), + Identifier_Len => Registry (I).Identifier_Len, + Process => I, + Parent => Registry (I).Parent, + User => Registry (I).User, + Is_Being_Traced => Registry (I).Is_Traced, + Has_Exited => Registry (I).Did_Exit); + Curr_Index := Curr_Index + 1; + Lib.Synchronization.Release (Registry (I).Data_Mutex); + end if; + end if; + end loop; + Lib.Synchronization.Release (Registry_Mutex); + end List_All; + + procedure Create_Process (Parent : PID; Returned : out PID) is + P : PID renames Parent; + begin + Returned := Error_PID; + + Lib.Synchronization.Seize (Registry_Mutex); + for I in Registry.all'Range loop + if Registry (I) = null then + Registry (I) := new Process_Data' + (Data_Mutex => Lib.Synchronization.Unlocked_Semaphore, + Masked_Signals => (others => False), + Raised_Signals => (others => False), + Signal_Handlers => (others => System.Null_Address), + Niceness => Scheduler.Default_Niceness, + Umask => Default_Umask, + User => 0, + Effective_User => 0, + Group => 0, + Effective_Group => 0, + SGroup_Count => 0, + SGroups => (others => 0), + Identifier => (others => ' '), + Identifier_Len => 0, + Parent => 0, + Is_Traced => False, + Tracer_FD => 0, + Current_Dir_FS => VFS.Error_Handle, + Current_Dir_Ino => 0, + Thread_List => (others => Error_TID), + File_Table => (others => (False, False, null)), + Common_Map => null, + Stack_Base => 0, + Alloc_Base => 0, + Perms => MAC.Default_Context, + Signal_Exit => False, + Which_Signal => Signal_Kill, + Did_Exit => False, + Exit_Code => 0, + others => 0); + + if Parent /= Error_PID then + Lib.Synchronization.Seize (Registry (P).Data_Mutex); + Registry (I).Niceness := Registry (P).Niceness; + Registry (I).Masked_Signals := Registry (P).Masked_Signals; + Registry (I).Parent := Parent; + Registry (I).Stack_Base := Registry (P).Stack_Base; + Registry (I).Alloc_Base := Registry (P).Alloc_Base; + Registry (I).Current_Dir_FS := Registry (P).Current_Dir_FS; + Registry (I).Current_Dir_Ino := Registry (P).Current_Dir_Ino; + Registry (I).Perms := Registry (P).Perms; + Registry (I).User := Registry (P).User; + Registry (I).Effective_User := Registry (P).Effective_User; + Registry (I).Group := Registry (P).Group; + Registry (I).Effective_Group := Registry (P).Effective_Group; + Registry (I).SGroup_Count := Registry (P).SGroup_Count; + Registry (I).SGroups := Registry (P).SGroups; + Registry (I).Umask := Registry (P).Umask; + Lib.Synchronization.Release (Registry (P).Data_Mutex); + else + Reassign_Process_Addresses (PID (I)); + end if; + + Returned := PID (I); + exit; + end if; + end loop; + Lib.Synchronization.Release (Registry_Mutex); + end Create_Process; + + procedure Delete_Process (Process : PID) is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Lib.Synchronization.Seize (Registry_Mutex); + Free (Registry (Process)); + Lib.Synchronization.Release (Registry_Mutex); + end Delete_Process; + + procedure Get_Runtime_Times + (Proc : PID; + System_Seconds, System_Nanoseconds : out Unsigned_64; + User_Seconds, User_Nanoseconds : out Unsigned_64) + is + Temp1, Temp2, Temp3, Temp4 : Unsigned_64; + begin + System_Seconds := 0; + System_Nanoseconds := 0; + User_Seconds := 0; + User_Nanoseconds := 0; + + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + + for Th of Registry (Proc).Thread_List loop + if Th /= Error_TID then + Scheduler.Get_Runtime_Times (Th, Temp1, Temp2, Temp3, Temp4); + System_Seconds := System_Seconds + Temp1; + System_Nanoseconds := System_Nanoseconds + Temp2; + User_Seconds := User_Seconds + Temp3; + User_Nanoseconds := User_Nanoseconds + Temp4; + end if; + end loop; + + Lib.Time.Normalize (System_Seconds, System_Nanoseconds); + Lib.Time.Normalize (User_Seconds, User_Nanoseconds); + + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Runtime_Times; + + procedure Get_Children_Runtimes + (Proc : PID; + System_Seconds, System_Nanoseconds : out Unsigned_64; + User_Seconds, User_Nanoseconds : out Unsigned_64) + is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + System_Seconds := Registry (Proc).Children_SSec; + System_Nanoseconds := Registry (Proc).Children_SNSec; + User_Seconds := Registry (Proc).Children_USec; + User_Nanoseconds := Registry (Proc).Children_UNSec; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Children_Runtimes; + + procedure Add_Thread + (Proc : PID; + Thread : Scheduler.TID; + Success : out Boolean) + is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Success := False; + for I in Registry (Proc).Thread_List'Range loop + if Registry (Proc).Thread_List (I) = Error_TID then + Registry (Proc).Thread_List (I) := Thread; + Scheduler.Set_Niceness (Thread, Registry (Proc).Niceness); + Success := True; + exit; + end if; + end loop; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Add_Thread; + + function Get_Thread_Count (Process : PID) return Natural is + Returned : Natural := 0; + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + for I in Registry (Process).Thread_List'Range loop + if Registry (Process).Thread_List (I) /= Error_TID then + Returned := Returned + 1; + end if; + end loop; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + return Returned; + end Get_Thread_Count; + + procedure Remove_Thread (Proc : PID; Thread : Scheduler.TID) is + Temp1, Temp2, Temp3, Temp4 : Unsigned_64; + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + for I in Registry (Proc).Thread_List'Range loop + if Registry (Proc).Thread_List (I) = Thread then + Registry (Proc).Thread_List (I) := Error_TID; + Scheduler.Get_Runtime_Times (Thread, Temp1, Temp2, Temp3, Temp4); + if Registry (Proc).Parent /= Error_PID and then + Registry (Registry (Proc).Parent) /= null + then + Lib.Time.Increment + (Registry (Registry (Proc).Parent).Children_SSec, + Registry (Registry (Proc).Parent).Children_SNSec, + Temp1, Temp2); + Lib.Time.Increment + (Registry (Registry (Proc).Parent).Children_USec, + Registry (Registry (Proc).Parent).Children_UNSec, + Temp3, Temp4); + end if; + exit; + end if; + end loop; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Remove_Thread; + + procedure Flush_Threads (Proc : PID) is + Current_Thread : constant TID := Arch.Local.Get_Current_Thread; + T1, T2, T3, T4 : Unsigned_64; + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + for Thread of Registry (Proc).Thread_List loop + if Thread /= Error_TID then + if Registry (Proc).Parent /= Error_PID and then + Registry (Registry (Proc).Parent) /= null + then + Scheduler.Get_Runtime_Times (Thread, T1, T2, T3, T4); + + Lib.Time.Increment + (Registry (Registry (Proc).Parent).Children_SSec, + Registry (Registry (Proc).Parent).Children_SNSec, T1, T2); + Lib.Time.Increment + (Registry (Registry (Proc).Parent).Children_USec, + Registry (Registry (Proc).Parent).Children_UNSec, T3, T4); + end if; + + if Thread /= Current_Thread then + Scheduler.Delete_Thread (Thread); + end if; + end if; + Thread := Error_TID; + end loop; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Flush_Threads; + + procedure Reassign_Process_Addresses (Process : PID) is + package Aln is new Lib.Alignment (Unsigned_64); + Rand_Addr, Rand_Jump : Unsigned_64; + begin + if Do_ASLR then + Cryptography.Random.Get_Integer + (Memory_Locations.Mmap_Anon_Min, + Memory_Locations.Mmap_Anon_Max, + Rand_Addr); + Cryptography.Random.Get_Integer + (Memory_Locations.Stack_Jump_Min, + Memory_Locations.Stack_Jump_Max, + Rand_Jump); + + Rand_Addr := Aln.Align_Up (Rand_Addr, Arch.MMU.Page_Size); + Rand_Jump := Aln.Align_Up (Rand_Jump, Arch.MMU.Page_Size); + else + Rand_Addr := Memory_Locations.Mmap_Anon_Min; + Rand_Jump := Memory_Locations.Stack_Jump_Min; + end if; + + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Registry (Process).Alloc_Base := Rand_Addr; + Registry (Process).Stack_Base := Rand_Addr + Rand_Jump; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Reassign_Process_Addresses; + + function Get_Niceness (Process : PID) return Scheduler.Niceness is + Result : Scheduler.Niceness; + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Result := Registry (Process).Niceness; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + return Result; + end Get_Niceness; + + procedure Set_Niceness (Process : PID; Nice : Scheduler.Niceness) is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Registry (Process).Niceness := Nice; + for Thread of Registry (Process).Thread_List loop + if Thread /= Error_TID then + Scheduler.Set_Niceness (Thread, Nice); + end if; + end loop; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Set_Niceness; + + function Is_Valid_File (Process : PID; FD : Unsigned_64) return Boolean is + R : Boolean; + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + if FD <= Unsigned_64 (File_Arr'Last) then + R := Registry (Process).File_Table (Natural (FD)).Description /= null; + else + R := False; + end if; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + return R; + end Is_Valid_File; + + procedure Add_File + (Process : PID; + File : File_Description_Acc; + FD : out Natural; + Success : out Boolean; + Start : Natural := 0) + is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + for I in Start .. Registry (Process).File_Table'Last loop + if Registry (Process).File_Table (I).Description = null then + Registry (Process).File_Table (I).Description := File; + FD := I; + Success := True; + goto Cleanup; + end if; + end loop; + FD := 0; + Success := False; + <> + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Add_File; + + function Get_File_Count (Process : PID) return Natural is + Count_Of_FDs : Natural := 0; + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + for Ent of Registry (Process).File_Table loop + if Ent.Description = null then + Count_Of_FDs := Count_Of_FDs + 1; + end if; + end loop; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + return Count_Of_FDs; + end Get_File_Count; + + procedure Duplicate + (F : File_Description_Acc; + Result : out File_Description_Acc) + is + pragma SPARK_Mode (Off); + begin + if F.Children_Count /= Natural'Last then + F.Children_Count := F.Children_Count + 1; + Result := F; + else + Result := null; + end if; + end Duplicate; + + procedure Duplicate_FD_Table + (Process : PID; + Target : PID; + Max_FD : Natural := Max_File_Count) + is + Src : File_Arr renames Registry (Process).File_Table; + Tgt : File_Arr renames Registry (Target).File_Table; + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Lib.Synchronization.Seize (Registry (Target).Data_Mutex); + + for I in 0 .. Max_FD - 1 loop + if not Src (I).Close_On_Fork then + Tgt (I) := Src (I); + if Src (I).Description /= null then + Duplicate (Src (I).Description, Tgt (I).Description); + end if; + end if; + end loop; + + Lib.Synchronization.Release (Registry (Target).Data_Mutex); + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Duplicate_FD_Table; + + procedure Close (F : in out File_Description_Acc) is + procedure Free is new Ada.Unchecked_Deallocation + (File_Description, File_Description_Acc); + T : Boolean; + begin + if F.Children_Count = 0 then + case F.Description is + when Description_Reader_FIFO => Close_Reader (F.Inner_Reader_FIFO); + when Description_Writer_FIFO => Close_Writer (F.Inner_Writer_FIFO); + when Description_Primary_PTY => Close (F.Inner_Primary_PTY); + when Description_Secondary_PTY => Close (F.Inner_Secondary_PTY); + when Description_Inode => + if F.Inner_Is_Locked then + IPC.FileLock.Release_Lock (F.Inner_Ino_FS, F.Inner_Ino, T); + if not T then + Lib.Messages.Put_Line ("Missing file lock on closure!"); + end if; + end if; + VFS.Close (F.Inner_Ino_FS, F.Inner_Ino); + when Description_Socket => Close (F.Inner_Socket); + end case; + Free (F); + else + F.Children_Count := F.Children_Count - 1; + end if; + F := null; + end Close; + + function Get_File + (Process : PID; + FD : Unsigned_64) return File_Description_Acc + is + Res : File_Description_Acc; + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + if FD <= Unsigned_64 (File_Arr'Last) then + Res := Registry (Process).File_Table (Natural (FD)).Description; + else + Res := null; + end if; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + return Res; + end Get_File; + + procedure Get_FD_Flags + (Process : PID; + FD : Unsigned_64; + Close_On_Exec : out Boolean; + Close_On_Fork : out Boolean) + is + Table : File_Arr renames Registry (Process).File_Table; + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + if FD <= Unsigned_64 (File_Arr'Last) then + Close_On_Exec := Table (Natural (FD)).Close_On_Exec; + Close_On_Fork := Table (Natural (FD)).Close_On_Fork; + else + Close_On_Exec := False; + Close_On_Fork := False; + end if; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Get_FD_Flags; + + procedure Set_FD_Flags + (Process : PID; + FD : Unsigned_64; + Close_On_Exec : Boolean; + Close_On_Fork : Boolean) + is + Table : File_Arr renames Registry (Process).File_Table; + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + if FD <= Unsigned_64 (File_Arr'Last) then + Table (Natural (FD)).Close_On_Exec := Close_On_Exec; + Table (Natural (FD)).Close_On_Fork := Close_On_Fork; + end if; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Set_FD_Flags; + + procedure Remove_File (Process : PID; FD : Natural) is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + if FD <= File_Arr'Last then + Close (Registry (Process).File_Table (FD).Description); + Registry (Process).File_Table (FD).Close_On_Exec := False; + Registry (Process).File_Table (FD).Close_On_Fork := False; + end if; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Remove_File; + + procedure Flush_Files (Process : PID) is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + for F of Registry (Process).File_Table loop + if F.Description /= null then + Close (F.Description); + end if; + F.Close_On_Exec := False; + F.Close_On_Fork := False; + end loop; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Flush_Files; + + procedure Flush_Exec_Files (Process : PID) is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + for F of Registry (Process).File_Table loop + if F.Description /= null and then F.Close_On_Exec then + Close (F.Description); + F.Close_On_Exec := False; + F.Close_On_Fork := False; + end if; + end loop; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Flush_Exec_Files; + + procedure Set_Common_Map (Proc : PID; Map : Arch.MMU.Page_Table_Acc) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Registry (Proc).Common_Map := Map; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_Common_Map; + + function Get_Common_Map (Proc : PID) return Arch.MMU.Page_Table_Acc is + Result : Arch.MMU.Page_Table_Acc; + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Result := Registry (Proc).Common_Map; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + return Result; + end Get_Common_Map; + + function Get_Stack_Base (Process : PID) return Unsigned_64 is + Result : Unsigned_64; + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Result := Registry (Process).Stack_Base; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + return Result; + end Get_Stack_Base; + + procedure Set_Stack_Base (Process : PID; Base : Unsigned_64) is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Registry (Process).Stack_Base := Base; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Set_Stack_Base; + + procedure Get_Traced_Info + (Process : PID; + Is_Traced : out Boolean; + FD : out Natural) + is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Is_Traced := Registry (Process).Is_Traced; + FD := Registry (Process).Tracer_FD; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Get_Traced_Info; + + procedure Set_Traced_Info + (Process : PID; + Is_Traced : Boolean; + FD : Natural) + is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Registry (Process).Is_Traced := Is_Traced; + Registry (Process).Tracer_FD := FD; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Set_Traced_Info; + + procedure Issue_Exit (Process : PID; Code : Unsigned_8) is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Registry (Process).Did_Exit := True; + Registry (Process).Signal_Exit := False; + Registry (Process).Exit_Code := Code; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Issue_Exit; + + procedure Issue_Exit (Process : PID; Sig : Signal) is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Registry (Process).Did_Exit := True; + Registry (Process).Signal_Exit := True; + Registry (Process).Which_Signal := Sig; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Issue_Exit; + + procedure Check_Exit + (Process : PID; + Did_Exit : out Boolean; + Code : out Unsigned_8; + Was_Signal : out Boolean; + Sig : out Signal) + is + begin + Lib.Synchronization.Seize (Registry (Process).Data_Mutex); + Did_Exit := Registry (Process).Did_Exit; + Code := Registry (Process).Exit_Code; + Was_Signal := Registry (Process).Signal_Exit; + Sig := Registry (Process).Which_Signal; + Lib.Synchronization.Release (Registry (Process).Data_Mutex); + end Check_Exit; + + procedure Set_CWD + (Proc : PID; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number) + is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Registry (Proc).Current_Dir_FS := FS; + Registry (Proc).Current_Dir_Ino := Ino; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_CWD; + + procedure Get_CWD + (Proc : PID; + FS : out VFS.FS_Handle; + Ino : out VFS.File_Inode_Number) + is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + FS := Registry (Proc).Current_Dir_FS; + Ino := Registry (Proc).Current_Dir_Ino; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_CWD; + + function Bump_Alloc_Base (P : PID; Length : Unsigned_64) return Unsigned_64 + is + Result : Unsigned_64; + begin + Lib.Synchronization.Seize (Registry (P).Data_Mutex); + Result := Registry (P).Alloc_Base; + Registry (P).Alloc_Base := Result + Length; + Lib.Synchronization.Release (Registry (P).Data_Mutex); + return Result; + end Bump_Alloc_Base; + + function Get_Parent (Proc : PID) return PID is + Result : PID; + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Result := Registry (Proc).Parent; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + return Result; + end Get_Parent; + + procedure Set_Identifier (Proc : PID; Name : String) is + Length : Natural; + begin + if Name'Length > Max_Name_Length then + Length := Max_Name_Length; + else + Length := Name'Length; + end if; + + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Registry (Proc).Identifier_Len := Length; + Registry (Proc).Identifier (1 .. Length) := + Name (Name'First .. Name'First + Length - 1); + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_Identifier; + + procedure Get_Identifier + (Proc : PID; + ID : out String; + Len : out Natural) + is + Length : Natural; + begin + ID := (others => ' '); + + if ID'Length > Registry (Proc).Identifier_Len then + Length := Registry (Proc).Identifier_Len; + else + Length := ID'Length; + end if; + + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + ID (ID'First .. ID'First + Length - 1) := + Registry (Proc).Identifier (1 .. Length); + Len := Length; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Identifier; + + procedure Get_UID (Proc : PID; UID : out Unsigned_32) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + UID := Registry (Proc).User; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_UID; + + procedure Set_UID (Proc : PID; UID : Unsigned_32) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Registry (Proc).User := UID; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_UID; + + procedure Get_Effective_UID (Proc : PID; EUID : out Unsigned_32) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + EUID := Registry (Proc).Effective_User; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Effective_UID; + + procedure Set_Effective_UID (Proc : PID; EUID : Unsigned_32) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Registry (Proc).Effective_User := EUID; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_Effective_UID; + + procedure Get_GID (Proc : PID; GID : out Unsigned_32) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + GID := Registry (Proc).Group; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_GID; + + procedure Set_GID (Proc : PID; GID : Unsigned_32) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Registry (Proc).Group := GID; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_GID; + + procedure Get_Effective_GID (Proc : PID; EGID : out Unsigned_32) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + EGID := Registry (Proc).Effective_Group; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Effective_GID; + + procedure Set_Effective_GID (Proc : PID; EGID : Unsigned_32) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Registry (Proc).Effective_Group := EGID; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_Effective_GID; + + procedure Get_Supplementary_Groups + (Proc : PID; + Groups : out Supplementary_GID_Arr; + Length : out Natural) + is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + if Groups'Length <= Max_Supplementary_Groups then + Groups := Registry (Proc).SGroups (1 .. Groups'Length); + else + Groups (Groups'First .. Groups'First + Max_Supplementary_Groups - 1) + := Registry (Proc).SGroups; + end if; + Length := Registry (Proc).SGroup_Count; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Supplementary_Groups; + + procedure Set_Supplementary_Groups + (Proc : PID; + Groups : Supplementary_GID_Arr; + Success : out Boolean) + is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + if Groups'Length > Max_Supplementary_Groups then + Success := False; + else + Registry (Proc).SGroups (1 .. Groups'Length) := Groups; + Registry (Proc).SGroup_Count := Groups'Length; + Success := True; + end if; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_Supplementary_Groups; + + procedure Empty_Supplementary_Groups (Proc : PID) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Registry (Proc).SGroup_Count := 0; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Empty_Supplementary_Groups; + + procedure Get_Umask (Proc : PID; Umask : out VFS.File_Mode) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Umask := Registry (Proc).Umask; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Umask; + + procedure Set_Umask (Proc : PID; Umask : VFS.File_Mode) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Registry (Proc).Umask := Umask; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_Umask; + + procedure Get_Masked_Signals (Proc : PID; Sig : out Signal_Bitmap) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Sig := Registry (Proc).Masked_Signals; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Masked_Signals; + + procedure Set_Masked_Signals (Proc : PID; Sig : Signal_Bitmap) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + + -- Set the signals and ensure that unmaskable signals are not masked. + Registry (Proc).Masked_Signals := Sig; + Registry (Proc).Masked_Signals (Signal_Kill) := False; + Registry (Proc).Masked_Signals (Signal_Stop) := False; + Registry (Proc).Masked_Signals (Signal_Tracepoint) := False; + + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_Masked_Signals; + + procedure Raise_Signal (Proc : PID; Sig : Signal) is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + if not Registry (Proc).Masked_Signals (Sig) then + Registry (Proc).Raised_Signals (Sig) := True; + end if; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Raise_Signal; + + procedure Get_Signal_Handler + (Proc : PID; + Sig : Signal; + Addr : out System.Address) + is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + Addr := Registry (Proc).Signal_Handlers (Sig); + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Signal_Handler; + + procedure Set_Signal_Handler + (Proc : PID; + Sig : Signal; + Addr : System.Address) + is + begin + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + if Sig /= Signal_Kill then + Registry (Proc).Signal_Handlers (Sig) := Addr; + end if; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Set_Signal_Handler; + + procedure Get_Raised_Signal_Actions + (Proc : PID; + Sig : out Signal; + Addr : out System.Address; + No_Sig : out Boolean; + Ignore : out Boolean) + is + begin + Sig := Signal_FP_Exception; + Addr := System.Null_Address; + No_Sig := True; + Ignore := False; + + Lib.Synchronization.Seize (Registry (Proc).Data_Mutex); + for I in Registry (Proc).Raised_Signals'Range loop + if Registry (Proc).Raised_Signals (I) then + Sig := I; + Addr := Registry (Proc).Signal_Handlers (I); + No_Sig := False; + + -- POSIX established only certain signals are safely ignored, when + -- not ignored, POSIX instructs us to terminate the process if not + -- handled. + Ignore := Sig = Signal_Child or Sig = Signal_Urgent; + + Registry (Proc).Raised_Signals (I) := False; + exit; + end if; + end loop; + Lib.Synchronization.Release (Registry (Proc).Data_Mutex); + end Get_Raised_Signal_Actions; + + function Convert (Proc : PID) return Natural is + begin + return Natural (Proc); + end Convert; + + function Convert (Proc : Natural) return PID is + begin + if Proc /= 0 and then Proc <= Max_Process_Count and then + Registry (PID (Proc)) /= null + then + return PID (Proc); + else + return Error_PID; + end if; + end Convert; + ---------------------------------------------------------------------------- + function Get_Enforcement (Proc : PID) return MAC.Enforcement is + begin + return MAC.Get_Enforcement (Registry (Proc).Perms); + end Get_Enforcement; + + procedure Set_Enforcement (Proc : PID; Act : MAC.Enforcement) is + begin + MAC.Set_Enforcement (Registry (Proc).Perms, Act); + end Set_Enforcement; + + function Get_Capabilities (Proc : PID) return MAC.Capabilities is + begin + return MAC.Get_Capabilities (Registry (Proc).Perms); + end Get_Capabilities; + + procedure Set_Capabilities (Proc : PID; Caps : MAC.Capabilities) is + begin + MAC.Set_Capabilities (Registry (Proc).Perms, Caps); + end Set_Capabilities; + + function Check_Permissions + (Proc : PID; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number) return MAC.Permissions + is + begin + return MAC.Check_Permissions (Registry (Proc).Perms, FS, Ino); + end Check_Permissions; + + procedure Add_Entity + (Proc : PID; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Perms : MAC.Permissions; + Status : out MAC.Addition_Status) + is + begin + MAC.Add_Entity (Registry (Proc).Perms, FS, Ino, Perms, Status); + end Add_Entity; + + function Get_Limit + (Proc : PID; + Resource : MAC.Limit_Type) return MAC.Limit_Value + is + begin + return MAC.Get_Limit (Registry (Proc).Perms, Resource); + end Get_Limit; + + procedure Set_Limit + (Proc : PID; + Resource : MAC.Limit_Type; + Limit : MAC.Limit_Value; + Could_Set : out Boolean) + is + begin + MAC.Set_Limit (Registry (Proc).Perms, Resource, Limit, Could_Set); + end Set_Limit; +end Userland.Process; diff --git a/source/userland/userland-process.ads b/source/userland/userland-process.ads new file mode 100644 index 0000000..c472870 --- /dev/null +++ b/source/userland/userland-process.ads @@ -0,0 +1,677 @@ +-- userland-process.ads: Process registry, PIDs, and all the fuzz. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with VFS; +with Arch.MMU; +with Lib.Synchronization; +with Scheduler; use Scheduler; +with Interfaces; use Interfaces; +with Userland.MAC; +with IPC.FIFO; use IPC.FIFO; +with IPC.PTY; use IPC.PTY; +with IPC.Socket; use IPC.Socket; + +package Userland.Process is + -- A process is identifier by a PID (process identifier). + -- In order to obtain a classical integer that can be used for reporting + -- or userland passing, PIDs can be converted to integers using functions + -- of this module. + type PID is private; + Error_PID : constant PID; + Max_Process_Count : constant Natural; + + -- Processes can be assigned names, for identification purposes, current + -- directories, threads, all of these things have maximum limits. + Max_CWD_Length : constant Natural; + Max_Name_Length : constant Natural; + Max_Thread_Count : constant Natural; + Max_File_Count : constant Natural; + + -- Each process has a umask, inherited from the parent, with a default mask + -- for the first process. + Default_Umask : constant VFS.File_Mode; + + -- Each file held by the process follows this format. + type File_Description_Type is + (Description_Reader_FIFO, + Description_Writer_FIFO, + Description_Primary_PTY, + Description_Secondary_PTY, + Description_Inode, + Description_Socket); + type File_Description; + type File_Description_Acc is access File_Description; + type File_Description (Description : File_Description_Type) is record + Children_Count : Natural; + case Description is + when Description_Reader_FIFO => + Inner_Reader_FIFO : IPC.FIFO.Inner_Acc; + when Description_Writer_FIFO => + Inner_Writer_FIFO : IPC.FIFO.Inner_Acc; + when Description_Primary_PTY => + Inner_Primary_PTY : IPC.PTY.Inner_Acc; + when Description_Secondary_PTY => + Inner_Secondary_PTY : IPC.PTY.Inner_Acc; + when Description_Inode => + Inner_Is_Locked : Boolean; + Inner_Is_Blocking : Boolean; + Inner_Ino_Read : Boolean; + Inner_Ino_Write : Boolean; + Inner_Ino_Pos : Unsigned_64; + Inner_Ino_FS : VFS.FS_Handle; + Inner_Ino : VFS.File_Inode_Number; + when Description_Socket => + Inner_Socket : IPC.Socket.Socket_Acc; + end case; + end record; + + type Signal is + (Signal_Abort, + Signal_Alarm, + Signal_Bad_Memory, + Signal_Child, + Signal_Continue, + Signal_FP_Exception, + Signal_Hang_Up, + Signal_Illegal_Instruction, + Signal_Interrupted, + Signal_Kill, + Signal_Broken_Pipe, + Signal_Quit, + Signal_Segmentation_Fault, + Signal_Stop, + Signal_Terminated, + Signal_Terminal_Stop, + Signal_Terminal_In, + Signal_Terminal_Out, + Signal_User_1, + Signal_User_2, + Signal_Pollable, + Signal_Profiling_Timer, + Signal_Bad_Syscall, + Signal_Tracepoint, + Signal_Urgent, + Signal_Virtual_Timer, + Signal_CPU_Exceeded, + Signal_File_Size_Exceeded); + + -- These values and the values of Signal_Bitmap are userland ABI, please + -- dont touch them if you dont want to break them! + for Signal use + (Signal_Abort => 1, + Signal_Alarm => 2, + Signal_Bad_Memory => 3, + Signal_Child => 4, + Signal_Continue => 5, + Signal_FP_Exception => 6, + Signal_Hang_Up => 7, + Signal_Illegal_Instruction => 8, + Signal_Interrupted => 9, + Signal_Kill => 10, + Signal_Broken_Pipe => 11, + Signal_Quit => 12, + Signal_Segmentation_Fault => 13, + Signal_Stop => 14, + Signal_Terminated => 15, + Signal_Terminal_Stop => 16, + Signal_Terminal_In => 17, + Signal_Terminal_Out => 18, + Signal_User_1 => 19, + Signal_User_2 => 20, + Signal_Pollable => 21, + Signal_Profiling_Timer => 22, + Signal_Bad_Syscall => 23, + Signal_Tracepoint => 24, + Signal_Urgent => 25, + Signal_Virtual_Timer => 26, + Signal_CPU_Exceeded => 27, + Signal_File_Size_Exceeded => 28); + type Signal_Bitmap is array (Signal) of Boolean with Pack, Size => 28; + + -- Initialize the process registry. + procedure Init; + + -- Disable location ASLR when creating processes. + procedure Disable_ASLR; + + -- Query children for the passed process. + -- @param Proc Process to search the children for. + -- @param Buf Where to write the children. + -- @param Len Count of children, even if it does not fit. + type Children_Arr is array (Natural range <>) of PID; + procedure Get_Children + (Proc : PID; + Buf : out Children_Arr; + Len : out Natural); + + -- Information of a process. + type Process_Info is record + Identifier : String (1 .. 20); + Identifier_Len : Natural; + Process : PID; + Parent : PID; + User : Unsigned_32; + Is_Being_Traced : Boolean; + Has_Exited : Boolean; + end record; + type Process_Info_Arr is array (Natural range <>) of Process_Info; + + -- List all processes on the system. + -- @param List Where to write all the process information. + -- @param Total Total count of processes, even if it is > List'Length. + procedure List_All (List : out Process_Info_Arr; Total : out Natural); + + -- Create an empty process, a parent may be passed for getting some data. + -- @param Parent Parent of the process, or Error_PID for none. + -- @param Returned PID if successful, or Error_PID if not successful. + procedure Create_Process (Parent : PID; Returned : out PID); + + -- Delete a process. + -- @param Process Process to delete. + procedure Delete_Process (Process : PID) with Pre => Process /= Error_PID; + + -- Get runtime of all the threads owned by the process; + procedure Get_Runtime_Times + (Proc : PID; + System_Seconds, System_Nanoseconds : out Unsigned_64; + User_Seconds, User_Nanoseconds : out Unsigned_64); + + -- Get runtime of all children processes that have exited. + procedure Get_Children_Runtimes + (Proc : PID; + System_Seconds, System_Nanoseconds : out Unsigned_64; + User_Seconds, User_Nanoseconds : out Unsigned_64); + + -- Add a thread to the process. + -- @param Proc Process to add a thread. + -- @param Thread Thread to add. + -- @param Success True on success, False on failure. + procedure Add_Thread + (Proc : PID; + Thread : Scheduler.TID; + Success : out Boolean) + with Pre => Proc /= Error_PID; + + -- Get the count of tgreads held by the process. + -- @param Process Process to check. + -- @return Number of threads held by the process. + function Get_Thread_Count (Process : PID) return Natural + with Pre => Process /= Error_PID; + + -- Remove a thread from the process. + -- @param Proc Process to remove a thread from. + -- @param Thread Thread to remove. + procedure Remove_Thread (Proc : PID; Thread : Scheduler.TID) + with Pre => Proc /= Error_PID; + + -- Flush all the threads from a process. + -- @param Proc Process to remove all threads. + procedure Flush_Threads (Proc : PID) with Pre => Proc /= Error_PID; + + -- Reset the trackers for memory addresses and locations for the process. + -- If ASLR is enabled, it will be used here. + -- @param Process Process to reroll. + procedure Reassign_Process_Addresses (Process : PID) + with Pre => Process /= Error_PID; + + -- Get the process's default niceness. + function Get_Niceness (Process : PID) return Scheduler.Niceness + with Pre => Process /= Error_PID; + + -- Set the process's default niceness. + procedure Set_Niceness (Process : PID; Nice : Scheduler.Niceness) + with Pre => Process /= Error_PID; + + -- Check whether a file is registered in a process. + -- @param Process Process to check. + -- @param FD FD to check. + -- @return True if valid and registered, False if not. + function Is_Valid_File (Process : PID; FD : Unsigned_64) return Boolean + with Pre => Process /= Error_PID; + + -- Add a file to a process in the earliest available file descriptor slot. + -- @param Process Process to add a file to. + -- @param File File to add. + -- @param FD FD registered. + -- @param Success True on success, False if no slots are available. + -- @param Start Start allocating by the passed FD. + procedure Add_File + (Process : PID; + File : File_Description_Acc; + FD : out Natural; + Success : out Boolean; + Start : Natural := 0) + with Pre => Process /= Error_PID; + + -- Get the count of file descriptors held by the process. + -- @param Process Process to add a file to. + -- @return Number of file descriptors held by the process. + function Get_File_Count (Process : PID) return Natural + with Pre => Process /= Error_PID; + + -- Duplicate an individual file. + -- @param File File to duplicate. + -- @param Result Duplicated file, or null if error'd out. + procedure Duplicate + (F : File_Description_Acc; + Result : out File_Description_Acc); + + -- Duplicate an entire process table to another process. + -- @param Process Process to use. + -- @param Target Target process. + -- @param Max_FD FDs to duplicate from the beginning, by default, all. + procedure Duplicate_FD_Table + (Process : PID; + Target : PID; + Max_FD : Natural := Max_File_Count) + with Pre => (Process /= Error_PID) and + (Target /= Error_PID) and + Max_FD > 0 and + Max_FD <= Max_File_Count; + + -- Close and free an individual file. + -- @param F File to operate on. + procedure Close (F : in out File_Description_Acc); + + -- Get a file held on a file descriptor. + -- @param Process Process to operate on. + -- @param FD FD to fetch. + -- @return Returned file, or null in failure. + function Get_File + (Process : PID; + FD : Unsigned_64) return File_Description_Acc + with Pre => Process /= Error_PID; + + -- Get the Close on Exec flag for a file descriptor. + -- @param Process Process to operate on. + -- @param FD FD to check. + --- @return True if close on exec, false if not. + procedure Get_FD_Flags + (Process : PID; + FD : Unsigned_64; + Close_On_Exec : out Boolean; + Close_On_Fork : out Boolean) + with Pre => Process /= Error_PID; + + -- Set the Close on Exec flag for a file descriptor. + -- @param Process Process to operate on. + -- @param FD FD to set. + --- @param Is_Close True if close on exec, false if not. + procedure Set_FD_Flags + (Process : PID; + FD : Unsigned_64; + Close_On_Exec : Boolean; + Close_On_Fork : Boolean) + with Pre => Process /= Error_PID; + + -- Remove a file from a process. + -- @param Process Process to operate on. + -- @param FD File to remove. + procedure Remove_File (Process : PID; FD : Natural) + with Pre => Process /= Error_PID; + + -- Remove all files from a process. + -- @param Process Process to operate on. + procedure Flush_Files (Process : PID) with Pre => Process /= Error_PID; + + -- Remove all cloexec files from a process. + -- @param Process Process to operate on. + procedure Flush_Exec_Files (Process : PID) with Pre => Process /= Error_PID; + + -- Set the virtual map associated with the process. + -- @param Proc Process to operate on. + -- @param Map Map to assign. + procedure Set_Common_Map (Proc : PID; Map : Arch.MMU.Page_Table_Acc) + with Pre => Proc /= Error_PID; + + -- Get the virtual map associated with the process. + -- @param Proc Process to operate on. + -- @return The map. + function Get_Common_Map (Proc : PID) return Arch.MMU.Page_Table_Acc + with Pre => Proc /= Error_PID; + + -- Get the stack base of the process. + -- @param Proc Process to operate on. + -- @return The stack base. + function Get_Stack_Base (Process : PID) return Unsigned_64 + with Pre => Process /= Error_PID; + + -- Set the stack base of the process. + -- @param Proc Process to operate on. + -- @param Base Base to set. + procedure Set_Stack_Base (Process : PID; Base : Unsigned_64) + with Pre => Process /= Error_PID; + + -- Bump the alloc base of the process by the passed length. + -- @param P Process to operate on. + -- @param Length Length to bump to. + -- @return Previous base. + function Bump_Alloc_Base (P : PID; Length : Unsigned_64) return Unsigned_64 + with Pre => P /= Error_PID; + + -- Get whether a process is traced and its tracer FD. + -- @param Proc Process to operate on. + -- @param Is_Traced True if traced, False if not. + -- @param FD FD to use for tracing. + procedure Get_Traced_Info + (Process : PID; + Is_Traced : out Boolean; + FD : out Natural) + with Pre => Process /= Error_PID; + + -- Set whether a process is traced and its tracer FD. + -- @param Proc Process to operate on. + -- @param Is_Traced True if traced, False if not. + -- @param FD FD to use for tracing. + procedure Set_Traced_Info + (Process : PID; + Is_Traced : Boolean; + FD : Natural) + with Pre => Process /= Error_PID; + + -- Exit a process, and set an error code. + -- @param Process Process to exit. + -- @param Code Exit code. + -- @param Signal True if the exit was caused by a signal. + procedure Issue_Exit (Process : PID; Code : Unsigned_8) + with Pre => Process /= Error_PID; + + -- Exit a process with a signal, and set an error code. + -- @param Process Process to exit. + -- @param Code Exit code. + -- @param Sig Signal to cause the termination. + procedure Issue_Exit (Process : PID; Sig : Signal) + with Pre => Process /= Error_PID; + + -- Check whether a process exited. + -- @param Process Process to check. + --- @param Did_Exit True if exited, False if not. + -- @param Code Exit code, if it exited. + -- @param Was_Signal True if the exit was caused by a signal. + -- @param Sig The signal that caused termination, if any. + procedure Check_Exit + (Process : PID; + Did_Exit : out Boolean; + Code : out Unsigned_8; + Was_Signal : out Boolean; + Sig : out Signal) + with Pre => Process /= Error_PID; + + -- Set the current working directory. + -- @param Proc Process to set the CWD of. + -- @param CWD Path to set, it is not checked. + -- @param Success True if succesful, False if it did not fit, or others. + procedure Set_CWD + (Proc : PID; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number) + with Pre => Proc /= Error_PID; + + -- Get the current working directory. + -- @param Proc Process to get the CWD of. + -- @param CWD Buffer to write the CWD. + -- @param Len Length of the CWD, even if bigger than CWD'Length. + procedure Get_CWD + (Proc : PID; + FS : out VFS.FS_Handle; + Ino : out VFS.File_Inode_Number) + with Pre => Proc /= Error_PID; + + -- Get the parent PID of the process. + -- @param Proc Process to get the info from. + -- @return Parent PID, or Error_PID if no parent. + function Get_Parent (Proc : PID) return PID + with Pre => Proc /= Error_PID; + + -- Set the identifier of the process, will be chopped if needed. + -- @param Proc Process to set the name of. + -- @param Name ID to set, it is not checked. + procedure Set_Identifier (Proc : PID; Name : String) + with Pre => Proc /= Error_PID; + + -- Get the process identifier. + -- @param Proc Process to get the ID of. + -- @param ID Buffer to write the ID. + -- @param Len Length of the ID, even if bigger than ID'Length. + procedure Get_Identifier + (Proc : PID; + ID : out String; + Len : out Natural) + with Pre => Proc /= Error_PID; + + -- Get the process user id. + -- @param Proc Process to get the UID of. + -- @param UID Returned UID. + procedure Get_UID (Proc : PID; UID : out Unsigned_32); + + -- Set the process user id. + -- @param Proc Process to get the UID of. + -- @param UID UID to set. + procedure Set_UID (Proc : PID; UID : Unsigned_32); + + -- Get the process effective user id. + -- @param Proc Process to get the UID of. + -- @param EUID Returned UID. + procedure Get_Effective_UID (Proc : PID; EUID : out Unsigned_32); + + -- Set the process effective user id. + -- @param Proc Process to get the UID of. + -- @param EUID EUID to set. + procedure Set_Effective_UID (Proc : PID; EUID : Unsigned_32); + + -- Get the process group id. + -- @param Proc Process to get the GID of. + -- @param GID Returned GID. + procedure Get_GID (Proc : PID; GID : out Unsigned_32); + + -- Set the process group id. + -- @param Proc Process to set the GID of. + -- @param GID GID to set. + procedure Set_GID (Proc : PID; GID : Unsigned_32); + + -- Get the process effective group id. + -- @param Proc Process to get the GID of. + -- @param EGID Returned GID. + procedure Get_Effective_GID (Proc : PID; EGID : out Unsigned_32); + + -- Set the process effective group id. + -- @param Proc Process to get the GID of. + -- @param EGID EGID to set. + procedure Set_Effective_GID (Proc : PID; EGID : Unsigned_32); + + Max_Supplementary_Groups : constant := 10; + type Supplementary_GID_Arr is array (Natural range <>) of Unsigned_32; + + procedure Get_Supplementary_Groups + (Proc : PID; + Groups : out Supplementary_GID_Arr; + Length : out Natural); + + procedure Set_Supplementary_Groups + (Proc : PID; + Groups : Supplementary_GID_Arr; + Success : out Boolean); + + procedure Empty_Supplementary_Groups (Proc : PID); + + -- Get the process umask. + -- @param Proc Process to get the UID of. + -- @param Umask Returned umask. + procedure Get_Umask (Proc : PID; Umask : out VFS.File_Mode); + + -- Set the process umask. + -- @param Proc Process to get the UID of. + -- @param Umask umask to set without modification, no AND or anything. + procedure Set_Umask (Proc : PID; Umask : VFS.File_Mode); + + -- Get masked signals for a process, those are signals that cannot be + -- raised. + -- @param Proc Process to set masked signals for. + -- @param Sig Signal bitmap to write. + procedure Get_Masked_Signals (Proc : PID; Sig : out Signal_Bitmap); + + -- Set masked signals for a process, those are signals that cannot be + -- raised. + -- @param Proc Process to set masked signals for. + -- @param Sig Signal bitmap to mask, true means that signal will be mask. + procedure Set_Masked_Signals (Proc : PID; Sig : Signal_Bitmap); + + -- Signal that a signal was raised. + -- @param Proc Process to raise for. + -- @param Sig Signal to raise. + procedure Raise_Signal (Proc : PID; Sig : Signal); + + -- Get the address assigned for a process to use as a signal handler. + -- @param Proc Process to set the handler for. + -- @param Sig Signal to set the handler to. + -- @param Addr Address set for the handler. + procedure Get_Signal_Handler + (Proc : PID; + Sig : Signal; + Addr : out System.Address); + + -- Set an address for a process to use as a signal handler. + -- @param Proc Process to set the handler for. + -- @param Sig Signal to set the handler to. + -- @param Addr Address to set for the handler. + procedure Set_Signal_Handler + (Proc : PID; + Sig : Signal; + Addr : System.Address); + + -- Get a raised signal for a process. + -- @param Proc Process to fetch signals for. + -- @param Sig Raised signal. + -- @param Addr Address of the handler, Null_Address if not registered. + -- @param No_Sig The process has no more signals to process. + -- @param Ignore If not registered, this signal can be ignored, else, kill. + procedure Get_Raised_Signal_Actions + (Proc : PID; + Sig : out Signal; + Addr : out System.Address; + No_Sig : out Boolean; + Ignore : out Boolean); + + -- Convert a PID to an integer. The results will be reproducible for the + -- same PIDs. + -- @param Proc PID to convert, can be Error_PID. + -- @return The converted integer. + function Convert (Proc : PID) return Natural with Pre => Proc /= Error_PID; + + -- Convert an integer back into a PID, invalid integers may be passed, in + -- which case they will translate to Error_PID. + -- @param Proc Integer to convert. + -- @return The converted PID. + function Convert (Proc : Natural) return PID; + ---------------------------------------------------------------------------- + -- These functions are wrappers for MAC behaviour, getters and setters + -- would be expensive given the nature of "hey imma just check this" of + -- MAC and the size of the structures involved. + -- It is a bit boilerplaty though, sorry. + + function Get_Enforcement (Proc : PID) return MAC.Enforcement; + procedure Set_Enforcement (Proc : PID; Act : MAC.Enforcement); + + function Get_Capabilities (Proc : PID) return MAC.Capabilities; + procedure Set_Capabilities (Proc : PID; Caps : MAC.Capabilities); + + function Check_Permissions + (Proc : PID; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number) return MAC.Permissions; + + procedure Add_Entity + (Proc : PID; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + Perms : MAC.Permissions; + Status : out MAC.Addition_Status); + + function Get_Limit + (Proc : PID; + Resource : MAC.Limit_Type) return MAC.Limit_Value; + + procedure Set_Limit + (Proc : PID; + Resource : MAC.Limit_Type; + Limit : MAC.Limit_Value; + Could_Set : out Boolean); + +private + + type PID is new Natural range 0 .. 256; + Error_PID : constant PID := 0; + Max_Process_Count : constant Natural := 256; + + Max_CWD_Length : constant Natural := 100; + Max_Name_Length : constant Natural := 20; + Max_Thread_Count : constant Natural := 20; + Max_File_Count : constant Natural := 100; + + Default_Umask : constant VFS.File_Mode := 8#22#; + + type File_Descriptor is record + Close_On_Exec : Boolean; + Close_On_Fork : Boolean; + Description : File_Description_Acc; + end record; + + type Thread_Arr is array (1 .. Max_Thread_Count) of Scheduler.TID; + type File_Arr is array (0 .. Max_File_Count - 1) of File_Descriptor; + type Handle_Arr is array (Signal) of System.Address; + type Process_Data is record + Data_Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Masked_Signals : Signal_Bitmap; + Raised_Signals : Signal_Bitmap; + Signal_Handlers : Handle_Arr; + Niceness : Scheduler.Niceness; + Umask : VFS.File_Mode; + User : Unsigned_32; + Effective_User : Unsigned_32; + Group : Unsigned_32; + Effective_Group : Unsigned_32; + SGroup_Count : Natural; + SGroups : Supplementary_GID_Arr (1 .. Max_Supplementary_Groups); + Identifier : String (1 .. Max_Name_Length); + Identifier_Len : Natural range 0 .. Max_Name_Length; + Parent : PID; + Is_Traced : Boolean; + Tracer_FD : Natural range 0 .. Max_File_Count - 1; + Current_Dir_FS : VFS.FS_Handle; + Current_Dir_Ino : VFS.File_Inode_Number; + Thread_List : Thread_Arr; + File_Table : File_Arr; + Common_Map : Arch.MMU.Page_Table_Acc; + Stack_Base : Unsigned_64; + Alloc_Base : Unsigned_64; + Perms : MAC.Context; + Signal_Exit : Boolean; + Which_Signal : Signal; + Did_Exit : Boolean; + Exit_Code : Unsigned_8; + Children_SSec : Unsigned_64; + Children_SNSec : Unsigned_64; + Children_USec : Unsigned_64; + Children_UNSec : Unsigned_64; + end record; + type Process_Data_Acc is access Process_Data; + type Process_Arr is array (PID range 1 .. PID'Last) of Process_Data_Acc; + type Process_Arr_Acc is access Process_Arr; + + Registry_Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Registry : Process_Arr_Acc; +end Userland.Process; diff --git a/source/userland/userland-syscall.adb b/source/userland/userland-syscall.adb new file mode 100644 index 0000000..0849c9f --- /dev/null +++ b/source/userland/userland-syscall.adb @@ -0,0 +1,6045 @@ +-- userland-syscall.adb: Syscall implementation. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Characters.Latin_1; +with Ada.Unchecked_Conversion; +with Config; +with System; use System; +with Lib.Messages; +with Lib; +with Lib.Time; +with Lib.Panic; +with Lib.Alignment; +with Userland.Loader; +with Arch.MMU; use Arch.MMU; +with Arch.Clocks; +with Arch.Local; +with Memory.Physical; +with Memory; use Memory; +with Ada.Unchecked_Deallocation; +with Arch.Hooks; +with Cryptography.Random; +with IPC.Futex; +with IPC.FileLock; +with IPC.SHM; +with Devices.TermIOs; +with Arch.Power; +with Devices; use Devices; +with Networking.Interfaces; +with Userland.Memory_Failure; +with Userland.OOM_Failure; + +package body Userland.Syscall is + procedure Sys_Exit + (Code : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + begin + Returned := 0; + Errno := Error_No_Error; + Do_Exit (Arch.Local.Get_Current_Process, Unsigned_8 (Code and 16#FF#)); + end Sys_Exit; + + procedure Arch_PRCtl + (Code : Unsigned_64; + Argument : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + I_Arg : constant Integer_Address := Integer_Address (Argument); + S_Arg : constant System.Address := To_Address (I_Arg); + begin + if not Check_Userland_Access (Map, I_Arg, 8) then + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + elsif Code > Unsigned_64 (Natural'Last) or else + not Arch.Hooks.PRCTL_Hook (Natural (Code), S_Arg) + then + Returned := Unsigned_64'Last; + Errno := Error_Invalid_Value; + else + Returned := 0; + Errno := Error_No_Error; + end if; + end Arch_PRCtl; + + procedure Open + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + Curr_Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Curr_Proc); + Do_Cloexec : constant Boolean := (Flags and O_CLOEXEC) /= 0; + Do_Read : constant Boolean := (Flags and O_RDONLY) /= 0; + Do_Write : constant Boolean := (Flags and O_WRONLY) /= 0; + Dont_Follow : constant Boolean := (Flags and O_NOFOLLOW) /= 0; + Do_Append : constant Boolean := (Flags and O_APPEND) /= 0; + Do_Block : constant Boolean := (Flags and O_NONBLOCK) = 0; + Discard : Boolean; + Success : VFS.FS_Status; + CWD_FS : VFS.FS_Handle; + CWD_Ino : VFS.File_Inode_Number; + Opened_Ino : VFS.File_Inode_Number; + Opened_Stat : VFS.File_Stat; + New_Descr : File_Description_Acc; + File_Perms : MAC.Permissions; + Returned_FD : Natural; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) then + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) then + Returned := Unsigned_64'Last; + Errno := Error_String_Too_Long; + return; + end if; + + Userland.Process.Get_Effective_UID (Curr_Proc, User); + + declare + Rela_FS : VFS.FS_Handle; + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + begin + Resolve_AT_Directive (Curr_Proc, Dir_FD, Rela_FS, CWD_Ino); + if Rela_FS = VFS.Error_Handle then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + end if; + + VFS.Open (Rela_FS, CWD_Ino, Path, CWD_FS, Opened_Ino, Success, + User, Do_Read, Do_Write, not Dont_Follow); + if Success /= VFS.FS_Success then + Returned := Unsigned_64'Last; + Errno := Error_No_Entity; + return; + end if; + + if Do_Append then + VFS.Stat (CWD_FS, Opened_Ino, Opened_Stat, Success); + else + Opened_Stat.Byte_Size := 0; + end if; + + File_Perms := Check_Permissions (Curr_Proc, CWD_FS, Opened_Ino); + New_Descr := new File_Description' + (Children_Count => 0, + Description => Description_Inode, + Inner_Is_Locked => False, + Inner_Is_Blocking => Do_Block, + Inner_Ino_Read => Do_Read, + Inner_Ino_Write => Do_Write, + Inner_Ino_FS => CWD_FS, + Inner_Ino_Pos => Opened_Stat.Byte_Size, + Inner_Ino => Opened_Ino); + end; + + if (not Do_Read and not Do_Write) or + (Do_Read and not File_Perms.Can_Read) or + (Do_Write and not File_Perms.Can_Write) or + (not Do_Append and File_Perms.Can_Append_Only) + then + Close (New_Descr); + Execute_MAC_Failure ("open", Curr_Proc); + Returned := Unsigned_64'Last; + Errno := Error_Bad_Access; + return; + end if; + + Check_Add_File (Curr_Proc, New_Descr, Discard, Returned_FD); + if Discard then + Process.Set_FD_Flags + (Curr_Proc, Unsigned_64 (Returned_FD), Do_Cloexec, False); + Errno := Error_No_Error; + Returned := Unsigned_64 (Returned_FD); + else + Close (New_Descr); + Returned := Unsigned_64'Last; + Errno := Error_Too_Many_Files; + end if; + end Open; + + procedure Close + (File_D : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Curr : constant PID := Arch.Local.Get_Current_Process; + begin + if Userland.Process.Is_Valid_File (Curr, File_D) then + Userland.Process.Remove_File (Curr, Natural (File_D)); + Returned := 0; + Errno := Error_No_Error; + else + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + end if; + end Close; + + procedure Read + (File_D : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Buf_IAddr : constant Integer_Address := Integer_Address (Buffer); + Buf_SAddr : constant System.Address := To_Address (Buf_IAddr); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, File_D); + Ret_Count : Natural; + Success1 : VFS.FS_Status; + Success2 : IPC.FIFO.Pipe_Status; + Success4 : IPC.Socket.Socket_Status; + Success5 : IPC.PTY.Status; + User : Unsigned_32; + Final_Cnt : Natural; + begin + if not Check_Userland_Access (Map, Buf_IAddr, Count) then + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + return; + elsif File = null then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + elsif Count > Unsigned_64 (Natural'Last) then + Final_Cnt := Natural'Last; + else + Final_Cnt := Natural (Count); + end if; + + Userland.Process.Get_Effective_UID (Proc, User); + + declare + Data : Devices.Operation_Data (1 .. Final_Cnt) + with Import, Address => Buf_SAddr; + begin + case File.Description is + when Description_Inode => + if not File.Inner_Ino_Read then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + VFS.Read (File.Inner_Ino_FS, File.Inner_Ino, File.Inner_Ino_Pos, + Data, Ret_Count, File.Inner_Is_Blocking, Success1); + File.Inner_Ino_Pos := File.Inner_Ino_Pos + + Unsigned_64 (Ret_Count); + Translate_Status + (Success1, Unsigned_64 (Ret_Count), Returned, Errno); + when Description_Reader_FIFO => + Read (File.Inner_Reader_FIFO, Data, Ret_Count, Success2); + Translate_Status (Success2, Unsigned_64 (Ret_Count), Returned, + Errno); + when Description_Primary_PTY => + IPC.PTY.Read_Primary + (File.Inner_Primary_PTY, Data, Ret_Count, Success5); + Translate_Status (Success5, Unsigned_64 (Ret_Count), Returned, + Errno); + when Description_Secondary_PTY => + IPC.PTY.Read_Secondary + (File.Inner_Secondary_PTY, Data, Ret_Count, Success5); + Translate_Status (Success5, Unsigned_64 (Ret_Count), Returned, + Errno); + when Description_Writer_FIFO => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + when Description_Socket => + IPC.Socket.Read (File.Inner_Socket, Data, Ret_Count, Success4); + Translate_Status + (Success4, Unsigned_64 (Ret_Count), Returned, Errno); + end case; + end; + end Read; + + procedure Write + (File_D : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Buf_IAddr : constant Integer_Address := Integer_Address (Buffer); + Buf_SAddr : constant System.Address := To_Address (Buf_IAddr); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, File_D); + Ret_Count : Natural; + Success1 : VFS.FS_Status; + Success2 : IPC.FIFO.Pipe_Status; + Success4 : IPC.Socket.Socket_Status; + Success5 : IPC.PTY.Status; + User : Unsigned_32; + Final_Cnt : Natural; + begin + if not Check_Userland_Access (Map, Buf_IAddr, Count) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif File = null then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + elsif Count > Unsigned_64 (Natural'Last) then + Final_Cnt := Natural'Last; + else + Final_Cnt := Natural (Count); + end if; + + Process.Get_Effective_UID (Proc, User); + + declare + Data : Devices.Operation_Data (1 .. Final_Cnt) + with Import, Address => Buf_SAddr; + begin + case File.Description is + when Description_Inode => + if not File.Inner_Ino_Write then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + elsif File.Inner_Ino_Pos + Unsigned_64 (Final_Cnt) > + Unsigned_64 (Get_Limit (Proc, MAC.File_Size_Limit)) + then + Errno := Error_File_Too_Big; + Returned := Unsigned_64'Last; + return; + end if; + + VFS.Write (File.Inner_Ino_FS, File.Inner_Ino, + File.Inner_Ino_Pos, Data, Ret_Count, + File.Inner_Is_Blocking, Success1); + File.Inner_Ino_Pos := File.Inner_Ino_Pos + + Unsigned_64 (Ret_Count); + Translate_Status (Success1, Unsigned_64 (Ret_Count), Returned, + Errno); + when Description_Writer_FIFO => + Write (File.Inner_Writer_FIFO, Data, Ret_Count, Success2); + Translate_Status (Success2, Unsigned_64 (Ret_Count), Returned, + Errno); + when Description_Primary_PTY => + IPC.PTY.Write_Primary + (File.Inner_Primary_PTY, Data, Ret_Count, Success5); + Translate_Status (Success5, Unsigned_64 (Ret_Count), Returned, + Errno); + when Description_Secondary_PTY => + IPC.PTY.Write_Secondary + (File.Inner_Secondary_PTY, Data, Ret_Count, Success5); + Translate_Status (Success5, Unsigned_64 (Ret_Count), Returned, + Errno); + when Description_Reader_FIFO => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + when Description_Socket => + IPC.Socket.Write (File.Inner_Socket, Data, Ret_Count, Success4); + Translate_Status + (Success4, Unsigned_64 (Ret_Count), Returned, Errno); + end case; + end; + end Write; + + procedure Seek + (File_D : Unsigned_64; + Offset : Unsigned_64; + Whence : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + File : File_Description_Acc; + Stat_Val : VFS.File_Stat; + Success : VFS.FS_Status; + User : Unsigned_32; + Result : Unsigned_64; + begin + File := Get_File (Proc, File_D); + if File = null then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + Userland.Process.Get_Effective_UID (Proc, User); + + case File.Description is + when Description_Inode => + VFS.Stat (File.Inner_Ino_FS, File.Inner_Ino, Stat_Val, Success); + if Success /= VFS.FS_Success or + Stat_Val.Type_Of_File = File_Character_Device + then + goto Invalid_Seek_Error; + end if; + + case Whence is + when SEEK_SET => + File.Inner_Ino_Pos := Offset; + when SEEK_CURRENT => + File.Inner_Ino_Pos := File.Inner_Ino_Pos + Offset; + when SEEK_END => + File.Inner_Ino_Pos := Stat_Val.Byte_Size + Offset; + when others => + goto Invalid_Value_Error; + end case; + + Result := File.Inner_Ino_Pos; + when others => + goto Invalid_Seek_Error; + end case; + + Errno := Error_No_Error; + Returned := Result; + return; + + <> + Errno := Error_Invalid_Seek; + Returned := Unsigned_64'Last; + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end Seek; + + procedure Mmap + (Hint : Unsigned_64; + Length : Unsigned_64; + Protection : Unsigned_64; + Flags : Unsigned_64; + File_D : Unsigned_64; + Offset : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Perms : constant Page_Permissions := Get_Mmap_Prot (Protection); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Final_Hint : Virtual_Address := Virtual_Address (Hint); + Ignored : System.Address; + File : File_Description_Acc; + Success : Boolean; + Status : FS_Status; + begin + if not Get_Capabilities (Proc).Can_Modify_Memory then + goto Bad_MAC_Return; + elsif (Perms.Can_Write and Perms.Can_Execute) or + (Hint mod Page_Size /= 0) or + (Length mod Page_Size /= 0) or + Length = 0 + then + goto Invalid_Value_Return; + elsif Get_User_Mapped_Size (Map) + Length >= + Unsigned_64 (Get_Limit (Proc, MAC.Memory_Size_Limit)) + then + goto No_Memory_Return; + end if; + + -- Check for our own hint if none was provided. + if Hint = 0 then + if (Flags and MAP_FIXED) /= 0 then + goto Invalid_Value_Return; + else + Final_Hint := Virtual_Address (Bump_Alloc_Base (Proc, Length)); + end if; + end if; + + -- Check the address is good. + if not Check_Userland_Mappability (Map, Final_Hint, Length) then + goto Invalid_Value_Return; + end if; + + -- Do mmap anon or pass it to the VFS. + if (Flags and MAP_ANON) /= 0 then + Map_Allocated_Range + (Map => Map, + Virtual_Start => To_Address (Final_Hint), + Length => Storage_Count (Length), + Permissions => Perms, + Physical_Start => Ignored, + Success => Success); + if Success then + Errno := Error_No_Error; + Returned := Unsigned_64 (Final_Hint); + else + goto No_Memory_Return; + end if; + else + File := Get_File (Proc, File_D); + if File = null then + goto Invalid_Value_Return; + end if; + + if File.Description = Description_Inode then + VFS.Mmap + (Key => File.Inner_Ino_FS, + Ino => File.Inner_Ino, + Map => Map, + Offset => Offset, + Address => Final_Hint, + Length => Length, + Flags => Perms, + Status => Status); + if Status /= VFS.FS_Success then + goto No_Memory_Return; + end if; + + Errno := Error_No_Error; + Returned := Unsigned_64 (Final_Hint); + else + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + end if; + end if; + + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + + <> + Errno := Error_No_Memory; + Returned := Unsigned_64'Last; + return; + + <> + Errno := Error_Bad_Access; + Execute_MAC_Failure ("mmap", Proc); + Returned := Unsigned_64'Last; + end Mmap; + + procedure Munmap + (Address : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Addr : constant System.Address := To_Address (Virtual_Address (Address)); + begin + if not Get_Capabilities (Proc).Can_Modify_Memory then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("munmap", Proc); + Returned := Unsigned_64'Last; + elsif Unmap_Range (Map, Addr, Storage_Count (Length)) then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end if; + end Munmap; + + procedure Get_PID (Returned : out Unsigned_64; Errno : out Errno_Value) is + begin + Errno := Error_No_Error; + Returned := Unsigned_64 (Convert (Arch.Local.Get_Current_Process)); + end Get_PID; + + procedure Get_PPID (Returned : out Unsigned_64; Errno : out Errno_Value) is + Parent : constant PID := Get_Parent (Arch.Local.Get_Current_Process); + begin + Errno := Error_No_Error; + Returned := Unsigned_64 (Convert (Parent)); + end Get_PPID; + + procedure Exec + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Argv_Addr : Unsigned_64; + Argv_Len : Unsigned_64; + Envp_Addr : Unsigned_64; + Envp_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Th : constant TID := Arch.Local.Get_Current_Thread; + Proc : constant PID := Arch.Local.Get_Current_Process; + Tmp_Map : Arch.MMU.Page_Table_Acc; + Success : Boolean; + begin + -- Flush our threads and keep the previous map just in case. + Userland.Process.Flush_Threads (Proc); + Tmp_Map := Get_Common_Map (Proc); + + Exec_Into_Process + (Path_Addr => Path_Addr, + Path_Len => Path_Len, + Argv_Addr => Argv_Addr, + Argv_Len => Argv_Len, + Envp_Addr => Envp_Addr, + Envp_Len => Envp_Len, + Proc => Proc, + Success => Success, + Errno => Errno); + if Success then + -- Free critical state now that we know wont be running. + Success := Arch.MMU.Make_Active (Get_Common_Map (Proc)); + Userland.Process.Remove_Thread (Proc, Th); + Arch.MMU.Destroy_Table (Tmp_Map); + Scheduler.Bail; + else + Set_Common_Map (Proc, Tmp_Map); + Returned := Unsigned_64'Last; + end if; + end Exec; + + procedure Clone + (Callback : Unsigned_64; + Call_Arg : Unsigned_64; + Stack : Unsigned_64; + Flags : Unsigned_64; + TLS_Addr : Unsigned_64; + Cluster : Unsigned_64; + GP_State : Arch.Context.GP_Context; + FP_State : Arch.Context.FP_Context; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + pragma Unreferenced (Call_Arg); + + Parent : PID := Arch.Local.Get_Current_Process; + Child : PID; + New_TID : Scheduler.TID; + Ret : Unsigned_64; + Id : String (1 .. Process.Max_Name_Length); + Id_Len : Natural; + Success : Boolean; + + Use_Parent : constant Boolean := (Flags and CLONE_PARENT) /= 0; + Do_Thread : constant Boolean := (Flags and CLONE_THREAD) /= 0; + begin + if not Get_Capabilities (Parent).Can_Spawn_Others then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("clone", Parent); + Returned := Unsigned_64'Last; + return; + elsif Cluster > Unsigned_64 (Natural'Last) then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + + if Use_Parent then + Parent := Get_Parent (Parent); + if Parent = Error_PID then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + end if; + + if Do_Thread then + Child := Parent; + New_TID := Create_User_Thread + (Address => Integer_Address (Callback), + Map => Get_Common_Map (Child), + Stack_Addr => Stack, + TLS_Addr => TLS_Addr, + Cluster => Scheduler.Convert (Natural (Cluster)), + PID => Convert (Child)); + Ret := Unsigned_64 (Scheduler.Convert (New_TID)); + else + Create_Process (Parent, Child); + if Child = Error_PID then + goto Block_Error; + end if; + + Get_Identifier (Parent, Id, Id_Len); + Set_Identifier (Child, Id (1 .. Id_Len)); + + Set_Common_Map (Child, Fork_Table (Get_Common_Map (Parent))); + if Get_Common_Map (Child) = null then + goto Block_Error; + end if; + + Duplicate_FD_Table (Parent, Child); + New_TID := Scheduler.Create_User_Thread + (GP_State => GP_State, + FP_State => FP_State, + Map => Get_Common_Map (Child), + Cluster => Scheduler.Convert (Natural (Cluster)), + PID => Convert (Child), + TCB => Arch.Local.Fetch_TCB); + Ret := Unsigned_64 (Convert (Child)); + end if; + + if New_TID = Error_TID then + goto Block_Error; + end if; + Add_Thread (Child, New_TID, Success); + if not Success then + goto Block_Error; + end if; + + Errno := Error_No_Error; + Returned := Ret; + return; + + <> + Errno := Error_Would_Block; + Returned := Unsigned_64'Last; + end Clone; + + procedure Wait + (Waited_PID, Exit_Addr, Options : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Addr : constant Integer_Address := Integer_Address (Exit_Addr); + Proc : constant PID := Arch.Local.Get_Current_Process; + Dont_Hang : constant Boolean := (Options and WNOHANG) /= 0; + Map : Page_Table_Acc := Get_Common_Map (Proc); + Waited : PID; + Children : Process.Children_Arr (1 .. 25); + Count : Natural; + Did_Exit : Boolean; + Was_Signal : Boolean; + Cause : Signal; + Error_Code : Unsigned_8; + Exit_Value : Unsigned_32 with Address => To_Address (Addr), Import; + begin + -- If -1, we have to wait for any of the children, else, wait for the + -- passed PID. + if Waited_PID = Unsigned_64 (Unsigned_32'Last) then + loop + Process.Get_Children (Proc, Children, Count); + if Count = 0 then + goto Child_Error; + end if; + + for PID_Item of Children (1 .. Count) loop + Waited := PID_Item; + if Waited /= Error_PID then + Check_Exit (Waited, Did_Exit, Error_Code, Was_Signal, Cause); + if Did_Exit then + goto Waited_Exited; + end if; + end if; + end loop; + + exit when Dont_Hang; + Scheduler.Yield_If_Able; + end loop; + else + Waited := Userland.Process.Convert (Natural (Waited_PID)); + if Waited = Error_PID or else Get_Parent (Waited) /= Proc then + goto Child_Error; + end if; + + loop + Check_Exit (Waited, Did_Exit, Error_Code, Was_Signal, Cause); + if Did_Exit then + goto Waited_Exited; + end if; + exit when Dont_Hang; + Scheduler.Yield_If_Able; + end loop; + end if; + + -- If we get here, it means we are not blocking, and that the + -- process has not exited, so lets return what we have to. + Errno := Error_No_Error; + Returned := 0; + return; + + <> + -- Set the return value if we are to. + if Exit_Value'Address /= System.Null_Address then + if not Check_Userland_Access (Map, Addr, 4) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + if Was_Signal then + Exit_Value := WIFSIGNALED or Shift_Left (Cause'Enum_Rep, 24); + else + Exit_Value := WIFEXITED or Unsigned_32 (Error_Code); + end if; + end if; + + -- Now that we got the exit code, finally allow the process to die. + Map := Get_Common_Map (Waited); + Arch.MMU.Destroy_Table (Map); + Userland.Process.Delete_Process (Waited); + + Errno := Error_No_Error; + Returned := Unsigned_64 (Convert (Waited)); + return; + + <> + Errno := Error_Child; + Returned := Unsigned_64'Last; + end Wait; + + procedure Socket + (Domain : Unsigned_64; + DataType : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Success : Boolean; + Desc : File_Description_Acc; + New_Sock : IPC.Socket.Socket_Acc; + Dom : IPC.Socket.Domain; + Data : IPC.Socket.DataType; + begin + case Domain is + when AF_INET => Dom := IPC.Socket.IPv4; + when AF_INET6 => Dom := IPC.Socket.IPv6; + when AF_UNIX => Dom := IPC.Socket.UNIX; + when others => goto Invalid_Value_Return; + end case; + + case DataType and 16#FFF# is + when SOCK_STREAM => Data := IPC.Socket.Stream; + when SOCK_DGRAM => Data := IPC.Socket.Datagram; + when SOCK_RAW => Data := IPC.Socket.Raw; + when others => goto Invalid_Value_Return; + end case; + + New_Sock := Create (Dom, Data, (DataType and SOCK_NONBLOCK) = 0); + if New_Sock = null then + goto Invalid_Value_Return; + end if; + + Desc := new File_Description'(Description_Socket, 0, New_Sock); + Check_Add_File (Proc, Desc, Success, Natural (Returned)); + if Success then + Set_FD_Flags + (Proc, Returned, + (DataType and SOCK_CLOEXEC) /= 0, False); + Errno := Error_No_Error; + else + Close (New_Sock); + Close (Desc); + Errno := Error_Too_Many_Files; + Returned := Unsigned_64'Last; + end if; + + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end Socket; + + procedure Set_Hostname + (Address : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Len : constant Natural := Natural (Length); + IAddr : constant Integer_Address := Integer_Address (Address); + SAddr : constant System.Address := To_Address (IAddr); + Name : String (1 .. Len) with Import, Address => SAddr; + Success : Boolean; + begin + if not Get_Capabilities (Proc).Can_Manage_Networking then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("set_hostname", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + if not Check_Userland_Access (Map, IAddr, Length) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + Networking.Set_Hostname (Name, Success); + + if not Success then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + else + Errno := Error_No_Error; + Returned := 0; + end if; + end Set_Hostname; + + procedure FStat + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Stat_Addr : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Stat_IAddr : constant Integer_Address := Integer_Address (Stat_Addr); + Stat_SAddr : constant System.Address := To_Address (Stat_IAddr); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + File_Desc : File_Description_Acc; + Stat_Val : VFS.File_Stat; + ID : Natural; + Rel_FS, FS : VFS.FS_Handle; + D_Ino, Ino : VFS.File_Inode_Number; + Success : VFS.FS_Status; + Stat_Buf : Stat with Import, Address => Stat_SAddr; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, Stat_IAddr, Stat'Size / 8) or else + not Check_Userland_Access (Map, Path_IAddr, Path_Len) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + Userland.Process.Get_Effective_UID (Proc, User); + + if (Flags and AT_EMPTY_PATH) /= 0 then + File_Desc := Get_File (Proc, Dir_FD); + if File_Desc = null then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + case File_Desc.Description is + when Description_Inode => + FS := File_Desc.Inner_Ino_FS; + Ino := File_Desc.Inner_Ino; + when Description_Reader_FIFO | Description_Writer_FIFO | + Description_Primary_PTY | Description_Secondary_PTY => + Stat_Buf := + (Device_Number => 0, + Inode_Number => 1, + Mode => Stat_IFIFO, + Number_Links => 1, + UID => 0, + GID => 0, + Inner_Device => 1, + File_Size => 512, + Access_Time => (Seconds => 0, Nanoseconds => 0), + Modify_Time => (Seconds => 0, Nanoseconds => 0), + Create_Time => (Seconds => 0, Nanoseconds => 0), + Block_Size => 512, + Block_Count => 1); + goto Success_Return; + when Description_Socket => + Stat_Buf := + (Device_Number => 0, + Inode_Number => 1, + Mode => Stat_ISOCK, + Number_Links => 1, + UID => 0, + GID => 0, + Inner_Device => 1, + File_Size => 512, + Access_Time => (Seconds => 0, Nanoseconds => 0), + Modify_Time => (Seconds => 0, Nanoseconds => 0), + Create_Time => (Seconds => 0, Nanoseconds => 0), + Block_Size => 512, + Block_Count => 1); + goto Success_Return; + end case; + else + declare + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + begin + Resolve_AT_Directive (Proc, Dir_FD, Rel_FS, D_Ino); + if Rel_FS = VFS.Error_Handle then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + VFS.Open + (Key => Rel_FS, + Relative => D_Ino, + Path => Path, + Final_Key => FS, + Ino => Ino, + Success => Success, + User => User, + Want_Read => False, + Want_Write => False, + Do_Follow => (Flags and AT_SYMLINK_NOFOLLOW) = 0); + if Success /= VFS.FS_Success then + Errno := Error_No_Entity; + Returned := Unsigned_64'Last; + return; + end if; + end; + end if; + + VFS.Stat (FS, Ino, Stat_Val, Success); + if Success /= VFS.FS_Success then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + ID := Get_Unique_ID (Get_Backing_Device (FS)); + Stat_Buf := + (Device_Number => Unsigned_64 (ID), + Inode_Number => Unsigned_64 (Stat_Val.Unique_Identifier), + Mode => Unsigned_32 (Stat_Val.Mode), + Number_Links => Unsigned_32 (Stat_Val.Hard_Link_Count), + UID => Stat_Val.UID, + GID => Stat_Val.GID, + Inner_Device => Unsigned_64 (ID), + File_Size => Stat_Val.Byte_Size, + Access_Time => + (Stat_Val.Access_Time.Seconds_Since_Epoch, + Stat_Val.Access_Time.Additional_Nanoseconds), + Modify_Time => + (Stat_Val.Modification_Time.Seconds_Since_Epoch, + Stat_Val.Modification_Time.Additional_Nanoseconds), + Create_Time => + (Stat_Val.Creation_Time.Seconds_Since_Epoch, + Stat_Val.Creation_Time.Additional_Nanoseconds), + Block_Size => Unsigned_64 (Stat_Val.IO_Block_Size), + Block_Count => Stat_Val.IO_Block_Count); + + -- Set the access part of mode. + case Stat_Val.Type_Of_File is + when VFS.File_Regular => + Stat_Buf.Mode := Stat_Buf.Mode or Stat_IFREG; + when VFS.File_Directory => + Stat_Buf.Mode := Stat_Buf.Mode or Stat_IFDIR; + when VFS.File_Symbolic_Link => + Stat_Buf.Mode := Stat_Buf.Mode or Stat_IFLNK; + when VFS.File_Character_Device => + Stat_Buf.Mode := Stat_Buf.Mode or Stat_IFCHR; + when VFS.File_Block_Device => + Stat_Buf.Mode := Stat_Buf.Mode or Stat_IFBLK; + end case; + + <> + Errno := Error_No_Error; + Returned := 0; + end FStat; + + procedure Chdir + (FD : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Desc : constant File_Description_Acc := Get_File (Proc, FD); + St : VFS.File_Stat; + Succ : FS_Status; + User : Unsigned_32; + begin + if Desc = null or else Desc.Description /= Description_Inode then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + Userland.Process.Get_Effective_UID (Proc, User); + VFS.Stat (Desc.Inner_Ino_FS, Desc.Inner_Ino, St, Succ); + if Succ /= VFS.FS_Success or else St.Type_Of_File /= File_Directory then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + Set_CWD (Proc, Desc.Inner_Ino_FS, Desc.Inner_Ino); + Errno := Error_No_Error; + Returned := 0; + end Chdir; + + procedure IOCTL + (FD : Unsigned_64; + Request : Unsigned_64; + Argument : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + I_Arg : constant Integer_Address := Integer_Address (Argument); + S_Arg : constant System.Address := To_Address (I_Arg); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, FD); + Succ : Boolean; + FSSuc : VFS.FS_Status; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, I_Arg, 8) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif File = null then + Errno := Error_Not_A_TTY; + Returned := Unsigned_64'Last; + return; + end if; + + Userland.Process.Get_Effective_UID (Proc, User); + + case File.Description is + when Description_Inode => + if File.Inner_Ino_Read and File.Inner_Ino_Write then + VFS.IO_Control (File.Inner_Ino_FS, File.Inner_Ino, + Request, S_Arg, FSSuc); + Succ := FSSuc = VFS.FS_Success; + else + Succ := False; + end if; + when Description_Primary_PTY => + PTY_IOCTL (File.Inner_Primary_PTY, True, Request, S_Arg, Succ); + when Description_Secondary_PTY => + PTY_IOCTL (File.Inner_Secondary_PTY, False, Request, S_Arg, Succ); + when others => + Succ := False; + end case; + + if Succ then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_Not_A_TTY; + Returned := Unsigned_64'Last; + end if; + end IOCTL; + + procedure Sched_Yield (Returned : out Unsigned_64; Errno : out Errno_Value) + is + begin + Scheduler.Yield_If_Able; + Returned := 0; + Errno := Error_No_Error; + end Sched_Yield; + + procedure Delete_Thread_Cluster + (Cluster : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + begin + if not Get_Capabilities (Proc).Can_Change_Scheduling then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("delete_thread_cluster", Proc); + Returned := Unsigned_64'Last; + elsif Cluster > Unsigned_64 (Natural'Last) or else + not Scheduler.Delete_Cluster (Convert (Natural (Cluster))) + then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + else + Errno := Error_No_Error; + Returned := 0; + end if; + end Delete_Thread_Cluster; + + procedure Pipe + (Result_Addr : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Ad : constant Integer_Address := Integer_Address (Result_Addr); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Res : array (1 .. 2) of Integer with Import, Address => To_Address (Ad); + Returned2 : IPC.FIFO.Inner_Acc; + Succ1, Succ2 : Boolean; + Reader_Desc, Writer_Desc : File_Description_Acc; + begin + if not Check_Userland_Access (Map, Ad, Res'Size / 8) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + Returned2 := IPC.FIFO.Create ((Flags and O_NONBLOCK) = 0); + Reader_Desc := new File_Description'( + Children_Count => 0, + Description => Description_Reader_FIFO, + Inner_Reader_FIFO => Returned2 + ); + Writer_Desc := new File_Description'( + Children_Count => 0, + Description => Description_Writer_FIFO, + Inner_Writer_FIFO => Returned2 + ); + Check_Add_File (Proc, Reader_Desc, Succ1, Res (1)); + Check_Add_File (Proc, Writer_Desc, Succ2, Res (2)); + if not Succ1 or not Succ2 then + Close (Reader_Desc); + Close (Writer_Desc); + Errno := Error_Too_Many_Files; + Returned := Unsigned_64'Last; + else + Errno := Error_No_Error; + Returned := 0; + end if; + end Pipe; + + procedure Get_UID (Returned : out Unsigned_64; Errno : out Errno_Value) is + Proc : constant PID := Arch.Local.Get_Current_Process; + Ret : Unsigned_32; + begin + Userland.Process.Get_UID (Proc, Ret); + Errno := Error_No_Error; + Returned := Unsigned_64 (Ret); + end Get_UID; + + procedure Rename + (Source_FD : Unsigned_64; + Source_Addr : Unsigned_64; + Source_Len : Unsigned_64; + Target_FD : Unsigned_64; + Target_Addr : Unsigned_64; + Target_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Src_IAddr : constant Integer_Address := Integer_Address (Source_Addr); + Src_SAddr : constant System.Address := To_Address (Src_IAddr); + Tgt_IAddr : constant Integer_Address := Integer_Address (Target_Addr); + Tgt_SAddr : constant System.Address := To_Address (Tgt_IAddr); + Do_Keep : constant Boolean := (Flags and RENAME_NOREPLACE) /= 0; + Src_FS, Tgt_FS : VFS.FS_Handle; + Src_Ino, Tgt_Ino : VFS.File_Inode_Number; + Success : VFS.FS_Status; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, Src_IAddr, Source_Len) or + not Check_Userland_Access (Map, Tgt_IAddr, Target_Len) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Source_Len > Unsigned_64 (Natural'Last) or + Target_Len > Unsigned_64 (Natural'Last) + then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + declare + Src : String (1 .. Natural (Source_Len)) + with Import, Address => Src_SAddr; + Tgt : String (1 .. Natural (Target_Len)) + with Import, Address => Tgt_SAddr; + begin + Userland.Process.Get_Effective_UID (Proc, User); + Resolve_AT_Directive (Proc, Source_FD, Src_FS, Src_Ino); + Resolve_AT_Directive (Proc, Target_FD, Tgt_FS, Tgt_Ino); + if Src_FS = VFS.Error_Handle or else + Tgt_FS = VFS.Error_Handle or else + Src_FS /= Tgt_FS + then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + Rename (Src_FS, Src_Ino, Src, Tgt_Ino, Tgt, Do_Keep, User, Success); + Translate_Status (Success, 0, Returned, Errno); + end; + end Rename; + + procedure Sysconf + (Request : Unsigned_64; + Addr : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + IAddr : constant Integer_Address := Integer_Address (Addr); + SAddr : constant System.Address := To_Address (IAddr); + Stats : Memory.Physical.Statistics; + Result : Unsigned_64; + begin + -- Simple request that do not use the memory argument. + case Request is + when SC_PAGESIZE => + Result := Page_Size; + when SC_OPEN_MAX => + Result := Unsigned_64 (Process.Max_File_Count); + when SC_HOST_NAME_MAX => + Result := Unsigned_64 (Networking.Hostname_Max_Len); + when SC_AVPHYS_PAGES => + Memory.Physical.Get_Statistics (Stats); + Result := Unsigned_64 (Stats.Free) / Page_Size; + when SC_PHYS_PAGES => + Memory.Physical.Get_Statistics (Stats); + Result := Unsigned_64 (Stats.Available) / Page_Size; + when SC_NPROCESSORS_ONLN => + Result := Unsigned_64 (Arch.Hooks.Get_Active_Core_Count); + when SC_TOTAL_PAGES => + Memory.Physical.Get_Statistics (Stats); + Result := Unsigned_64 (Stats.Total) / Page_Size; + when SC_CHILD_MAX => + Result := Unsigned_64 (Process.Max_Process_Count); + when SC_NGROUPS_MAX => + Result := Unsigned_64 (Process.Max_Supplementary_Groups); + when SC_SYMLOOP_MAX => + Result := Unsigned_64 (VFS.Max_Symlink_Loop); + when others => + goto Not_Matched; + end case; + + goto Success_Return; + + <> + -- Requests that use the memory argument, for common checking. + if not Check_Userland_Access (Map, IAddr, Length) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + case Request is + when SC_LIST_PROCS => + declare + Len : constant Natural := + Natural (Length / (Process_Info'Size / 8)); + Procs : Proc_Info_Arr (1 .. Len) with Import, Address => SAddr; + KProc : Process_Info_Arr (1 .. Len); + Ret : Natural; + begin + List_All (KProc, Ret); + for I in 1 .. Ret loop + Procs (I) := + (Identifier => KProc (I).Identifier, + Id_Len => Unsigned_16 (KProc (I).Identifier_Len), + Parent_PID => Unsigned_16 (Convert (KProc (I).Parent)), + Process_PID => Unsigned_16 (Convert (KProc (I).Process)), + UID => KProc (I).User, + Flags => 0); + if KProc (I).Is_Being_Traced then + Procs (I).Flags := Procs (I).Flags or PROC_IS_TRACED; + end if; + if KProc (I).Has_Exited then + Procs (I).Flags := Procs (I).Flags or PROC_EXITED; + end if; + end loop; + + Result := Unsigned_64 (Ret); + end; + when SC_LIST_MOUNTS => + declare + Len : constant Natural := + Natural (Length / (Mount_Info'Size / 8)); + Mnts : Mount_Info_Arr (1 .. Len) with Import, Address => SAddr; + KMnts : Mountpoint_Arr (1 .. Len); + Ret : Natural; + begin + List_All (KMnts, Ret); + for I in 1 .. Ret loop + case Get_Backing_FS (KMnts (I)) is + when FS_DEV => Mnts (I).FS_Type := MNT_DEV; + when FS_EXT => Mnts (I).FS_Type := MNT_EXT; + when FS_FAT => Mnts (I).FS_Type := MNT_FAT; + end case; + Mnts (I).Flags := 0; + Fetch_Name + (Get_Backing_Device (KMnts (I)), + Mnts (I).Source, + Natural (Mnts (I).Source_Len)); + Get_Mount_Point + (KMnts (I), + Mnts (I).Location, + Natural (Mnts (I).Location_Len)); + Get_Block_Size (KMnts (I), Mnts (I).Block_Size); + Get_Fragment_Size (KMnts (I), Mnts (I).Fragment_Size); + Get_Size (KMnts (I), Mnts (I).Size_In_Frags); + Get_Inode_Count (KMnts (I), Mnts (I).Inode_Count); + Get_Max_Length (KMnts (I), Mnts (I).Max_File_Name); + Get_Free_Blocks + (KMnts (I), Mnts (I).Free_Blocks, Mnts (I).Free_BlocksU); + Get_Free_Blocks + (KMnts (I), Mnts (I).Free_Blocks, Mnts (I).Free_BlocksU); + end loop; + + Result := Unsigned_64 (Ret); + end; + when SC_UNAME => + declare + UTS : UTS_Name with Import, Address => SAddr; + Host_Len : Natural; + begin + Networking.Get_Hostname (UTS.Node_Name, Host_Len); + UTS.Node_Name (Host_Len + 1) := Ada.Characters.Latin_1.NUL; + + UTS.System_Name (1 .. Config.Name'Length + 1) := + Config.Name & Ada.Characters.Latin_1.NUL; + UTS.Release (1 .. Config.Version'Length + 1) := + Config.Version & Ada.Characters.Latin_1.NUL; + UTS.Version (1 .. Config.Version'Length + 1) := + Config.Version & Ada.Characters.Latin_1.NUL; + UTS.Machine (1 .. Config.Arch_Name'Length + 1) := + Config.Arch_Name & Ada.Characters.Latin_1.NUL; + + Result := 0; + end; + when SC_LIST_THREADS => + declare + Len : constant Natural := + Natural (Length / (Thread_Info'Size / 8)); + Ths : Thread_Info_Arr (1 .. Len) with Import, Address => SAddr; + KThs : Scheduler.Thread_Listing_Arr (1 .. Len); + Ret : Natural; + N : Niceness; + begin + List_All (KThs, Ret); + for I in 1 .. Ret loop + Ths (I) := + (Thread_Id => Unsigned_16 (Convert (KThs (I).Thread)), + Niceness => 0, + Cluster_Id => Unsigned_16 (Convert (KThs (I).Cluster)), + Process_PID => Unsigned_16 (KThs (I).Proc)); + N := Get_Niceness (KThs (I).Thread); + if N >= 0 then + Ths (I).Niceness := Unsigned_16 (N); + else + Ths (I).Niceness := Unsigned_16'Last - + Unsigned_16 (abs N) + 1; + end if; + end loop; + + Result := Unsigned_64 (Ret); + end; + when SC_LIST_CLUSTERS => + declare + Len : constant Natural := + Natural (Length / (Thread_Info'Size / 8)); + Ths : Cluster_Info_Arr (1 .. Len) with Import, Address => SAddr; + KThs : Scheduler.Cluster_Listing_Arr (1 .. Len); + Ret : Natural; + begin + List_All (KThs, Ret); + for I in 1 .. Ret loop + Ths (I) := + (Cluster_Id => Unsigned_16 (Convert (KThs (I).Cluster)), + Cluster_Fl => 0, + Cluster_Q => Unsigned_16 (KThs (I).Cluster_Quan)); + case KThs (I).Cluster_Algo is + when Cluster_RR => + Ths (I).Cluster_Fl := SCHED_RR; + when Cluster_Cooperative => + Ths (I).Cluster_Fl := SCHED_COOP; + end case; + if KThs (I).Cluster_Int then + Ths (I).Cluster_Fl := Ths (I).Cluster_Fl or SCHED_INTR; + end if; + end loop; + + Result := Unsigned_64 (Ret); + end; + when SC_LIST_NETINTER => + declare + Len : constant Natural := + Natural (Length / (Interface_Info'Size / 8)); + Ths : Interface_Arr (1 .. Len) with Import, Address => SAddr; + KThs : Networking.Interfaces.Interface_Arr (1 .. Len); + Ret : Natural; + NLen : Natural; + begin + Networking.Interfaces.List_Interfaces (KThs, Ret); + for I in 1 .. Ret loop + Fetch_Name (KThs (I).Handle, Ths (I).Name (1 .. 64), NLen); + Ths (I).Name (NLen + 1) := Ada.Characters.Latin_1.NUL; + if KThs (I).Is_Blocked then + Ths (I).Flags := NETINTR_BLOCKED; + else + Ths (I).Flags := 0; + end if; + Ths (I).MAC := KThs (I).MAC; + Ths (I).IPv4 := KThs (I).IPv4; + Ths (I).IPv4_Subnet := KThs (I).IPv4_Subnet; + Ths (I).IPv6 := KThs (I).IPv6; + Ths (I).IPv6_Subnet := KThs (I).IPv6_Subnet; + end loop; + + Result := Unsigned_64 (Ret); + end; + when SC_DUMPLOGS => + declare + Log : String (1 .. Natural (Length)) + with Import, Address => SAddr; + Ret : Natural; + begin + Lib.Messages.Dump_Logs (Log, Ret); + Result := Unsigned_64 (Ret); + end; + when SC_LIST_FILELOCKS => + declare + Len : constant Natural := + Natural (Length / (Flock_Info'Size / 8)); + Lks : Flock_Info_Arr (1 .. Len) with Import, Address => SAddr; + KLks : IPC.FileLock.Lock_Arr (1 .. Len); + Ret : Natural; + begin + IPC.FileLock.List_All (KLks, Ret); + for I in 1 .. Ret loop + Lks (I).PID := Unsigned_32 (Convert (KLks (I).Acquirer)); + Lks (I).Mode := (if KLks (I).Is_Writing then 1 else 0); + Lks (I).Start := KLks (I).Start; + Lks (I).Length := KLks (I).Length; + Lks (I).FS := Unsigned_64 + (Get_Unique_ID (Get_Backing_Device (KLks (I).FS))); + Lks (I).Ino := Unsigned_64 (KLks (I).Ino); + end loop; + + Result := Unsigned_64 (Ret); + end; + when SC_LOADAVG => + declare + Lks : Load_Arr with Import, Address => SAddr; + begin + if Length / (Unsigned_32'Size / 8) < Lks'Length then + goto Invalid_Value_Error; + end if; + Scheduler.Get_Load_Averages (Lks (1), Lks (2), Lks (3)); + Result := 3; + end; + when SC_MEMINFO => + declare + Lks : Mem_Info with Import, Address => SAddr; + St : Arch.MMU.Virtual_Statistics; + Shared_Size : Unsigned_64; + begin + Memory.Physical.Get_Statistics (Stats); + Arch.MMU.Get_Statistics (St); + IPC.SHM.Get_Total_Size (Shared_Size); + Lks := + (Phys_Total => Unsigned_64 (Stats.Total), + Phys_Available => Unsigned_64 (Stats.Available), + Phys_Free => Unsigned_64 (Stats.Free), + Shared_Usage => Shared_Size, + Kernel_Usage => Unsigned_64 (St.Kernel_Usage), + Table_Usage => Unsigned_64 (St.Table_Usage), + Poison_Usage => 0); + Result := 0; + end; + when others => + goto Invalid_Value_Error; + end case; + + <> + Errno := Error_No_Error; + Returned := Result; + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end Sysconf; + + procedure Spawn + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Argv_Addr : Unsigned_64; + Argv_Len : Unsigned_64; + Envp_Addr : Unsigned_64; + Envp_Len : Unsigned_64; + Caps_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Success : Boolean; + Child : PID; + begin + Create_Process (Proc, Child); + if Child = Error_PID then + Errno := Error_Would_Block; + Returned := Unsigned_64'Last; + return; + end if; + + Duplicate_FD_Table (Proc, Child); + + Exec_Into_Process + (Path_Addr => Path_Addr, + Path_Len => Path_Len, + Argv_Addr => Argv_Addr, + Argv_Len => Argv_Len, + Envp_Addr => Envp_Addr, + Envp_Len => Envp_Len, + Proc => Child, + Success => Success, + Errno => Errno); + if not Success then + Errno := Error_Bad_Access; + Returned := Unsigned_64'Last; + return; + end if; + + if Caps_Addr /= 0 then + declare + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + CIAddr : constant Integer_Address := Integer_Address (Caps_Addr); + Caps : Unsigned_64 with Import, Address => To_Address (CIAddr); + begin + if Check_Userland_Access (Map, CIAddr, Unsigned_64'Size / 8) then + Set_MAC_Capabilities (Child, Caps); + else + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + end; + end if; + + Errno := Error_No_Error; + Returned := Unsigned_64 (Convert (Child)); + end Spawn; + + procedure Get_TID (Returned : out Unsigned_64; Errno : out Errno_Value) is + begin + Errno := Error_No_Error; + Returned := Unsigned_64 (Convert (Arch.Local.Get_Current_Thread)); + end Get_TID; + + procedure Manage_Thread_Cluster + (Cluster : Unsigned_64; + Flags : Unsigned_64; + Quantum : Unsigned_64; + Percentage : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Clsr : Scheduler.TCID; + Algo : Scheduler.Cluster_Algorithm; + begin + if not Get_Capabilities (Proc).Can_Change_Scheduling then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("manage_thread_cluster", Proc); + Returned := Unsigned_64'Last; + return; + elsif Cluster > Unsigned_64 (Natural'Last) then + goto Invalid_Value_Error; + end if; + + if (Flags and SCHED_RR) /= 0 then + Algo := Scheduler.Cluster_RR; + elsif (Flags and SCHED_COOP) /= 0 then + Algo := Scheduler.Cluster_Cooperative; + else + goto Invalid_Value_Error; + end if; + + if Cluster = 0 then + Clsr := Scheduler.Create_Cluster; + else + Clsr := Scheduler.Convert (Natural (Cluster)); + end if; + + if Clsr = Error_TCID then + goto Invalid_Value_Error; + end if; + + if not Set_Scheduling_Algorithm + (Clsr, Algo, Natural (Quantum), (Flags and SCHED_INTR) /= 0) + then + goto Invalid_Value_Error; + end if; + if not Set_Time_Slice (Clsr, Natural (Percentage)) then + goto Invalid_Value_Error; + end if; + + Errno := Error_No_Error; + Returned := Unsigned_64 (Scheduler.Convert (Clsr)); + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end Manage_Thread_Cluster; + + procedure Fcntl + (FD : Unsigned_64; + Command : Unsigned_64; + Argument : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, FD); + Temp, Temp2 : Boolean; + New_File : File_Description_Acc; + Result_FD : Natural; + begin + if File = null then + Errno := Error_Bad_File; + goto Error_Return; + end if; + + Returned := 0; + + case Command is + when F_DUPFD | F_DUPFD_CLOEXEC => + Duplicate (File, New_File); + Check_Add_File + (Proc, New_File, Temp, Result_FD, Natural (Argument)); + if Temp then + Returned := Unsigned_64 (Result_FD); + Process.Set_FD_Flags (Proc, Unsigned_64 (Result_FD), + Command = F_DUPFD_CLOEXEC, False); + else + Errno := Error_Too_Many_Files; + goto Error_Return; + end if; + when F_GETFD => + Get_FD_Flags (Proc, FD, Temp, Temp2); + if Temp then + Returned := Returned or FD_CLOEXEC; + end if; + if Temp2 then + Returned := Returned or FD_CLOFORK; + end if; + when F_SETFD => + Set_FD_Flags + (Proc, FD, + (Argument and FD_CLOEXEC) /= 0, + (Argument and FD_CLOFORK) /= 0); + when F_GETFL => + case File.Description is + when Description_Reader_FIFO => + Temp := Is_Read_Blocking (File.Inner_Reader_FIFO); + when Description_Writer_FIFO => + Temp := Is_Write_Blocking (File.Inner_Writer_FIFO); + when Description_Socket => + Temp := Is_Blocking (File.Inner_Socket); + when Description_Primary_PTY => + Is_Primary_Blocking (File.Inner_Primary_PTY, Temp); + when Description_Secondary_PTY => + Is_Secondary_Blocking (File.Inner_Secondary_PTY, Temp); + when Description_Inode => + Temp := File.Inner_Is_Blocking; + end case; + Returned := (if Temp then 0 else O_NONBLOCK); + when F_SETFL => + Temp := (Argument and O_NONBLOCK) = 0; + case File.Description is + when Description_Reader_FIFO => + Set_Read_Blocking (File.Inner_Reader_FIFO, Temp); + when Description_Writer_FIFO => + Set_Write_Blocking (File.Inner_Writer_FIFO, Temp); + when Description_Socket => + Set_Blocking (File.Inner_Socket, Temp); + when Description_Primary_PTY => + Set_Primary_Blocking (File.Inner_Primary_PTY, Temp); + when Description_Secondary_PTY => + Set_Secondary_Blocking (File.Inner_Secondary_PTY, Temp); + when Description_Inode => + File.Inner_Is_Blocking := Temp; + end case; + when F_GETPIPE_SZ => + case File.Description is + when Description_Reader_FIFO => + Get_Size (File.Inner_Reader_FIFO, Natural (Returned)); + when Description_Writer_FIFO => + Get_Size (File.Inner_Writer_FIFO, Natural (Returned)); + when others => + goto Invalid_Return; + end case; + when F_SETPIPE_SZ => + case File.Description is + when Description_Reader_FIFO => + Set_Size (File.Inner_Reader_FIFO, Natural (Argument), Temp); + if not Temp then + Errno := Error_Would_Block; + goto Error_Return; + end if; + when Description_Writer_FIFO => + Set_Size (File.Inner_Writer_FIFO, Natural (Argument), Temp); + if not Temp then + Errno := Error_Would_Block; + goto Error_Return; + end if; + when others => + goto Invalid_Return; + end case; + when F_GETLK | F_SETLK | F_SETLKW => + declare + IAddr : constant Integer_Address := Integer_Address (Argument); + Lock : Flock_Data with Import, Address => To_Address (IAddr); + IW : Boolean; + begin + if not Check_Userland_Access (Map, IAddr, Lock'Size / 8) then + Errno := Error_Would_Fault; + goto Error_Return; + elsif File.Description /= Description_Inode then + goto Invalid_Return; + end if; + + Proc := Convert (Natural (Lock.PID)); + IW := Lock.Lock_Type = F_WRLCK; + + if Command = F_GETLK then + IPC.FileLock.Could_Acquire_Lock + (Acquired_FS => File.Inner_Ino_FS, + Acquired_Ino => File.Inner_Ino, + Start => Lock.Start, + Length => Lock.Length, + Acquirer => Proc, + Is_Write => IW, + Success => Temp); + if Temp then + Lock.Lock_Type := F_UNLCK; + end if; + Lock.PID := Unsigned_32 (Convert (Proc)); + else + if Lock.Lock_Type = F_UNLCK then + IPC.FileLock.Release_Lock + (Acquired_FS => File.Inner_Ino_FS, + Acquired_Ino => File.Inner_Ino, + Start => Lock.Start, + Length => Lock.Length, + Acquirer => Proc, + Success => Temp); + File.Inner_Is_Locked := not Temp; + else + IPC.FileLock.Acquire_Lock + (Acquired_FS => File.Inner_Ino_FS, + Acquired_Ino => File.Inner_Ino, + Start => Lock.Start, + Length => Lock.Length, + Acquirer => Proc, + Is_Write => IW, + Is_Blocking => Command = F_SETLKW, + Success => Temp); + File.Inner_Is_Locked := Temp; + end if; + + if not Temp then + Errno := Error_Would_Block; + goto Error_Return; + end if; + end if; + end; + when others => + goto Invalid_Return; + end case; + + Errno := Error_No_Error; + return; + + <> + Errno := Error_Invalid_Value; + + <> + Returned := Unsigned_64'Last; + end Fcntl; + + procedure Exit_Thread (Returned : out Unsigned_64; Errno : out Errno_Value) + is + begin + Errno := Error_No_Error; + Returned := 0; + Userland.Process.Remove_Thread + (Arch.Local.Get_Current_Process, Arch.Local.Get_Current_Thread); + Scheduler.Bail; + end Exit_Thread; + + procedure Get_Random + (Address : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + IAddr : constant Integer_Address := Integer_Address (Address); + SAddr : constant System.Address := To_Address (IAddr); + Result : Cryptography.Random.Crypto_Data (1 .. Natural (Length)) + with Import, Address => SAddr; + begin + if not Get_Capabilities (Proc).Can_Access_Entropy then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("getrandom", Proc); + Returned := Unsigned_64'Last; + elsif not Check_Userland_Access (Map, IAddr, Length) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + else + Cryptography.Random.Fill_Data (Result); + Errno := Error_No_Error; + Returned := Result'Length * 4; + end if; + end Get_Random; + + procedure MProtect + (Address : Unsigned_64; + Length : Unsigned_64; + Protection : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Flags : constant Arch.MMU.Page_Permissions := Get_Mmap_Prot (Protection); + Addr : constant System.Address := To_Address (Integer_Address (Address)); + begin + if not Get_Capabilities (Proc).Can_Modify_Memory then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("mprotect", Proc); + Returned := Unsigned_64'Last; + return; + elsif (Flags.Can_Write and Flags.Can_Execute) or + (Address mod Page_Size /= 0) or + (Length mod Page_Size /= 0) + then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + + if not Remap_Range (Map, Addr, Storage_Count (Length), Flags) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + else + Errno := Error_No_Error; + Returned := 0; + end if; + end MProtect; + + procedure Set_MAC_Capabilities + (Bits : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + begin + Set_MAC_Capabilities (Arch.Local.Get_Current_Process, Bits); + Errno := Error_No_Error; + Returned := 0; + end Set_MAC_Capabilities; + + procedure Get_MAC_Capabilities + (Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Pro : constant PID := Arch.Local.Get_Current_Process; + Caps : constant MAC.Capabilities := Get_Capabilities (Pro); + Res : Unsigned_64 := 0; + begin + if Caps.Can_Change_Scheduling then Res := Res or MAC_CAP_SCHED; end if; + if Caps.Can_Spawn_Others then Res := Res or MAC_CAP_SPAWN; end if; + if Caps.Can_Access_Entropy then Res := Res or MAC_CAP_ENTROPY; end if; + if Caps.Can_Modify_Memory then Res := Res or MAC_CAP_SYS_MEM; end if; + if Caps.Can_Use_Networking then Res := Res or MAC_CAP_USE_NET; end if; + if Caps.Can_Manage_Networking then Res := Res or MAC_CAP_SYS_NET; end if; + if Caps.Can_Manage_Mounts then Res := Res or MAC_CAP_SYS_MNT; end if; + if Caps.Can_Manage_Power then Res := Res or MAC_CAP_SYS_PWR; end if; + if Caps.Can_Trace_Children then Res := Res or MAC_CAP_PTRACE; end if; + if Caps.Can_Change_UIDs then Res := Res or MAC_CAP_SETUID; end if; + if Caps.Can_Manage_MAC then Res := Res or MAC_CAP_SYS_MAC; end if; + if Caps.Can_Use_Clocks then Res := Res or MAC_CAP_CLOCK; end if; + if Caps.Can_Signal_All then Res := Res or MAC_CAP_SIGNALALL; end if; + if Caps.Can_Change_GIDs then Res := Res or MAC_CAP_SETGID; end if; + if Caps.Can_Bypass_IPC_Checks then Res := Res or MAC_CAP_IPC; end if; + + Errno := Error_No_Error; + Returned := Res; + end Get_MAC_Capabilities; + + procedure Add_MAC_Permissions + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Addr : constant Integer_Address := Integer_Address (Path_Addr); + Perms : MAC.Permissions; + User : Unsigned_32; + Status : MAC.Addition_Status; + FS_Status : VFS.FS_Status; + FS : VFS.FS_Handle; + Ino : VFS.File_Inode_Number; + begin + if not Get_Capabilities (Proc).Can_Manage_MAC then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("add_mac_perms", Proc); + Returned := Unsigned_64'Last; + return; + elsif not Check_Userland_Access (Map, Addr, Path_Len) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + + Perms := + (Includes_Contents => (Flags and MAC_PERM_CONTENTS) /= 0, + Can_Read => (Flags and MAC_PERM_READ) /= 0, + Can_Write => (Flags and MAC_PERM_WRITE) /= 0, + Can_Execute => (Flags and MAC_PERM_EXEC) /= 0, + Can_Append_Only => (Flags and MAC_PERM_APPEND) /= 0, + Can_Lock_Files => (Flags and MAC_PERM_FLOCK) /= 0); + + Userland.Process.Get_Effective_UID (Proc, User); + + declare + Path : String (1 .. Natural (Path_Len)) + with Import, Address => To_Address (Addr); + begin + VFS.Open (Path, FS, Ino, FS_Status, User, True, False); + end; + + if FS_Status /= VFS.FS_Success then + Translate_Status (FS_Status, 0, Returned, Errno); + return; + end if; + + Add_Entity (Proc, FS, Ino, Perms, Status); + VFS.Close (FS, Ino); + + case Status is + when MAC.Success => + Errno := Error_No_Error; + Returned := 0; + return; + when MAC.No_Space => Errno := Error_No_Memory; + when MAC.Is_Conflicting => Errno := Error_Invalid_Value; + end case; + + Returned := Unsigned_64'Last; + end Add_MAC_Permissions; + + procedure Set_MAC_Enforcement + (Action : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Act : MAC.Enforcement; + begin + if not Get_Capabilities (Proc).Can_Manage_MAC then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("set_mac_enforcement", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + case Action is + when MAC_DENY => Act := MAC.Deny; + when MAC_DENY_AND_SCREAM => Act := MAC.Deny_And_Scream; + when MAC_KILL => Act := MAC.Kill; + when others => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end case; + + Set_Enforcement (Proc, Act); + Errno := Error_No_Error; + Returned := 0; + end Set_MAC_Enforcement; + + procedure Mount + (Source_Addr : Unsigned_64; + Source_Len : Unsigned_64; + Target_Addr : Unsigned_64; + Target_Len : Unsigned_64; + FSType : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Src_IAddr : constant Integer_Address := Integer_Address (Source_Addr); + Tgt_IAddr : constant Integer_Address := Integer_Address (Target_Addr); + Src_Addr : constant System.Address := To_Address (Src_IAddr); + Tgt_Addr : constant System.Address := To_Address (Tgt_IAddr); + Do_RO : constant Boolean := (Flags and MS_RDONLY) /= 0; + Do_Remount : constant Boolean := (Flags and MS_REMOUNT) /= 0; + Do_Relatim : constant Boolean := (Flags and MS_RELATIME) /= 0; + Parsed_Typ : VFS.FS_Type; + Success : Boolean; + begin + if not Check_Userland_Access (Map, Src_IAddr, Source_Len) or + not Check_Userland_Access (Map, Tgt_IAddr, Target_Len) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Source_Len > Unsigned_64 (Natural'Last) or + Target_Len > Unsigned_64 (Natural'Last) + then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + elsif not Get_Capabilities (Proc).Can_Manage_Mounts then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("mount", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + declare + Source : String (1 .. Natural (Source_Len)) + with Import, Address => Src_Addr; + Target : String (1 .. Natural (Target_Len)) + with Import, Address => Tgt_Addr; + begin + if Do_Remount then + declare + Handle : FS_Handle; + Matched : Natural; + begin + VFS.Get_Mount (Target, Matched, Handle); + if Handle /= VFS.Error_Handle then + VFS.Remount (Handle, Do_RO, Do_Relatim, Success); + else + Success := False; + end if; + end; + else + case FSType is + when MNT_EXT => Parsed_Typ := VFS.FS_EXT; + when MNT_FAT => Parsed_Typ := VFS.FS_FAT; + when others => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end case; + + VFS.Mount (Source, Target, Parsed_Typ, Do_RO, Do_Relatim, Success); + end if; + end; + + if Success then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_IO; + Returned := Unsigned_64'Last; + end if; + end Mount; + + procedure Umount + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Curr_Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Curr_Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + Flag_Force : constant Boolean := (Flags and MNT_FORCE) /= 0; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + elsif not Get_Capabilities (Curr_Proc).Can_Manage_Mounts then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("umount", Curr_Proc); + Returned := Unsigned_64'Last; + return; + end if; + + declare + Success : Boolean; + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + begin + VFS.Unmount (Path, Flag_Force, Success); + if Success then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_Busy; + Returned := Unsigned_64'Last; + return; + end if; + end; + end Umount; + + procedure Readlink + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Buffer_Addr : Unsigned_64; + Buffer_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Buffer_IAddr : constant Integer_Address := Integer_Address (Buffer_Addr); + Path_Add : constant System.Address := To_Address (Path_IAddr); + Buffer_Add : constant System.Address := To_Address (Buffer_IAddr); + R_FS, CWD_FS : VFS.FS_Handle; + CWD_Ino : VFS.File_Inode_Number; + Opened_Ino : File_Inode_Number; + Ret_Count : Natural; + User : Unsigned_32; + Status : VFS.FS_Status; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) or + not Check_Userland_Access (Map, Buffer_IAddr, Buffer_Len) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) or + Buffer_Len > Unsigned_64 (Natural'Last) + then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + declare + File_Perms : MAC.Permissions; + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_Add; + Data : String (1 .. Natural (Buffer_Len)) + with Import, Address => Buffer_Add; + begin + Process.Get_Effective_UID (Proc, User); + Resolve_AT_Directive (Proc, Dir_FD, R_FS, CWD_Ino); + if R_FS = VFS.Error_Handle then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + end if; + + VFS.Open (R_FS, CWD_Ino, Path, CWD_FS, Opened_Ino, Status, User, True, + False, False); + if Status /= VFS.FS_Success then + Errno := Error_No_Entity; + Returned := Unsigned_64'Last; + return; + end if; + + File_Perms := Check_Permissions (Proc, CWD_FS, Opened_Ino); + if not File_Perms.Can_Read then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("readlink", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + VFS.Read_Symbolic_Link (CWD_FS, Opened_Ino, Data, Ret_Count, Status); + Close (CWD_FS, Opened_Ino); + Translate_Status (Status, Unsigned_64 (Ret_Count), Returned, Errno); + end; + end Readlink; + + procedure GetDEnts + (FD : Unsigned_64; + Buffer_Addr : Unsigned_64; + Buffer_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + procedure Free is new Ada.Unchecked_Deallocation + (Directory_Entities, Directory_Entities_Acc); + + Buff_IAddr : constant Integer_Address := Integer_Address (Buffer_Addr); + Buff_Addr : constant System.Address := To_Address (Buff_IAddr); + Buff_Len : constant Unsigned_64 := Buffer_Len / (Dirent'Size / 8); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, FD); + Tmp_Buffer : VFS.Directory_Entities_Acc; + Buffer : Dirents (1 .. Buff_Len) with Import, Address => Buff_Addr; + Read_Len : Natural; + Success : VFS.FS_Status; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, Buff_IAddr, Buffer_Len) then + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + elsif File = null or else File.Description /= Description_Inode then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + else + Userland.Process.Get_Effective_UID (Proc, User); + Tmp_Buffer := new VFS.Directory_Entities (1 .. Natural (Buff_Len)); + VFS.Read_Entries + (Key => File.Inner_Ino_FS, + Ino => File.Inner_Ino, + Offset => Natural (File.Inner_Ino_Pos), + Entities => Tmp_Buffer.all, + Ret_Count => Read_Len, + Success => Success); + + if Success = VFS.FS_Success then + File.Inner_Ino_Pos := File.Inner_Ino_Pos + Unsigned_64 (Read_Len); + + for I in 1 .. Read_Len loop + Buffer (Unsigned_64 (I)) := + (D_Ino => Tmp_Buffer (I).Inode_Number, + D_Off => (Dirent'Size / 8) * Unsigned_64 (I), + D_Reclen => Dirent'Size / 8, + D_Type => 0, + D_Name => (others => Ada.Characters.Latin_1.NUL)); + Buffer (Unsigned_64 (I)).D_Name (1 .. Tmp_Buffer (I).Name_Len) + := Tmp_Buffer (I).Name_Buffer (1 .. Tmp_Buffer (I).Name_Len); + Buffer (Unsigned_64 (I)).D_Type := + (case Tmp_Buffer (I).Type_Of_File is + when File_Regular => DT_REG, + when File_Directory => DT_DIR, + when File_Symbolic_Link => DT_LNK, + when File_Character_Device => DT_CHR, + when File_Block_Device => DT_BLK); + end loop; + + Returned := Unsigned_64 (Read_Len * (Dirent'Size / 8)); + Errno := Error_No_Error; + else + Returned := Unsigned_64'Last; + Errno := Error_No_Entity; + end if; + + Free (Tmp_Buffer); + end if; + end GetDEnts; + + procedure Sync (Returned : out Unsigned_64; Errno : out Errno_Value) is + Success : Boolean; + begin + VFS.Synchronize (Success); + if Success then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_IO; + Returned := Unsigned_64'Last; + end if; + end Sync; + + procedure MakeNode + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Mode : Unsigned_64; + Dev : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + pragma Unreferenced (Dev); + + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + CWD_FS : VFS.FS_Handle; + CWD_Ino : VFS.File_Inode_Number; + Node_Type : File_Type; + Tmp_Mode : constant File_Mode := File_Mode (Mode and 8#777#); + Status : VFS.FS_Status; + Umask : VFS.File_Mode; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + declare + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + begin + Process.Get_Effective_UID (Proc, User); + Resolve_AT_Directive (Proc, Dir_FD, CWD_FS, CWD_Ino); + if CWD_FS = VFS.Error_Handle then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + end if; + + if (Mode and Stat_IFDIR) /= 0 then + Node_Type := File_Directory; + else + Node_Type := File_Regular; + end if; + + Userland.Process.Get_Umask (Proc, Umask); + Userland.Process.Get_Effective_UID (Proc, User); + Create_Node + (Key => CWD_FS, + Relative => CWD_Ino, + Path => Path, + Typ => Node_Type, + Mode => VFS.Apply_Umask (Tmp_Mode, Umask), + User => User, + Status => Status); + Translate_Status (Status, 0, Returned, Errno); + end; + end MakeNode; + + procedure Unlink + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Curr_Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Curr_Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + CWD_FS : VFS.FS_Handle; + CWD_Ino : VFS.File_Inode_Number; + Success : VFS.FS_Status; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + declare + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + begin + Process.Get_Effective_UID (Curr_Proc, User); + Resolve_AT_Directive (Curr_Proc, Dir_FD, CWD_FS, CWD_Ino); + if CWD_FS = VFS.Error_Handle then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + end if; + + VFS.Unlink (CWD_FS, CWD_Ino, Path, User, Success); + Translate_Status (Success, 0, Returned, Errno); + end; + end Unlink; + + procedure Truncate + (FD : Unsigned_64; + New_Size : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + File : constant File_Description_Acc := Get_File (Proc, FD); + Success : VFS.FS_Status; + User : Unsigned_32; + begin + if File = null then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + Userland.Process.Get_Effective_UID (Proc, User); + case File.Description is + when Description_Inode => + VFS.Truncate + (File.Inner_Ino_FS, File.Inner_Ino, New_Size, Success); + Translate_Status (Success, 0, Returned, Errno); + when others => + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + end case; + end Truncate; + + procedure Bind + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + File : constant File_Description_Acc := Get_File (Proc, Sock_FD); + IAddr : constant Integer_Address := Integer_Address (Addr_Addr); + SAddr : constant System.Address := To_Address (IAddr); + Succ : Boolean; + begin + if File = null or else File.Description /= Description_Socket then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + elsif not Check_Userland_Access (Get_Common_Map (Proc), IAddr, Addr_Len) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + case Get_Domain (File.Inner_Socket) is + when IPC.Socket.IPv4 => + declare + Addr : SockAddr_In with Import, Address => SAddr; + begin + Succ := Bind + (Sock => File.Inner_Socket, + Addr => Addr.Sin_Addr, + Port => Networking.IPv4_Port (Addr.Sin_Port)); + end; + when IPC.Socket.IPv6 => + declare + Addr : SockAddr_In6 with Import, Address => SAddr; + begin + Succ := Bind + (Sock => File.Inner_Socket, + Addr => Addr.Sin6_Addr, + Port => Networking.IPv6_Port (Addr.Sin6_Port)); + end; + when IPC.Socket.UNIX => + declare + A_SAddr2 : constant System.Address := SAddr + 4; + CLen : constant Natural := Lib.C_String_Length (A_SAddr2); + Addr : String (1 .. CLen) with Import, Address => A_SAddr2; + begin + Succ := Bind (File.Inner_Socket, Addr); + end; + end case; + + if Succ then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_IO; + Returned := Unsigned_64'Last; + end if; + end Bind; + + procedure Symlink + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Target_Addr : Unsigned_64; + Target_Len : Unsigned_64; + Mode : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + Targ_IAddr : constant Integer_Address := Integer_Address (Target_Addr); + Targ_SAddr : constant System.Address := To_Address (Targ_IAddr); + CWD_FS : VFS.FS_Handle; + CWD_Ino : VFS.File_Inode_Number; + Success : VFS.FS_Status; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) or + not Check_Userland_Access (Map, Targ_IAddr, Target_Len) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) or + Target_Len > Unsigned_64 (Natural'Last) + then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + declare + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + Targ : String (1 .. Natural (Target_Len)) + with Import, Address => Targ_SAddr; + begin + Process.Get_Effective_UID (Proc, User); + Resolve_AT_Directive (Proc, Dir_FD, CWD_FS, CWD_Ino); + if CWD_FS = VFS.Error_Handle then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + end if; + + VFS.Create_Symbolic_Link + (Key => CWD_FS, + Relative => CWD_Ino, + Path => Path, + Target => Targ, + Mode => Unsigned_32 (Mode), + User => User, + Status => Success); + Translate_Status (Success, 0, Returned, Errno); + end; + end Symlink; + + procedure Connect + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + File : constant File_Description_Acc := Get_File (Proc, Sock_FD); + IAddr : constant Integer_Address := Integer_Address (Addr_Addr); + SAddr : constant System.Address := To_Address (IAddr); + Succ : Boolean; + begin + if File = null or else File.Description /= Description_Socket then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + elsif not Check_Userland_Access (Get_Common_Map (Proc), IAddr, Addr_Len) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + case Get_Domain (File.Inner_Socket) is + when IPC.Socket.IPv4 => + declare + Addr : SockAddr_In with Import, Address => SAddr; + begin + Succ := Connect + (Sock => File.Inner_Socket, + Addr => Addr.Sin_Addr, + Port => Networking.IPv4_Port (Addr.Sin_Port)); + end; + when IPC.Socket.IPv6 => + declare + Addr : SockAddr_In6 with Import, Address => SAddr; + begin + Succ := Connect + (Sock => File.Inner_Socket, + Addr => Addr.Sin6_Addr, + Port => Networking.IPv6_Port (Addr.Sin6_Port)); + end; + when IPC.Socket.UNIX => + declare + A_SAddr2 : constant System.Address := SAddr + 4; + CLen : constant Natural := Lib.C_String_Length (A_SAddr2); + Addr : String (1 .. CLen) with Import, Address => A_SAddr2; + begin + Succ := Connect (File.Inner_Socket, Addr); + end; + end case; + + if Succ then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_IO; + Returned := Unsigned_64'Last; + end if; + end Connect; + + procedure Open_PTY + (Result_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Res_IAddr : constant Integer_Address := Integer_Address (Result_Addr); + Res_SAddr : constant System.Address := To_Address (Res_IAddr); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Res_PTY : IPC.PTY.Inner_Acc; + P_Desc, S_Desc : File_Description_Acc; + Succ1, Succ2 : Boolean; + Result : array (1 .. 2) of Integer with Import, Address => Res_SAddr; + begin + if not Check_Userland_Access (Map, Res_IAddr, Result'Size / 8) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + Res_PTY := IPC.PTY.Create; + P_Desc := new File_Description'(Description_Primary_PTY, 0, Res_PTY); + S_Desc := new File_Description'(Description_Secondary_PTY, 0, Res_PTY); + Check_Add_File (Proc, P_Desc, Succ1, Result (1)); + Check_Add_File (Proc, S_Desc, Succ2, Result (2)); + if not Succ1 or not Succ2 then + Close (Res_PTY); + Close (Res_PTY); + Close (P_Desc); + Close (S_Desc); + Errno := Error_Too_Many_Files; + Returned := Unsigned_64'Last; + else + Errno := Error_No_Error; + Returned := 0; + end if; + end Open_PTY; + + procedure FSync + (FD : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + File : constant File_Description_Acc := Get_File (Proc, FD); + Data : constant Boolean := Flags /= 0; + Succ : VFS.FS_Status; + begin + if File = null then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + case File.Description is + when Description_Inode => + Succ := VFS.Synchronize (File.Inner_Ino_FS, File.Inner_Ino, Data); + Translate_Status (Succ, 0, Returned, Errno); + when others => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end case; + end FSync; + + procedure Link + (Source_Dir : Unsigned_64; + Source_Addr : Unsigned_64; + Source_Len : Unsigned_64; + Desto_Dir : Unsigned_64; + Desto_Addr : Unsigned_64; + Desto_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Src_IAddr : constant Integer_Address := Integer_Address (Source_Addr); + Src_SAddr : constant System.Address := To_Address (Src_IAddr); + Dst_IAddr : constant Integer_Address := Integer_Address (Desto_Addr); + Dst_SAddr : constant System.Address := To_Address (Dst_IAddr); + Src_FS, Dst_FS : VFS.FS_Handle; + Src_Ino, Dst_Ino : VFS.File_Inode_Number; + Success : VFS.FS_Status; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, Src_IAddr, Source_Len) or + not Check_Userland_Access (Map, Dst_IAddr, Desto_Len) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Source_Len > Unsigned_64 (Natural'Last) or + Desto_Len > Unsigned_64 (Natural'Last) + then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + declare + Src : String (1 .. Natural (Source_Len)) + with Import, Address => Src_SAddr; + Dst : String (1 .. Natural (Desto_Len)) + with Import, Address => Dst_SAddr; + begin + Process.Get_Effective_UID (Proc, User); + Resolve_AT_Directive (Proc, Source_Dir, Src_FS, Src_Ino); + Resolve_AT_Directive (Proc, Desto_Dir, Dst_FS, Dst_Ino); + if Src_FS = VFS.Error_Handle or else + Dst_FS = VFS.Error_Handle or else + Src_FS /= Dst_FS + then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + end if; + + Create_Hard_Link (Src_FS, Src_Ino, Src, Dst_Ino, Dst, User, Success); + Translate_Status (Success, 0, Returned, Errno); + end; + end Link; + + procedure PTrace + (Request : Unsigned_64; + Traced_PID : Unsigned_64; + Traced_Addr : Unsigned_64; + Result_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + pragma Unreferenced (Traced_Addr); + + Proc : constant PID := Arch.Local.Get_Current_Process; + TProc : constant PID := Convert (Positive (Traced_PID)); + begin + if TProc = Error_PID or else Proc /= Get_Parent (TProc) then + Errno := Error_Bad_Permissions; + Returned := Unsigned_64'Last; + return; + elsif not Get_Capabilities (Proc).Can_Trace_Children then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("ptrace", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + case Request is + when PTRACE_SYSCALL_PIPE => + Set_Traced_Info (TProc, True, Natural (Result_Addr)); + when others => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end case; + + Errno := Error_No_Error; + Returned := 0; + end PTrace; + + procedure Listen + (Sock_FD : Unsigned_64; + Backlog : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + File : constant File_Description_Acc := Get_File (Proc, Sock_FD); + begin + if File = null or else File.Description /= Description_Socket then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + elsif Get_Type (File.Inner_Socket) /= IPC.Socket.Stream then + Errno := Error_Not_Supported; + Returned := Unsigned_64'Last; + else + if IPC.Socket.Listen (File.Inner_Socket, Natural (Backlog)) then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end if; + end if; + end Listen; + + procedure Sys_Accept + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, Sock_FD); + CExec : constant Boolean := (Flags and SOCK_CLOEXEC) /= 0; + Block : constant Boolean := (Flags and SOCK_NONBLOCK) /= 0; + CloFork : constant Boolean := (Flags and SOCK_CLOFORK) /= 0; + A_IAddr : constant Integer_Address := Integer_Address (Addr_Addr); + A_SAddr : constant System.Address := To_Address (A_IAddr); + AL_IAddr : constant Integer_Address := Integer_Address (Addr_Len); + Desc : File_Description_Acc; + Sock : Socket_Acc; + Ret : Natural; + Succ : Boolean; + begin + if File = null or else File.Description /= Description_Socket then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + elsif Get_Type (File.Inner_Socket) /= IPC.Socket.Stream then + Errno := Error_Not_Supported; + Returned := Unsigned_64'Last; + return; + end if; + + if A_IAddr = 0 or AL_IAddr = 0 then + Accept_Connection (File.Inner_Socket, not Block, Sock); + else + if not Check_Userland_Access (Map, A_IAddr, Natural'Size / 8) or + not Check_Userland_Access (Map, AL_IAddr, Natural'Size / 8) + then + goto Would_Fault_Error; + end if; + + case Get_Domain (File.Inner_Socket) is + when IPC.Socket.IPv4 => + declare + Addr : SockAddr_In with Import, Address => A_SAddr; + begin + Accept_Connection + (Sock => File.Inner_Socket, + Is_Blocking => not Block, + Peer_Address => Addr.Sin_Addr, + Peer_Port => Networking.IPv4_Port (Addr.Sin_Port), + Result => Sock); + end; + when IPC.Socket.IPv6 => + declare + Addr : SockAddr_In6 with Import, Address => A_SAddr; + begin + Accept_Connection + (Sock => File.Inner_Socket, + Is_Blocking => not Block, + Peer_Address => Addr.Sin6_Addr, + Peer_Port => Networking.IPv6_Port (Addr.Sin6_Port), + Result => Sock); + end; + when IPC.Socket.UNIX => + declare + A_SAddr2 : constant System.Address := A_SAddr + 4; + CLen : Natural := Lib.C_String_Length (A_SAddr2); + Addr : String (1 .. CLen) with Import, Address => A_SAddr2; + begin + Accept_Connection + (Sock => File.Inner_Socket, + Is_Blocking => not Block, + Peer_Address => Addr, + Peer_Address_Length => CLen, + Result => Sock); + end; + end case; + end if; + + if Sock /= null then + Desc := new File_Description'(Description_Socket, 0, Sock); + Check_Add_File (Proc, Desc, Succ, Ret); + if Succ then + Set_FD_Flags (Proc, Unsigned_64 (Ret), CExec, CloFork); + Errno := Error_No_Error; + Returned := Unsigned_64 (Ret); + else + Close (Sock); + Close (Desc); + Errno := Error_Too_Many_Files; + Returned := Unsigned_64'Last; + end if; + else + Errno := Error_Would_Block; + Returned := Unsigned_64'Last; + end if; + + return; + + <> + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + end Sys_Accept; + + procedure Get_RLimit + (Limit : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Success : Boolean; + Resource : MAC.Limit_Type; + begin + MAC_Syscall_To_Kernel (Limit, Success, Resource); + if Success then + Errno := Error_No_Error; + Returned := Unsigned_64 (Get_Limit (Proc, Resource)); + return; + end if; + + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end Get_RLimit; + + procedure Set_RLimit + (Limit : Unsigned_64; + Data : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Success : Boolean; + Resource : MAC.Limit_Type; + begin + MAC_Syscall_To_Kernel (Limit, Success, Resource); + if Success then + Process.Set_Limit + (Proc => Arch.Local.Get_Current_Process, + Resource => Resource, + Limit => MAC.Limit_Value (Data), + Could_Set => Success); + if Success then + Errno := Error_No_Error; + Returned := 0; + return; + end if; + end if; + + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end Set_RLimit; + + procedure FAccess + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Mode : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + Rel_FS, FS : VFS.FS_Handle; + D_Ino, Ino : VFS.File_Inode_Number; + Succ : VFS.FS_Status; + User : Unsigned_32; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + Process.Get_Effective_UID (Proc, User); + + declare + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + begin + Resolve_AT_Directive (Proc, Dir_FD, Rel_FS, D_Ino); + if Rel_FS = VFS.Error_Handle then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + Process.Get_Effective_UID (Proc, User); + + VFS.Open + (Key => Rel_FS, + Relative => D_Ino, + Path => Path, + Final_Key => FS, + Ino => Ino, + Success => Succ, + User => User, + Want_Read => False, + Want_Write => False, + Do_Follow => (Flags and AT_SYMLINK_NOFOLLOW) = 0); + if Succ /= VFS.FS_Success then + Errno := Error_No_Entity; + Returned := Unsigned_64'Last; + return; + end if; + end; + + if (Flags and AT_EACCESS) = 0 then + Process.Get_UID (Proc, User); + end if; + + VFS.Check_Access + (Key => FS, + Ino => Ino, + Exists_Only => (Mode and F_OK) /= 0, + Can_Read => (Mode and R_OK) /= 0, + Can_Write => (Mode and W_OK) /= 0, + Can_Exec => (Mode and X_OK) /= 0, + Real_UID => User, + Status => Succ); + Translate_Status (Succ, 0, Returned, Errno); + end FAccess; + + procedure PPoll + (FDs_Addr : Unsigned_64; + FDs_Count : Unsigned_64; + Timeout : Unsigned_64; + Sigmask : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + type Unsigned_28 is mod 2**28; + function C1 is new Ada.Unchecked_Conversion (Signal_Bitmap, Unsigned_28); + function C2 is new Ada.Unchecked_Conversion (Unsigned_28, Signal_Bitmap); + + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + FIAddr : constant Integer_Address := Integer_Address (FDs_Addr); + FSAddr : constant System.Address := To_Address (FIAddr); + TIAddr : constant Integer_Address := Integer_Address (Timeout); + TSAddr : constant System.Address := To_Address (TIAddr); + S_IAddr : constant Integer_Address := Integer_Address (Sigmask); + S_SAddr : constant System.Address := To_Address (S_IAddr); + Size_FD : constant Unsigned_64 := FDs_Count * (Poll_FD'Size / 8); + Count : Natural := 0; + File : File_Description_Acc; + Curr_Sec : Unsigned_64; + Curr_NSec : Unsigned_64; + Final_Sec : Unsigned_64; + Final_NSec : Unsigned_64; + Old_Set : Signal_Bitmap; + Can_Read, Can_Write, Can_PrioRead, Is_Error, Is_Broken : Boolean; + begin + if not Check_Userland_Access (Map, FIAddr, Size_FD) or else + not Check_Userland_Access (Map, TIAddr, Time_Spec'Size / 8) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + if S_IAddr /= 0 then + if not Check_Userland_Access (Map, S_IAddr, Unsigned_28'Size / 8) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + declare + Passed_Set : Unsigned_28 with Import, Address => S_SAddr; + begin + Get_Masked_Signals (Proc, Old_Set); + Set_Masked_Signals (Proc, C2 (Passed_Set and not C1 (Old_Set))); + end; + end if; + + Arch.Clocks.Get_Monotonic_Time (Final_Sec, Final_NSec); + + declare + FDs : Poll_FDs (1 .. FDs_Count) with Import, Address => FSAddr; + Time : Time_Spec with Import, Address => TSAddr; + begin + Lib.Time.Increment (Final_Sec, Final_NSec, Time.Seconds, + Time.Nanoseconds); + + loop + for Polled of FDs loop + Polled.Out_Events := 0; + + -- We are to ignore the FD if its negative. + if (Polled.FD and Shift_Left (1, 31)) /= 0 then + goto End_Iter; + end if; + + -- Check the FD actually points to anything valuable. + File := Get_File (Proc, Unsigned_64 (Polled.FD)); + if File = null then + Polled.Out_Events := POLLNVAL; + goto End_Iter; + end if; + + -- Fill out events depending on the file type. + Can_Read := False; + Can_Write := False; + Can_PrioRead := False; + Is_Error := False; + Is_Broken := False; + case File.Description is + when Description_Reader_FIFO => + IPC.FIFO.Poll_Reader + (File.Inner_Reader_FIFO, + Can_Read, Can_Write, Is_Error, Is_Broken); + when Description_Writer_FIFO => + IPC.FIFO.Poll_Writer + (File.Inner_Writer_FIFO, + Can_Read, Can_Write, Is_Error, Is_Broken); + when Description_Primary_PTY => + IPC.PTY.Poll_Primary + (File.Inner_Primary_PTY, Can_Read, Can_Write, + Can_PrioRead); + when Description_Secondary_PTY => + IPC.PTY.Poll_Secondary + (File.Inner_Secondary_PTY, Can_Read, Can_Write); + when Description_Socket => + IPC.Socket.Poll + (File.Inner_Socket, Can_Read, Can_Write, Is_Broken, + Is_Error); + when Description_Inode => + VFS.Poll (File.Inner_Ino_FS, File.Inner_Ino, Can_Read, + Can_Write, Is_Error); + end case; + + if Can_Read and (Polled.Events and POLLIN) /= 0 then + Polled.Out_Events := Polled.Out_Events or POLLIN; + end if; + if Can_Write and (Polled.Events and POLLOUT) /= 0 then + Polled.Out_Events := Polled.Out_Events or POLLOUT; + end if; + if Can_PrioRead and (Polled.Events and POLLPRI) /= 0 then + Polled.Out_Events := Polled.Out_Events or POLLPRI; + end if; + if Is_Error then + Polled.Out_Events := Polled.Out_Events or POLLERR; + end if; + if Is_Broken then + Polled.Out_Events := Polled.Out_Events or POLLHUP; + end if; + + <> + if Polled.Out_Events /= 0 then + Count := Count + 1; + end if; + end loop; + + Arch.Clocks.Get_Monotonic_Time (Curr_Sec, Curr_NSec); + exit when Count /= 0 or Lib.Time.Is_Greater_Equal (Curr_Sec, + Curr_NSec, Final_Sec, Final_NSec); + + Scheduler.Yield_If_Able; + end loop; + end; + + if S_IAddr /= 0 then + Set_Masked_Signals (Proc, Old_Set); + end if; + + Errno := Error_No_Error; + Returned := Unsigned_64 (Count); + end PPoll; + + procedure Get_EUID (Returned : out Unsigned_64; Errno : out Errno_Value) is + Proc : constant PID := Arch.Local.Get_Current_Process; + Ret : Unsigned_32; + begin + Userland.Process.Get_Effective_UID (Proc, Ret); + Errno := Error_No_Error; + Returned := Unsigned_64 (Ret); + end Get_EUID; + + procedure Set_UIDs + (UID : Unsigned_64; + EUID : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Curr_UID : Unsigned_32; + begin + if Get_Capabilities (Proc).Can_Change_UIDs then + if EUID <= Unsigned_64 (Unsigned_32'Last) then + Userland.Process.Set_Effective_UID (Proc, Unsigned_32 (EUID)); + end if; + if UID <= Unsigned_64 (Unsigned_32'Last) then + Userland.Process.Set_UID (Proc, Unsigned_32 (UID)); + end if; + else + Userland.Process.Get_UID (Proc, Curr_UID); + if EUID <= Unsigned_64 (Unsigned_32'Last) then + if EUID = Unsigned_64 (Curr_UID) then + Userland.Process.Set_Effective_UID (Proc, Unsigned_32 (EUID)); + else + Errno := Error_Bad_Permissions; + Returned := Unsigned_64'Last; + return; + end if; + end if; + end if; + + Errno := Error_No_Error; + Returned := 0; + end Set_UIDs; + + procedure Fchmod + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Mode : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + Rel_FS, FS : VFS.FS_Handle; + D_Ino, Ino : VFS.File_Inode_Number; + Succ : VFS.FS_Status; + User : Unsigned_32; + File_Desc : File_Description_Acc; + File_Perms : MAC.Permissions; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + Process.Get_Effective_UID (Proc, User); + + if (Flags and AT_EMPTY_PATH) /= 0 then + File_Desc := Get_File (Proc, Dir_FD); + if File_Desc = null or else File_Desc.Description /= Description_Inode + then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + FS := File_Desc.Inner_Ino_FS; + Ino := File_Desc.Inner_Ino; + else + declare + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + begin + Resolve_AT_Directive (Proc, Dir_FD, Rel_FS, D_Ino); + if Rel_FS = VFS.Error_Handle then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + VFS.Open + (Key => Rel_FS, + Relative => D_Ino, + Path => Path, + Final_Key => FS, + Ino => Ino, + Success => Succ, + User => User, + Want_Read => True, + Want_Write => False, + Do_Follow => (Flags and AT_SYMLINK_NOFOLLOW) = 0); + if Succ /= VFS.FS_Success then + Errno := Error_No_Entity; + Returned := Unsigned_64'Last; + return; + end if; + + File_Perms := Check_Permissions (Proc, FS, Ino); + if not File_Perms.Can_Write then + Errno := Error_Bad_Access; + Returned := Unsigned_64'Last; + return; + end if; + end; + end if; + + + VFS.Change_Mode + (Key => FS, + Ino => Ino, + Mode => File_Mode (Mode and Unsigned_64 (File_Mode'Last)), + Status => Succ); + Translate_Status (Succ, 0, Returned, Errno); + end Fchmod; + + procedure Umask + (Mode : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Old : File_Mode; + begin + Process.Get_Umask (Proc, Old); + Process.Set_Umask (Proc, File_Mode (Mode and 8#777#)); + Errno := Error_No_Error; + Returned := Unsigned_64 (Old); + end Umask; + + procedure Reboot + (Command : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Do_Ret : constant Boolean := (Flags and RB_ERROR_RET) /= 0; + Success : Arch.Power.Power_Status; + begin + if not Get_Capabilities (Proc).Can_Manage_Power then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("reboot", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + case Command is + when RB_HALT => Success := Arch.Power.Halt; + when RB_POWEROFF => Success := Arch.Power.Poweroff; + when RB_RESTART => Success := Arch.Power.Reboot; + when others => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end case; + + -- If we are here, its because the functions failed. + if Do_Ret then + case Success is + when Arch.Power.Not_Supported => Errno := Error_Not_Implemented; + when Arch.Power.Failure => Errno := Error_IO; + end case; + Returned := Unsigned_64'Last; + return; + else + Lib.Panic.Hard_Panic ("reboot() operation failed"); + end if; + end Reboot; + + procedure Fchown + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + User : Unsigned_64; + Group : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + Rel_FS, FS : VFS.FS_Handle; + D_Ino, Ino : VFS.File_Inode_Number; + Succ : VFS.FS_Status; + Usr : Unsigned_32; + File_Desc : File_Description_Acc; + File_Perms : MAC.Permissions; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + Process.Get_Effective_UID (Proc, Usr); + + if (Flags and AT_EMPTY_PATH) /= 0 then + File_Desc := Get_File (Proc, Dir_FD); + if File_Desc = null or else File_Desc.Description /= Description_Inode + then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + FS := File_Desc.Inner_Ino_FS; + Ino := File_Desc.Inner_Ino; + else + declare + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + begin + Resolve_AT_Directive (Proc, Dir_FD, Rel_FS, D_Ino); + if Rel_FS = VFS.Error_Handle then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + VFS.Open + (Key => Rel_FS, + Relative => D_Ino, + Path => Path, + Final_Key => FS, + Ino => Ino, + Success => Succ, + User => Usr, + Want_Read => True, + Want_Write => False, + Do_Follow => (Flags and AT_SYMLINK_NOFOLLOW) = 0); + if Succ /= VFS.FS_Success then + Errno := Error_No_Entity; + Returned := Unsigned_64'Last; + return; + end if; + + File_Perms := Check_Permissions (Proc, FS, Ino); + if not File_Perms.Can_Write then + Errno := Error_Bad_Access; + Returned := Unsigned_64'Last; + return; + end if; + end; + end if; + + VFS.Change_Owner + (FS, + Ino, + Unsigned_32 (User and 16#FFFFFFFF#), + Unsigned_32 (Group and 16#FFFFFFFF#), + Succ); + Translate_Status (Succ, 0, Returned, Errno); + end Fchown; + + procedure PRead + (File_D : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Offset : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Buf_IAddr : constant Integer_Address := Integer_Address (Buffer); + Buf_SAddr : constant System.Address := To_Address (Buf_IAddr); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, File_D); + Ret_Count : Natural; + Success1 : VFS.FS_Status; + User : Unsigned_32; + Final_Cnt : Natural; + begin + if not Check_Userland_Access (Map, Buf_IAddr, Count) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif File = null then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + elsif Count > Unsigned_64 (Natural'Last) then + Final_Cnt := Natural'Last; + else + Final_Cnt := Natural (Count); + end if; + + Userland.Process.Get_Effective_UID (Proc, User); + + declare + Data : Devices.Operation_Data (1 .. Final_Cnt) + with Import, Address => Buf_SAddr; + begin + case File.Description is + when Description_Inode => + if not File.Inner_Ino_Read then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + VFS.Read (File.Inner_Ino_FS, File.Inner_Ino, Offset, + Data, Ret_Count, File.Inner_Is_Blocking, Success1); + Translate_Status (Success1, Unsigned_64 (Ret_Count), Returned, + Errno); + when others => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end case; + end; + end PRead; + + procedure PWrite + (File_D : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Offset : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Buf_IAddr : constant Integer_Address := Integer_Address (Buffer); + Buf_SAddr : constant System.Address := To_Address (Buf_IAddr); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, File_D); + Ret_Count : Natural; + Success1 : VFS.FS_Status; + User : Unsigned_32; + Final_Cnt : Natural; + begin + if not Check_Userland_Access (Map, Buf_IAddr, Count) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif File = null then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + elsif Count > Unsigned_64 (Natural'Last) then + Final_Cnt := Natural'Last; + else + Final_Cnt := Natural (Count); + end if; + + Process.Get_Effective_UID (Proc, User); + + declare + Data : Devices.Operation_Data (1 .. Final_Cnt) + with Import, Address => Buf_SAddr; + begin + case File.Description is + when Description_Inode => + if not File.Inner_Ino_Write then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + elsif Offset + Unsigned_64 (Final_Cnt) > + Unsigned_64 (Get_Limit (Proc, MAC.File_Size_Limit)) + then + Errno := Error_File_Too_Big; + Returned := Unsigned_64'Last; + return; + end if; + + VFS.Write (File.Inner_Ino_FS, File.Inner_Ino, Offset, + Data, Ret_Count, File.Inner_Is_Blocking, Success1); + Translate_Status (Success1, Unsigned_64 (Ret_Count), Returned, + Errno); + when others => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end case; + end; + end PWrite; + + procedure Get_Sock_Name + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, Sock_FD); + AIAddr : constant Integer_Address := Integer_Address (Addr_Addr); + ASAddr : constant System.Address := To_Address (AIAddr); + LIAddr : constant Integer_Address := Integer_Address (Addr_Len); + LSAddr : constant System.Address := To_Address (LIAddr); + Succ : Boolean; + begin + if File = null or else File.Description /= Description_Socket then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + elsif not Check_Userland_Access (Map, LIAddr, Natural'Size / 8) then + goto Would_Fault_Error; + end if; + + declare + Length : Natural with Import, Address => LSAddr; + begin + if not Check_Userland_Access (Map, AIAddr, Unsigned_64 (Length)) then + goto Would_Fault_Error; + end if; + end; + + case Get_Domain (File.Inner_Socket) is + when IPC.Socket.IPv4 => + declare + Addr : SockAddr_In with Import, Address => ASAddr; + begin + Get_Bound (File.Inner_Socket, Addr.Sin_Addr, + Networking.IPv4_Port (Addr.Sin_Port), Succ); + end; + when IPC.Socket.IPv6 => + declare + Addr : SockAddr_In6 with Import, Address => ASAddr; + begin + Get_Bound (File.Inner_Socket, Addr.Sin6_Addr, + Networking.IPv6_Port (Addr.Sin6_Port), Succ); + end; + when IPC.Socket.UNIX => + declare + A_SAddr2 : constant System.Address := ASAddr + 4; + CLen : Natural := Lib.C_String_Length (A_SAddr2); + Addr : String (1 .. CLen) with Import, Address => A_SAddr2; + begin + Get_Bound (File.Inner_Socket, Addr, CLen, Succ); + end; + end case; + + if Succ then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end if; + + return; + + <> + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + end Get_Sock_Name; + + procedure Get_Peer_Name + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, Sock_FD); + AIAddr : constant Integer_Address := Integer_Address (Addr_Addr); + ASAddr : constant System.Address := To_Address (AIAddr); + LIAddr : constant Integer_Address := Integer_Address (Addr_Len); + LSAddr : constant System.Address := To_Address (LIAddr); + Succ : Boolean; + begin + if File = null or else File.Description /= Description_Socket then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + elsif not Check_Userland_Access (Map, LIAddr, Natural'Size / 8) then + goto Would_Fault_Error; + end if; + + declare + Length : Natural with Import, Address => LSAddr; + begin + if not Check_Userland_Access (Map, AIAddr, Unsigned_64 (Length)) then + goto Would_Fault_Error; + end if; + end; + + case Get_Domain (File.Inner_Socket) is + when IPC.Socket.IPv4 => + declare + Addr : SockAddr_In with Import, Address => ASAddr; + begin + Get_Peer (File.Inner_Socket, Addr.Sin_Addr, + Networking.IPv4_Port (Addr.Sin_Port), Succ); + end; + when IPC.Socket.IPv6 => + declare + Addr : SockAddr_In6 with Import, Address => ASAddr; + begin + Get_Peer (File.Inner_Socket, Addr.Sin6_Addr, + Networking.IPv6_Port (Addr.Sin6_Port), Succ); + end; + when IPC.Socket.UNIX => + declare + A_SAddr2 : constant System.Address := ASAddr + 4; + CLen : Natural := Lib.C_String_Length (A_SAddr2); + Addr : String (1 .. CLen) with Import, Address => A_SAddr2; + begin + Get_Peer (File.Inner_Socket, Addr, CLen, Succ); + end; + end case; + + if Succ then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_Not_Connected; + Returned := Unsigned_64'Last; + end if; + + return; + + <> + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + end Get_Peer_Name; + + procedure Shutdown + (Sock_FD : Unsigned_64; + How : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + File : constant File_Description_Acc := Get_File (Proc, Sock_FD); + Succ : Boolean; + begin + if File = null or else File.Description /= Description_Socket then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + case How is + when SHUT_RD => + Succ := IPC.Socket.Shutdown (File.Inner_Socket, True, False); + when SHUT_WR => + Succ := IPC.Socket.Shutdown (File.Inner_Socket, False, True); + when SHUT_RDWR => + Succ := IPC.Socket.Shutdown (File.Inner_Socket, True, True); + when others => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end case; + + if Succ then + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_Not_Connected; + Returned := Unsigned_64'Last; + end if; + end Shutdown; + + procedure Futex + (Operation : Unsigned_64; + Address : Unsigned_64; + Count : Unsigned_64; + Timeout : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + IAddr : constant Integer_Address := Integer_Address (Address); + SAddr : constant System.Address := To_Address (IAddr); + TIAddr : constant Integer_Address := Integer_Address (Timeout); + TSAddr : constant System.Address := To_Address (TIAddr); + + Futex_Len : constant Unsigned_64 := Count * (Futex_Item'Size / 8); + Time_Len : constant Unsigned_64 := Time_Spec'Size / 8; + U32_Len : constant Unsigned_64 := Unsigned_32'Size / 8; + begin + -- FIXME: These 2 Would_Fault should not have the + -- "Check_Userland_Mappability" parts, but these checks fail + -- consistently under complicated and difficult to trace conditions, + -- most notably, when booting Gloire's graphical debug option. + -- God knows I cannot find a way to fix it without several TODOs and/or + -- hacks. I expect to be able to approach this issue much better down + -- the road after some new facilities are implemented and the debug + -- arm of the kernel flourishes. + -- + -- For now, commenting out these checks does not open a huge security + -- hole, but there is one being opened. The additional checks for kernel + -- addresses should minimize the risk of kernel information being + -- leaked. + + if not Check_Userland_Access (Map, IAddr, Futex_Len) or else + not Check_Userland_Access (Map, TIAddr, Time_Len) + then + if not Check_Userland_Mappability (Map, IAddr, Futex_Len) or else + not Check_Userland_Mappability (Map, TIAddr, Time_Len) + then + goto Would_Fault_Error; + end if; + elsif Count > Unsigned_64 (Natural'Last) then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + + declare + Cnt : constant Natural := Natural (Count); + Items : Futex_Item_Arr (1 .. Cnt) with Import, Address => SAddr; + Time : Time_Spec with Import, Address => TSAddr; + Futexes : IPC.Futex.Element_Arr (1 .. Cnt); + IA : Integer_Address; + begin + for I in Items'Range loop + IA := Integer_Address (Items (I).Address); + if not Check_Userland_Access (Map, IA, U32_Len) and + not Check_Userland_Mappability (Map, IA, U32_Len) + then + goto Would_Fault_Error; + end if; + + declare + V : aliased Unsigned_32 with Import, Address => To_Address (IA); + begin + Futexes (I) := (V'Unchecked_Access, Items (I).Expected); + end; + end loop; + + case Operation is + when FUTEX_WAIT => + if IPC.Futex.Wait (Futexes, Time.Seconds, Time.Nanoseconds) then + Returned := 0; + Errno := Error_No_Error; + else + Returned := Unsigned_64'Last; + Errno := Error_No_Memory; + end if; + when FUTEX_WAKE => + IPC.Futex.Wake (Futexes); + when others => + Returned := Unsigned_64'Last; + Errno := Error_Invalid_Value; + end case; + end; + + Returned := 0; + Errno := Error_No_Error; + return; + + <> + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + end Futex; + + procedure Clock + (Operation : Unsigned_64; + Clock_ID : Unsigned_64; + Address : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + IAddr : constant Integer_Address := Integer_Address (Address); + begin + if not Check_Userland_Access (Map, IAddr, Time_Spec'Size / 8) then + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + return; + elsif not Get_Capabilities (Proc).Can_Use_Clocks then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("clock", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + declare + Spec : Time_Spec with Import, Address => To_Address (IAddr); + begin + case Operation is + when CLOCK_GETRES => + case Clock_ID is + when CLOCK_MONOTONIC => + Arch.Clocks.Get_Monotonic_Resolution + (Spec.Seconds, Spec.Nanoseconds); + when CLOCK_REALTIME => + Arch.Clocks.Get_Real_Time_Resolution + (Spec.Seconds, Spec.Nanoseconds); + when others => + goto Invalid_Value_Error; + end case; + when CLOCK_GETTIME => + case Clock_ID is + when CLOCK_MONOTONIC => + Arch.Clocks.Get_Monotonic_Time + (Spec.Seconds, Spec.Nanoseconds); + when CLOCK_REALTIME => + Arch.Clocks.Get_Real_Time + (Spec.Seconds, Spec.Nanoseconds); + when others => + goto Invalid_Value_Error; + end case; + when CLOCK_SETTIME => + case Clock_ID is + when CLOCK_REALTIME => + Arch.Clocks.Set_Real_Time + (Spec.Seconds, Spec.Nanoseconds); + when others => + goto Invalid_Value_Error; + end case; + when others => + goto Invalid_Value_Error; + end case; + end; + + Returned := 0; + Errno := Error_No_Error; + return; + + <> + Returned := Unsigned_64'Last; + Errno := Error_Invalid_Value; + end Clock; + + procedure Clock_Nanosleep + (Clock_ID : Unsigned_64; + Flags : Unsigned_64; + Request_Addr : Unsigned_64; + Remain_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + ReqIAddr : constant Integer_Address := Integer_Address (Request_Addr); + RemIAddr : constant Integer_Address := Integer_Address (Remain_Addr); + begin + if not Check_Userland_Access (Map, ReqIAddr, Time_Spec'Size / 8) or + not Check_Userland_Access (Map, RemIAddr, Time_Spec'Size / 8) + then + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + return; + elsif not Get_Capabilities (Proc).Can_Use_Clocks then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("clock_nanosleep", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + declare + Request : Time_Spec with Import, Address => To_Address (ReqIAddr); + Remaining : Time_Spec with Import, Address => To_Address (RemIAddr); + CSec, CNSec : Unsigned_64; + FSec, FNSec : Unsigned_64; + begin + if (Flags and TIMER_ABSTIME) /= 0 then + FSec := Request.Seconds; + FNSec := Request.Nanoseconds; + else + if Clock_ID = CLOCK_MONOTONIC then + Arch.Clocks.Get_Monotonic_Time (FSec, FNSec); + else + Arch.Clocks.Get_Real_Time (FSec, FNSec); + end if; + Lib.Time.Increment (FSec, FNSec, Request.Seconds, + Request.Nanoseconds); + end if; + + loop + if Clock_ID = CLOCK_MONOTONIC then + Arch.Clocks.Get_Monotonic_Time (CSec, CNSec); + else + Arch.Clocks.Get_Real_Time (CSec, CNSec); + end if; + exit when Lib.Time.Is_Greater_Equal (CSec, CNSec, FSec, FNSec); + Scheduler.Yield_If_Able; + end loop; + + Remaining.Seconds := 0; + Remaining.Nanoseconds := 0; + + Returned := 0; + Errno := Error_No_Error; + end; + end Clock_Nanosleep; + + procedure Get_RUsage + (Who : Unsigned_64; + Usage_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + IAddr : constant Integer_Address := Integer_Address (Usage_Addr); + begin + if not Check_Userland_Access (Map, IAddr, RUsage'Size / 8) then + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + return; + end if; + + declare + Usage : RUsage with Import, Address => To_Address (IAddr); + begin + case Who is + when RUSAGE_SELF => + Process.Get_Runtime_Times (Proc, Usage.System_Time.Seconds, + Usage.System_Time.Nanoseconds, Usage.User_Time.Seconds, + Usage.User_Time.Nanoseconds); + when RUSAGE_CHILDREN => + Process.Get_Children_Runtimes + (Proc, Usage.System_Time.Seconds, + Usage.System_Time.Nanoseconds, Usage.User_Time.Seconds, + Usage.User_Time.Nanoseconds); + when others => + Returned := Unsigned_64'Last; + Errno := Error_Invalid_Value; + return; + end case; + Returned := 0; + Errno := Error_No_Error; + end; + end Get_RUsage; + + procedure RecvFrom + (Sock_FD : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Flags : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + pragma Unreferenced (Flags); + + Buf_IAddr : constant Integer_Address := Integer_Address (Buffer); + Buf_SAddr : constant System.Address := To_Address (Buf_IAddr); + AIAddr : constant Integer_Address := Integer_Address (Addr_Addr); + ASAddr : constant System.Address := To_Address (AIAddr); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, Sock_FD); + Ret_Count : Natural; + Success : IPC.Socket.Socket_Status; + Final_Cnt : Natural; + begin + if not Check_Userland_Access (Map, Buf_IAddr, Count) or else + (AIAddr /= 0 and not Check_Userland_Access (Map, AIAddr, Addr_Len)) + then + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + return; + elsif File = null or else File.Description /= Description_Socket then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + elsif Count > Unsigned_64 (Natural'Last) then + Final_Cnt := Natural'Last; + else + Final_Cnt := Natural (Count); + end if; + + declare + Data : Devices.Operation_Data (1 .. Final_Cnt) + with Import, Address => Buf_SAddr; + begin + if AIAddr /= 0 and Get_Type (File.Inner_Socket) /= IPC.Socket.Stream + then + case Get_Domain (File.Inner_Socket) is + when IPC.Socket.IPv4 => + declare + Addr : SockAddr_In with Import, Address => ASAddr; + begin + IPC.Socket.Read + (Sock => File.Inner_Socket, + Data => Data, + Ret_Count => Ret_Count, + Addr => Addr.Sin_Addr, + Port => Networking.IPv4_Port (Addr.Sin_Port), + Success => Success); + end; + when IPC.Socket.IPv6 => + declare + Addr : SockAddr_In6 with Import, Address => ASAddr; + begin + IPC.Socket.Read + (Sock => File.Inner_Socket, + Data => Data, + Ret_Count => Ret_Count, + Addr => Addr.Sin6_Addr, + Port => Networking.IPv6_Port (Addr.Sin6_Port), + Success => Success); + end; + when IPC.Socket.UNIX => + declare + A_SAddr : constant System.Address := ASAddr + 4; + CLen : constant Natural := Lib.C_String_Length (A_SAddr); + Addr : String (1 .. CLen) with Import, Address => A_SAddr; + begin + IPC.Socket.Read + (Sock => File.Inner_Socket, + Data => Data, + Ret_Count => Ret_Count, + Path => Addr, + Success => Success); + end; + end case; + else + IPC.Socket.Read (File.Inner_Socket, Data, Ret_Count, Success); + end if; + Translate_Status (Success, Unsigned_64 (Ret_Count), Returned, Errno); + end; + end RecvFrom; + + procedure SendTo + (Sock_FD : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Flags : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + pragma Unreferenced (Flags); + + Buf_IAddr : constant Integer_Address := Integer_Address (Buffer); + Buf_SAddr : constant System.Address := To_Address (Buf_IAddr); + AIAddr : constant Integer_Address := Integer_Address (Addr_Addr); + ASAddr : constant System.Address := To_Address (AIAddr); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, Sock_FD); + Ret_Count : Natural; + Success : IPC.Socket.Socket_Status; + Final_Cnt : Natural; + begin + if not Check_Userland_Access (Map, Buf_IAddr, Count) or else + (AIAddr /= 0 and not Check_Userland_Access (Map, AIAddr, Addr_Len)) + then + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + return; + elsif File = null or else File.Description /= Description_Socket then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + elsif Count > Unsigned_64 (Natural'Last) then + Final_Cnt := Natural'Last; + else + Final_Cnt := Natural (Count); + end if; + + declare + Data : Devices.Operation_Data (1 .. Final_Cnt) + with Import, Address => Buf_SAddr; + begin + if AIAddr /= 0 and Get_Type (File.Inner_Socket) /= IPC.Socket.Stream + then + case Get_Domain (File.Inner_Socket) is + when IPC.Socket.IPv4 => + declare + Addr : SockAddr_In with Import, Address => ASAddr; + begin + IPC.Socket.Write + (Sock => File.Inner_Socket, + Data => Data, + Ret_Count => Ret_Count, + Addr => Addr.Sin_Addr, + Port => Networking.IPv4_Port (Addr.Sin_Port), + Success => Success); + end; + when IPC.Socket.IPv6 => + declare + Addr : SockAddr_In6 with Import, Address => ASAddr; + begin + IPC.Socket.Write + (Sock => File.Inner_Socket, + Data => Data, + Ret_Count => Ret_Count, + Addr => Addr.Sin6_Addr, + Port => Networking.IPv6_Port (Addr.Sin6_Port), + Success => Success); + end; + when IPC.Socket.UNIX => + declare + A_SAddr : constant System.Address := ASAddr + 4; + CLen : constant Natural := Lib.C_String_Length (A_SAddr); + Addr : String (1 .. CLen) with Import, Address => A_SAddr; + begin + IPC.Socket.Write + (Sock => File.Inner_Socket, + Data => Data, + Ret_Count => Ret_Count, + Path => Addr, + Success => Success); + end; + end case; + else + IPC.Socket.Write (File.Inner_Socket, Data, Ret_Count, Success); + end if; + Translate_Status (Success, Unsigned_64 (Ret_Count), Returned, Errno); + end; + end SendTo; + + procedure Config_NetInterface + (InterDev : Unsigned_64; + Operation : Unsigned_64; + Arg_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, InterDev); + IAddr : constant Integer_Address := Integer_Address (Arg_Addr); + Handl : Devices.Device_Handle; + Stat : VFS.File_Stat; + Suc : Boolean; + Suc2 : VFS.FS_Status; + + Blk : Boolean with Import, Address => To_Address (IAddr); + IP4 : Addr4_NetInterface with Import, Address => To_Address (IAddr); + IP6 : Addr6_NetInterface with Import, Address => To_Address (IAddr); + begin + if not Get_Capabilities (Proc).Can_Manage_Networking then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("config_netinter", Proc); + Returned := Unsigned_64'Last; + return; + elsif File = null or else File.Description /= Description_Inode then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + end if; + + VFS.Stat (File.Inner_Ino_FS, File.Inner_Ino, Stat, Suc2); + if Suc2 /= FS_Success or Stat.Type_Of_File /= File_Character_Device then + Returned := Unsigned_64'Last; + Errno := Error_Bad_File; + return; + end if; + Handl := Devices.From_Unique_ID (Integer (File.Inner_Ino)); + + case Operation is + when NETINTER_SET_BLOCK => + if not Check_Userland_Access (Map, IAddr, Blk'Size / 8) then + goto Would_Fault_Error; + end if; + Networking.Interfaces.Block (Handl, Blk, Suc); + when NETINTER_SET_STATIC_IP4 => + if not Check_Userland_Access (Map, IAddr, IP4'Size / 8) then + goto Would_Fault_Error; + end if; + Networking.Interfaces.Modify_Addresses + (Handl, IP4.IP, IP4.Sub, Suc); + when NETINTER_SET_STATIC_IP6 => + if not Check_Userland_Access (Map, IAddr, IP6'Size / 8) then + goto Would_Fault_Error; + end if; + Networking.Interfaces.Modify_Addresses + (Handl, IP6.IP, IP6.Sub, Suc); + when others => + Suc := False; + end case; + + if Suc then + Returned := 0; + Errno := Error_No_Error; + else + Returned := Unsigned_64'Last; + Errno := Error_Invalid_Value; + end if; + + return; + + <> + Returned := Unsigned_64'Last; + Errno := Error_Would_Fault; + end Config_NetInterface; + + procedure UTimes + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Time_Addr : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Time_IAddr : constant Integer_Address := Integer_Address (Time_Addr); + Rel_FS, FS : VFS.FS_Handle; + D_Ino, Ino : VFS.File_Inode_Number; + Succ : VFS.FS_Status; + User : Unsigned_32; + File_Desc : File_Description_Acc; + File_Perms : MAC.Permissions; + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) or + not Check_Userland_Access (Map, Time_IAddr, (Time_Spec'Size / 8) * 2) + then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif Path_Len > Unsigned_64 (Natural'Last) then + Errno := Error_String_Too_Long; + Returned := Unsigned_64'Last; + return; + end if; + + Process.Get_Effective_UID (Proc, User); + + if (Flags and AT_EMPTY_PATH) /= 0 then + File_Desc := Get_File (Proc, Dir_FD); + if File_Desc = null or else File_Desc.Description /= Description_Inode + then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + FS := File_Desc.Inner_Ino_FS; + Ino := File_Desc.Inner_Ino; + else + declare + Path : String (1 .. Natural (Path_Len)) + with Import, Address => To_Address (Path_IAddr); + begin + Resolve_AT_Directive (Proc, Dir_FD, Rel_FS, D_Ino); + if Rel_FS = VFS.Error_Handle then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + VFS.Open + (Key => Rel_FS, + Relative => D_Ino, + Path => Path, + Final_Key => FS, + Ino => Ino, + Success => Succ, + User => User, + Want_Read => True, + Want_Write => False, + Do_Follow => (Flags and AT_SYMLINK_NOFOLLOW) = 0); + if Succ /= VFS.FS_Success then + Errno := Error_No_Entity; + Returned := Unsigned_64'Last; + return; + end if; + + File_Perms := Check_Permissions (Proc, FS, Ino); + if not File_Perms.Can_Write then + Errno := Error_Bad_Access; + Returned := Unsigned_64'Last; + return; + end if; + end; + end if; + + declare + type Time_Arr is array (1 .. 2) of Time_Spec; + Times : Time_Arr with Import, Address => To_Address (Time_IAddr); + begin + VFS.Change_Access_Times + (Key => FS, + Ino => Ino, + Access_Seconds => Times (1).Seconds, + Access_Nanoseconds => Times (1).Nanoseconds, + Modify_Seconds => Times (2).Seconds, + Modify_Nanoseconds => Times (2).Nanoseconds, + Status => Succ); + Translate_Status (Succ, 0, Returned, Errno); + end; + end UTimes; + + procedure Create_TCluster + (Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Result : Scheduler.TCID; + begin + if not Get_Capabilities (Proc).Can_Change_Scheduling then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("create_tcluster", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + Result := Scheduler.Create_Cluster; + if Result /= Error_TCID then + Errno := Error_No_Error; + Returned := Unsigned_64 (Convert (Result)); + else + Errno := Error_No_Memory; + Returned := Unsigned_64'Last; + end if; + end Create_TCluster; + + procedure Switch_TCluster + (Cluster : Unsigned_64; + Thread : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Clust : constant TCID := Convert (Natural (Cluster and 16#FFFFFFFF#)); + Th : constant TID := Convert (Natural (Thread and 16#FFFFFFFF#)); + begin + if not Get_Capabilities (Proc).Can_Change_Scheduling then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("switch_tcluster", Proc); + Returned := Unsigned_64'Last; + elsif Clust = Error_TCID or else Th = Error_TID or else + not Switch_Cluster (Clust, Th) + then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + else + Errno := Error_No_Error; + Returned := 0; + end if; + end Switch_TCluster; + + procedure Sigprocmask + (How : Unsigned_64; + Set_Addr : Unsigned_64; + Old_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + type Unsigned_28 is mod 2**28; + function C1 is new Ada.Unchecked_Conversion (Signal_Bitmap, Unsigned_28); + function C2 is new Ada.Unchecked_Conversion (Unsigned_28, Signal_Bitmap); + + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + S_IAddr : constant Integer_Address := Integer_Address (Set_Addr); + O_IAddr : constant Integer_Address := Integer_Address (Old_Addr); + Old_Set : Signal_Bitmap; + begin + Get_Masked_Signals (Proc, Old_Set); + + if O_IAddr /= 0 then + if not Check_Userland_Access (Map, O_IAddr, Signal_Bitmap'Size / 8) + then + goto Would_Fault_Error; + end if; + + declare + Old : Signal_Bitmap with Import, Address => To_Address (O_IAddr); + begin + Old := Old_Set; + end; + end if; + + if S_IAddr /= 0 then + if not Check_Userland_Access (Map, S_IAddr, Signal_Bitmap'Size / 8) + then + goto Would_Fault_Error; + end if; + + declare + Set : Unsigned_28 with Import, Address => To_Address (S_IAddr); + begin + case How is + when SIG_BLOCK => + Set_Masked_Signals (Proc, C2 (Set and C1 (Old_Set))); + when SIG_SETMASK => + Set_Masked_Signals (Proc, C2 (Set and not C1 (Old_Set))); + when SIG_UNBLOCK => + Set_Masked_Signals (Proc, C2 (Set)); + when others => + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end case; + end; + end if; + + Errno := Error_No_Error; + Returned := 0; + return; + + <> + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + end Sigprocmask; + + procedure Sigaction + (Signal : Unsigned_64; + Act_Addr : Unsigned_64; + Old_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + A_IAddr : constant Integer_Address := Integer_Address (Act_Addr); + O_IAddr : constant Integer_Address := Integer_Address (Old_Addr); + Actual : Process.Signal; + Success : Boolean; + Mask : Process.Signal_Bitmap; + begin + Translate_Signal (Signal, Actual, Success); + if not Success then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + + if O_IAddr /= 0 then + if not Check_Userland_Access (Map, O_IAddr, Sigaction_Info'Size / 8) + then + goto Would_Fault_Error; + end if; + + declare + Old : Sigaction_Info with Import, Address => To_Address (O_IAddr); + begin + Old.Flags := 0; + Old.Mask := 0; + Get_Signal_Handler (Proc, Actual, Old.Handler); + end; + end if; + + if A_IAddr /= 0 then + if not Check_Userland_Access (Map, A_IAddr, Sigaction_Info'Size / 8) + then + goto Would_Fault_Error; + end if; + + declare + Act : Sigaction_Info with Import, Address => To_Address (A_IAddr); + begin + case To_Integer (Act.Handler) is + when SIG_DFL => + Set_Signal_Handler (Proc, Actual, System.Null_Address); + when SIG_IGN => + Get_Masked_Signals (Proc, Mask); + Mask (Actual) := True; + Set_Masked_Signals (Proc, Mask); + when others => + Set_Signal_Handler (Proc, Actual, Act.Handler); + end case; + end; + end if; + + Errno := Error_No_Error; + Returned := 0; + return; + + <> + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + end Sigaction; + + procedure Send_Signal + (Target : Unsigned_64; + Signal : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Tgt : constant PID := Convert (Natural (Target and 16#FFFFFF#)); + Success : Boolean; + Actual : Process.Signal; + EUID, Tgt_UID, Tgt_EUID : Unsigned_32; + begin + Translate_Signal (Signal, Actual, Success); + if not Success then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + + if Tgt = Error_PID then + Errno := Error_Bad_Search; + Returned := Unsigned_64'Last; + return; + elsif not Actual'Valid then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + + if not Get_Capabilities (Proc).Can_Signal_All then + Get_Effective_UID (Proc, EUID); + Get_UID (Tgt, Tgt_UID); + Get_Effective_UID (Tgt, Tgt_EUID); + if EUID /= Tgt_UID and EUID /= Tgt_EUID then + Errno := Error_Bad_Permissions; + Returned := Unsigned_64'Last; + return; + end if; + end if; + + Raise_Signal (Tgt, Actual); + Errno := Error_No_Error; + Returned := 0; + end Send_Signal; + + procedure Get_Prio + (Which : Unsigned_64; + Who : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : PID := Arch.Local.Get_Current_Process; + Th : TID; + FNice : Niceness; + begin + if not Get_Capabilities (Proc).Can_Change_Scheduling then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("getprio", Proc); + Returned := Unsigned_64'Last; + end if; + + case Which is + when PRIO_PROCESS => + if Who /= 0 then + Proc := Convert (Natural (Who and 16#FFFFFFFF#)); + if Proc = Error_PID then + goto Invalid_Value_Return; + end if; + end if; + FNice := Get_Niceness (Proc); + when PRIO_PGRP | PRIO_USER => + Errno := Error_Not_Supported; + Returned := Unsigned_64'Last; + return; + when PRIO_THREAD => + if Who = 0 then + Th := Arch.Local.Get_Current_Thread; + else + Th := Convert (Natural (Who and 16#FFFFFFFF#)); + if Th = Error_TID then + goto Invalid_Value_Return; + end if; + end if; + FNice := Get_Niceness (Th); + when others => + goto Invalid_Value_Return; + end case; + + if FNice >= 0 then + Returned := Unsigned_64 (FNice); + else + Returned := Unsigned_64'Last - Unsigned_64 (abs FNice) + 1; + end if; + + Errno := Error_No_Error; + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end Get_Prio; + + procedure Set_Prio + (Which : Unsigned_64; + Who : Unsigned_64; + Nice : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : PID := Arch.Local.Get_Current_Process; + Th : TID; + FNice : Niceness; + begin + if not Get_Capabilities (Proc).Can_Change_Scheduling then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("setprio", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + if Nice <= Unsigned_64 (Niceness'Last) then + FNice := Niceness (Nice); + elsif Nice >= + Unsigned_64 (Unsigned_32'Last - Unsigned_32 (abs Niceness'First) + 1) + then + FNice := -Niceness (Unsigned_64 (Unsigned_32'Last) - Nice + 1); + else + goto Invalid_Value_Return; + end if; + + case Which is + when PRIO_PROCESS => + if Who /= 0 then + Proc := Convert (Natural (Who and 16#FFFFFFFF#)); + if Proc = Error_PID then + goto Invalid_Value_Return; + end if; + end if; + Set_Niceness (Proc, FNice); + when PRIO_PGRP | PRIO_USER => + Errno := Error_Not_Supported; + Returned := Unsigned_64'Last; + return; + when PRIO_THREAD => + if Who = 0 then + Th := Arch.Local.Get_Current_Thread; + else + Th := Convert (Natural (Who and 16#FFFFFFFF#)); + if Th = Error_TID then + goto Invalid_Value_Return; + end if; + end if; + Set_Niceness (Th, FNice); + when others => + goto Invalid_Value_Return; + end case; + + Errno := Error_No_Error; + Returned := 0; + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end Set_Prio; + + procedure Get_GID (Returned : out Unsigned_64; Errno : out Errno_Value) is + Proc : constant PID := Arch.Local.Get_Current_Process; + Ret : Unsigned_32; + begin + Userland.Process.Get_GID (Proc, Ret); + Errno := Error_No_Error; + Returned := Unsigned_64 (Ret); + end Get_GID; + + procedure Get_EGID (Returned : out Unsigned_64; Errno : out Errno_Value) is + Proc : constant PID := Arch.Local.Get_Current_Process; + Ret : Unsigned_32; + begin + Userland.Process.Get_Effective_GID (Proc, Ret); + Errno := Error_No_Error; + Returned := Unsigned_64 (Ret); + end Get_EGID; + + procedure Set_GIDs + (GID : Unsigned_64; + EGID : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Curr_GID : Unsigned_32; + begin + if Get_Capabilities (Proc).Can_Change_GIDs then + if EGID <= Unsigned_64 (Unsigned_32'Last) then + Userland.Process.Set_Effective_GID (Proc, Unsigned_32 (EGID)); + end if; + if GID <= Unsigned_64 (Unsigned_32'Last) then + Userland.Process.Set_GID (Proc, Unsigned_32 (GID)); + end if; + else + Userland.Process.Get_GID (Proc, Curr_GID); + if EGID <= Unsigned_64 (Unsigned_32'Last) then + if EGID = Unsigned_64 (Curr_GID) then + Userland.Process.Set_Effective_GID (Proc, Unsigned_32 (EGID)); + else + Errno := Error_Bad_Permissions; + Returned := Unsigned_64'Last; + return; + end if; + end if; + end if; + + Errno := Error_No_Error; + Returned := 0; + end Set_GIDs; + + procedure Get_Groups + (Count : Unsigned_64; + Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + IAddr : constant Integer_Address := Integer_Address (Addr); + Ret : Natural; + Arr : Supplementary_GID_Arr (1 .. Natural (Count and 16#FFFF#)) + with Import, Address => To_Address (IAddr); + begin + if not Check_Userland_Access (Map, IAddr, Arr'Size / 8) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + Get_Supplementary_Groups (Proc, Arr, Ret); + if Ret <= Arr'Length then + Errno := Error_No_Error; + Returned := Unsigned_64 (Ret); + else + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end if; + end Get_Groups; + + procedure Set_Groups + (Count : Unsigned_64; + Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + IAddr : constant Integer_Address := Integer_Address (Addr); + Succ : Boolean; + Arr : Supplementary_GID_Arr (1 .. Natural (Count and 16#FFFF#)) + with Import, Address => To_Address (IAddr); + begin + if Count = 0 and Addr = 0 then + Empty_Supplementary_Groups (Proc); + else + if not Check_Userland_Access (Map, IAddr, Arr'Size / 8) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + Set_Supplementary_Groups (Proc, Arr, Succ); + if not Succ then + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + return; + end if; + end if; + + Errno := Error_No_Error; + Returned := 0; + end Set_Groups; + + procedure TTY_Name + (FD : Unsigned_64; + Addr : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + IAddr : constant Integer_Address := Integer_Address (Addr); + SAddr : constant System.Address := To_Address (IAddr); + File : constant File_Description_Acc := Get_File (Proc, FD); + Data : IPC.PTY.Inner_Acc; + Str : String (1 .. Natural (Length)) with Import, Address => SAddr; + begin + if not Check_Userland_Access (Map, IAddr, Length) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + elsif File = null then + Errno := Error_Bad_File; + Returned := Unsigned_64'Last; + return; + end if; + + case File.Description is + when Description_Primary_PTY => Data := File.Inner_Primary_PTY; + when Description_Secondary_PTY => Data := File.Inner_Secondary_PTY; + when others => goto Invalid_Error; + end case; + + IPC.PTY.Get_Name (Data, Str, Natural (Returned)); + if Returned >= Length then + goto Invalid_Error; + end if; + + Str (Natural (Returned) + 1) := Ada.Characters.Latin_1.NUL; + + Errno := Error_No_Error; + Returned := 0; + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end TTY_Name; + + procedure FAdvise + (FD : Unsigned_64; + Offset : Unsigned_64; + Length : Unsigned_64; + Advice : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + pragma Unreferenced (Offset); + pragma Unreferenced (Length); + Proc : constant PID := Arch.Local.Get_Current_Process; + File : constant File_Description_Acc := Get_File (Proc, FD); + Tmp : FS_Status; + begin + if File = null then + Errno := Error_Bad_File; + goto Error_Return; + elsif File.Description /= Description_Inode then + Errno := Error_Invalid_Seek; + goto Error_Return; + end if; + + case Advice is + when POSIX_FADV_NORMAL | POSIX_FADV_SEQUENTIAL | POSIX_FADV_NOREUSE | + POSIX_FADV_WILLNEED | POSIX_FADV_RANDOM => + Errno := Error_No_Error; + Returned := 0; + when POSIX_FADV_DONTNEED => + Tmp := VFS.Synchronize (File.Inner_Ino_FS, File.Inner_Ino, False); + Translate_Status (Tmp, 0, Returned, Errno); + when others => + Errno := Error_Invalid_Value; + goto Error_Return; + end case; + + return; + + <> + Returned := Unsigned_64'Last; + end FAdvise; + + procedure SHMAt + (ID : Unsigned_64; + Addr : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + package Align is new Lib.Alignment (Unsigned_64); + Proc : constant PID := Arch.Local.Get_Current_Process; + Truncated : constant Unsigned_32 := Unsigned_32 (ID); + Perms : constant Page_Permissions := + (Is_User_Accesible => True, + Can_Read => True, + Can_Write => (Flags and SHM_RDONLY) = 0, + others => False); + Ret_Addr, Ret_Size, VAddr : Unsigned_64; + EUID, EGID : Unsigned_32; + begin + if not Get_Capabilities (Proc).Can_Bypass_IPC_Checks then + Get_Effective_UID (Proc, EUID); + Get_Effective_GID (Proc, EGID); + if not IPC.SHM.Check_Permissions (Truncated, EUID, EGID) then + Errno := Error_Bad_Access; + Returned := Unsigned_64'Last; + return; + end if; + end if; + + IPC.SHM.Get_Address (Truncated, Ret_Addr, Ret_Size); + + if Addr /= 0 then + if (Flags and SHM_RND) /= 0 then + VAddr := Align.Align_Down (Addr, Arch.MMU.Page_Size); + elsif (Addr mod Arch.MMU.Page_Size) /= 0 then + goto Invalid_Error; + else + VAddr := Addr; + end if; + else + VAddr := Bump_Alloc_Base (Proc, Ret_Size); + end if; + + if Ret_Size /= 0 then + if Arch.MMU.Map_Range + (Map => Userland.Process.Get_Common_Map (Proc), + Virtual_Start => To_Address (Integer_Address (VAddr)), + Physical_Start => To_Address (Integer_Address (Ret_Addr)), + Length => Storage_Count (Ret_Size), + Permissions => Perms) + then + IPC.SHM.Modify_Attachment (Truncated, True); + Errno := Error_No_Error; + Returned := VAddr; + else + Errno := Error_No_Memory; + Returned := Unsigned_64'Last; + end if; + return; + end if; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end SHMAt; + + procedure SHMCtl + (ID : Unsigned_64; + CMD : Unsigned_64; + Buffer : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Trunc_ID : constant Unsigned_32 := Unsigned_32 (ID and 16#FFFFFFFF#); + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + IAddr : constant Integer_Address := Integer_Address (Buffer); + SAddr : constant System.Address := To_Address (IAddr); + Info : IPC.SHM.Segment_Information; + Found : Boolean; + EUID, EGID : Unsigned_32; + begin + if not Get_Capabilities (Proc).Can_Bypass_IPC_Checks then + Get_Effective_UID (Proc, EUID); + Get_Effective_GID (Proc, EGID); + if not IPC.SHM.Check_Permissions (Trunc_ID, EUID, EGID) then + Errno := Error_Bad_Access; + Returned := Unsigned_64'Last; + return; + end if; + end if; + + case CMD is + when IPC_RMID => + IPC.SHM.Mark_Refcounted (Trunc_ID); + when IPC_SET | IPC_STAT => + if not Check_Userland_Access (Map, IAddr, SHMID_DS'Size / 8) then + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + end if; + + declare + Orig : SHMID_DS with Import, Address => SAddr; + begin + if CMD = IPC_SET then + IPC.SHM.Modify_Permissions + (ID => Trunc_ID, + UID => Orig.SHM_Perm.UID, + GID => Orig.SHM_Perm.GID, + Mode => Unsigned_64 (Orig.SHM_Perm.Mode)); + else + IPC.SHM.Fetch_Information (Trunc_ID, Info, Found); + if not Found then + goto Invalid_Error; + end if; + Orig.SHM_Perm.IPC_Perm_Key := Info.Key; + Orig.SHM_Perm.UID := Info.Owner_UID; + Orig.SHM_Perm.GID := Info.Owner_GID; + Orig.SHM_Perm.CUID := Info.Creator_UID; + Orig.SHM_Perm.CGID := Info.Creator_GID; + Orig.SHM_Perm.Mode := Unsigned_32 (Info.Mode); + Orig.SHM_SegSz := Info.Size; + Orig.SHM_NAttch := Unsigned_64 (Info.Refcount); + end if; + end; + when others => + goto Invalid_Error; + end case; + + Errno := Error_No_Error; + Returned := 0; + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end SHMCtl; + + procedure SHMDt + (Address : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Phys : System.Address; + Is_Mapped, Is_Readable, Is_Writeable, Is_Executable : Boolean; + Is_User_Accessible : Boolean; + ID : IPC.SHM.Segment_ID; + Size : Unsigned_64; + begin + Arch.MMU.Translate_Address + (Map => Map, + Virtual => To_Address (Integer_Address (Address)), + Length => Arch.MMU.Page_Size, + Physical => Phys, + Is_Mapped => Is_Mapped, + Is_User_Accessible => Is_User_Accessible, + Is_Readable => Is_Readable, + Is_Writeable => Is_Writeable, + Is_Executable => Is_Executable); + IPC.SHM.Get_Segment_And_Size (Unsigned_64 (To_Integer (Phys)), Size, ID); + + if Is_Mapped and ID /= IPC.SHM.Error_ID then + if Arch.MMU.Unmap_Range + (Map => Map, + Virtual_Start => To_Address (Integer_Address (Address)), + Length => Storage_Count (Size)) + then + IPC.SHM.Modify_Attachment (ID, False); + Errno := Error_No_Error; + Returned := 0; + else + Errno := Error_No_Memory; + Returned := Unsigned_64'Last; + end if; + else + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end if; + end SHMDt; + + procedure SHMGet + (Key : Unsigned_64; + Size : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + package Align is new Lib.Alignment (Unsigned_64); + Proc : constant PID := Arch.Local.Get_Current_Process; + Truncated : constant Unsigned_32 := Unsigned_32 (Key and 16#FFFFFFFF#); + Mode : constant Unsigned_64 := Flags and Unsigned_64 (File_Mode'Last); + AlSz : constant Unsigned_64 := Align.Align_Up (Size, Arch.MMU.Page_Size); + Created_Key : IPC.SHM.Segment_ID; + EUID : Unsigned_32; + EGID : Unsigned_32; + begin + Get_Effective_UID (Proc, EUID); + Get_Effective_GID (Proc, EGID); + + if Key = IPC_PRIVATE then + Created_Key := IPC.SHM.Create_Unkeyed_Segment + (AlSz, EUID, EGID, Mode); + elsif (Flags and IPC_CREAT) /= 0 then + Created_Key := IPC.SHM.Create_Segment + (Truncated, AlSz, EUID, EGID, Mode); + else + Created_Key := IPC.SHM.Get_Segment (Truncated); + end if; + + if Created_Key /= IPC.SHM.Error_ID then + Errno := Error_No_Error; + Returned := Unsigned_64 (Created_Key); + else + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end if; + end SHMGet; + + procedure GetSockOpt + (Sock : Unsigned_64; + Level : Unsigned_64; + Opt : Unsigned_64; + Addr : Unsigned_64; + Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + pragma Unreferenced (Len); + + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, Sock); + IAddr : constant Integer_Address := Integer_Address (Addr); + begin + if File = null or else File.Description /= Description_Socket then + Errno := Error_Bad_File; + goto Generic_Error; + elsif Level /= SOL_SOCKET then + goto Invalid_Value_Error; + elsif not Check_Userland_Access (Map, IAddr, Unsigned_32'Size / 8) then + Errno := Error_Would_Fault; + goto Generic_Error; + end if; + + declare + Val : Unsigned_32 with Import, Address => To_Address (IAddr); + begin + case Opt is + when SO_ACCEPTCONN => + Val := (if Is_Listening (File.Inner_Socket) then 1 else 0); + when SO_ERROR => + Val := 0; + when SO_SNDBUF => + Val := Unsigned_32 (IPC.Socket.Default_Socket_Size); + when SO_TYPE => + case Get_Type (File.Inner_Socket) is + when Stream => + Val := SOCK_STREAM; + when Datagram => + Val := SOCK_DGRAM; + when Raw => + Val := SOCK_RAW; + end case; + when others => + goto Invalid_Value_Error; + end case; + end; + + Errno := Error_No_Error; + Returned := 0; + return; + + <> + Errno := Error_Invalid_Value; + <> + Returned := Unsigned_64'Last; + end GetSockOpt; + + procedure SetSockOpt + (Sock : Unsigned_64; + Level : Unsigned_64; + Opt : Unsigned_64; + Addr : Unsigned_64; + Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + pragma Unreferenced (Len); + + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + File : constant File_Description_Acc := Get_File (Proc, Sock); + IAddr : constant Integer_Address := Integer_Address (Addr); + begin + if File = null or else File.Description /= Description_Socket then + Errno := Error_Bad_File; + goto Generic_Error; + elsif Level /= SOL_SOCKET then + goto Invalid_Value_Error; + elsif not Check_Userland_Access (Map, IAddr, Unsigned_32'Size / 8) then + Errno := Error_Would_Fault; + goto Generic_Error; + end if; + + case Opt is + when SO_SNDBUF => + null; + when others => + goto Invalid_Value_Error; + end case; + + Errno := Error_No_Error; + Returned := 0; + return; + + <> + Errno := Error_Invalid_Value; + <> + Returned := Unsigned_64'Last; + end SetSockOpt; + + procedure Get_Thread_Name + (TID : Unsigned_64; + Addr : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Th : constant Scheduler.TID := Scheduler.Convert (Natural (TID)); + IAddr : constant Integer_Address := Integer_Address (Addr); + begin + if not Check_Userland_Access (Map, IAddr, Length) then + Errno := Error_Would_Fault; + goto Generic_Error; + elsif Length >= Unsigned_64 (Natural'Last) then + goto Invalid_Value_Error; + end if; + + declare + Ret : Natural; + Str : String (1 .. Natural (Length)) + with Import, Address => To_Address (IAddr); + begin + Scheduler.Get_Name (Th, Str, Ret); + if Ret /= 0 and Ret < Str'Length then + Str (Ret + 1) := Ada.Characters.Latin_1.NUL; + Returned := 0; + Errno := Error_No_Error; + else + goto Invalid_Value_Error; + end if; + return; + end; + + <> + Errno := Error_Invalid_Value; + <> + Returned := Unsigned_64'Last; + end Get_Thread_Name; + + procedure Set_Thread_Name + (TID : Unsigned_64; + Addr : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + Th : constant Scheduler.TID := Scheduler.Convert (Natural (TID)); + IAddr : constant Integer_Address := Integer_Address (Addr); + begin + if not Check_Userland_Access (Map, IAddr, Length) then + Errno := Error_Would_Fault; + goto Generic_Error; + elsif Length >= Unsigned_64 (Natural'Last) then + goto Invalid_Value_Error; + end if; + + declare + Suc : Boolean; + Str : String (1 .. Natural (Length)) + with Import, Address => To_Address (IAddr); + begin + Scheduler.Set_Name (Th, Str, Suc); + if Suc then + Returned := 0; + Errno := Error_No_Error; + else + goto Invalid_Value_Error; + end if; + return; + end; + + <> + Errno := Error_Invalid_Value; + <> + Returned := Unsigned_64'Last; + end Set_Thread_Name; + + procedure Failure_Policy + (Old_Addr : Unsigned_64; + New_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + package FAL renames Userland.Memory_Failure; + + Proc : constant PID := Arch.Local.Get_Current_Process; + Map : constant Page_Table_Acc := Get_Common_Map (Proc); + O_IAddr : constant Integer_Address := Integer_Address (Old_Addr); + N_IAddr : constant Integer_Address := Integer_Address (New_Addr); + Old_Val : Failure_Struct with Import, Address => To_Address (O_IAddr); + New_Val : Failure_Struct with Import, Address => To_Address (N_IAddr); + Pol : Userland.Memory_Failure.Policy; + OOM_Kill : Boolean; + begin + if O_IAddr /= 0 then + if Check_Userland_Access (Map, O_IAddr, Failure_Struct'Size / 8) then + FAL.Get_System_Policy (Pol); + case Pol is + when FAL.Hard_Panic => + Old_Val.Memory_Failure := MEMORY_FAIL_PANIC; + when FAL.Soft_Kill => + Old_Val.Memory_Failure := MEMORY_FAIL_SOFT_KILL; + when FAL.Hard_Kill => + Old_Val.Memory_Failure := MEMORY_FAIL_HARD_KILL; + end case; + + OOM_Failure.Get_Killing_Config (OOM_Kill); + if OOM_Kill then + Old_Val.OOM_Failure := OOM_ALLOW_PROC_KILL; + else + Old_Val.OOM_Failure := 0; + end if; + else + goto Would_Fault_Error; + end if; + end if; + + if N_IAddr /= 0 then + if not Get_Capabilities (Proc).Can_Manage_MAC then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("failure_policy", Proc); + Returned := Unsigned_64'Last; + return; + end if; + + if Check_Userland_Access (Map, N_IAddr, Failure_Struct'Size / 8) then + case New_Val.Memory_Failure is + when MEMORY_FAIL_PANIC => Pol := FAL.Hard_Panic; + when MEMORY_FAIL_SOFT_KILL => Pol := FAL.Soft_Kill; + when MEMORY_FAIL_HARD_KILL => Pol := FAL.Hard_Kill; + when others => goto Invalid_Value_Error; + end case; + + if (New_Val.OOM_Failure and OOM_ALLOW_PROC_KILL) /= 0 then + OOM_Kill := True; + else + OOM_Kill := False; + end if; + + Memory_Failure.Set_System_Policy (Pol); + OOM_Failure.Configure_Killing (OOM_Kill); + else + goto Would_Fault_Error; + end if; + end if; + + Errno := Error_No_Error; + Returned := 0; + return; + + <> + Errno := Error_Would_Fault; + Returned := Unsigned_64'Last; + return; + + <> + Errno := Error_Invalid_Value; + Returned := Unsigned_64'Last; + end Failure_Policy; + ---------------------------------------------------------------------------- + procedure Do_Exit (Proc : PID; Code : Unsigned_8) is + begin + -- Switch to the kernel page table to make us immune to having it swept + -- from under out feet by process cleanup. + if not Arch.MMU.Make_Active (Arch.MMU.Kernel_Table) then + Lib.Messages.Put_Line ("Could not switch table on thread exit"); + end if; + + -- Remove all state but the return value and keep the zombie around + -- until we are waited. + Userland.Process.Flush_Threads (Proc); + Userland.Process.Flush_Files (Proc); + Userland.Process.Remove_Thread (Proc, Arch.Local.Get_Current_Thread); + Userland.Process.Issue_Exit (Proc, Code); + Scheduler.Bail; + end Do_Exit; + + procedure Do_Exit (Proc : PID; Sig : Signal) is + begin + -- Switch to the kernel page table to make us immune to having it swept + -- from under out feet by process cleanup. + if not Arch.MMU.Make_Active (Arch.MMU.Kernel_Table) then + Lib.Messages.Put_Line ("Could not switch table on thread exit"); + end if; + + -- Remove all state but the return value and keep the zombie around + -- until we are waited. + Userland.Process.Flush_Threads (Proc); + Userland.Process.Flush_Files (Proc); + Userland.Process.Remove_Thread (Proc, Arch.Local.Get_Current_Thread); + Userland.Process.Issue_Exit (Proc, Sig); + Scheduler.Bail; + end Do_Exit; + + procedure Pre_Syscall_Hook (State : Arch.Context.GP_Context) is + Thread : constant TID := Arch.Local.Get_Current_Thread; + begin + Scheduler.Signal_Kernel_Entry (Thread); + Common_Syscall_Hook (Thread, State); + end Pre_Syscall_Hook; + + procedure Post_Syscall_Hook (State : Arch.Context.GP_Context) is + Thread : constant TID := Arch.Local.Get_Current_Thread; + begin + Common_Syscall_Hook (Thread, State); + Scheduler.Signal_Kernel_Exit (Thread); + end Post_Syscall_Hook; + ---------------------------------------------------------------------------- + procedure Do_Remote_Exit (Proc : PID; Code : Unsigned_8) is + begin + Userland.Process.Flush_Threads (Proc); + Userland.Process.Flush_Files (Proc); + Userland.Process.Issue_Exit (Proc, Code); + end Do_Remote_Exit; + + procedure Common_Syscall_Hook + (Thread : TID; + State : Arch.Context.GP_Context) + is + type Trace_Info is record + Thread : Unsigned_16; + State : Arch.Context.GP_Context; + end record with Pack; + + Proc : constant PID := Arch.Local.Get_Current_Process; + File : File_Description_Acc; + Success : IPC.FIFO.Pipe_Status; + Raised_Signal : Userland.Process.Signal; + Signal_Addr : System.Address; + No_Signal : Boolean; + Ignore_Signal : Boolean; + Ret_Count : Natural; + Tracer_FD : Natural; + Is_Traced : Boolean; + TInfo : Trace_Info; + TInfo_Data : Devices.Operation_Data (1 .. TInfo'Size / 8) + with Import, Address => TInfo'Address; + begin + -- Solve signals first. + loop + Userland.Process.Get_Raised_Signal_Actions + (Proc => Proc, + Sig => Raised_Signal, + Addr => Signal_Addr, + No_Sig => No_Signal, + Ignore => Ignore_Signal); + exit when No_Signal; + + if Signal_Addr = System.Null_Address and not Ignore_Signal then + Do_Exit (Proc, Raised_Signal); + end if; + end loop; + + -- Take care of syscall tracing. + Userland.Process.Get_Traced_Info (Proc, Is_Traced, Tracer_FD); + if Is_Traced then + File := Get_File (Proc, Unsigned_64 (Tracer_FD)); + if File /= null and then File.Description = Description_Writer_FIFO + then + while not Is_Empty (File.Inner_Writer_FIFO) loop + Scheduler.Yield_If_Able; + end loop; + TInfo := (Unsigned_16 (Convert (Thread)), State); + Write (File.Inner_Writer_FIFO, TInfo_Data, Ret_Count, Success); + end if; + end if; + end Common_Syscall_Hook; + + procedure Translate_Status + (Status : VFS.FS_Status; + Success_Return : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + begin + case Status is + when VFS.FS_Success => + Errno := Error_No_Error; + Returned := Success_Return; + return; + when VFS.FS_Is_Directory => Errno := Error_Is_Directory; + when VFS.FS_Invalid_Value => Errno := Error_Invalid_Value; + when VFS.FS_Not_Supported => Errno := Error_Not_Implemented; + when VFS.FS_RO_Failure => Errno := Error_Read_Only_FS; + when VFS.FS_IO_Failure => Errno := Error_IO; + when VFS.FS_Not_Allowed => Errno := Error_Bad_Permissions; + when VFS.FS_Loop => Errno := Error_File_Loop; + end case; + Returned := Unsigned_64'Last; + end Translate_Status; + + procedure Translate_Status + (Status : IPC.Socket.Socket_Status; + Success_Return : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + begin + case Status is + when Plain_Success => + Errno := Error_No_Error; + Returned := Success_Return; + return; + when Is_Bad_Type => Errno := Error_Invalid_Value; + when Would_Block => Errno := Error_Would_Block; + end case; + Returned := Unsigned_64'Last; + end Translate_Status; + + procedure Translate_Status + (Status : IPC.FIFO.Pipe_Status; + Success_Return : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + begin + case Status is + when Pipe_Success => + Errno := Error_No_Error; + Returned := Success_Return; + return; + when Broken_Failure => Errno := Error_Invalid_Value; + when Would_Block_Failure => Errno := Error_Would_Block; + end case; + Returned := Unsigned_64'Last; + end Translate_Status; + + procedure Translate_Status + (Status : IPC.PTY.Status; + Success_Return : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value) + is + begin + case Status is + when IPC.PTY.PTY_Success => + Errno := Error_No_Error; + Returned := Success_Return; + when IPC.PTY.PTY_Would_Block => + Errno := Error_Would_Block; + Returned := Unsigned_64'Last; + end case; + end Translate_Status; + + procedure Exec_Into_Process + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Argv_Addr : Unsigned_64; + Argv_Len : Unsigned_64; + Envp_Addr : Unsigned_64; + Envp_Len : Unsigned_64; + Proc : PID; + Success : out Boolean; + Errno : out Errno_Value) + is + procedure Free is new Ada.Unchecked_Deallocation (String, String_Acc); + type Arg_Arr is array (Natural range <>) of Unsigned_64; + + Map : Page_Table_Acc := Get_Common_Map (Proc); + Path_IAddr : constant Integer_Address := Integer_Address (Path_Addr); + Path_SAddr : constant System.Address := To_Address (Path_IAddr); + Path : String (1 .. Natural (Path_Len)) + with Import, Address => Path_SAddr; + Path_FS : FS_Handle; + Path_Ino : File_Inode_Number; + Rela_FS : FS_Handle; + Rela_Ino : File_Inode_Number; + Success2 : FS_Status; + Succ : Boolean; + File_Perms : MAC.Permissions; + User : Unsigned_32; + Argv_IAddr : constant Integer_Address := Integer_Address (Argv_Addr); + Argv_SAddr : constant System.Address := To_Address (Argv_IAddr); + Envp_IAddr : constant Integer_Address := Integer_Address (Envp_Addr); + Envp_SAddr : constant System.Address := To_Address (Envp_IAddr); + begin + if not Check_Userland_Access (Map, Path_IAddr, Path_Len) or + not Check_Userland_Access (Map, Argv_IAddr, Argv_Len) or + not Check_Userland_Access (Map, Envp_IAddr, Envp_Len) + then + Errno := Error_Would_Fault; + Success := False; + return; + elsif not Get_Capabilities (Proc).Can_Spawn_Others then + Errno := Error_Bad_Access; + Execute_MAC_Failure ("spawn", Proc); + Success := False; + return; + end if; + + Userland.Process.Get_Effective_UID (Proc, User); + Userland.Process.Get_CWD (Proc, Rela_FS, Rela_Ino); + + Open + (Key => Rela_FS, + Relative => Rela_Ino, + Path => Path, + Final_Key => Path_FS, + Ino => Path_Ino, + Success => Success2, + User => User, + Want_Read => True, + Want_Write => False); + if Success2 /= VFS.FS_Success then + Errno := Error_No_Entity; + Success := False; + return; + end if; + + File_Perms := Check_Permissions (Proc, Path_FS, Path_Ino); + if not File_Perms.Can_Execute then + VFS.Close (Path_FS, Path_Ino); + Errno := Error_Bad_Access; + Execute_MAC_Failure ("exec", Proc); + Success := False; + return; + end if; + + declare + Argv : Arg_Arr (1 .. Natural (Argv_Len)) + with Import, Address => Argv_SAddr; + Envp : Arg_Arr (1 .. Natural (Envp_Len)) + with Import, Address => Envp_SAddr; + Args : Userland.Argument_Arr (1 .. Argv'Length); + Env : Userland.Environment_Arr (1 .. Envp'Length); + begin + for I in Argv'Range loop + Args (I) := To_String (To_Address (Integer_Address (Argv (I)))); + end loop; + for I in Envp'Range loop + Env (I) := To_String (To_Address (Integer_Address (Envp (I)))); + end loop; + + -- Create a new map for the process and reroll ASLR. + Userland.Process.Flush_Exec_Files (Proc); + Userland.Process.Reassign_Process_Addresses (Proc); + Map := Arch.MMU.Fork_Table (Arch.MMU.Kernel_Table); + Set_Common_Map (Proc, Map); + Set_Identifier (Proc, Args (1).all); + + -- Start the actual program. + Succ := Userland.Loader.Start_Program + (Exec_Path => Path, + FS => Path_FS, + Ino => Path_Ino, + Arguments => Args, + Environment => Env, + Proc => Proc); + + for Arg of Args loop + Free (Arg); + end loop; + for En of Env loop + Free (En); + end loop; + + if Succ then + Errno := Error_No_Error; + Success := True; + return; + else + Errno := Error_Bad_Access; + Success := False; + return; + end if; + end; + end Exec_Into_Process; + + function To_String (Addr : System.Address) return String_Acc is + Arg_Length : constant Natural := Lib.C_String_Length (Addr); + Arg_String : String (1 .. Arg_Length) with Import, Address => Addr; + begin + return new String'(Arg_String); + end To_String; + + function Get_Mmap_Prot (P : Unsigned_64) return Arch.MMU.Page_Permissions is + begin + if P = PROT_NONE then + return (Is_User_Accesible => True, others => False); + else + return + (Is_User_Accesible => True, + Can_Read => (P and PROT_READ) /= 0, + Can_Write => (P and PROT_WRITE) /= 0, + Can_Execute => (P and PROT_EXEC) /= 0, + Is_Global => False); + end if; + end Get_Mmap_Prot; + + procedure Execute_MAC_Failure (Name : String; Curr_Proc : PID) is + Curr_PID : constant Unsigned_32 := Unsigned_32 (Convert (Curr_Proc)); + PID_Buffer : Lib.Messages.Translated_String; + PID_Len : Natural; + begin + Lib.Messages.Image (Curr_PID, PID_Buffer, PID_Len); + case Get_Enforcement (Curr_Proc) is + when MAC.Deny => + null; + when MAC.Deny_And_Scream => + Lib.Messages.Put_Line (PID_Buffer & " MAC failure " & Name); + when MAC.Kill => + Lib.Messages.Put_Line (PID_Buffer & " MAC killing " & Name); + Do_Exit (Curr_Proc, 42); + end case; + end Execute_MAC_Failure; + + procedure PTY_IOCTL + (P : IPC.PTY.Inner_Acc; + Is_Primary : Boolean; + Request : Unsigned_64; + Argument : System.Address; + Success : out Boolean) + is + use TermIOs; + + Result_Info : TermIOs.Main_Data with Import, Address => Argument; + Result_Size : TermIOs.Win_Size with Import, Address => Argument; + Action : Integer with Import, Address => Argument; + Do_R, Do_T : Boolean; + begin + Success := True; + case Request is + when TCGETS => + IPC.PTY.Get_TermIOs (P, Result_Info); + when TCSETS | TCSETSW | TCSETSF => + IPC.PTY.Set_TermIOs (P, Result_Info); + when TIOCGWINSZ => + IPC.PTY.Get_WinSize (P, Result_Size); + when TIOCSWINSZ => + IPC.PTY.Set_WinSize (P, Result_Size); + when TCFLSH => + case Action is + when TCIFLUSH | TCOFLUSH | TCIOFLUSH => + Do_R := Action = TCIFLUSH or Action = TCIOFLUSH; + Do_T := Action = TCOFLUSH or Action = TCIOFLUSH; + if Is_Primary then + IPC.PTY.Flush_Primary (P, Do_R, Do_T); + else + IPC.PTY.Flush_Secondary (P, Do_R, Do_T); + end if; + when others => + Success := False; + end case; + when TCXONC => + case Action is + when TCOOFF | TCIOFF => + Do_R := Action = TCOOFF; + Do_T := Action = TCIOFF; + if Is_Primary then + IPC.PTY.Stop_Primary (P, Do_R, Do_T); + else + IPC.PTY.Stop_Secondary (P, Do_R, Do_T); + end if; + when TCOON | TCION => + Do_R := Action = TCOON; + Do_T := Action = TCION; + if Is_Primary then + IPC.PTY.Start_Primary (P, Do_R, Do_T); + else + IPC.PTY.Start_Secondary (P, Do_R, Do_T); + end if; + when others => + Success := False; + end case; + when others => + Success := False; + end case; + end PTY_IOCTL; + + procedure Set_MAC_Capabilities (Proc : PID; Bits : Unsigned_64) is + Caps : constant MAC.Capabilities := Get_Capabilities (Proc); + begin + Set_Capabilities + (Proc, + (Caps.Can_Change_Scheduling and ((Bits and MAC_CAP_SCHED) /= 0), + Caps.Can_Spawn_Others and ((Bits and MAC_CAP_SPAWN) /= 0), + Caps.Can_Access_Entropy and ((Bits and MAC_CAP_ENTROPY) /= 0), + Caps.Can_Modify_Memory and ((Bits and MAC_CAP_SYS_MEM) /= 0), + Caps.Can_Use_Networking and ((Bits and MAC_CAP_USE_NET) /= 0), + Caps.Can_Manage_Networking and ((Bits and MAC_CAP_SYS_NET) /= 0), + Caps.Can_Manage_Mounts and ((Bits and MAC_CAP_SYS_MNT) /= 0), + Caps.Can_Manage_Power and ((Bits and MAC_CAP_SYS_PWR) /= 0), + Caps.Can_Trace_Children and ((Bits and MAC_CAP_PTRACE) /= 0), + Caps.Can_Change_UIDs and ((Bits and MAC_CAP_SETUID) /= 0), + Caps.Can_Manage_MAC and ((Bits and MAC_CAP_SYS_MAC) /= 0), + Caps.Can_Use_Clocks and ((Bits and MAC_CAP_CLOCK) /= 0), + Caps.Can_Signal_All and ((Bits and MAC_CAP_SIGNALALL) /= 0), + Caps.Can_Change_GIDs and ((Bits and MAC_CAP_SETGID) /= 0), + Caps.Can_Bypass_IPC_Checks and ((Bits and MAC_CAP_IPC) /= 0))); + end Set_MAC_Capabilities; + + procedure MAC_Syscall_To_Kernel + (Val : Unsigned_64; + Success : out Boolean; + Limit : out MAC.Limit_Type) + is + begin + case Val is + when RLIMIT_CORE => Limit := MAC.Core_Size_Limit; + when RLIMIT_CPU => Limit := MAC.CPU_Time_Limit; + when RLIMIT_FSIZE => Limit := MAC.File_Size_Limit; + when RLIMIT_NOFILE => Limit := MAC.Opened_File_Limit; + when RLIMIT_STACK => Limit := MAC.Stack_Size_Limit; + when RLIMIT_AS => Limit := MAC.Memory_Size_Limit; + when others => Limit := MAC.Opened_File_Limit; Success := False; + end case; + Success := True; + end MAC_Syscall_To_Kernel; + + procedure Check_Add_File + (Process : PID; + File : File_Description_Acc; + Success : out Boolean; + FD : out Natural; + Start : Natural := 0) + is + begin + if Unsigned_64 (Get_File_Count (Process)) < + Unsigned_64 (Get_Limit (Process, MAC.Opened_File_Limit)) + then + Add_File (Process, File, FD, Success, Start); + else + FD := 0; + Success := False; + end if; + end Check_Add_File; + + function Check_Userland_Access + (Map : Arch.MMU.Page_Table_Acc; + Addr : Memory.Virtual_Address; + Byte_Count : Unsigned_64) return Boolean + is + package Al is new Lib.Alignment (Unsigned_64); + Length : Unsigned_64; + Result : System.Address; + Is_Mapped, Is_Readable, Is_Writeable, Is_Executable : Boolean; + Is_User_Accessible : Boolean; + begin + Length := Al.Align_Up (Byte_Count + 1, Arch.MMU.Page_Size); + Arch.MMU.Translate_Address + (Map => Map, + Virtual => To_Address (Addr), + Length => Storage_Count (Length), + Physical => Result, + Is_Mapped => Is_Mapped, + Is_User_Accessible => Is_User_Accessible, + Is_Readable => Is_Readable, + Is_Writeable => Is_Writeable, + Is_Executable => Is_Executable); + return Is_User_Accessible; + end Check_Userland_Access; + + function Check_Userland_Mappability + (Map : Arch.MMU.Page_Table_Acc; + Addr : Memory.Virtual_Address; + Byte_Count : Unsigned_64) return Boolean + is + Result : System.Address; + Is_Mapped, Is_Readable, Is_Writeable, Is_Executable : Boolean; + Is_User_Accessible : Boolean; + begin + if Addr + Virtual_Address (Byte_Count) > Memory_Offset then + return False; + end if; + + Arch.MMU.Translate_Address + (Map => Map, + Virtual => To_Address (Addr), + Length => Storage_Count (Byte_Count), + Physical => Result, + Is_Mapped => Is_Mapped, + Is_User_Accessible => Is_User_Accessible, + Is_Readable => Is_Readable, + Is_Writeable => Is_Writeable, + Is_Executable => Is_Executable); + return not Is_Mapped; + end Check_Userland_Mappability; + + procedure Resolve_AT_Directive + (Proc : PID; + Dir_FD : Unsigned_64; + FS : out VFS.FS_Handle; + Ino : out VFS.File_Inode_Number) + is + Descr : File_Description_Acc; + begin + if Dir_FD = AT_FDCWD then + Process.Get_CWD (Proc, FS, Ino); + else + Descr := Get_File (Proc, Dir_FD); + if Descr = null or else Descr.Description /= Description_Inode then + FS := VFS.Error_Handle; + Ino := 0; + else + FS := Descr.Inner_Ino_FS; + Ino := Descr.Inner_Ino; + end if; + end if; + end Resolve_AT_Directive; + + procedure Translate_Signal + (Val : Unsigned_64; + Sig : out Signal; + Success : out Boolean) + is + begin + Success := + Val >= Process.Signal'Enum_Rep (Process.Signal'First) and + Val <= Process.Signal'Enum_Rep (Process.Signal'Last); + if Success then + Sig := Process.Signal'Enum_Val (Val); + else + Sig := Process.Signal_Kill; + end if; + end Translate_Signal; +end Userland.Syscall; diff --git a/source/userland/userland-syscall.ads b/source/userland/userland-syscall.ads new file mode 100644 index 0000000..b940b0f --- /dev/null +++ b/source/userland/userland-syscall.ads @@ -0,0 +1,1356 @@ +-- userland-syscall.ads: Syscall implementation. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with System.Storage_Elements; use System.Storage_Elements; +with Arch.Context; +with Arch.MMU; +with IPC.PTY; +with System; +with Scheduler; use Scheduler; +with Userland.MAC; +with Memory; +with Networking; +with Userland.Process; use Userland.Process; +with VFS; use VFS; +with IPC.Socket; use IPC.Socket; +with IPC.FIFO; use IPC.FIFO; +use IPC.PTY; + +package Userland.Syscall is + -- Error conditions for syscalls. + -- The representation values are arbitrary. + type Errno_Value is + (Error_No_Error, -- No error + Error_Not_Big_Enough, -- ERANGE + Error_Bad_Access, -- EACCES + Error_Would_Block, -- EAGAIN + Error_Busy, -- EBUSY + Error_Child, -- ECHILD + Error_Would_Fault, -- EFAULT + Error_File_Too_Big, -- EFBIG + Error_Invalid_ID, -- EIDRM + Error_Invalid_Value, -- EINVAL + Error_IO, -- EIO + Error_Is_Directory, -- EISDIR + Error_File_Loop, -- ELOOP + Error_Too_Many_Files, -- EMFILE + Error_String_Too_Long, -- ENAMETOOLONG + Error_No_Entity, -- ENOENT + Error_No_Memory, -- ENOMEM + Error_Not_Implemented, -- ENOSYS + Error_Not_Connected, -- ENOTCONN + Error_Not_A_TTY, -- ENOTTY + Error_Not_Supported, -- ENOTSUPP + Error_Bad_Permissions, -- EPERM + Error_Read_Only_FS, -- EROFS + Error_Invalid_Seek, -- ESPIPE + Error_Bad_Search, -- ESRCH + Error_Bad_File); -- EBADFD + for Errno_Value use + (Error_No_Error => 0, + Error_Not_Big_Enough => 3, + Error_Bad_Access => 1002, + Error_Would_Block => 1006, + Error_Busy => 1010, + Error_Child => 1012, + Error_Would_Fault => 1020, + Error_File_Too_Big => 1021, + Error_Invalid_ID => 1023, + Error_Invalid_Value => 1026, + Error_IO => 1027, + Error_Is_Directory => 1029, + Error_File_Loop => 1030, + Error_Too_Many_Files => 1031, + Error_String_Too_Long => 1036, + Error_No_Entity => 1043, + Error_No_Memory => 1047, + Error_Not_Implemented => 1051, + Error_Not_Connected => 1052, + Error_Not_A_TTY => 1058, + Error_Not_Supported => 1060, + Error_Bad_Permissions => 1063, + Error_Read_Only_FS => 1068, + Error_Invalid_Seek => 1069, + Error_Bad_Search => 1070, + Error_Bad_File => 1081); + + -- AT_ directives for path-relative syscalls and common flags. + AT_FDCWD : constant := Natural'Last; + AT_EMPTY_PATH : constant := 2#01#; + AT_SYMLINK_NOFOLLOW : constant := 2#10#; + AT_EACCESS : constant := 512; + + -- Exit the callee thread, flushing open files. + procedure Sys_Exit + (Code : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Set arch-specific thread state. + procedure Arch_PRCtl + (Code : Unsigned_64; + Argument : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Open a file. + O_RDONLY : constant := 2#000001#; + O_WRONLY : constant := 2#000010#; + O_APPEND : constant := 2#000100#; + O_CLOEXEC : constant := 2#001000#; + O_NOFOLLOW : constant := 2#010000#; + O_NONBLOCK : constant := 2#100000#; + procedure Open + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Close a file. + procedure Close + (File_D : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Read from a file. + procedure Read + (File_D : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Write to a file. + procedure Write + (File_D : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Operate with the file offset. + SEEK_SET : constant := 1; + SEEK_CURRENT : constant := 2; + SEEK_END : constant := 4; + procedure Seek + (File_D : Unsigned_64; + Offset : Unsigned_64; + Whence : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Mmap, the one and only. + PROT_NONE : constant := 2#000#; + PROT_READ : constant := 2#001#; + PROT_WRITE : constant := 2#010#; + PROT_EXEC : constant := 2#100#; + MAP_PRIVATE : constant := 2#00001#; + MAP_SHARED : constant := 2#00010#; + MAP_FIXED : constant := 2#00100#; + MAP_ANON : constant := 2#01000#; + MAP_NORESERVE : constant := 2#10000#; + procedure Mmap + (Hint : Unsigned_64; + Length : Unsigned_64; + Protection : Unsigned_64; + Flags : Unsigned_64; + File_D : Unsigned_64; + Offset : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Mmap^-1 + procedure Munmap + (Address : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get the callee PID. + procedure Get_PID (Returned : out Unsigned_64; Errno : out Errno_Value); + + -- Get the PID of the parent of the callee. + procedure Get_PPID (Returned : out Unsigned_64; Errno : out Errno_Value); + + -- Execute. + procedure Exec + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Argv_Addr : Unsigned_64; + Argv_Len : Unsigned_64; + Envp_Addr : Unsigned_64; + Envp_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Create processes and threads with different flavours. + CLONE_PARENT : constant := 2#01#; + CLONE_THREAD : constant := 2#10#; + procedure Clone + (Callback : Unsigned_64; + Call_Arg : Unsigned_64; + Stack : Unsigned_64; + Flags : Unsigned_64; + TLS_Addr : Unsigned_64; + Cluster : Unsigned_64; + GP_State : Arch.Context.GP_Context; + FP_State : Arch.Context.FP_Context; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Wait. + WNOHANG : constant := 2#0000000010#; + WIFEXITED : constant := 2#1000000000#; + WIFSIGNALED : constant := 16#400#; + procedure Wait + (Waited_PID : Unsigned_64; + Exit_Addr : Unsigned_64; + Options : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Create a socket. + AF_INET : constant := 1; + AF_INET6 : constant := 2; + AF_UNIX : constant := 3; + SOCK_DGRAM : constant := 2#000000000000000001#; + SOCK_RAW : constant := 2#000000000000000010#; + SOCK_STREAM : constant := 2#000000000000000100#; + SOCK_SEQPACKET : constant := 2#000000000000001000#; + SOCK_NONBLOCK : constant := 2#001000000000000000#; + SOCK_CLOEXEC : constant := 2#010000000000000000#; + SOCK_CLOFORK : constant := 2#100000000000000000#; + procedure Socket + (Domain : Unsigned_64; + DataType : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Set hostname. + procedure Set_Hostname + (Address : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Stat. + type Time_Spec is record + Seconds : Unsigned_64; + Nanoseconds : Unsigned_64; + end record with Pack, Size => 128; + Stat_IFIFO : constant := 16#1000#; + Stat_IFCHR : constant := 16#2000#; + Stat_IFDIR : constant := 16#4000#; + Stat_IFBLK : constant := 16#6000#; + Stat_IFREG : constant := 16#8000#; + Stat_IFLNK : constant := 16#A000#; + Stat_ISOCK : constant := 16#C000#; + type Stat is record + Device_Number : Unsigned_64; + Inode_Number : Unsigned_64; + Mode : Unsigned_32; + Number_Links : Unsigned_32; + UID : Unsigned_32; + GID : Unsigned_32; + Inner_Device : Unsigned_64; + File_Size : Unsigned_64; + Access_Time : Time_Spec; + Modify_Time : Time_Spec; + Create_Time : Time_Spec; + Block_Size : Unsigned_64; + Block_Count : Unsigned_64; + end record; + for Stat use record + Device_Number at 0 range 0 .. 63; + Inode_Number at 0 range 64 .. 127; + Mode at 0 range 128 .. 159; + Number_Links at 0 range 160 .. 191; + UID at 0 range 192 .. 223; + GID at 0 range 224 .. 255; + Inner_Device at 0 range 256 .. 319; + File_Size at 0 range 320 .. 383; + Access_Time at 0 range 384 .. 511; + Modify_Time at 0 range 512 .. 639; + Create_Time at 0 range 640 .. 767; + Block_Size at 0 range 768 .. 831; + Block_Count at 0 range 832 .. 895; + end record; + for Stat'Size use 896; + procedure FStat + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Stat_Addr : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Set current working directory. + procedure Chdir + (FD : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- IO control. + procedure IOCTL + (FD : Unsigned_64; + Request : Unsigned_64; + Argument : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Yield. + procedure Sched_Yield (Returned : out Unsigned_64; Errno : out Errno_Value); + + -- Delete a thread cluster. + procedure Delete_Thread_Cluster + (Cluster : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Create a pair of pipes. + procedure Pipe + (Result_Addr : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get the current UID. + procedure Get_UID (Returned : out Unsigned_64; Errno : out Errno_Value); + + -- Rename files. + RENAME_NOREPLACE : constant := 2#1#; + procedure Rename + (Source_FD : Unsigned_64; + Source_Addr : Unsigned_64; + Source_Len : Unsigned_64; + Target_FD : Unsigned_64; + Target_Addr : Unsigned_64; + Target_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Fetch some system information. + SC_PAGESIZE : constant := 1; + SC_OPEN_MAX : constant := 2; + SC_HOST_NAME_MAX : constant := 3; + SC_AVPHYS_PAGES : constant := 4; + SC_PHYS_PAGES : constant := 5; + SC_NPROCESSORS_ONLN : constant := 6; + SC_TOTAL_PAGES : constant := 7; + SC_LIST_PROCS : constant := 8; + SC_LIST_MOUNTS : constant := 9; + SC_UNAME : constant := 10; + SC_CHILD_MAX : constant := 11; + SC_LIST_THREADS : constant := 12; + SC_LIST_CLUSTERS : constant := 13; + SC_LIST_NETINTER : constant := 14; + SC_DUMPLOGS : constant := 15; + SC_NGROUPS_MAX : constant := 16; + SC_SYMLOOP_MAX : constant := 17; + SC_LIST_FILELOCKS : constant := 18; + SC_LOADAVG : constant := 19; + SC_MEMINFO : constant := 20; + SC_FAILURE_POLICIES : constant := 21; + + PROC_IS_TRACED : constant := 2#01#; + PROC_EXITED : constant := 2#10#; + type Proc_Info is record + Identifier : String (1 .. 20); + Id_Len : Unsigned_16; + Parent_PID : Unsigned_16; + Process_PID : Unsigned_16; + UID : Unsigned_32; + Flags : Unsigned_32; + end record with Pack; + type Proc_Info_Arr is array (Natural range <>) of Proc_Info; + + type Mount_Info is record + FS_Type : Unsigned_32; + Flags : Unsigned_32; + Source : String (1 .. 20); + Source_Len : Unsigned_32; + Location : String (1 .. 20); + Location_Len : Unsigned_32; + Block_Size : Unsigned_64; + Fragment_Size : Unsigned_64; + Size_In_Frags : Unsigned_64; + Free_Blocks : Unsigned_64; + Free_BlocksU : Unsigned_64; + Inode_Count : Unsigned_64; + Free_Inodes : Unsigned_64; + Free_InodesU : Unsigned_64; + Max_File_Name : Unsigned_64; + end record; + type Mount_Info_Arr is array (Natural range <>) of Mount_Info; + + type UTS_Name is record + System_Name : String (1 .. 65); + Node_Name : String (1 .. 65); + Release : String (1 .. 65); + Version : String (1 .. 65); + Machine : String (1 .. 65); + end record; + + type Thread_Info is record + Thread_Id : Unsigned_16; + Niceness : Unsigned_16; + Cluster_Id : Unsigned_16; + Process_PID : Unsigned_16; + end record with Pack; + type Thread_Info_Arr is array (Natural range <>) of Thread_Info; + + type Cluster_Info is record + Cluster_Id : Unsigned_16; + Cluster_Fl : Unsigned_16; + Cluster_Q : Unsigned_16; + end record with Pack; + type Cluster_Info_Arr is array (Natural range <>) of Cluster_Info; + + NETINTR_BLOCKED : constant := 1; + + type Interface_Info is record + Name : String (1 .. 65); + Flags : Unsigned_64; + MAC : Networking.MAC_Address; + IPv4 : Networking.IPv4_Address; + IPv4_Subnet : Networking.IPv4_Address; + IPv6 : Networking.IPv6_Address; + IPv6_Subnet : Networking.IPv6_Address; + end record with Pack; + type Interface_Arr is array (Natural range <>) of Interface_Info; + + type Flock_Info is record + PID : Unsigned_32; + Mode : Unsigned_32; + Start : Unsigned_64; + Length : Unsigned_64; + FS : Unsigned_64; + Ino : Unsigned_64; + end record; + type Flock_Info_Arr is array (Natural range <>) of Flock_Info; + + type Load_Arr is array (1 .. 3) of Unsigned_32; + + type Mem_Info is record + Phys_Total : Unsigned_64; + Phys_Available : Unsigned_64; + Phys_Free : Unsigned_64; + Shared_Usage : Unsigned_64; + Kernel_Usage : Unsigned_64; + Table_Usage : Unsigned_64; + Poison_Usage : Unsigned_64; + end record; + + procedure Sysconf + (Request : Unsigned_64; + Addr : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Spawn a process just like clone+exec would. + procedure Spawn + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Argv_Addr : Unsigned_64; + Argv_Len : Unsigned_64; + Envp_Addr : Unsigned_64; + Envp_Len : Unsigned_64; + Caps_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get the current thread id. + procedure Get_TID (Returned : out Unsigned_64; Errno : out Errno_Value); + + -- Manage an existing thread cluster or create a new one. + SCHED_RR : constant := 2#001#; + SCHED_COOP : constant := 2#010#; + SCHED_INTR : constant := 2#100#; + procedure Manage_Thread_Cluster + (Cluster : Unsigned_64; + Flags : Unsigned_64; + Quantum : Unsigned_64; + Percentage : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Multiplexed operation for files. + F_DUPFD : constant := 1; + F_DUPFD_CLOEXEC : constant := 2; + F_GETFD : constant := 3; + F_SETFD : constant := 4; + F_GETFL : constant := 5; + F_SETFL : constant := 6; + F_GETPIPE_SZ : constant := 7; + F_SETPIPE_SZ : constant := 8; + F_GETLK : constant := 9; + F_SETLK : constant := 10; + F_SETLKW : constant := 11; + + FD_CLOEXEC : constant := 2#01#; + FD_CLOFORK : constant := 2#10#; + + F_RDLCK : constant := 1; + F_UNLCK : constant := 2; + F_WRLCK : constant := 3; + + type Flock_Data is record + Lock_Type : Unsigned_16; + Whence : Unsigned_16; + Start : Unsigned_64; + Length : Unsigned_64; + PID : Unsigned_32; + end record; + + procedure Fcntl + (FD : Unsigned_64; + Command : Unsigned_64; + Argument : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Exit the callee thread. + procedure Exit_Thread (Returned : out Unsigned_64; Errno : out Errno_Value); + + -- Bypassing /dev/(u)random for getting random data. + procedure Get_Random + (Address : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Change protection from memory regions. + procedure MProtect + (Address : Unsigned_64; + Length : Unsigned_64; + Protection : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Set MAC capabilities of the caller process. + MAC_CAP_SCHED : constant := 2#000000000000001#; + MAC_CAP_SPAWN : constant := 2#000000000000010#; + MAC_CAP_ENTROPY : constant := 2#000000000000100#; + MAC_CAP_SYS_MEM : constant := 2#000000000001000#; + MAC_CAP_USE_NET : constant := 2#000000000010000#; + MAC_CAP_SYS_NET : constant := 2#000000000100000#; + MAC_CAP_SYS_MNT : constant := 2#000000001000000#; + MAC_CAP_SYS_PWR : constant := 2#000000010000000#; + MAC_CAP_PTRACE : constant := 2#000000100000000#; + MAC_CAP_SETUID : constant := 2#000001000000000#; + MAC_CAP_SYS_MAC : constant := 2#000010000000000#; + MAC_CAP_CLOCK : constant := 2#000100000000000#; + MAC_CAP_SIGNALALL : constant := 2#001000000000000#; + MAC_CAP_SETGID : constant := 2#010000000000000#; + MAC_CAP_IPC : constant := 2#100000000000000#; + procedure Set_MAC_Capabilities + (Bits : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get the MAC capabilities of the caller process. + procedure Get_MAC_Capabilities + (Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Add a file to MAC. + MAC_PERM_CONTENTS : constant := 2#000001#; + MAC_PERM_READ : constant := 2#000010#; + MAC_PERM_WRITE : constant := 2#000100#; + MAC_PERM_EXEC : constant := 2#001000#; + MAC_PERM_APPEND : constant := 2#010000#; + MAC_PERM_FLOCK : constant := 2#100000#; + procedure Add_MAC_Permissions + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Set the enforcement policy of the MAC. + MAC_DENY : constant := 2#001#; + MAC_DENY_AND_SCREAM : constant := 2#010#; + MAC_KILL : constant := 2#100#; + procedure Set_MAC_Enforcement + (Action : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Mount a filesystem. + MNT_EXT : constant := 1; + MNT_FAT : constant := 2; + MNT_DEV : constant := 3; + MS_RDONLY : constant := 2#001#; + MS_REMOUNT : constant := 2#010#; + MS_RELATIME : constant := 2#100#; + procedure Mount + (Source_Addr : Unsigned_64; + Source_Len : Unsigned_64; + Target_Addr : Unsigned_64; + Target_Len : Unsigned_64; + FSType : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Unmount a filesystem. + MNT_FORCE : constant := 1; + procedure Umount + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Read the contents of a symlink. + procedure Readlink + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Buffer_Addr : Unsigned_64; + Buffer_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get directory entities. + DT_FIFO : constant := 1; + DT_CHR : constant := 2; + DT_DIR : constant := 4; + DT_BLK : constant := 6; + DT_LNK : constant := 7; + DT_REG : constant := 8; + type Dirent is record + D_Ino : Unsigned_64; + D_Off : Unsigned_64; + D_Reclen : Unsigned_16; + D_Type : Unsigned_8; + D_Name : String (1 .. 61); + end record with Size => 640; + for Dirent use record + D_Ino at 0 range 0 .. 63; + D_Off at 0 range 64 .. 127; + D_Reclen at 0 range 128 .. 143; + D_Type at 0 range 144 .. 151; + D_Name at 0 range 152 .. 639; + end record; + type Dirents is array (Unsigned_64 range <>) of Dirent with Pack; + procedure GetDEnts + (FD : Unsigned_64; + Buffer_Addr : Unsigned_64; + Buffer_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Synchronize devices and kernel caches. + procedure Sync (Returned : out Unsigned_64; Errno : out Errno_Value); + + -- Create a node, be it a file, directory, or others (not links). + procedure MakeNode + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Mode : Unsigned_64; + Dev : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Unlinks a file. + procedure Unlink + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Truncates a file to a new size. + procedure Truncate + (FD : Unsigned_64; + New_Size : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Bind a socket to an address. + type SockAddr_In is record + Sin_Family : Unsigned_32; + Sin_Port : Unsigned_16; + Padding : Unsigned_16; + Sin_Addr : Networking.IPv4_Address; + end record with Pack; + type SockAddr_In6 is record + Sin6_Family : Unsigned_32; + Sin6_Port : Unsigned_16; + Padding : Unsigned_16; + Sin6_FlowInfo : Unsigned_32; + Sin6_Addr : Networking.IPv6_Address; + Sin6_Scope_ID : Unsigned_32; + end record with Pack; + type SockAddr_UNIX is record + Sun_Family : Unsigned_32; + Length : Unsigned_32; + Path : System.Address; + end record with Pack; + procedure Bind + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Create a symbolic link. + procedure Symlink + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Target_Addr : Unsigned_64; + Target_Len : Unsigned_64; + Mode : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Connect a socket to an address. + procedure Connect + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Create a pair of ptys. + procedure Open_PTY + (Result_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Synchronize the data of a file, instead of system-wide. + procedure FSync + (FD : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Make a hard link. + procedure Link + (Source_Dir : Unsigned_64; + Source_Addr : Unsigned_64; + Source_Len : Unsigned_64; + Desto_Dir : Unsigned_64; + Desto_Addr : Unsigned_64; + Desto_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Trace process, with several debug utilities. + PTRACE_SYSCALL_PIPE : constant := 1; + procedure PTrace + (Request : Unsigned_64; + Traced_PID : Unsigned_64; + Traced_Addr : Unsigned_64; + Result_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Turn a socket into a passive listener for connections. + procedure Listen + (Sock_FD : Unsigned_64; + Backlog : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Accept a connection. + procedure Sys_Accept + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get a resource limit. + RLIMIT_CORE : constant := 1; + RLIMIT_CPU : constant := 2; + RLIMIT_FSIZE : constant := 4; + RLIMIT_NOFILE : constant := 5; + RLIMIT_STACK : constant := 6; + RLIMIT_AS : constant := 7; + procedure Get_RLimit + (Limit : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Set a resource limit. + procedure Set_RLimit + (Limit : Unsigned_64; + Data : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Check access to files. + F_OK : constant := 2#0001#; + R_OK : constant := 2#0010#; + W_OK : constant := 2#0100#; + X_OK : constant := 2#1000#; + procedure FAccess + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Mode : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Poll on a series of events. + POLLIN : constant := 2#00000001#; + POLLOUT : constant := 2#00000010#; + POLLPRI : constant := 2#00000100#; + POLLHUP : constant := 2#00001000#; + POLLERR : constant := 2#00010000#; + POLLNVAL : constant := 2#01000000#; + type Poll_FD is record + FD : Unsigned_32; + Events : Unsigned_16; + Out_Events : Unsigned_16; + end record with Size => 64; + type Poll_FDs is array (Unsigned_64 range <>) of Poll_FD; + procedure PPoll + (FDs_Addr : Unsigned_64; + FDs_Count : Unsigned_64; + Timeout : Unsigned_64; + Sigmask : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get the current effective UID. + procedure Get_EUID (Returned : out Unsigned_64; Errno : out Errno_Value); + + -- Set the global and effective UIDs. + procedure Set_UIDs + (UID : Unsigned_64; + EUID : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Change the mode of the passed file. + procedure Fchmod + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Mode : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Change the umask of the calling process. + procedure Umask + (Mode : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + RB_HALT : constant := 1; + RB_POWEROFF : constant := 2; + RB_RESTART : constant := 3; + RB_ERROR_RET : constant := 2#1#; + procedure Reboot + (Command : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Change the mode of the passed file. + procedure Fchown + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + User : Unsigned_64; + Group : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Read from the passed offset. + procedure PRead + (File_D : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Offset : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Write from the passed offset. + procedure PWrite + (File_D : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Offset : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Get_Sock_Name + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Get_Peer_Name + (Sock_FD : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + SHUT_RD : constant := 2#01#; + SHUT_RDWR : constant := 2#10#; + SHUT_WR : constant := 2#11#; + procedure Shutdown + (Sock_FD : Unsigned_64; + How : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Fast mutexes (yes, really!). + FUTEX_WAIT : constant := 1; + FUTEX_WAKE : constant := 2; + + type Futex_Item is record + Address : Unsigned_64; + Expected : Unsigned_32; + Flags : Unsigned_32; + end record; + type Futex_Item_Arr is array (Natural range <>) of Futex_Item; + procedure Futex + (Operation : Unsigned_64; + Address : Unsigned_64; + Count : Unsigned_64; + Timeout : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Clock operations. + CLOCK_REALTIME : constant := 0; + CLOCK_MONOTONIC : constant := 1; + CLOCK_GETRES : constant := 0; + CLOCK_GETTIME : constant := 1; + CLOCK_SETTIME : constant := 2; + procedure Clock + (Operation : Unsigned_64; + Clock_ID : Unsigned_64; + Address : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Sleepy sleep. + TIMER_ABSTIME : constant := 1; + procedure Clock_Nanosleep + (Clock_ID : Unsigned_64; + Flags : Unsigned_64; + Request_Addr : Unsigned_64; + Remain_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get usage statistics for the callee process. + type RUsage is record + User_Time : Time_Spec; + System_Time : Time_Spec; + end record; + + RUSAGE_SELF : constant := 1; + RUSAGE_CHILDREN : constant := 2; + procedure Get_RUsage + (Who : Unsigned_64; + Usage_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure RecvFrom + (Sock_FD : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Flags : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure SendTo + (Sock_FD : Unsigned_64; + Buffer : Unsigned_64; + Count : Unsigned_64; + Flags : Unsigned_64; + Addr_Addr : Unsigned_64; + Addr_Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + NETINTER_SET_BLOCK : constant := 1; + NETINTER_SET_STATIC_IP4 : constant := 2; + NETINTER_SET_STATIC_IP6 : constant := 3; + type Addr4_NetInterface is record + IP : Networking.IPv4_Address; + Sub : Networking.IPv4_Address; + end record with Pack; + type Addr6_NetInterface is record + IP : Networking.IPv6_Address; + Sub : Networking.IPv6_Address; + end record with Pack; + procedure Config_NetInterface + (InterDev : Unsigned_64; + Operation : Unsigned_64; + Arg_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure UTimes + (Dir_FD : Unsigned_64; + Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Time_Addr : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Create_TCluster + (Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Switch_TCluster + (Cluster : Unsigned_64; + Thread : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + SIG_BLOCK : constant := 1; + SIG_UNBLOCK : constant := 2; + SIG_SETMASK : constant := 3; + procedure Sigprocmask + (How : Unsigned_64; + Set_Addr : Unsigned_64; + Old_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + SIG_ERR : constant := Integer_Address'Last; + SIG_IGN : constant := Integer_Address'Last - 1; + SIG_DFL : constant := Integer_Address'Last - 2; + type Sigaction_Info is record + Handler : System.Address; -- void handler(int, siginfo_t *, void *); + Mask : Unsigned_64; + Flags : Unsigned_32; + end record; + procedure Sigaction + (Signal : Unsigned_64; + Act_Addr : Unsigned_64; + Old_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Send_Signal + (Target : Unsigned_64; + Signal : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + PRIO_PROCESS : constant := 1; + PRIO_PGRP : constant := 2; + PRIO_USER : constant := 3; + PRIO_THREAD : constant := 4; + procedure Get_Prio + (Which : Unsigned_64; + Who : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Set_Prio + (Which : Unsigned_64; + Who : Unsigned_64; + Nice : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Get_GID (Returned : out Unsigned_64; Errno : out Errno_Value); + + procedure Get_EGID (Returned : out Unsigned_64; Errno : out Errno_Value); + + -- Set the global and effective GIDs. + procedure Set_GIDs + (GID : Unsigned_64; + EGID : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get complementary group list. + procedure Get_Groups + (Count : Unsigned_64; + Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Set complementary group list. + procedure Set_Groups + (Count : Unsigned_64; + Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Get the name of a tty based on file descriptor. + procedure TTY_Name + (FD : Unsigned_64; + Addr : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Advise the future use of a file. + POSIX_FADV_NORMAL : constant := 1; + POSIX_FADV_SEQUENTIAL : constant := 2; + POSIX_FADV_NOREUSE : constant := 3; + POSIX_FADV_DONTNEED : constant := 4; + POSIX_FADV_WILLNEED : constant := 5; + POSIX_FADV_RANDOM : constant := 6; + procedure FAdvise + (FD : Unsigned_64; + Offset : Unsigned_64; + Length : Unsigned_64; + Advice : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + SHM_RDONLY : constant := 8#10000#; + SHM_RND : constant := 8#20000#; + procedure SHMAt + (ID : Unsigned_64; + Addr : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + type IPC_Perms is record + IPC_Perm_Key : Unsigned_32; + UID : Unsigned_32; + GID : Unsigned_32; + CUID : Unsigned_32; + CGID : Unsigned_32; + Mode : Unsigned_32; + IPC_Perm_Seq : Unsigned_32; + end record; + + type SHMID_DS is record + SHM_Perm : IPC_Perms; + SHM_SegSz : Unsigned_64; + SHM_ATime : Unsigned_64; + SHM_DTime : Unsigned_64; + SHM_CTime : Unsigned_64; + SHM_CPID : Unsigned_32; + SHM_LPID : Unsigned_32; + SHM_NAttch : Unsigned_64; + end record; + + IPC_RMID : constant := 0; + IPC_SET : constant := 1; + IPC_STAT : constant := 2; + procedure SHMCtl + (ID : Unsigned_64; + CMD : Unsigned_64; + Buffer : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure SHMDt + (Address : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + IPC_PRIVATE : constant := 0; + IPC_CREAT : constant := 8#1000#; + IPC_EXCL : constant := 8#2000#; + IPC_NOWAIT : constant := 8#4000#; + procedure SHMGet + (Key : Unsigned_64; + Size : Unsigned_64; + Flags : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + SOL_SOCKET : constant := 1; + + SO_ACCEPTCONN : constant := 1; + SO_ERROR : constant := 5; + SO_SNDBUF : constant := 13; + SO_TYPE : constant := 16; + + procedure GetSockOpt + (Sock : Unsigned_64; + Level : Unsigned_64; + Opt : Unsigned_64; + Addr : Unsigned_64; + Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure SetSockOpt + (Sock : Unsigned_64; + Level : Unsigned_64; + Opt : Unsigned_64; + Addr : Unsigned_64; + Len : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Get_Thread_Name + (TID : Unsigned_64; + Addr : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Set_Thread_Name + (TID : Unsigned_64; + Addr : Unsigned_64; + Length : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + MEMORY_FAIL_PANIC : constant := 1; + MEMORY_FAIL_SOFT_KILL : constant := 2; + MEMORY_FAIL_HARD_KILL : constant := 3; + OOM_ALLOW_PROC_KILL : constant := 1; + type Failure_Struct is record + Memory_Failure : Unsigned_64; + OOM_Failure : Unsigned_64; + end record; + + procedure Failure_Policy + (Old_Addr : Unsigned_64; + New_Addr : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + ---------------------------------------------------------------------------- + -- Exit the current process in a POSIX standard-compliant way with the + -- provided code. + procedure Do_Exit (Proc : PID; Code : Unsigned_8); + procedure Do_Exit (Proc : PID; Sig : Signal); + + -- Pre and post syscall hook. + procedure Pre_Syscall_Hook (State : Arch.Context.GP_Context); + procedure Post_Syscall_Hook (State : Arch.Context.GP_Context); + + -- Check whether an address may be mapped by the user. + function Check_Userland_Mappability + (Map : Arch.MMU.Page_Table_Acc; + Addr : Memory.Virtual_Address; + Byte_Count : Unsigned_64) return Boolean; + +private + + procedure Do_Remote_Exit (Proc : PID; Code : Unsigned_8); + + procedure Common_Syscall_Hook + (Thread : TID; + State : Arch.Context.GP_Context); + + -- Translate an FS_Status to Errno. + procedure Translate_Status + (Status : VFS.FS_Status; + Success_Return : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Translate_Status + (Status : IPC.Socket.Socket_Status; + Success_Return : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Translate_Status + (Status : IPC.FIFO.Pipe_Status; + Success_Return : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + procedure Translate_Status + (Status : IPC.PTY.Status; + Success_Return : Unsigned_64; + Returned : out Unsigned_64; + Errno : out Errno_Value); + + -- Execute a path, with an argv and envp into the passed process. + procedure Exec_Into_Process + (Path_Addr : Unsigned_64; + Path_Len : Unsigned_64; + Argv_Addr : Unsigned_64; + Argv_Len : Unsigned_64; + Envp_Addr : Unsigned_64; + Envp_Len : Unsigned_64; + Proc : PID; + Success : out Boolean; + Errno : out Errno_Value); + + -- Go from C string to Ada string. + function To_String (Addr : System.Address) return String_Acc; + + -- Translate mmap permissions. + function Get_Mmap_Prot (P : Unsigned_64) return Arch.MMU.Page_Permissions; + + -- Execute the policy chose by the user for the process. + procedure Execute_MAC_Failure (Name : String; Curr_Proc : PID); + + -- Inner PTY IOCTL. + procedure PTY_IOCTL + (P : IPC.PTY.Inner_Acc; + Is_Primary : Boolean; + Request : Unsigned_64; + Argument : System.Address; + Success : out Boolean); + + -- Set MAC capabilities for a process from a bitmap. + procedure Set_MAC_Capabilities (Proc : PID; Bits : Unsigned_64); + + -- Transform a rlimit into a MAC limit. + procedure MAC_Syscall_To_Kernel + (Val : Unsigned_64; + Success : out Boolean; + Limit : out MAC.Limit_Type); + + -- Check limits and then add file. + procedure Check_Add_File + (Process : PID; + File : File_Description_Acc; + Success : out Boolean; + FD : out Natural; + Start : Natural := 0); + + function Check_Userland_Access + (Map : Arch.MMU.Page_Table_Acc; + Addr : Memory.Virtual_Address; + Byte_Count : Unsigned_64) return Boolean; + + procedure Resolve_AT_Directive + (Proc : PID; + Dir_FD : Unsigned_64; + FS : out VFS.FS_Handle; + Ino : out VFS.File_Inode_Number); + + procedure Translate_Signal + (Val : Unsigned_64; + Sig : out Signal; + Success : out Boolean); +end Userland.Syscall; diff --git a/source/userland/userland.ads b/source/userland/userland.ads new file mode 100644 index 0000000..bd1edd4 --- /dev/null +++ b/source/userland/userland.ads @@ -0,0 +1,23 @@ +-- userland.ads: Specification of userland library. +-- Copyright (C) 2021 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package Userland is + -- Arguments passed to a program when created. + type String_Acc is access String; + type Argument_Arr is array (Positive range <>) of String_Acc; + type Environment_Arr is array (Positive range <>) of String_Acc; + type Argument_Arr_Acc is access Argument_Arr; +end Userland; diff --git a/source/vfs/vfs-dev.adb b/source/vfs/vfs-dev.adb new file mode 100644 index 0000000..1cec128 --- /dev/null +++ b/source/vfs/vfs-dev.adb @@ -0,0 +1,342 @@ +-- vfs-ext.adb: Linux Extended FS driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package body VFS.Dev is + -- All devices share the same permissions. + -- The only folder of the filesystem is the root, which has inode 0. + Root_Inode : constant := 0; + Device_Permissions : constant := 8#666#; + + procedure Probe + (Handle : Device_Handle; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Data_Addr : out System.Address; + Root_Ino : out File_Inode_Number) + is + pragma Unreferenced (Handle); + pragma Unreferenced (Do_Read_Only); + pragma Unreferenced (Do_Relatime); + begin + Data_Addr := System'To_Address (1); + Root_Ino := Root_Inode; + end Probe; + + procedure Remount + (FS : System.Address; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean) + is + pragma Unreferenced (FS); + pragma Unreferenced (Do_Read_Only); + pragma Unreferenced (Do_Relatime); + begin + Success := True; + end Remount; + + procedure Unmount (FS : in out System.Address) is + begin + FS := System.Null_Address; + end Unmount; + ---------------------------------------------------------------------------- + procedure Get_Block_Size (FS : System.Address; Size : out Unsigned_64) is + pragma Unreferenced (FS); + begin + Size := 0; + end Get_Block_Size; + + procedure Get_Fragment_Size (FS : System.Address; Size : out Unsigned_64) is + pragma Unreferenced (FS); + begin + Size := 0; + end Get_Fragment_Size; + + procedure Get_Size (FS : System.Address; Size : out Unsigned_64) is + pragma Unreferenced (FS); + begin + Size := 0; + end Get_Size; + + procedure Get_Inode_Count (FS : System.Address; Count : out Unsigned_64) is + pragma Unreferenced (FS); + begin + Count := 0; + end Get_Inode_Count; + + procedure Get_Free_Blocks + (FS : System.Address; + Free_Blocks : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + is + pragma Unreferenced (FS); + begin + Free_Blocks := 0; + Free_Unpriviledged := 0; + end Get_Free_Blocks; + + procedure Get_Free_Inodes + (FS : System.Address; + Free_Inodes : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + is + pragma Unreferenced (FS); + begin + Free_Inodes := 0; + Free_Unpriviledged := 0; + end Get_Free_Inodes; + + function Get_Max_Length (FS : System.Address) return Unsigned_64 is + pragma Unreferenced (FS); + begin + return Unsigned_64 (Devices.Max_Name_Length); + end Get_Max_Length; + ---------------------------------------------------------------------------- + procedure Read_Entries + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Natural; + Entities : out Directory_Entities; + Ret_Count : out Natural; + Success : out FS_Status) + is + pragma Unreferenced (FS_Data); + + Buffer : Devices.Device_List (1 .. 30); + Idx : Natural; + Buffer_Len : Natural; + begin + if Ino /= Root_Inode then + Ret_Count := 0; + Success := FS_Invalid_Value; + return; + end if; + + Ret_Count := 0; + Idx := 0; + Devices.List (Buffer, Buffer_Len); + for I in 1 .. Buffer_Len loop + if I - 1 >= Offset then + if Ret_Count > Entities'Length then + exit; + end if; + + Entities (Entities'First + Idx) := + (Inode_Number => + Unsigned_64 (Devices.Get_Unique_ID (Buffer (I))), + Name_Buffer => (others => ' '), + Name_Len => 0, + Type_Of_File => File_Character_Device); + if Devices.Is_Block_Device (Buffer (I)) then + Entities (Entities'First + Idx).Type_Of_File := + File_Block_Device; + end if; + Devices.Fetch_Name + (Buffer (I), + Entities (Entities'First + Idx).Name_Buffer, + Entities (Entities'First + Idx).Name_Len); + Ret_Count := Ret_Count + 1; + Idx := Idx + 1; + end if; + end loop; + + Success := FS_Success; + end Read_Entries; + + procedure Read + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Is_Blocking : Boolean; + Success : out FS_Status) + is + pragma Unreferenced (FS_Data); + Dev : constant Device_Handle := From_Unique_ID (Natural (Ino)); + Succ : Boolean; + begin + Read + (Handle => Dev, + Offset => Offset, + Data => Data, + Ret_Count => Ret_Count, + Success => Succ, + Is_Blocking => Is_Blocking); + Success := (if Succ then FS_Success else FS_IO_Failure); + end Read; + + procedure Write + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Is_Blocking : Boolean; + Success : out FS_Status) + is + pragma Unreferenced (FS_Data); + Dev : constant Device_Handle := From_Unique_ID (Natural (Ino)); + Succ : Boolean; + begin + Write + (Handle => Dev, + Offset => Offset, + Data => Data, + Ret_Count => Ret_Count, + Success => Succ, + Is_Blocking => Is_Blocking); + Success := (if Succ then FS_Success else FS_IO_Failure); + end Write; + + procedure Stat + (Data : System.Address; + Ino : File_Inode_Number; + S : out File_Stat; + Success : out FS_Status) + is + pragma Unreferenced (Data); + Dev : constant Device_Handle := From_Unique_ID (Natural (Ino)); + begin + if Ino = Root_Inode then + S := + (Unique_Identifier => Root_Inode, + Type_Of_File => File_Directory, + Mode => Device_Permissions, + UID => 0, + GID => 0, + Hard_Link_Count => 1, + Byte_Size => 0, + IO_Block_Size => 0, + IO_Block_Count => 0, + Creation_Time => (0, 0), + Modification_Time => (0, 0), + Access_Time => (0, 0)); + else + S := + (Unique_Identifier => Ino, + Type_Of_File => File_Character_Device, + Mode => Device_Permissions, + UID => 0, + GID => 0, + Hard_Link_Count => 1, + Byte_Size => 0, + IO_Block_Size => Devices.Get_Block_Size (Dev), + IO_Block_Count => Devices.Get_Block_Count (Dev), + Creation_Time => (0, 0), + Modification_Time => (0, 0), + Access_Time => (0, 0)); + S.Byte_Size := Unsigned_64 (S.IO_Block_Size) * S.IO_Block_Count; + if Devices.Is_Block_Device (Dev) then + S.Type_Of_File := File_Block_Device; + end if; + end if; + + Success := FS_Success; + end Stat; + + procedure IO_Control + (Data : System.Address; + Ino : File_Inode_Number; + Req : Unsigned_64; + Arg : System.Address; + Status : out FS_Status) + is + pragma Unreferenced (Data); + + DEV_UUID : constant := 16#9821#; + begin + if Ino = Root_Inode then + Status := FS_Invalid_Value; + else + declare + Arg_UUID : Devices.UUID with Import, Address => Arg; + Dev : constant Device_Handle := From_Unique_ID (Natural (Ino)); + begin + if Req = DEV_UUID then + Arg_UUID := Fetch (Dev); + Status := FS_Success; + elsif IO_Control (Dev, Req, Arg) then + Status := FS_Success; + else + Status := FS_IO_Failure; + end if; + end; + end if; + end IO_Control; + + procedure Mmap + (Data : System.Address; + Ino : File_Inode_Number; + Map : Arch.MMU.Page_Table_Acc; + Address : Memory.Virtual_Address; + Length : Unsigned_64; + Flags : Arch.MMU.Page_Permissions; + Status : out FS_Status) + is + pragma Unreferenced (Data); + Dev : constant Device_Handle := From_Unique_ID (Natural (Ino)); + begin + if Devices.Mmap (Dev, Map, Address, Length, Flags) then + Status := FS_Success; + else + Status := FS_IO_Failure; + end if; + end Mmap; + + procedure Poll + (Data : System.Address; + Ino : File_Inode_Number; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean) + is + pragma Unreferenced (Data); + Dev : constant Device_Handle := From_Unique_ID (Natural (Ino)); + begin + Devices.Poll (Dev, Can_Read, Can_Write, Is_Error); + end Poll; + + function Synchronize (Data : System.Address) return FS_Status is + pragma Unreferenced (Data); + Buffer : Devices.Device_List (1 .. 30); + Buffer_Len : Natural; + begin + Devices.List (Buffer, Buffer_Len); + for I in 1 .. Buffer_Len loop + if not Devices.Synchronize (Buffer (I)) then + return FS_IO_Failure; + end if; + end loop; + return FS_Success; + end Synchronize; + + function Synchronize + (Data : System.Address; + Ino : File_Inode_Number; + Data_Only : Boolean) return FS_Status + is + pragma Unreferenced (Data); + pragma Unreferenced (Data_Only); + Dev : constant Device_Handle := From_Unique_ID (Natural (Ino)); + begin + if Devices.Synchronize (Dev) then + return FS_Success; + else + return FS_IO_Failure; + end if; + end Synchronize; +end VFS.Dev; diff --git a/source/vfs/vfs-dev.ads b/source/vfs/vfs-dev.ads new file mode 100644 index 0000000..341ea68 --- /dev/null +++ b/source/vfs/vfs-dev.ads @@ -0,0 +1,116 @@ +-- vfs-ext.ads: Linux Extended FS driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; + +package VFS.Dev is + procedure Probe + (Handle : Device_Handle; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Data_Addr : out System.Address; + Root_Ino : out File_Inode_Number); + + procedure Remount + (FS : System.Address; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean); + + procedure Unmount (FS : in out System.Address); + ---------------------------------------------------------------------------- + procedure Get_Block_Size (FS : System.Address; Size : out Unsigned_64); + + procedure Get_Fragment_Size (FS : System.Address; Size : out Unsigned_64); + + procedure Get_Size (FS : System.Address; Size : out Unsigned_64); + + procedure Get_Inode_Count (FS : System.Address; Count : out Unsigned_64); + + procedure Get_Free_Blocks + (FS : System.Address; + Free_Blocks : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64); + + procedure Get_Free_Inodes + (FS : System.Address; + Free_Inodes : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64); + + function Get_Max_Length (FS : System.Address) return Unsigned_64; + ---------------------------------------------------------------------------- + procedure Read_Entries + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Natural; + Entities : out Directory_Entities; + Ret_Count : out Natural; + Success : out FS_Status); + + procedure Read + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Is_Blocking : Boolean; + Success : out FS_Status); + + procedure Write + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Is_Blocking : Boolean; + Success : out FS_Status); + + procedure Stat + (Data : System.Address; + Ino : File_Inode_Number; + S : out File_Stat; + Success : out FS_Status); + + procedure IO_Control + (Data : System.Address; + Ino : File_Inode_Number; + Req : Unsigned_64; + Arg : System.Address; + Status : out FS_Status); + + procedure Mmap + (Data : System.Address; + Ino : File_Inode_Number; + Map : Arch.MMU.Page_Table_Acc; + Address : Memory.Virtual_Address; + Length : Unsigned_64; + Flags : Arch.MMU.Page_Permissions; + Status : out FS_Status); + + procedure Poll + (Data : System.Address; + Ino : File_Inode_Number; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean); + + function Synchronize (Data : System.Address) return FS_Status; + + function Synchronize + (Data : System.Address; + Ino : File_Inode_Number; + Data_Only : Boolean) return FS_Status; +end VFS.Dev; diff --git a/source/vfs/vfs-ext.adb b/source/vfs/vfs-ext.adb new file mode 100644 index 0000000..cee2d2c --- /dev/null +++ b/source/vfs/vfs-ext.adb @@ -0,0 +1,2644 @@ +-- vfs-ext.adb: Linux Extended FS driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Lib.Messages; +with Lib.Panic; +with Lib.Alignment; +with System.Address_To_Access_Conversions; +with Ada.Unchecked_Deallocation; +with Ada.Characters.Latin_1; + +package body VFS.EXT is + package Conv is new System.Address_To_Access_Conversions (EXT_Data); + procedure Free is new Ada.Unchecked_Deallocation (String, String_Acc); + procedure Free is new Ada.Unchecked_Deallocation (EXT_Data, EXT_Data_Acc); + procedure Free is new Ada.Unchecked_Deallocation (Inode, Inode_Acc); + procedure Free is new Ada.Unchecked_Deallocation + (Operation_Data, Operation_Data_Acc); + + procedure Probe + (Handle : Device_Handle; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Data_Addr : out System.Address) + is + Sup : Superblock; + Data : EXT_Data_Acc; + Success : Boolean; + Is_RO : Boolean; + begin + RW_Superblock + (Handle => Handle, + Offset => Main_Superblock_Offset, + Super => Sup, + Write_Operation => False, + Success => Success); + if not Success then + Data_Addr := Null_Address; + return; + end if; + + -- Check we support everything ext needs us to. + if Sup.Signature /= EXT_Signature or else + Sup.Block_Size_Log < Sup.Fragment_Size_Log or else + Sup.Major_Version > 1 or else + (Sup.Required_Features and Required_Compression) /= 0 or else + (Sup.Required_Features and Required_Journal_Replay) /= 0 or else + (Sup.Required_Features and Required_Journal_Device) /= 0 + then + Data_Addr := Null_Address; + return; + end if; + + -- Check under which conditions we can only do read-only. + Is_RO := + Do_Read_Only or + Devices.Is_Read_Only (Handle) or + Sup.Filesystem_State /= State_Clean or + Sup.Mounts_Since_Check > Sup.Max_Mounts_Since_Check or + (Sup.RO_If_Not_Features and RO_Binary_Trees) /= 0; + if Is_RO then + Lib.Messages.Put_Line ("ext will be mounted RO, consider an fsck"); + end if; + + -- Commit to mounting. + Data := new EXT_Data' + (Mutex => Lib.Synchronization.Unlocked_Semaphore, + Handle => Handle, + Super => Sup, + Is_Read_Only => Is_RO, + Do_Relatime => Do_Relatime, + Block_Size => Shift_Left (1024, Natural (Sup.Block_Size_Log)), + Fragment_Size => Shift_Left (1024, Natural (Sup.Fragment_Size_Log)), + Root => <>, + Has_Sparse_Superblock => + (Sup.RO_If_Not_Features and RO_Sparse_Superblocks) /= 0, + Has_64bit_Filesizes => + (Sup.RO_If_Not_Features and RO_64bit_Filesize) /= 0); + + -- Read the root inode. + RW_Inode + (Data => Data, + Inode_Index => 2, + Result => Data.Root, + Write_Operation => False, + Success => Success); + Data_Addr := Conv.To_Address (Conv.Object_Pointer (Data)); + end Probe; + + procedure Remount + (FS : System.Address; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean) + is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + begin + Lib.Synchronization.Seize (Data.Mutex); + Data.Is_Read_Only := Do_Read_Only; + Data.Do_Relatime := Do_Relatime; + Lib.Synchronization.Release (Data.Mutex); + Success := True; + end Remount; + + procedure Unmount (FS : in out System.Address) is + Data : EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + Success : Boolean; + begin + Lib.Synchronization.Seize (Data.Mutex); + + if not Data.Is_Read_Only and + Data.Super.Mounts_Since_Check /= Unsigned_16'Last + then + Data.Super.Mounts_Since_Check := Data.Super.Mounts_Since_Check + 1; + RW_Superblock + (Handle => Data.Handle, + Offset => Main_Superblock_Offset, + Super => Data.Super, + Write_Operation => True, + Success => Success); + if not Success then + Act_On_Policy (Data, "superblock write error"); + end if; + end if; + + Free (Data); + FS := System.Null_Address; + end Unmount; + ---------------------------------------------------------------------------- + procedure Get_Block_Size (FS : System.Address; Size : out Unsigned_64) is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + begin + Lib.Synchronization.Seize (Data.Mutex); + Size := Unsigned_64 (Data.Block_Size); + Lib.Synchronization.Release (Data.Mutex); + end Get_Block_Size; + + procedure Get_Fragment_Size (FS : System.Address; Size : out Unsigned_64) is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + begin + Lib.Synchronization.Seize (Data.Mutex); + Size := Unsigned_64 (Data.Fragment_Size); + Lib.Synchronization.Release (Data.Mutex); + end Get_Fragment_Size; + + procedure Get_Size (FS : System.Address; Size : out Unsigned_64) is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + begin + Lib.Synchronization.Seize (Data.Mutex); + Size := Unsigned_64 (Data.Super.Block_Count * + Data.Block_Size / Data.Fragment_Size); + Lib.Synchronization.Release (Data.Mutex); + end Get_Size; + + procedure Get_Inode_Count (FS : System.Address; Count : out Unsigned_64) is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + begin + Lib.Synchronization.Seize (Data.Mutex); + Count := Unsigned_64 (Data.Super.Inode_Count); + Lib.Synchronization.Release (Data.Mutex); + end Get_Inode_Count; + + procedure Get_Free_Blocks + (FS : System.Address; + Free_Blocks : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + begin + Lib.Synchronization.Seize (Data.Mutex); + Free_Blocks := Unsigned_64 (Data.Super.Unallocated_Block_Count); + Free_Unpriviledged := Unsigned_64 (Data.Super.Unallocated_Block_Count); + Lib.Synchronization.Release (Data.Mutex); + end Get_Free_Blocks; + + procedure Get_Free_Inodes + (FS : System.Address; + Free_Inodes : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + begin + Lib.Synchronization.Seize (Data.Mutex); + Free_Inodes := Unsigned_64 (Data.Super.Unallocated_Inode_Count); + Free_Unpriviledged := Unsigned_64 (Data.Super.Unallocated_Inode_Count); + Lib.Synchronization.Release (Data.Mutex); + end Get_Free_Inodes; + + function Get_Max_Length (FS : System.Address) return Unsigned_64 is + pragma Unreferenced (FS); + begin + return Max_File_Name_Size; + end Get_Max_Length; + ---------------------------------------------------------------------------- + procedure Create_Node + (FS : System.Address; + Relative : File_Inode_Number; + Path : String; + Typ : File_Type; + Mode : File_Mode; + User : Unsigned_32; + Status : out FS_Status) + is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + Perms : constant Unsigned_16 := Get_Permissions (Typ); + Dir_Type : constant Unsigned_8 := Get_Dir_Type (Typ); + Has_64bit_Sz : Boolean renames Data.Has_64bit_Filesizes; + Last_Component : String_Acc; + Target_Index, Parent_Index : Unsigned_32; + Target_Inode, Parent_Inode : Inode_Acc := new Inode; + Descriptor : Block_Group_Descriptor; + Desc_Index : Unsigned_32; + Ent : Directory_Entry; + Name : String (1 .. 2); + Temp : Natural; + Success : Boolean; + Ent_Data : Operation_Data (1 .. Ent'Size / 8) + with Import, Address => Ent'Address; + Name_Data : Operation_Data (1 .. 2) + with Import, Address => Name'Address; + begin + Lib.Synchronization.Seize (Data.Mutex); + + if Data.Is_Read_Only then + Status := FS_RO_Failure; + goto Cleanup; + elsif Path'Length = 0 then + Status := FS_Invalid_Value; + goto Cleanup; + end if; + + -- Checking the file doesn't exist but the parent is found along perms. + Inner_Open_Inode + (Data => Data, + Relative => Unsigned_32 (Relative), + Path => Path, + Last_Component => Last_Component, + Target_Index => Target_Index, + Target_Inode => Target_Inode.all, + Parent_Index => Parent_Index, + Parent_Inode => Parent_Inode.all, + Success => Success); + if Success or else Parent_Index = 0 or else Target_Index /= 0 then + Status := FS_Invalid_Value; + goto Cleanup; + elsif not Check_User_Access (User, Parent_Inode.all, False, True, False) + then + Status := FS_Not_Allowed; + goto Cleanup; + end if; + + Allocate_Inode + (FS_Data => Data, + Inode_Num => Target_Index, + Success => Success); + if not Success then + Status := FS_IO_Failure; + goto Cleanup; + end if; + + Target_Inode.all := + (Permissions => Perms or Unsigned_16 (Mode), + UID => Unsigned_16 (User), + Size_Low => 0, + Access_Time_Epoch => 0, + Creation_Time_Epoch => 0, + Modified_Time_Epoch => 0, + Deleted_Time_Epoch => 0, + GID => 0, + Hard_Link_Count => 1, + Sectors => 0, + Flags => 0, + OS_Specific_Value_1 => 0, + Blocks => (others => 0), + Generation_Number => 0, + EAB => 0, + Size_High => 0, + Fragment_Address => 0, + OS_Specific_Value_2 => (others => 0)); + + Add_Directory_Entry + (FS_Data => Data, + Inode_Data => Parent_Inode.all, + Inode_Size => Get_Size (Parent_Inode.all, Has_64bit_Sz), + Inode_Index => Parent_Index, + Added_Index => Target_Index, + Dir_Type => Dir_Type, + Name => Last_Component.all, + Success => Success); + if not Success then + Status := FS_IO_Failure; + goto Cleanup; + end if; + + if Typ = File_Directory then + Ent := (Target_Index, 12, 1, Dir_Type); + Write_To_Inode + (FS_Data => Data, + Inode_Data => Target_Inode.all, + Inode_Num => Target_Index, + Inode_Size => Get_Size (Target_Inode.all, Has_64bit_Sz), + Offset => 0, + Data => Ent_Data, + Ret_Count => Temp, + Success => Success); + Name := ('.', Ada.Characters.Latin_1.NUL); + Write_To_Inode + (FS_Data => Data, + Inode_Data => Target_Inode.all, + Inode_Num => Target_Index, + Inode_Size => Get_Size (Target_Inode.all, Has_64bit_Sz), + Offset => 8, + Data => Name_Data, + Ret_Count => Temp, + Success => Success); + + Ent := + (Inode_Index => Parent_Index, + Entry_Count => Unsigned_16 (Data.Block_Size) - 12, + Name_Length => 2, + Dir_Type => Dir_Type); + Write_To_Inode + (FS_Data => Data, + Inode_Data => Target_Inode.all, + Inode_Num => Target_Index, + Inode_Size => Get_Size (Target_Inode.all, Has_64bit_Sz), + Offset => 12, + Data => Ent_Data, + Ret_Count => Temp, + Success => Success); + Name := ".."; + Write_To_Inode + (FS_Data => Data, + Inode_Data => Target_Inode.all, + Inode_Num => Target_Index, + Inode_Size => Get_Size (Target_Inode.all, Has_64bit_Sz), + Offset => 12 + (Ent'Size / 8), + Data => Name_Data, + Ret_Count => Temp, + Success => Success); + + Desc_Index := Target_Index - 1 / Data.Super.Inodes_Per_Group; + RW_Block_Group_Descriptor + (Data => Data, + Descriptor_Index => Desc_Index, + Result => Descriptor, + Write_Operation => False, + Success => Success); + Descriptor.Directory_Count := Descriptor.Directory_Count + 1; + RW_Block_Group_Descriptor + (Data => Data, + Descriptor_Index => Desc_Index, + Result => Descriptor, + Write_Operation => True, + Success => Success); + Parent_Inode.Hard_Link_Count := Parent_Inode.Hard_Link_Count + 1; + Target_Inode.Hard_Link_Count := Target_Inode.Hard_Link_Count + 1; + end if; + + RW_Inode + (Data => Data, + Inode_Index => Target_Index, + Result => Target_Inode.all, + Write_Operation => True, + Success => Success); + RW_Inode + (Data => Data, + Inode_Index => Parent_Index, + Result => Parent_Inode.all, + Write_Operation => True, + Success => Success); + + Status := (if Success then FS_Success else FS_IO_Failure); + + <> + Lib.Synchronization.Release (Data.Mutex); + Free (Target_Inode); + Free (Parent_Inode); + Free (Last_Component); + end Create_Node; + + procedure Create_Symbolic_Link + (FS : System.Address; + Relative : File_Inode_Number; + Path : String; + Target : String; + Mode : Unsigned_32; + User : Unsigned_32; + Status : out FS_Status) + is + pragma Unreferenced (Mode); + pragma Unreferenced (Relative); + pragma Unreferenced (User); + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + begin + Lib.Synchronization.Seize (Data.Mutex); + if Data.Is_Read_Only then + Status := FS_RO_Failure; + elsif Path'Length = 0 or Target'Length = 0 then + Status := FS_Invalid_Value; + else + Status := FS_Not_Supported; + end if; + Lib.Synchronization.Release (Data.Mutex); + end Create_Symbolic_Link; + + procedure Create_Hard_Link + (FS : System.Address; + Relative_Path : File_Inode_Number; + Path : String; + Relative_Target : File_Inode_Number; + Target : String; + User : Unsigned_32; + Status : out FS_Status) + is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + Last_Component : String_Acc; + Path_Index, Target_Index, Parent_Index : Unsigned_32; + Path_Inode, Target_Inode, Parent_Inode : Inode_Acc := new Inode; + Success : Boolean; + begin + Lib.Synchronization.Seize (Data.Mutex); + + if Data.Is_Read_Only then + Status := FS_RO_Failure; + goto Cleanup; + elsif Path'Length = 0 or Target'Length = 0 then + Status := FS_Invalid_Value; + goto Cleanup; + end if; + + -- Open the source. + Inner_Open_Inode + (Data => Data, + Relative => Unsigned_32 (Relative_Path), + Path => Path, + Last_Component => Last_Component, + Target_Index => Path_Index, + Target_Inode => Path_Inode.all, + Parent_Index => Parent_Index, + Parent_Inode => Parent_Inode.all, + Success => Success); + if not Success then + Status := FS_IO_Failure; + goto Cleanup; + end if; + Free (Last_Component); + + -- Checking the target file doesn't exist but the parent is found. + -- Also check some permissions. + Inner_Open_Inode + (Data => Data, + Relative => Unsigned_32 (Relative_Target), + Path => Target, + Last_Component => Last_Component, + Target_Index => Target_Index, + Target_Inode => Target_Inode.all, + Parent_Index => Parent_Index, + Parent_Inode => Parent_Inode.all, + Success => Success); + if Success or else Parent_Index = 0 or else Target_Index /= 0 then + Status := FS_Invalid_Value; + goto Cleanup; + elsif not Check_User_Access (User, Parent_Inode.all, False, True, False) + then + Status := FS_Not_Allowed; + goto Cleanup; + end if; + + -- Once we can commit to it, update the hard link count. + RW_Inode + (Data => Data, + Inode_Index => Path_Index, + Result => Path_Inode.all, + Write_Operation => False, + Success => Success); + if not Success then + Status := FS_IO_Failure; + goto Cleanup; + end if; + Path_Inode.Hard_Link_Count := Path_Inode.Hard_Link_Count + 1; + RW_Inode + (Data => Data, + Inode_Index => Path_Index, + Result => Path_Inode.all, + Write_Operation => True, + Success => Success); + if not Success then + Status := FS_IO_Failure; + goto Cleanup; + end if; + + Add_Directory_Entry + (FS_Data => Data, + Inode_Data => Parent_Inode.all, + Inode_Size => Get_Size (Parent_Inode.all, Data.Has_64bit_Filesizes), + Inode_Index => Parent_Index, + Added_Index => Path_Index, + Dir_Type => Get_Dir_Type (File_Regular), + Name => Last_Component.all, + Success => Success); + + Status := (if Success then FS_Success else FS_IO_Failure); + + <> + Lib.Synchronization.Release (Data.Mutex); + Free (Path_Inode); + Free (Target_Inode); + Free (Parent_Inode); + Free (Last_Component); + end Create_Hard_Link; + + procedure Rename + (FS : System.Address; + Relative_Source : File_Inode_Number; + Source : String; + Relative_Target : File_Inode_Number; + Target : String; + Keep : Boolean; + User : Unsigned_32; + Status : out FS_Status) + is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + Last_Component : String_Acc; + Source_Index, Target_Index : Unsigned_32; + Source_Parent_Index, Target_Parent_Index : Unsigned_32; + Source_Inode, Target_Inode : Inode_Acc := new Inode; + Source_Parent_Inode, Target_Parent_Inode : Inode_Acc := new Inode; + Target_Parent_Size : Unsigned_64; + Success1, Success2 : Boolean; + begin + Lib.Synchronization.Seize (Data.Mutex); + + if Data.Is_Read_Only then + Status := FS_RO_Failure; + goto Cleanup; + elsif Source'Length = 0 or Target'Length = 0 then + Status := FS_Invalid_Value; + goto Cleanup; + end if; + + Inner_Open_Inode + (Data => Data, + Relative => Unsigned_32 (Relative_Source), + Path => Source, + Last_Component => Last_Component, + Target_Index => Source_Index, + Target_Inode => Source_Inode.all, + Parent_Index => Source_Parent_Index, + Parent_Inode => Source_Parent_Inode.all, + Success => Success1); + Free (Last_Component); + Inner_Open_Inode + (Data => Data, + Relative => Unsigned_32 (Relative_Target), + Path => Target, + Last_Component => Last_Component, + Target_Index => Target_Index, + Target_Inode => Target_Inode.all, + Parent_Index => Target_Parent_Index, + Parent_Inode => Target_Parent_Inode.all, + Success => Success2); + + -- Check that the source exists, that the parent of the target exists, + -- and that we do not want to keep the file if it exists, along with + -- permissions. + if not Success1 or Target_Parent_Index = 0 or (Keep and Success2) then + Status := FS_Invalid_Value; + goto Cleanup; + elsif not Check_User_Access (User, Target_Parent_Inode.all, + False, True, False) + then + Status := FS_Not_Allowed; + goto Cleanup; + end if; + + Target_Parent_Size := Get_Size (Target_Parent_Inode.all, + Data.Has_64bit_Filesizes); + + -- The target already exists so we nuke it from orbit. + if Success2 then + Delete_Directory_Entry + (FS_Data => Data, + Inode_Data => Target_Parent_Inode.all, + Inode_Size => Target_Parent_Size, + Inode_Index => Target_Parent_Index, + Added_Index => Target_Index, + Success => Success1); + if not Success1 then + Status := FS_IO_Failure; + goto Cleanup; + end if; + end if; + + -- Add the directory entry on its place. + Add_Directory_Entry + (FS_Data => Data, + Inode_Data => Target_Parent_Inode.all, + Inode_Size => Target_Parent_Size, + Inode_Index => Target_Parent_Index, + Added_Index => Target_Index, + Dir_Type => Get_Dir_Type (File_Regular), + Name => Last_Component.all, + Success => Success1); + + Status := (if Success1 then FS_Success else FS_IO_Failure); + + <> + Lib.Synchronization.Release (Data.Mutex); + Free (Source_Inode); + Free (Target_Inode); + Free (Source_Parent_Inode); + Free (Target_Parent_Inode); + Free (Last_Component); + end Rename; + + procedure Unlink + (FS : System.Address; + Relative : File_Inode_Number; + Path : String; + User : Unsigned_32; + Status : out FS_Status) + is + Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS)); + Last_Component : String_Acc; + Path_Index, Parent_Index : Unsigned_32; + Path_Inode, Parent_Inode : Inode_Acc := new Inode; + Success : Boolean; + begin + Lib.Synchronization.Seize (Data.Mutex); + + if Data.Is_Read_Only then + Status := FS_RO_Failure; + goto Cleanup; + elsif Path'Length = 0 then + Status := FS_Invalid_Value; + goto Cleanup; + end if; + + Inner_Open_Inode + (Data => Data, + Relative => Unsigned_32 (Relative), + Path => Path, + Last_Component => Last_Component, + Target_Index => Path_Index, + Target_Inode => Path_Inode.all, + Parent_Index => Parent_Index, + Parent_Inode => Parent_Inode.all, + Success => Success); + if not Success then + Status := FS_Invalid_Value; + goto Cleanup; + elsif not Check_User_Access (User, Parent_Inode.all, False, True, False) + then + Status := FS_Not_Allowed; + goto Cleanup; + end if; + + Delete_Directory_Entry + (FS_Data => Data, + Inode_Data => Parent_Inode.all, + Inode_Size => Get_Size (Parent_Inode.all, Data.Has_64bit_Filesizes), + Inode_Index => Parent_Index, + Added_Index => Path_Index, + Success => Success); + + Status := (if Success then FS_Success else FS_IO_Failure); + + <> + Lib.Synchronization.Release (Data.Mutex); + Free (Path_Inode); + Free (Parent_Inode); + Free (Last_Component); + end Unlink; + + procedure Read_Entries + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Natural; + Entities : out Directory_Entities; + Ret_Count : out Natural; + Success : out FS_Status) + is + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS_Data)); + Fetched_Inode : Inode_Acc := new Inode; + Curr_Index : Unsigned_64; + Next_Index : Unsigned_64; + Entry_Count : Unsigned_64; + Entity : Directory_Entity; + Succ : Boolean; + begin + Lib.Synchronization.Seize (FS.Mutex); + + Ret_Count := 0; + Success := FS_Success; + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Fetched_Inode.all, + Write_Operation => False, + Success => Succ); + if not Succ then + Success := FS_IO_Failure; + goto Cleanup; + elsif Get_Inode_Type (Fetched_Inode.all.Permissions) /= File_Directory + then + Success := FS_Invalid_Value; + goto Cleanup; + end if; + + Curr_Index := 0; + Next_Index := 0; + Entry_Count := 0; + loop + Inner_Read_Entry + (FS_Data => FS, + Inode_Sz => Get_Size (Fetched_Inode.all, FS.Has_64bit_Filesizes), + File_Ino => Fetched_Inode.all, + Inode_Index => Curr_Index, + Entity => Entity, + Next_Index => Next_Index, + Success => Succ); + if not Succ then + exit; + end if; + + Curr_Index := Next_Index; + if Entry_Count >= Unsigned_64 (Offset) then + if Ret_Count < Entities'Length then + Entities (Entities'First + Ret_Count) := Entity; + else + exit; + end if; + Ret_Count := Ret_Count + 1; + end if; + Entry_Count := Entry_Count + 1; + end loop; + + <> + Lib.Synchronization.Release (FS.Mutex); + Free (Fetched_Inode); + end Read_Entries; + + procedure Read_Symbolic_Link + (FS_Data : System.Address; + Ino : File_Inode_Number; + Path : out String; + Ret_Count : out Natural; + Success : out FS_Status) + is + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS_Data)); + Fetched_Inode : Inode_Acc := new Inode; + Succ : Boolean; + begin + Lib.Synchronization.Seize (FS.Mutex); + Ret_Count := 0; + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Fetched_Inode.all, + Write_Operation => False, + Success => Succ); + if Succ and then + Get_Inode_Type (Fetched_Inode.all.Permissions) = File_Symbolic_Link + then + Inner_Read_Symbolic_Link + (Ino => Fetched_Inode.all, + File_Size => Get_Size (Fetched_Inode.all, FS.Has_64bit_Filesizes), + Path => Path, + Ret_Count => Ret_Count); + Success := (if Ret_Count /= 0 then FS_Success else FS_IO_Failure); + else + Path := (others => ' '); + Ret_Count := 0; + Success := FS_Invalid_Value; + end if; + + Lib.Synchronization.Release (FS.Mutex); + Free (Fetched_Inode); + end Read_Symbolic_Link; + + procedure Read + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out FS_Status) + is + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS_Data)); + Fetched_Type : File_Type; + Fetched_Inode : Inode_Acc := new Inode; + Succ : Boolean; + begin + Lib.Synchronization.Seize (FS.Mutex); + + Ret_Count := 0; + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Fetched_Inode.all, + Write_Operation => False, + Success => Succ); + if not Succ then + Success := FS_IO_Failure; + goto Cleanup; + end if; + + Fetched_Type := Get_Inode_Type (Fetched_Inode.all.Permissions); + case Fetched_Type is + when File_Regular => null; + when File_Directory => Success := FS_Is_Directory; goto Cleanup; + when others => Success := FS_Not_Supported; goto Cleanup; + end case; + + Read_From_Inode + (FS_Data => FS, + Inode_Data => Fetched_Inode.all, + Inode_Size => Get_Size (Fetched_Inode.all, FS.Has_64bit_Filesizes), + Offset => Offset, + Data => Data, + Ret_Count => Ret_Count, + Success => Succ); + + Success := (if Succ then FS_Success else FS_IO_Failure); + + <> + Lib.Synchronization.Release (FS.Mutex); + Free (Fetched_Inode); + end Read; + + procedure Write + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out FS_Status) + is + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (FS_Data)); + Fetched_Inode : Inode_Acc := new Inode; + Succ : Boolean; + begin + Lib.Synchronization.Seize (FS.Mutex); + + Ret_Count := 0; + if FS.Is_Read_Only then + Success := FS_RO_Failure; + goto Cleanup; + end if; + + -- FIXME: Check whether the passed ino was opened allowing write. For + -- now, this depends on the checks done in the syscall bodies, which it + -- shouldnt. + + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Fetched_Inode.all, + Write_Operation => False, + Success => Succ); + if not Succ then + Success := FS_IO_Failure; + goto Cleanup; + elsif Is_Immutable (Fetched_Inode.all) or + Get_Inode_Type (Fetched_Inode.all.Permissions) /= File_Regular + then + Success := FS_Invalid_Value; + goto Cleanup; + end if; + + Write_To_Inode + (FS_Data => FS, + Inode_Data => Fetched_Inode.all, + Inode_Num => Unsigned_32 (Ino), + Inode_Size => Get_Size (Fetched_Inode.all, FS.Has_64bit_Filesizes), + Offset => Offset, + Data => Data, + Ret_Count => Ret_Count, + Success => Succ); + + Success := (if Succ then FS_Success else FS_IO_Failure); + + <> + Lib.Synchronization.Release (FS.Mutex); + Free (Fetched_Inode); + end Write; + + procedure Stat + (Data : System.Address; + Ino : File_Inode_Number; + S : out File_Stat; + Success : out FS_Status) + is + package Align is new Lib.Alignment (Unsigned_64); + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (Data)); + Blk : constant Unsigned_64 := Unsigned_64 (Get_Block_Size (FS.Handle)); + Size : Unsigned_64; + Inod : Inode_Acc := new Inode; + Succ : Boolean; + begin + Lib.Synchronization.Seize (FS.Mutex); + + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Inod.all, + Write_Operation => False, + Success => Succ); + + if Succ then + Size := Get_Size (Inod.all, FS.Has_64bit_Filesizes); + S := + (Unique_Identifier => Ino, + Type_Of_File => Get_Inode_Type (Inod.Permissions), + Mode => File_Mode (Inod.Permissions and 8#777#), + UID => Unsigned_32 (Inod.UID), + GID => Unsigned_32 (Inod.GID), + Hard_Link_Count => Positive (Inod.Hard_Link_Count), + Byte_Size => Size, + IO_Block_Size => Get_Block_Size (FS.Handle), + IO_Block_Count => Align.Divide_Round_Up (Size, Blk), + Creation_Time => (Unsigned_64 (Inod.Creation_Time_Epoch), 0), + Modification_Time => (Unsigned_64 (Inod.Modified_Time_Epoch), 0), + Access_Time => (Unsigned_64 (Inod.Access_Time_Epoch), 0)); + Success := FS_Success; + else + Success := FS_IO_Failure; + end if; + + Lib.Synchronization.Release (FS.Mutex); + Free (Inod); + end Stat; + + procedure Truncate + (Data : System.Address; + Ino : File_Inode_Number; + New_Size : Unsigned_64; + Status : out FS_Status) + is + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (Data)); + Fetched : Inode_Acc := new Inode; + Fetched_Size : Unsigned_64; + Success : Boolean; + begin + Lib.Synchronization.Seize (FS.Mutex); + + if FS.Is_Read_Only then + Status := FS_RO_Failure; + goto Cleanup; + end if; + + -- FIXME: Check whether the passed ino was opened allowing write. For + -- now, this depends on the checks done in the syscall bodies, which it + -- shouldnt. + + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Fetched.all, + Write_Operation => False, + Success => Success); + if not Success or else + Get_Inode_Type (Fetched.all.Permissions) /= File_Regular or else + Is_Immutable (Fetched.all) + then + Status := FS_Invalid_Value; + goto Cleanup; + end if; + + Fetched_Size := Get_Size (Fetched.all, FS.Has_64bit_Filesizes); + if Fetched_Size = New_Size then + Success := True; + else + if Fetched_Size < New_Size then + Grow_Inode + (FS_Data => FS, + Inode_Data => Fetched.all, + Inode_Num => Unsigned_32 (Ino), + Start => 0, + Count => New_Size, + Success => Success); + else + Success := False; + end if; + + if Success then + Set_Size (Fetched.all, New_Size, FS.Has_64bit_Filesizes, Success); + if Success then + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Fetched.all, + Write_Operation => True, + Success => Success); + end if; + end if; + end if; + + Status := (if Success then FS_Success else FS_IO_Failure); + + <> + Lib.Synchronization.Release (FS.Mutex); + Free (Fetched); + end Truncate; + + procedure IO_Control + (Data : System.Address; + Ino : File_Inode_Number; + Req : Unsigned_64; + Arg : System.Address; + Status : out FS_Status) + is + EXT_GETFLAGS : constant := 16#5600#; + EXT_SETFLAGS : constant := 16#5601#; + + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (Data)); + Inod : Inode_Acc := new Inode; + Success : Boolean; + Flags : Unsigned_32 with Import, Address => Arg; + begin + Lib.Synchronization.Seize (FS.Mutex); + + -- FIXME: Check whether the passed ino was opened allowing write. For + -- now, this depends on the checks done in the syscall bodies, which it + -- shouldnt. + + if FS.Is_Read_Only then + Status := FS_RO_Failure; + goto Cleanup; + end if; + + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Inod.all, + Write_Operation => False, + Success => Success); + if not Success then + Status := FS_IO_Failure; + else + case Req is + when EXT_GETFLAGS => + Flags := Inod.Flags; + Status := FS_Success; + when EXT_SETFLAGS => + Inod.Flags := Flags; + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Inod.all, + Write_Operation => True, + Success => Success); + Status := (if Success then FS_Success else FS_IO_Failure); + when others => + Status := FS_Invalid_Value; + end case; + end if; + + <> + Lib.Synchronization.Release (FS.Mutex); + Free (Inod); + end IO_Control; + + procedure Change_Mode + (Data : System.Address; + Ino : File_Inode_Number; + Mode : File_Mode; + Status : out FS_Status) + is + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (Data)); + Inod : Inode_Acc := new Inode; + Success : Boolean; + Typ : File_Type; + begin + Lib.Synchronization.Seize (FS.Mutex); + + -- FIXME: Check whether the passed ino was opened allowing write. For + -- now, this depends on the checks done in the syscall bodies, which it + -- shouldnt. + + if FS.Is_Read_Only then + Status := FS_RO_Failure; + goto Cleanup; + end if; + + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Inod.all, + Write_Operation => False, + Success => Success); + if not Success then + Status := FS_IO_Failure; + else + Typ := Get_Inode_Type (Inod.Permissions); + Inod.Permissions := Get_Permissions (Typ) or Unsigned_16 (Mode); + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Inod.all, + Write_Operation => True, + Success => Success); + Status := (if Success then FS_Success else FS_IO_Failure); + end if; + + <> + Lib.Synchronization.Release (FS.Mutex); + Free (Inod); + end Change_Mode; + + procedure Change_Owner + (Data : System.Address; + Ino : File_Inode_Number; + Owner : Unsigned_32; + Group : Unsigned_32; + Status : out FS_Status) + is + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (Data)); + Inod : Inode_Acc := new Inode; + Success : Boolean; + begin + + -- FIXME: Check whether the passed ino was opened allowing write. For + -- now, this depends on the checks done in the syscall bodies, which it + -- shouldnt. + + Lib.Synchronization.Seize (FS.Mutex); + + if FS.Is_Read_Only then + Status := FS_RO_Failure; + goto Cleanup; + end if; + + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Inod.all, + Write_Operation => False, + Success => Success); + if not Success then + Status := FS_IO_Failure; + else + Inod.UID := Unsigned_16 (Owner); + Inod.GID := Unsigned_16 (Group); + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Inod.all, + Write_Operation => True, + Success => Success); + Status := (if Success then FS_Success else FS_IO_Failure); + end if; + + <> + Lib.Synchronization.Release (FS.Mutex); + Free (Inod); + end Change_Owner; + + procedure Change_Access_Times + (Data : System.Address; + Ino : File_Inode_Number; + Access_Seconds : Unsigned_64; + Access_Nanoseconds : Unsigned_64; + Modify_Seconds : Unsigned_64; + Modify_Nanoseconds : Unsigned_64; + Status : out FS_Status) + is + pragma Unreferenced (Access_Nanoseconds); + pragma Unreferenced (Modify_Nanoseconds); + + FS : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (Data)); + Inod : Inode_Acc := new Inode; + AS : Unsigned_64 renames Access_Seconds; + MS : Unsigned_64 renames Modify_Seconds; + Success : Boolean; + begin + Lib.Synchronization.Seize (FS.Mutex); + + if FS.Is_Read_Only then + Status := FS_RO_Failure; + goto Cleanup; + end if; + + -- FIXME: Check whether the passed ino was opened allowing write. For + -- now, this depends on the checks done in the syscall bodies, which it + -- shouldnt. + + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Inod.all, + Write_Operation => False, + Success => Success); + if not Success then + Status := FS_IO_Failure; + else + Inod.Access_Time_Epoch := Unsigned_32 (AS and 16#FFFFFFFF#); + Inod.Modified_Time_Epoch := Unsigned_32 (MS and 16#FFFFFFFF#); + RW_Inode + (Data => FS, + Inode_Index => Unsigned_32 (Ino), + Result => Inod.all, + Write_Operation => True, + Success => Success); + Status := (if Success then FS_Success else FS_IO_Failure); + end if; + + <> + Lib.Synchronization.Release (FS.Mutex); + Free (Inod); + end Change_Access_Times; + + function Synchronize (Data : System.Address) return FS_Status is + FS_Data : constant EXT_Data_Acc := EXT_Data_Acc (Conv.To_Pointer (Data)); + begin + if Devices.Synchronize (FS_Data.Handle) then + return FS_Success; + else + return FS_IO_Failure; + end if; + end Synchronize; + + function Synchronize + (Data : System.Address; + Ino : File_Inode_Number; + Data_Only : Boolean) return FS_Status + is + pragma Unreferenced (Ino); + pragma Unreferenced (Data_Only); + begin + return Synchronize (Data); + end Synchronize; + ---------------------------------------------------------------------------- + procedure Inner_Open_Inode + (Data : EXT_Data_Acc; + Relative : Unsigned_32; + Path : String; + Last_Component : out String_Acc; + Target_Index : out Unsigned_32; + Target_Inode : out Inode; + Parent_Index : out Unsigned_32; + Parent_Inode : out Inode; + Success : out Boolean) + is + Name_Start : Natural; + Target_Type : File_Type; + Target_Sz : Unsigned_64; + Entity : Directory_Entity; + First_I, Last_I : Natural; + Curr_Index, Next_Index : Unsigned_64; + Symlink : String (1 .. 60); + Symlink_Len : Natural; + begin + Last_Component := null; + Name_Start := 0; + if Is_Absolute (Path) then + Target_Index := Root_Inode; + Target_Inode := Data.Root; + Parent_Index := Root_Inode; + Parent_Inode := Data.Root; + Target_Sz := Get_Size (Target_Inode, Data.Has_64bit_Filesizes); + Target_Type := File_Directory; + + if Path'Length = 1 then + goto Perfect_Hit_Return; + end if; + + First_I := Path'First + 1; + Last_I := Path'First + 1; + elsif Path'Length > 0 then + RW_Inode + (Data => Data, + Inode_Index => Relative, + Result => Target_Inode, + Write_Operation => False, + Success => Success); + if not Success or else + Get_Inode_Type (Target_Inode.Permissions) /= File_Directory + then + goto Absolute_Miss_Return; + end if; + + Target_Index := Relative; + Parent_Index := Relative; + Parent_Inode := Target_Inode; + Target_Sz := Get_Size (Target_Inode, Data.Has_64bit_Filesizes); + Target_Type := File_Directory; + + if Path'Length = 0 then + goto Perfect_Hit_Return; + end if; + + First_I := Path'First; + Last_I := Path'First; + else + goto Absolute_Miss_Return; + end if; + + while Last_I <= Path'Last loop + <> + while Last_I <= Path'Last and then Path (Last_I) /= '/' loop + Last_I := Last_I + 1; + end loop; + if First_I = Last_I and First_I < Path'Last then + Last_I := Last_I + 1; + First_I := First_I + 1; + goto Retry_Component; + end if; + + if Target_Type /= File_Directory then + goto Absolute_Miss_Return; + end if; + + Name_Start := First_I; + Curr_Index := 0; + Next_Index := 0; + Parent_Index := Target_Index; + Parent_Inode := Target_Inode; + + loop + Inner_Read_Entry + (FS_Data => Data, + Inode_Sz => Target_Sz, + File_Ino => Parent_Inode, + Inode_Index => Curr_Index, + Entity => Entity, + Next_Index => Next_Index, + Success => Success); + if not Success then + if Last_I >= Path'Last then + goto Target_Miss_Parent_Hit_Return; + else + goto Absolute_Miss_Return; + end if; + end if; + + Curr_Index := Next_Index; + + if Entity.Name_Buffer (1 .. Entity.Name_Len) = + Path (First_I .. Last_I - 1) + then + Target_Index := Unsigned_32 (Entity.Inode_Number); + RW_Inode + (Data => Data, + Inode_Index => Target_Index, + Result => Target_Inode, + Write_Operation => False, + Success => Success); + Target_Sz := Get_Size (Target_Inode, Data.Has_64bit_Filesizes); + Target_Type := Get_Inode_Type (Target_Inode.Permissions); + if not Success then + goto Absolute_Miss_Return; + end if; + + if Last_I < Path'Last and Target_Type = File_Symbolic_Link then + Inner_Read_Symbolic_Link + (Target_Inode, + Target_Sz, + Symlink, + Symlink_Len); + if Symlink_Len = 0 then + goto Absolute_Miss_Return; + end if; + + Inner_Open_Inode + (Data, + Parent_Index, + Symlink (1 .. Symlink_Len) & Path (Last_I .. Path'Last), + Last_Component, + Target_Index, + Target_Inode, + Parent_Index, + Parent_Inode, + Success); + return; + end if; + goto Next_Iteration; + end if; + end loop; + + <> + Last_I := Last_I + 1; + First_I := Last_I; + end loop; + + <> + Success := True; + goto Fix_Last_Component; + + <> + Target_Index := 0; + Success := False; + goto Fix_Last_Component; + + <> + Target_Index := 0; + Parent_Index := 0; + Success := False; + return; + + <> + if Path'First <= Name_Start and Name_Start <= Path'Last then + Last_Component := new String'(Path (Name_Start .. Path'Last)); + end if; + end Inner_Open_Inode; + + procedure Inner_Read_Symbolic_Link + (Ino : Inode; + File_Size : Unsigned_64; + Path : out String; + Ret_Count : out Natural) + is + Final_Length : Natural; + Str_Data : Operation_Data (1 .. Path'Length) + with Import, Address => Ino.Blocks'Address; + begin + Final_Length := Natural (File_Size); + if Final_Length > 60 then + Path := (others => ' '); + Ret_Count := 0; + return; + end if; + + for I in 1 .. Final_Length loop + Path (Path'First + I - 1) := Character'Val (Str_Data (I)); + end loop; + Ret_Count := Final_Length; + end Inner_Read_Symbolic_Link; + + procedure Inner_Read_Entry + (FS_Data : EXT_Data_Acc; + Inode_Sz : Unsigned_64; + File_Ino : Inode; + Inode_Index : Unsigned_64; + Entity : out Directory_Entity; + Next_Index : out Unsigned_64; + Success : out Boolean) + is + Ret_Count : Natural; + Dir : Directory_Entry; + Tmp_Index : Unsigned_64; + Tmp_Type : File_Type; + Dir_Data : Operation_Data (1 .. Directory_Entry'Size / 8) + with Import, Address => Dir'Address; + begin + Read_From_Inode + (FS_Data => FS_Data, + Inode_Data => File_Ino, + Inode_Size => Inode_Sz, + Offset => Inode_Index, + Data => Dir_Data, + Ret_Count => Ret_Count, + Success => Success); + if (not Success or Ret_Count /= Dir_Data'Length) or else + Dir.Inode_Index = 0 + then + goto Error_Return; + end if; + + declare + Dir_Name : String (1 .. Natural (Dir.Name_Length)); + Name_Data : Operation_Data (1 .. Dir_Name'Length) + with Import, Address => Dir_Name'Address; + begin + Tmp_Index := Inode_Index + (Directory_Entry'Size / 8); + if (FS_Data.Super.Required_Features and Required_Directory_Types) /= 0 + then + Tmp_Type := Get_Dir_Type (Dir.Dir_Type); + else + Tmp_Index := Tmp_Index - 1; + Tmp_Type := File_Regular; + end if; + + Read_From_Inode + (FS_Data => FS_Data, + Inode_Data => File_Ino, + Inode_Size => Inode_Sz, + Offset => Tmp_Index, + Data => Name_Data, + Ret_Count => Ret_Count, + Success => Success); + if not Success or Ret_Count /= Name_Data'Length then + goto Error_Return; + end if; + + Entity := + (Inode_Number => Unsigned_64 (Dir.Inode_Index), + Name_Buffer => <>, + Name_Len => Dir_Name'Length, + Type_Of_File => Tmp_Type); + Entity.Name_Buffer (1 .. Dir_Name'Length) := Dir_Name; + Next_Index := Inode_Index + Unsigned_64 (Dir.Entry_Count); + Success := True; + return; + end; + + <> + Next_Index := 0; + Success := False; + end Inner_Read_Entry; + + procedure RW_Superblock + (Handle : Device_Handle; + Offset : Unsigned_64; + Super : in out Superblock; + Write_Operation : Boolean; + Success : out Boolean) + is + Ret_Count : Natural; + Super_Data : Operation_Data (1 .. Superblock'Size / 8) + with Import, Address => Super'Address; + begin + if Write_Operation then + Devices.Write + (Handle => Handle, + Offset => Offset, + Data => Super_Data, + Ret_Count => Ret_Count, + Success => Success); + else + Devices.Read + (Handle => Handle, + Offset => Offset, + Data => Super_Data, + Ret_Count => Ret_Count, + Success => Success); + end if; + + Success := Success and (Ret_Count = Super_Data'Length); + end RW_Superblock; + + procedure RW_Block_Group_Descriptor + (Data : EXT_Data_Acc; + Descriptor_Index : Unsigned_32; + Result : in out Block_Group_Descriptor; + Write_Operation : Boolean; + Success : out Boolean) + is + Descr_Size : constant Natural := Block_Group_Descriptor'Size / 8; + Offset : Unsigned_32 := Data.Block_Size; + Ret_Count : Natural; + Result_Data : Operation_Data (1 .. Descr_Size) + with Import, Address => Result'Address; + begin + if Data.Block_Size < 2048 then + Offset := Offset * 2; + end if; + + Offset := Offset + (Unsigned_32 (Descr_Size) * Descriptor_Index); + + if Write_Operation then + Devices.Write + (Handle => Data.Handle, + Offset => Unsigned_64 (Offset), + Data => Result_Data, + Ret_Count => Ret_Count, + Success => Success); + else + Devices.Read + (Handle => Data.Handle, + Offset => Unsigned_64 (Offset), + Data => Result_Data, + Ret_Count => Ret_Count, + Success => Success); + end if; + + if Success and (Ret_Count = Result_Data'Length) then + Success := True; + else + Act_On_Policy (Data, "block group descriptor RW failure"); + Success := False; + end if; + end RW_Block_Group_Descriptor; + + procedure RW_Inode + (Data : EXT_Data_Acc; + Inode_Index : Unsigned_32; + Result : in out Inode; + Write_Operation : Boolean; + Success : out Boolean) + is + Table_Index, Descriptor_Index : Unsigned_32; + Block_Descriptor : Block_Group_Descriptor; + Offset : Unsigned_32; + Ret_Count : Natural; + Result_Data : Operation_Data (1 .. Inode'Size / 8) + with Import, Address => Result'Address; + begin + Table_Index := (Inode_Index - 1) mod Data.Super.Inodes_Per_Group; + Descriptor_Index := (Inode_Index - 1) / Data.Super.Inodes_Per_Group; + + RW_Block_Group_Descriptor + (Data => Data, + Descriptor_Index => Descriptor_Index, + Result => Block_Descriptor, + Write_Operation => False, + Success => Success); + if not Success then + return; + end if; + + Offset := Block_Descriptor.Inode_Table_Block * Data.Block_Size + + Table_Index * Unsigned_32 (Data.Super.Inode_Size); + + if Write_Operation then + Devices.Write + (Handle => Data.Handle, + Offset => Unsigned_64 (Offset), + Data => Result_Data, + Ret_Count => Ret_Count, + Success => Success); + else + Devices.Read + (Handle => Data.Handle, + Offset => Unsigned_64 (Offset), + Data => Result_Data, + Ret_Count => Ret_Count, + Success => Success); + end if; + if Success and (Ret_Count = Result_Data'Length) then + Success := True; + else + Act_On_Policy (Data, "inode RW failure"); + Success := False; + end if; + end RW_Inode; + + function Get_Block_Index + (FS_Data : EXT_Data_Acc; + Inode_Data : Inode; + Searched : Unsigned_32) return Unsigned_32 + is + Adjusted_Block : Unsigned_32 := Searched; + Block_Level : constant Unsigned_32 := FS_Data.Block_Size / 4; + Block_Index : Unsigned_32; + Single_Index : Unsigned_32; + Indirect_Offset : Unsigned_32; + Indirect_Block : Unsigned_32; + Double_Indirect : Unsigned_32; + Single_Indirect_Index : Unsigned_32; + + Single_Indirect_Index_Data : Operation_Data (1 .. 4) + with Import, Address => Single_Indirect_Index'Address; + Indirect_Block_Data : Operation_Data (1 .. 4) + with Import, Address => Indirect_Block'Address; + Block_Index_Data : Operation_Data (1 .. 4) + with Import, Address => Block_Index'Address; + + Discard_1 : Natural; + Discard_2 : Boolean; + begin + if Adjusted_Block < 12 then + return Inode_Data.Blocks (Natural (Searched)); + else + Adjusted_Block := Searched - 12; + end if; + + if Adjusted_Block >= Block_Level then + Adjusted_Block := Adjusted_Block - Block_Level; + Single_Index := Adjusted_Block / Block_Level; + Indirect_Offset := Adjusted_Block mod Block_Level; + Indirect_Block := 0; + + if Single_Index >= Block_Level then + Adjusted_Block := Adjusted_Block - (Block_Level ** 2); + Double_Indirect := Adjusted_Block / Block_Level; + Indirect_Offset := Adjusted_Block mod Block_Level; + Single_Indirect_Index := 0; + + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Inode_Data.Blocks (14) * + FS_Data.Block_Size + Double_Indirect * 4), + Data => Single_Indirect_Index_Data, + Ret_Count => Discard_1, + Success => Discard_2); + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Double_Indirect * FS_Data.Block_Size + + Single_Indirect_Index * 4), + Data => Indirect_Block_Data, + Ret_Count => Discard_1, + Success => Discard_2); + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Indirect_Block * FS_Data.Block_Size + + Indirect_Offset * 4), + Data => Block_Index_Data, + Ret_Count => Discard_1, + Success => Discard_2); + return Block_Index; + end if; + + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Inode_Data.Blocks (13) * + FS_Data.Block_Size + Single_Index * 4), + Data => Indirect_Block_Data, + Ret_Count => Discard_1, + Success => Discard_2); + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Indirect_Block * FS_Data.Block_Size + + Indirect_Offset * 4), + Data => Block_Index_Data, + Ret_Count => Discard_1, + Success => Discard_2); + return Block_Index; + end if; + + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Inode_Data.Blocks (12) * FS_Data.Block_Size + + Adjusted_Block * 4), + Data => Block_Index_Data, + Ret_Count => Discard_1, + Success => Discard_2); + return Block_Index; + end Get_Block_Index; + + procedure Read_From_Inode + (FS_Data : EXT_Data_Acc; + Inode_Data : Inode; + Inode_Size : Unsigned_64; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean) + is + Final_Count : Natural := Data'Length; + Final_Offset : Unsigned_64 := Offset; + Block_Searched : Unsigned_64; + Block_Index : Unsigned_32; + Step_Size : Unsigned_64; + Bytes_Read : Natural := 0; + begin + if Offset > Inode_Size then + Ret_Count := 0; + Success := True; + return; + elsif Offset + Data'Length > Inode_Size then + Final_Count := Natural (Inode_Size - Offset); + end if; + + while Bytes_Read < Final_Count loop + Final_Offset := (Offset + Unsigned_64 (Bytes_Read)); + Block_Searched := Final_Offset / Unsigned_64 (FS_Data.Block_Size); + Final_Offset := Final_Offset mod Unsigned_64 (FS_Data.Block_Size); + Step_Size := Unsigned_64 (Final_Count) - Unsigned_64 (Bytes_Read); + + if Step_Size > Unsigned_64 (FS_Data.Block_Size) - Final_Offset then + Step_Size := Unsigned_64 (FS_Data.Block_Size) - Final_Offset; + end if; + + Block_Index := Get_Block_Index + (FS_Data, Inode_Data, Unsigned_32 (Block_Searched)); + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Block_Index) * + Unsigned_64 (FS_Data.Block_Size) + Final_Offset, + Data => Data (Data'First + Bytes_Read .. + Data'First + Bytes_Read + + Natural (Step_Size) - 1), + Ret_Count => Ret_Count, + Success => Success); + if not Success then + Act_On_Policy (FS_Data, "Error reading an inode"); + return; + end if; + + Bytes_Read := Bytes_Read + Natural (Step_Size); + end loop; + + Ret_Count := Final_Count; + Success := True; + end Read_From_Inode; + + procedure Write_To_Inode + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Inode_Size : Unsigned_64; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean) + is + Final_Offset : Unsigned_64 := Offset; + Block_Searched : Unsigned_64; + Block_Index : Unsigned_32; + Step_Size : Unsigned_64; + Bytes_Read : Natural := 0; + begin + if Offset + Unsigned_64 (Data'Length) > Inode_Size then + Grow_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Start => Offset, + Count => Unsigned_64 (Data'Length), + Success => Success); + if not Success then + goto Error_Return; + end if; + Set_Size + (Ino => Inode_Data, + New_Size => Offset + Unsigned_64 (Data'Length), + Is_64_Bits => FS_Data.Has_64bit_Filesizes, + Success => Success); + if not Success then + goto Error_Return; + end if; + RW_Inode + (Data => FS_Data, + Inode_Index => Inode_Num, + Result => Inode_Data, + Write_Operation => True, + Success => Success); + if not Success then + goto Error_Return; + end if; + end if; + + while Bytes_Read < Data'Length loop + Final_Offset := (Offset + Unsigned_64 (Bytes_Read)); + Block_Searched := Final_Offset / Unsigned_64 (FS_Data.Block_Size); + Final_Offset := Final_Offset mod Unsigned_64 (FS_Data.Block_Size); + Step_Size := Unsigned_64 (Data'Length) - Unsigned_64 (Bytes_Read); + + if Step_Size > Unsigned_64 (FS_Data.Block_Size) - Final_Offset then + Step_Size := Unsigned_64 (FS_Data.Block_Size) - Final_Offset; + end if; + + Block_Index := Get_Block_Index + (FS_Data, Inode_Data, Unsigned_32 (Block_Searched)); + Devices.Write + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Block_Index) * + Unsigned_64 (FS_Data.Block_Size) + Final_Offset, + Data => Data (Data'First + Bytes_Read .. + Data'First + Bytes_Read + + Natural (Step_Size) - 1), + Ret_Count => Ret_Count, + Success => Success); + if not Success then + goto Error_Return; + end if; + + Bytes_Read := Bytes_Read + Natural (Step_Size); + end loop; + + Ret_Count := Data'Length; + Success := True; + return; + + <> + Act_On_Policy (FS_Data, "Error while writing to an inode"); + Ret_Count := 0; + Success := False; + end Write_To_Inode; + + procedure Grow_Inode + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Start : Unsigned_64; + Count : Unsigned_64; + Success : out Boolean) + is + Offset : constant Unsigned_64 := + Shift_Right (Start and not Unsigned_64 (FS_Data.Block_Size - 1), + Natural (10 + FS_Data.Super.Block_Size_Log)); + BCount : constant Unsigned_64 := + Shift_Right ((Start and Unsigned_64 (FS_Data.Block_Size - 1)) + + Count + Unsigned_64 (FS_Data.Block_Size - 1), + Natural (10 + FS_Data.Super.Block_Size_Log)); + begin + Assign_Inode_Blocks + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Start_Blk => Unsigned_32 (Offset), + Block_Count => Unsigned_32 (BCount), + Success => Success); + end Grow_Inode; + + procedure Assign_Inode_Blocks + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Start_Blk : Unsigned_32; + Block_Count : Unsigned_32; + Success : out Boolean) + is + Ret_Blk : Unsigned_32; + begin + for I in 0 .. Block_Count - 1 loop + Ret_Blk := Get_Block_Index (FS_Data, Inode_Data, Start_Blk + I); + if Ret_Blk = 0 then + Allocate_Block_For_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Ret_Block => Ret_Blk, + Success => Success); + if not Success then + return; + end if; + Wire_Inode_Blocks + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Block_Index => Start_Blk + I, + Wired_Block => Ret_Blk, + Success => Success); + if not Success then + return; + end if; + end if; + end loop; + + RW_Inode + (Data => FS_Data, + Inode_Index => Inode_Num, + Result => Inode_Data, + Write_Operation => True, + Success => Success); + end Assign_Inode_Blocks; + + procedure Wire_Inode_Blocks + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Block_Index : Unsigned_32; + Wired_Block : Unsigned_32; + Success : out Boolean) + is + Adjusted_Block : Unsigned_32 := Block_Index; + Block_Level : constant Unsigned_32 := FS_Data.Block_Size / 4; + DBlock : Unsigned_32 := Wired_Block; + Single_Index : Unsigned_32; + Indirect_Offset : Unsigned_32; + Indirect_Block : Unsigned_32; + Double_Indirect : Unsigned_32; + Single_Indirect_Index : Unsigned_32; + Temp : Unsigned_32; + + Single_Indirect_Index_Data : Operation_Data (1 .. 4) + with Import, Address => Single_Indirect_Index'Address; + Indirect_Block_Data : Operation_Data (1 .. 4) + with Import, Address => Indirect_Block'Address; + DBlock_Data : Operation_Data (1 .. 4) + with Import, Address => DBlock'Address; + + Discard_1 : Natural; + Discard_2 : Boolean; + begin + if Adjusted_Block < 12 then + Inode_Data.Blocks (Natural (Adjusted_Block)) := Wired_Block; + Success := True; + return; + else + Adjusted_Block := Adjusted_Block - 12; + end if; + + if Adjusted_Block >= Block_Level then + Adjusted_Block := Adjusted_Block - Block_Level; + Single_Index := Adjusted_Block / Block_Level; + Indirect_Offset := Adjusted_Block mod Block_Level; + Indirect_Block := 0; + + if Single_Index >= Block_Level then + Adjusted_Block := Adjusted_Block - (Block_Level ** 2); + Double_Indirect := Adjusted_Block / Block_Level; + Indirect_Offset := Adjusted_Block mod Block_Level; + Single_Indirect_Index := 0; + + if Inode_Data.Blocks (14) = 0 then + Allocate_Block_For_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Ret_Block => Temp, + Success => Discard_2); + Inode_Data.Blocks (14) := Temp; + RW_Inode + (Data => FS_Data, + Inode_Index => Inode_Num, + Result => Inode_Data, + Write_Operation => True, + Success => Discard_2); + end if; + + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Inode_Data.Blocks (14) * + FS_Data.Block_Size + Double_Indirect * 4), + Data => Single_Indirect_Index_Data, + Ret_Count => Discard_1, + Success => Discard_2); + + if Single_Indirect_Index = 0 then + Allocate_Block_For_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Ret_Block => Single_Indirect_Index, + Success => Discard_2); + + Devices.Write + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Inode_Data.Blocks (14) * + FS_Data.Block_Size + Double_Indirect * 4), + Data => Single_Indirect_Index_Data, + Ret_Count => Discard_1, + Success => Discard_2); + end if; + + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Double_Indirect * FS_Data.Block_Size + + Single_Indirect_Index * 4), + Data => Indirect_Block_Data, + Ret_Count => Discard_1, + Success => Discard_2); + + if Indirect_Block = 0 then + Allocate_Block_For_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Ret_Block => Temp, + Success => Discard_2); + + Devices.Write + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Double_Indirect * + FS_Data.Block_Size + + Single_Indirect_Index * 4), + Data => Indirect_Block_Data, + Ret_Count => Discard_1, + Success => Discard_2); + + Indirect_Block := Temp; + end if; + + Devices.Write + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Indirect_Block * FS_Data.Block_Size + + Indirect_Offset * 4), + Data => DBlock_Data, + Ret_Count => Discard_1, + Success => Discard_2); + Success := True; + return; + end if; + + if Inode_Data.Blocks (13) = 0 then + Allocate_Block_For_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Ret_Block => Temp, + Success => Discard_2); + Inode_Data.Blocks (13) := Temp; + RW_Inode + (Data => FS_Data, + Inode_Index => Inode_Num, + Result => Inode_Data, + Write_Operation => True, + Success => Discard_2); + end if; + + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Inode_Data.Blocks (13) * + FS_Data.Block_Size + Single_Index * 4), + Data => Indirect_Block_Data, + Ret_Count => Discard_1, + Success => Discard_2); + + if Indirect_Block = 0 then + Allocate_Block_For_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Ret_Block => Indirect_Block, + Success => Discard_2); + + Devices.Write + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Inode_Data.Blocks (13) * + FS_Data.Block_Size + + Single_Index * 4), + Data => Indirect_Block_Data, + Ret_Count => Discard_1, + Success => Discard_2); + end if; + + Devices.Write + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Indirect_Block * FS_Data.Block_Size + + Indirect_Offset * 4), + Data => DBlock_Data, + Ret_Count => Discard_1, + Success => Discard_2); + Success := True; + return; + end if; + + if Inode_Data.Blocks (12) = 0 then + Allocate_Block_For_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Num => Inode_Num, + Ret_Block => Temp, + Success => Discard_2); + Inode_Data.Blocks (12) := Temp; + RW_Inode + (Data => FS_Data, + Inode_Index => Inode_Num, + Result => Inode_Data, + Write_Operation => True, + Success => Discard_2); + end if; + + Devices.Write + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Inode_Data.Blocks (12) * FS_Data.Block_Size + + Adjusted_Block * 4), + Data => DBlock_Data, + Ret_Count => Discard_1, + Success => Discard_2); + Success := True; + return; + end Wire_Inode_Blocks; + + procedure Allocate_Block_For_Inode + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Ret_Block : out Unsigned_32; + Success : out Boolean) + is + Ret_Count : Natural; + Desc : Block_Group_Descriptor; + Curr_Block : Unsigned_32; + Bitmap : Operation_Data_Acc + := new Operation_Data (1 .. Natural (FS_Data.Block_Size)); + begin + for I in 0 .. FS_Data.Super.Block_Count loop + RW_Block_Group_Descriptor + (Data => FS_Data, + Descriptor_Index => I, + Result => Desc, + Write_Operation => False, + Success => Success); + if not Success then + goto Error_Return; + end if; + + if Desc.Unallocated_Blocks = 0 then + goto Next_Iteration; + end if; + + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Desc.Block_Usage_Bitmap_Block * + FS_Data.Block_Size), + Data => Bitmap.all, + Ret_Count => Ret_Count, + Success => Success); + if not Success then + goto Error_Return; + end if; + + Curr_Block := 0; + for J in Bitmap'Range loop + if Bitmap (J) = 16#FF# then + goto Next_Next_Iteration; + end if; + for Bit in 0 .. 7 loop + if (Bitmap (J) and 2 ** Bit) = 0 then + Bitmap (J) := Bitmap (J) or 2 ** Bit; + Curr_Block := (I * FS_Data.Super.Blocks_Per_Group) + + Unsigned_32 (J) * 8 + Unsigned_32 (Bit); + goto End_Search_Loop; + end if; + end loop; + <> + end loop; + <> + if Curr_Block = 0 then + goto Next_Iteration; + end if; + + Devices.Write + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Desc.Block_Usage_Bitmap_Block * + FS_Data.Block_Size), + Data => Bitmap.all, + Ret_Count => Ret_Count, + Success => Success); + if not Success then + goto Error_Return; + end if; + + FS_Data.Super.Unallocated_Block_Count := + FS_Data.Super.Unallocated_Block_Count - 1; + Desc.Unallocated_Blocks := Desc.Unallocated_Blocks - 1; + + Inode_Data.Sectors := Inode_Data.Sectors + (FS_Data.Block_Size / + Unsigned_32 (Get_Block_Size (FS_Data.Handle))); + RW_Inode + (Data => FS_Data, + Inode_Index => Inode_Num, + Result => Inode_Data, + Write_Operation => True, + Success => Success); + if not Success then + goto Error_Return; + end if; + + RW_Block_Group_Descriptor + (Data => FS_Data, + Descriptor_Index => I, + Result => Desc, + Write_Operation => True, + Success => Success); + if not Success then + goto Error_Return; + end if; + Ret_Block := Curr_Block; + Free (Bitmap); + Success := True; + return; + <> + end loop; + + <> + Free (Bitmap); + Ret_Block := 0; + Success := False; + end Allocate_Block_For_Inode; + + procedure Allocate_Inode + (FS_Data : EXT_Data_Acc; + Inode_Num : out Unsigned_32; + Success : out Boolean) + is + Ret_Count : Natural; + Desc : Block_Group_Descriptor; + Curr_Block : Unsigned_32; + Bitmap : Operation_Data_Acc + := new Operation_Data (1 .. Natural (FS_Data.Block_Size)); + begin + for I in 0 .. FS_Data.Super.Inode_Count loop + RW_Block_Group_Descriptor + (Data => FS_Data, + Descriptor_Index => I, + Result => Desc, + Write_Operation => False, + Success => Success); + if not Success then + goto Error_Return; + end if; + + if Desc.Unallocated_Inodes = 0 then + goto Next_Iteration; + end if; + + Devices.Read + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Desc.Inode_Usage_Bitmap_Block * + FS_Data.Block_Size), + Data => Bitmap.all, + Ret_Count => Ret_Count, + Success => Success); + if not Success then + goto Error_Return; + end if; + + Curr_Block := 0; + for J in Bitmap'Range loop + if Bitmap (J) = 16#FF# then + goto Next_Next_Iteration; + end if; + for Bit in 0 .. 7 loop + if (Bitmap (J) and 2 ** Bit) = 0 then + Curr_Block := (I * FS_Data.Super.Inodes_Per_Group) + + Unsigned_32 (J) * 8 + Unsigned_32 (Bit); + if Curr_Block > FS_Data.Super.First_Non_Reserved and + Curr_Block > 11 + then + Bitmap (J) := Bitmap (J) or 2 ** Bit; + goto End_Search_Loop; + end if; + end if; + end loop; + <> + end loop; + <> + if Curr_Block = 0 then + goto Next_Iteration; + end if; + + Devices.Write + (Handle => FS_Data.Handle, + Offset => Unsigned_64 (Desc.Inode_Usage_Bitmap_Block * + FS_Data.Block_Size), + Data => Bitmap.all, + Ret_Count => Ret_Count, + Success => Success); + if not Success then + goto Error_Return; + end if; + + FS_Data.Super.Unallocated_Inode_Count := + FS_Data.Super.Unallocated_Inode_Count - 1; + Desc.Unallocated_Inodes := Desc.Unallocated_Inodes - 1; + + RW_Block_Group_Descriptor + (Data => FS_Data, + Descriptor_Index => I, + Result => Desc, + Write_Operation => True, + Success => Success); + if not Success then + goto Error_Return; + end if; + Inode_Num := Curr_Block; + Free (Bitmap); + Success := True; + return; + <> + end loop; + + <> + Inode_Num := 0; + Free (Bitmap); + Success := False; + end Allocate_Inode; + + procedure Add_Directory_Entry + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Size : Unsigned_64; + Inode_Index : Unsigned_32; + Added_Index : Unsigned_32; + Dir_Type : Unsigned_8; + Name : String; + Success : out Boolean) + is + Buffer : Operation_Data_Acc; + Required : Unsigned_64; + Offset : Natural; + Contracted : Unsigned_64; + Available : Unsigned_64; + Ret_Count : Natural; + begin + Buffer := new Operation_Data (1 .. Natural (Inode_Size)); + Read_From_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Size => Inode_Size, + Offset => 0, + Data => Buffer.all, + Ret_Count => Ret_Count, + Success => Success); + if not Success or Ret_Count /= Buffer'Length then + Success := False; + goto Cleanup; + end if; + + Required := ((Directory_Entry'Size / 8) + Name'Length + 4) and not 3; + Offset := 0; + + while Offset < Natural (Inode_Size) loop + declare + Ent : Directory_Entry + with Import, Address => Buffer (Buffer'First + Offset)'Address; + begin + Contracted := + ((Directory_Entry'Size / 8) + + Unsigned_64 (Ent.Name_Length) + 3) and not 3; + Available := Unsigned_64 (Ent.Entry_Count) - Contracted; + + if Available >= Required then + Ent.Entry_Count := Unsigned_16 (Contracted); + if Offset + Buffer'First + Offset + Natural (Contracted) > + Buffer'Length + then + Success := False; + goto Cleanup; + end if; + + declare + Ent2 : Directory_Entry with Import, Address => + Buffer (Buffer'First + Offset + + Natural (Contracted))'Address; + Name_Buf : String (1 .. Name'Length) with Address => + Buffer (Buffer'First + Offset + Natural (Contracted) + + (Directory_Entry'Size / 8))'Address, Import; + begin + Ent2 := + (Inode_Index => Added_Index, + Entry_Count => Unsigned_16 (Available), + Name_Length => Name'Length, + Dir_Type => Dir_Type); + Name_Buf := Name; + + Write_To_Inode + (FS_Data => FS_Data, + Inode_Num => Inode_Index, + Inode_Data => Inode_Data, + Inode_Size => Inode_Size, + Offset => 0, + Data => Buffer.all, + Ret_Count => Ret_Count, + Success => Success); + if not Success or Ret_Count /= Buffer'Length then + Success := False; + end if; + goto Cleanup; + end; + end if; + Offset := Offset + Natural (Ent.Entry_Count); + end; + end loop; + + Success := False; + + <> + Free (Buffer); + end Add_Directory_Entry; + + procedure Delete_Directory_Entry + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Size : Unsigned_64; + Inode_Index : Unsigned_32; + Added_Index : Unsigned_32; + Success : out Boolean) + is + Buffer : Operation_Data_Acc; + Offset, Offset2, Ret_Count : Natural; + begin + Buffer := new Operation_Data (1 .. Natural (Inode_Size)); + Read_From_Inode + (FS_Data => FS_Data, + Inode_Data => Inode_Data, + Inode_Size => Inode_Size, + Offset => 0, + Data => Buffer.all, + Ret_Count => Ret_Count, + Success => Success); + if not Success or Ret_Count /= Buffer'Length then + Success := False; + goto Cleanup; + end if; + + Offset := 0; + Offset2 := 0; + + while Offset < Natural (Inode_Size) loop + declare + Ent : Directory_Entry + with Import, Address => Buffer (Buffer'First + Offset)'Address; + Ent2 : Directory_Entry + with Import, Address => Buffer (Buffer'First + Offset2)'Address; + begin + if Ent.Inode_Index = Added_Index then + Ent2.Entry_Count := Ent2.Entry_Count + Ent.Entry_Count; + Write_To_Inode + (FS_Data => FS_Data, + Inode_Num => Inode_Index, + Inode_Data => Inode_Data, + Inode_Size => Inode_Size, + Offset => 0, + Data => Buffer.all, + Ret_Count => Ret_Count, + Success => Success); + if not Success or Ret_Count /= Buffer'Length then + Success := False; + end if; + goto Cleanup; + end if; + Offset2 := Offset; + Offset := Offset + Natural (Ent.Entry_Count); + end; + end loop; + + Success := False; + + <> + Free (Buffer); + end Delete_Directory_Entry; + + function Get_Dir_Type (Dir_Type : Unsigned_8) return File_Type is + begin + case Dir_Type is + when 1 => return File_Regular; + when 2 => return File_Directory; + when 3 => return File_Character_Device; + when 4 => return File_Block_Device; + when others => return File_Symbolic_Link; + end case; + end Get_Dir_Type; + + function Get_Dir_Type (T : File_Type) return Unsigned_8 is + begin + case T is + when File_Regular => return 1; + when File_Directory => return 2; + when File_Character_Device => return 3; + when File_Block_Device => return 4; + when others => return 5; + end case; + end Get_Dir_Type; + + function Get_Permissions (T : File_Type) return Unsigned_16 is + begin + case T is + when File_Character_Device => return 16#2000#; + when File_Directory => return 16#4000#; + when File_Block_Device => return 16#6000#; + when File_Regular => return 16#8000#; + when File_Symbolic_Link => return 16#A000#; + end case; + end Get_Permissions; + + function Get_Inode_Type (Perms : Unsigned_16) return File_Type is + begin + case Perms and 16#F000# is + when 16#2000# => return File_Character_Device; + when 16#4000# => return File_Directory; + when 16#6000# => return File_Block_Device; + when 16#8000# => return File_Regular; + when 16#A000# => return File_Symbolic_Link; + when others => return File_Regular; -- ??? + end case; + end Get_Inode_Type; + + function Get_Inode_Type + (T : File_Type; + Mode : Unsigned_32) return Unsigned_16 + is + Ret : constant Unsigned_16 := Unsigned_16 (Mode and 16#FFF#); + begin + case T is + when File_Character_Device => return Ret or 16#2000#; + when File_Directory => return Ret or 16#4000#; + when File_Block_Device => return Ret or 16#6000#; + when File_Symbolic_Link => return Ret or 16#A000#; + when others => return Ret or 16#8000#; + end case; + end Get_Inode_Type; + + function Get_Size (Ino : Inode; Is_64_Bits : Boolean) return Unsigned_64 is + begin + if Is_64_Bits then + return Shift_Left (Unsigned_64 (Ino.Size_High), 32) or + Shift_Left (Unsigned_64 (Ino.Size_Low), 0); + else + return Unsigned_64 (Ino.Size_Low); + end if; + end Get_Size; + + procedure Set_Size + (Ino : in out Inode; + New_Size : Unsigned_64; + Is_64_Bits : Boolean; + Success : out Boolean) + is + L32 : constant Unsigned_32 := Unsigned_32 (New_Size and 16#FFFFFFFF#); + H32 : constant Unsigned_32 := Unsigned_32 (Shift_Right (New_Size, 32)); + begin + if Is_64_Bits then + Ino.Size_Low := L32; + Ino.Size_High := H32; + Success := True; + else + Ino.Size_Low := L32; + Success := H32 = 0; + end if; + end Set_Size; + + procedure Act_On_Policy (Data : EXT_Data_Acc; Message : String) is + begin + case Data.Super.Error_Policy is + when Policy_Ignore => + Lib.Messages.Put_Line (Message); + when Policy_Remount_RO => + Lib.Messages.Put_Line (Message); + Data.Is_Read_Only := True; + when Policy_Panic => + Lib.Panic.Hard_Panic (Message); + when others => + Lib.Panic.Hard_Panic ("ext is dead, and we killed it"); + end case; + end Act_On_Policy; + + function Check_User_Access + (User : Unsigned_32; + Inod : Inode; + Check_Read : Boolean; + Check_Write : Boolean; + Check_Exec : Boolean) return Boolean + is + begin + if User /= 0 then + if Unsigned_32 (Inod.UID) = User then + if (Check_Read and then ((Inod.Permissions and 8#400#) = 0)) or + (Check_Write and then ((Inod.Permissions and 8#200#) = 0)) or + (Check_Exec and then ((Inod.Permissions and 8#100#) = 0)) + then + return False; + end if; + else + if (Check_Read and then ((Inod.Permissions and 8#004#) = 0)) or + (Check_Write and then ((Inod.Permissions and 8#002#) = 0)) or + (Check_Exec and then ((Inod.Permissions and 8#001#) = 0)) + then + return False; + end if; + end if; + end if; + + return True; + end Check_User_Access; +end VFS.EXT; diff --git a/source/vfs/vfs-ext.ads b/source/vfs/vfs-ext.ads new file mode 100644 index 0000000..25b9e80 --- /dev/null +++ b/source/vfs/vfs-ext.ads @@ -0,0 +1,542 @@ +-- vfs-ext.ads: Linux Extended FS driver. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System; +with Lib.Synchronization; + +package VFS.EXT is + procedure Probe + (Handle : Device_Handle; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Data_Addr : out System.Address); + + procedure Remount + (FS : System.Address; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean); + + procedure Unmount (FS : in out System.Address); + ---------------------------------------------------------------------------- + procedure Get_Block_Size (FS : System.Address; Size : out Unsigned_64); + + procedure Get_Fragment_Size (FS : System.Address; Size : out Unsigned_64); + + procedure Get_Size (FS : System.Address; Size : out Unsigned_64); + + procedure Get_Inode_Count (FS : System.Address; Count : out Unsigned_64); + + procedure Get_Free_Blocks + (FS : System.Address; + Free_Blocks : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64); + + procedure Get_Free_Inodes + (FS : System.Address; + Free_Inodes : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64); + + function Get_Max_Length (FS : System.Address) return Unsigned_64; + ---------------------------------------------------------------------------- + procedure Create_Node + (FS : System.Address; + Relative : File_Inode_Number; + Path : String; + Typ : File_Type; + Mode : File_Mode; + User : Unsigned_32; + Status : out FS_Status); + + procedure Create_Symbolic_Link + (FS : System.Address; + Relative : File_Inode_Number; + Path : String; + Target : String; + Mode : Unsigned_32; + User : Unsigned_32; + Status : out FS_Status); + + procedure Create_Hard_Link + (FS : System.Address; + Relative_Path : File_Inode_Number; + Path : String; + Relative_Target : File_Inode_Number; + Target : String; + User : Unsigned_32; + Status : out FS_Status); + + procedure Rename + (FS : System.Address; + Relative_Source : File_Inode_Number; + Source : String; + Relative_Target : File_Inode_Number; + Target : String; + Keep : Boolean; + User : Unsigned_32; + Status : out FS_Status); + + procedure Unlink + (FS : System.Address; + Relative : File_Inode_Number; + Path : String; + User : Unsigned_32; + Status : out FS_Status); + + procedure Read_Entries + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Natural; + Entities : out Directory_Entities; + Ret_Count : out Natural; + Success : out FS_Status); + + procedure Read_Symbolic_Link + (FS_Data : System.Address; + Ino : File_Inode_Number; + Path : out String; + Ret_Count : out Natural; + Success : out FS_Status); + + procedure Read + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out FS_Status); + + procedure Write + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out FS_Status); + + procedure Stat + (Data : System.Address; + Ino : File_Inode_Number; + S : out File_Stat; + Success : out FS_Status); + + procedure Truncate + (Data : System.Address; + Ino : File_Inode_Number; + New_Size : Unsigned_64; + Status : out FS_Status); + + procedure IO_Control + (Data : System.Address; + Ino : File_Inode_Number; + Req : Unsigned_64; + Arg : System.Address; + Status : out FS_Status); + + procedure Change_Mode + (Data : System.Address; + Ino : File_Inode_Number; + Mode : File_Mode; + Status : out FS_Status); + + procedure Change_Owner + (Data : System.Address; + Ino : File_Inode_Number; + Owner : Unsigned_32; + Group : Unsigned_32; + Status : out FS_Status); + + procedure Change_Access_Times + (Data : System.Address; + Ino : File_Inode_Number; + Access_Seconds : Unsigned_64; + Access_Nanoseconds : Unsigned_64; + Modify_Seconds : Unsigned_64; + Modify_Nanoseconds : Unsigned_64; + Status : out FS_Status); + + function Synchronize (Data : System.Address) return FS_Status; + + function Synchronize + (Data : System.Address; + Ino : File_Inode_Number; + Data_Only : Boolean) return FS_Status; + +private + + State_Clean : constant := 1; + Policy_Ignore : constant := 1; + Policy_Remount_RO : constant := 2; + Policy_Panic : constant := 3; + EXT_Signature : constant := 16#EF53#; + Main_Superblock_Offset : constant := 512 * 2; + Required_Compression : constant := 1; + Required_Directory_Types : constant := 2; + Required_Journal_Replay : constant := 4; + Required_Journal_Device : constant := 8; + RO_Sparse_Superblocks : constant := 1; + RO_64bit_Filesize : constant := 2; + RO_Binary_Trees : constant := 4; + type Superblock is record + Inode_Count : Unsigned_32; + Block_Count : Unsigned_32; + Reserved_Count : Unsigned_32; + Unallocated_Block_Count : Unsigned_32; + Unallocated_Inode_Count : Unsigned_32; + Block_Containing_Super : Unsigned_32; + Block_Size_Log : Unsigned_32; + Fragment_Size_Log : Unsigned_32; + Blocks_Per_Group : Unsigned_32; + Fragments_Per_Group : Unsigned_32; + Inodes_Per_Group : Unsigned_32; + Last_Mount_Epoch : Unsigned_32; + Last_Write_Epoch : Unsigned_32; + Mounts_Since_Check : Unsigned_16; + Max_Mounts_Since_Check : Unsigned_16; + Signature : Unsigned_16; + Filesystem_State : Unsigned_16; + Error_Policy : Unsigned_16; + Minor_Version : Unsigned_16; + Last_Check_Epoch : Unsigned_32; + Interval_Between_Checks : Unsigned_32; + Operating_System_ID : Unsigned_32; + Major_Version : Unsigned_32; + Reserved_Blocks_User_ID : Unsigned_16; + Reserved_Blocks_Group : Unsigned_16; + First_Non_Reserved : Unsigned_32; + Inode_Size : Unsigned_16; + Block_Group_Of_Super : Unsigned_16; + Optional_Features : Unsigned_32; + Required_Features : Unsigned_32; + RO_If_Not_Features : Unsigned_32; + FS_ID_High : Unsigned_64; + FS_ID_Low : Unsigned_64; + Volume_Name : String (1 .. 16); + Last_Mountpoint : String (1 .. 64); + Compression_Algorithm : Unsigned_32; + Preallocate_Files : Unsigned_8; + Preallocate_Dirs : Unsigned_8; + Unused : Unsigned_16; + Journal_ID_High : Unsigned_64; + Journal_ID_Low : Unsigned_64; + Journal_Inode : Unsigned_32; + Journal_Device : Unsigned_32; + Head_Of_Orphan_Inodes : Unsigned_32; + end record with Size => 1888; + for Superblock use record + Inode_Count at 0 range 0 .. 31; + Block_Count at 0 range 32 .. 63; + Reserved_Count at 0 range 64 .. 95; + Unallocated_Block_Count at 0 range 96 .. 127; + Unallocated_Inode_Count at 0 range 128 .. 159; + Block_Containing_Super at 0 range 160 .. 191; + Block_Size_Log at 0 range 192 .. 223; + Fragment_Size_Log at 0 range 224 .. 255; + Blocks_Per_Group at 0 range 256 .. 287; + Fragments_Per_Group at 0 range 288 .. 319; + Inodes_Per_Group at 0 range 320 .. 351; + Last_Mount_Epoch at 0 range 352 .. 383; + Last_Write_Epoch at 0 range 384 .. 415; + Mounts_Since_Check at 0 range 416 .. 431; + Max_Mounts_Since_Check at 0 range 432 .. 447; + Signature at 0 range 448 .. 463; + Filesystem_State at 0 range 464 .. 479; + Error_Policy at 0 range 480 .. 495; + Minor_Version at 0 range 496 .. 511; + Last_Check_Epoch at 0 range 512 .. 543; + Interval_Between_Checks at 0 range 544 .. 575; + Operating_System_ID at 0 range 576 .. 607; + Major_Version at 0 range 608 .. 639; + Reserved_Blocks_User_ID at 0 range 640 .. 655; + Reserved_Blocks_Group at 0 range 656 .. 671; + First_Non_Reserved at 0 range 672 .. 703; + Inode_Size at 0 range 704 .. 719; + Block_Group_Of_Super at 0 range 720 .. 735; + Optional_Features at 0 range 736 .. 767; + Required_Features at 0 range 768 .. 799; + RO_If_Not_Features at 0 range 800 .. 831; + FS_ID_High at 0 range 832 .. 895; + FS_ID_Low at 0 range 896 .. 959; + Volume_Name at 0 range 960 .. 1087; + Last_Mountpoint at 0 range 1088 .. 1599; + Compression_Algorithm at 0 range 1600 .. 1631; + Preallocate_Files at 0 range 1632 .. 1639; + Preallocate_Dirs at 0 range 1640 .. 1647; + Unused at 0 range 1648 .. 1663; + Journal_ID_High at 0 range 1664 .. 1727; + Journal_ID_Low at 0 range 1728 .. 1791; + Journal_Inode at 0 range 1792 .. 1823; + Journal_Device at 0 range 1824 .. 1855; + Head_Of_Orphan_Inodes at 0 range 1856 .. 1887; + end record; + + type Descriptor_Padding is array (Natural range <>) of Unsigned_16; + type Block_Group_Descriptor is record + Block_Usage_Bitmap_Block : Unsigned_32; + Inode_Usage_Bitmap_Block : Unsigned_32; + Inode_Table_Block : Unsigned_32; + Unallocated_Blocks : Unsigned_16; + Unallocated_Inodes : Unsigned_16; + Directory_Count : Unsigned_16; + Padding : Descriptor_Padding (1 .. 7); + end record with Size => 262; + for Block_Group_Descriptor use record + Block_Usage_Bitmap_Block at 0 range 0 .. 31; + Inode_Usage_Bitmap_Block at 0 range 32 .. 63; + Inode_Table_Block at 0 range 64 .. 95; + Unallocated_Blocks at 0 range 96 .. 117; + Unallocated_Inodes at 0 range 118 .. 133; + Directory_Count at 0 range 134 .. 149; + Padding at 0 range 150 .. 261; + end record; + + Flags_Immutable : constant := 16#10#; + Flags_Append_Only : constant := 16#20#; + type Inode_Block_Arr is array (Natural range <>) of Unsigned_32; + type Inode is record + Permissions : Unsigned_16; + UID : Unsigned_16; + Size_Low : Unsigned_32; + Access_Time_Epoch : Unsigned_32; + Creation_Time_Epoch : Unsigned_32; + Modified_Time_Epoch : Unsigned_32; + Deleted_Time_Epoch : Unsigned_32; + GID : Unsigned_16; + Hard_Link_Count : Unsigned_16; + Sectors : Unsigned_32; + Flags : Unsigned_32; + OS_Specific_Value_1 : Unsigned_32; + Blocks : Inode_Block_Arr (0 .. 14); + Generation_Number : Unsigned_32; + EAB : Unsigned_32; + Size_High : Unsigned_32; + Fragment_Address : Unsigned_32; + OS_Specific_Value_2 : Inode_Block_Arr (1 .. 3); + end record with Size => 1024; + for Inode use record + Permissions at 0 range 0 .. 15; + UID at 0 range 16 .. 31; + Size_Low at 0 range 32 .. 63; + Access_Time_Epoch at 0 range 64 .. 95; + Creation_Time_Epoch at 0 range 96 .. 127; + Modified_Time_Epoch at 0 range 128 .. 159; + Deleted_Time_Epoch at 0 range 160 .. 191; + GID at 0 range 192 .. 207; + Hard_Link_Count at 0 range 208 .. 223; + Sectors at 0 range 224 .. 255; + Flags at 0 range 256 .. 287; + OS_Specific_Value_1 at 0 range 288 .. 319; + Blocks at 0 range 320 .. 799; + Generation_Number at 0 range 800 .. 831; + EAB at 0 range 832 .. 863; + Size_High at 0 range 864 .. 895; + Fragment_Address at 0 range 896 .. 927; + OS_Specific_Value_2 at 0 range 928 .. 1023; + end record; + type Inode_Acc is access Inode; + + type Directory_Entry is record + Inode_Index : Unsigned_32; + Entry_Count : Unsigned_16; + Name_Length : Unsigned_8; + Dir_Type : Unsigned_8; + end record with Size => 64; + for Directory_Entry use record + Inode_Index at 0 range 0 .. 31; + Entry_Count at 0 range 32 .. 47; + Name_Length at 0 range 48 .. 55; + Dir_Type at 0 range 56 .. 63; + end record; + + type EXT_Data is record + Mutex : aliased Lib.Synchronization.Binary_Semaphore; + Handle : Device_Handle; + Super : Superblock; + Is_Read_Only : Boolean; + Do_Relatime : Boolean; + Block_Size : Unsigned_32; + Fragment_Size : Unsigned_32; + Root : Inode; + Has_Sparse_Superblock : Boolean; + Has_64bit_Filesizes : Boolean; + end record; + type EXT_Data_Acc is access all EXT_Data; + + Root_Inode : constant := 2; + Max_File_Name_Size : constant := 255; + + type String_Acc is access String; + procedure Inner_Open_Inode + (Data : EXT_Data_Acc; + Relative : Unsigned_32; + Path : String; + Last_Component : out String_Acc; + Target_Index : out Unsigned_32; + Target_Inode : out Inode; + Parent_Index : out Unsigned_32; + Parent_Inode : out Inode; + Success : out Boolean); + + procedure Inner_Read_Symbolic_Link + (Ino : Inode; + File_Size : Unsigned_64; + Path : out String; + Ret_Count : out Natural); + + procedure Inner_Read_Entry + (FS_Data : EXT_Data_Acc; + Inode_Sz : Unsigned_64; + File_Ino : Inode; + Inode_Index : Unsigned_64; + Entity : out Directory_Entity; + Next_Index : out Unsigned_64; + Success : out Boolean); + + procedure RW_Superblock + (Handle : Device_Handle; + Offset : Unsigned_64; + Super : in out Superblock; + Write_Operation : Boolean; + Success : out Boolean); + + procedure RW_Block_Group_Descriptor + (Data : EXT_Data_Acc; + Descriptor_Index : Unsigned_32; + Result : in out Block_Group_Descriptor; + Write_Operation : Boolean; + Success : out Boolean); + + procedure RW_Inode + (Data : EXT_Data_Acc; + Inode_Index : Unsigned_32; + Result : in out Inode; + Write_Operation : Boolean; + Success : out Boolean); + + function Get_Block_Index + (FS_Data : EXT_Data_Acc; + Inode_Data : Inode; + Searched : Unsigned_32) return Unsigned_32; + + procedure Read_From_Inode + (FS_Data : EXT_Data_Acc; + Inode_Data : Inode; + Inode_Size : Unsigned_64; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out Boolean); + + procedure Write_To_Inode + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Inode_Size : Unsigned_64; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Success : out Boolean); + + procedure Grow_Inode + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Start : Unsigned_64; + Count : Unsigned_64; + Success : out Boolean); + + procedure Assign_Inode_Blocks + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Start_Blk : Unsigned_32; + Block_Count : Unsigned_32; + Success : out Boolean); + + procedure Wire_Inode_Blocks + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Block_Index : Unsigned_32; + Wired_Block : Unsigned_32; + Success : out Boolean); + + procedure Allocate_Block_For_Inode + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Num : Unsigned_32; + Ret_Block : out Unsigned_32; + Success : out Boolean); + + procedure Allocate_Inode + (FS_Data : EXT_Data_Acc; + Inode_Num : out Unsigned_32; + Success : out Boolean); + + procedure Add_Directory_Entry + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Size : Unsigned_64; + Inode_Index : Unsigned_32; + Added_Index : Unsigned_32; + Dir_Type : Unsigned_8; + Name : String; + Success : out Boolean); + + procedure Delete_Directory_Entry + (FS_Data : EXT_Data_Acc; + Inode_Data : in out Inode; + Inode_Size : Unsigned_64; + Inode_Index : Unsigned_32; + Added_Index : Unsigned_32; + Success : out Boolean); + + function Get_Dir_Type (Dir_Type : Unsigned_8) return File_Type; + + function Get_Dir_Type (T : File_Type) return Unsigned_8; + + function Get_Permissions (T : File_Type) return Unsigned_16; + + function Get_Inode_Type (Perms : Unsigned_16) return File_Type; + + function Get_Inode_Type + (T : File_Type; + Mode : Unsigned_32) return Unsigned_16; + + function Get_Size (Ino : Inode; Is_64_Bits : Boolean) return Unsigned_64; + + procedure Set_Size + (Ino : in out Inode; + New_Size : Unsigned_64; + Is_64_Bits : Boolean; + Success : out Boolean); + + function Is_Immutable (Ino : Inode) return Boolean is + ((Ino.Flags and Flags_Immutable) /= 0); + + function Is_Append_Only (Ino : Inode) return Boolean is + ((Ino.Flags and Flags_Append_Only) /= 0); + + procedure Act_On_Policy (Data : EXT_Data_Acc; Message : String); + + function Check_User_Access + (User : Unsigned_32; + Inod : Inode; + Check_Read : Boolean; + Check_Write : Boolean; + Check_Exec : Boolean) return Boolean + with Pre => Check_Read or Check_Write; +end VFS.EXT; diff --git a/source/vfs/vfs-fat.adb b/source/vfs/vfs-fat.adb new file mode 100644 index 0000000..c987e4d --- /dev/null +++ b/source/vfs/vfs-fat.adb @@ -0,0 +1,505 @@ +-- vfs-fat.adb: FAT-series FS driver. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with System.Storage_Elements; use System.Storage_Elements; +with System.Address_To_Access_Conversions; +with Ada.Unchecked_Deallocation; +with Lib.Alignment; + +package body VFS.FAT is + package Conv_1 is new System.Address_To_Access_Conversions (FAT_Data); + package Conv_2 is new System.Address_To_Access_Conversions (FAT_File); + procedure Free_1 is new Ada.Unchecked_Deallocation (FAT_Data, FAT_Data_Acc); + procedure Free_2 is new Ada.Unchecked_Deallocation (FAT_File, FAT_File_Acc); + + procedure Probe + (Handle : Device_Handle; + Do_Read_Only : Boolean; + Data_Addr : out System.Address) + is + pragma Unreferenced (Do_Read_Only); + + Data : FAT_Data_Acc; + BP : BIOS_Parameter_Block; + Ret_Count : Natural; + Success : Boolean; + BP_Data : Operation_Data (1 .. BP'Size / 8) + with Import, Address => BP'Address; + begin + Devices.Read (Handle, 0, BP_Data, Ret_Count, Success); + if not Success or Ret_Count /= BP_Data'Length or + BP.Boot_Signature /= Boot_Signature + then + Data_Addr := System.Null_Address; + return; + end if; + + Data := new FAT_Data' + (Handle => Handle, + Is_Read_Only => Is_Read_Only (Handle), + BPB => BP, + Sector_Count => Unsigned_32 (BP.Sector_Count), + FAT_Offset => Unsigned_32 (BP.Reserved_Sectors), + Cluster_Offset => Unsigned_32 (BP.Reserved_Sectors) + + Unsigned_32 (BP.FAT_Count) * BP.Sectors_Per_FAT); + if Data.Sector_Count = 0 then + Data.Sector_Count := BP.Large_Sector_Count; + end if; + + Data_Addr := Conv_1.To_Address (Conv_1.Object_Pointer (Data)); + end Probe; + + procedure Remount + (FS : System.Address; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean) + is + pragma Unreferenced (FS); + pragma Unreferenced (Do_Read_Only); + pragma Unreferenced (Do_Relatime); + begin + Success := True; + end Remount; + + procedure Unmount (FS : in out System.Address) is + Data : FAT_Data_Acc := FAT_Data_Acc (Conv_1.To_Pointer (FS)); + begin + Free_1 (Data); + FS := System.Null_Address; + end Unmount; + ---------------------------------------------------------------------------- + function Get_Block_Size (FS : System.Address) return Unsigned_64 is + pragma Unreferenced (FS); + begin + return 4096; + end Get_Block_Size; + + function Get_Fragment_Size (FS : System.Address) return Unsigned_64 is + pragma Unreferenced (FS); + begin + return 4096; + end Get_Fragment_Size; + + function Get_Size (FS : System.Address) return Unsigned_64 is + pragma Unreferenced (FS); + begin + return 4096 * 10; + end Get_Size; + + function Get_Inode_Count (FS : System.Address) return Unsigned_64 is + pragma Unreferenced (FS); + begin + return 420; + end Get_Inode_Count; + + procedure Get_Free_Blocks + (FS : System.Address; + Free_Blocks : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + is + pragma Unreferenced (FS); + begin + Free_Blocks := 1; + Free_Unpriviledged := 1; + end Get_Free_Blocks; + + procedure Get_Free_Inodes + (FS : System.Address; + Free_Inodes : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + is + pragma Unreferenced (FS); + begin + Free_Inodes := 1; + Free_Unpriviledged := 1; + end Get_Free_Inodes; + + function Get_Max_Length (FS : System.Address) return Unsigned_64 is + pragma Unreferenced (FS); + begin + return 64; + end Get_Max_Length; + ---------------------------------------------------------------------------- + procedure Open + (FS : System.Address; + Path : String; + Ino : out File_Inode_Number; + Success : out FS_Status) + is + Data : constant FAT_Data_Acc := FAT_Data_Acc (Conv_1.To_Pointer (FS)); + Result : FAT_File_Acc; + Cluster : Unsigned_32 := Data.BPB.Root_Entry_Cluster; + Inner_Type : File_Type := File_Directory; + Index : Unsigned_64; + Ent : Directory_Entry; + First_I : Natural; + Last_I : Natural; + Success2 : Boolean; + begin + if Path'Length = 0 then + goto End_Return; + end if; + + First_I := Path'First; + Last_I := Path'First; + + loop + if Last_I >= Path'Last then + exit; + end if; + while Last_I <= Path'Last and then Path (Last_I) /= '/' loop + Last_I := Last_I + 1; + end loop; + + if Inner_Type /= File_Directory then + goto Error_Return; + end if; + + Index := 0; + loop + Read_Directory_Entry (Data, Cluster, Index, Ent, Success2); + if not Success2 then + goto Error_Return; + end if; + + if Index = Unsigned_64 (Data.BPB.Sectors_Per_Cluster) * 16 then + Index := 0; + Get_Next_Cluster (Data, Cluster, Cluster, Success2); + if not Success2 then + goto Error_Return; + end if; + end if; + + if Ent.Attributes = 0 then + goto Error_Return; + end if; + + -- TODO: Handle LFN. + if (Ent.Attributes and Directory_LFN) /= Directory_LFN and then + Are_Paths_Equal (Path (First_I .. Last_I - 1), Ent) + then + Inner_Type := Get_Type (Ent.Attributes); + Cluster := Shift_Left (Unsigned_32 (Ent.First_Cluster_High), 32) + or Unsigned_32 (Ent.First_Cluster_Low); + goto Next_Iteration; + end if; + + Index := Index + 1; + end loop; + + <> + Last_I := Last_I + 1; + First_I := Last_I; + end loop; + + <> + Result := new FAT_File'(Cluster, Inner_Type, Ent); + Ino := File_Inode_Number (To_Integer + (Conv_2.To_Address (Conv_2.Object_Pointer (Result)))); + Success := FS_Success; + return; + + <> + Ino := 0; + Success := FS_Invalid_Value; + end Open; + + procedure Close (FS : System.Address; Ino : File_Inode_Number) is + pragma Unreferenced (FS); + File : FAT_File_Acc := FAT_File_Acc + (Conv_2.To_Pointer (To_Address (Integer_Address (Ino)))); + begin + Free_2 (File); + end Close; + + procedure Read_Entries + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Natural; + Entities : out Directory_Entities; + Ret_Count : out Natural; + Success : out FS_Status) + is + FS : constant FAT_Data_Acc := FAT_Data_Acc (Conv_1.To_Pointer (FS_Data)); + File : constant FAT_File_Acc := FAT_File_Acc + (Conv_2.To_Pointer (To_Address (Integer_Address (Ino)))); + Cluster : Unsigned_32 := File.Begin_Cluster; + Index : Unsigned_64 := 0; + Ent : Directory_Entry; + Composed : String (1 .. 12); + Composed_Len : Natural; + Temp : Natural; + Success2 : Boolean; + begin + Ret_Count := 0; + if File.Inner_Type /= File_Directory then + Success := FS_Invalid_Value; + return; + end if; + + Success := FS_Success; + loop + Read_Directory_Entry (FS, Cluster, Index, Ent, Success2); + if not Success2 then + Success := FS_IO_Failure; + return; + end if; + + if Index = Unsigned_64 (FS.BPB.Sectors_Per_Cluster) * 16 then + Index := 0; + Get_Next_Cluster (FS, Cluster, Cluster, Success2); + if not Success2 then + return; + end if; + end if; + + if Ent.Attributes = 0 then + exit; + end if; + + -- TODO: Handle LFN. + if Index >= Unsigned_64 (Offset) and + (Ent.Attributes and Directory_LFN) /= Directory_LFN + then + if Ret_Count < Entities'Length then + Compose_Path (Ent, Composed, Composed_Len); + Temp := Entities'First + Ret_Count; + Entities (Temp).Inode_Number := + Unsigned_64 (Ent.First_Cluster_Low); + Entities (Temp).Name_Buffer (1 .. Composed_Len) := + Composed (1 .. Composed_Len); + Entities (Temp).Name_Len := Composed_Len; + Entities (Temp).Type_Of_File := Get_Type (Ent.Attributes); + end if; + Ret_Count := Ret_Count + 1; + end if; + + Index := Index + 1; + end loop; + end Read_Entries; + + procedure Read + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out FS_Status) + is + FS : constant FAT_Data_Acc := FAT_Data_Acc (Conv_1.To_Pointer (FS_Data)); + File : constant FAT_File_Acc := FAT_File_Acc + (Conv_2.To_Pointer (To_Address (Integer_Address (Ino)))); + Cluster_Offset : Unsigned_64; + Cluster : Unsigned_32 := File.Begin_Cluster; + Cluster_Sz : constant Unsigned_32 := + Unsigned_32 (FS.BPB.Sectors_Per_Cluster) * Sector_Size; + Final_Offset : Unsigned_64 := Offset; + Step_Size : Natural; + Discard : Natural; + Final_Count : Natural := Data'Length; + Succ : Boolean; + begin + Ret_Count := 0; + if File.Inner_Type /= File_Regular then + Success := FS_Invalid_Value; + return; + end if; + + if Offset + Data'Length > Unsigned_64 (File.FS_Entry.Size) then + Final_Count := Natural (Unsigned_64 (File.FS_Entry.Size) - Offset); + end if; + + Success := FS_Success; + while Ret_Count < Final_Count loop + Step_Size := Natural (Unsigned_64 (Final_Count) - + Unsigned_64 (Ret_Count)); + if Unsigned_64 (Step_Size) > Unsigned_64 (Cluster_Sz) - Final_Offset + then + Step_Size := Natural (Unsigned_64 (Cluster_Sz) - Final_Offset); + end if; + + Cluster_Offset := Cluster_To_Disk_Offset + (Cluster => Cluster, + Cluster_Begin => FS.Cluster_Offset, + Sectors_Per_Cluster => Unsigned_32 (FS.BPB.Sectors_Per_Cluster)); + + Devices.Read + (Handle => FS.Handle, + Offset => Cluster_Offset + Final_Offset, + Data => Data (Data'First + Ret_Count .. + Data'First + Ret_Count - 1 + Step_Size), + Ret_Count => Discard, + Success => Succ); + if not Succ then + Success := FS_IO_Failure; + return; + end if; + + Final_Offset := 0; + Get_Next_Cluster (FS, Cluster, Cluster, Succ); + if not Succ then + Success := FS_IO_Failure; + return; + end if; + + Ret_Count := Ret_Count + Step_Size; + end loop; + end Read; + + procedure Stat + (Data : System.Address; + Ino : File_Inode_Number; + S : out File_Stat; + Success : out FS_Status) + is + package Align is new Lib.Alignment (Unsigned_32); + FS : constant FAT_Data_Acc := FAT_Data_Acc (Conv_1.To_Pointer (Data)); + File : constant FAT_File_Acc := FAT_File_Acc + (Conv_2.To_Pointer (To_Address (Integer_Address (Ino)))); + Blk : constant Unsigned_32 := Unsigned_32 (Get_Block_Size (FS.Handle)); + Cnt : constant Unsigned_32 := + Align.Divide_Round_Up (File.FS_Entry.Size, Blk); + begin + S := + (Unique_Identifier => File_Inode_Number (File.Begin_Cluster), + Type_Of_File => File.Inner_Type, + Mode => 8#755#, + UID => 0, + GID => 0, + Hard_Link_Count => 1, + Byte_Size => Unsigned_64 (File.FS_Entry.Size), + IO_Block_Size => Devices.Get_Block_Size (FS.Handle), + IO_Block_Count => Unsigned_64 (Cnt), + Creation_Time => (0, 0), + Modification_Time => (0, 0), + Access_Time => (0, 0)); + Success := FS_Success; + end Stat; + ---------------------------------------------------------------------------- + procedure Read_Directory_Entry + (Data : FAT_Data_Acc; + Cluster : Unsigned_32; + Index : Unsigned_64; + Result : out Directory_Entry; + Success : out Boolean) + is + Offset : Unsigned_64; + Ret_Count : Natural; + Result_Data : Operation_Data (1 .. Directory_Entry'Size / 8) + with Address => Result'Address; + begin + Offset := Cluster_To_Disk_Offset + (Cluster => Cluster, + Cluster_Begin => Data.Cluster_Offset, + Sectors_Per_Cluster => Unsigned_32 (Data.BPB.Sectors_Per_Cluster)); + + Devices.Read + (Handle => Data.Handle, + Offset => Offset + Index * 32, + Data => Result_Data, + Ret_Count => Ret_Count, + Success => Success); + Success := Success and Ret_Count = Result_Data'Length; + end Read_Directory_Entry; + + procedure Get_Next_Cluster + (Data : FAT_Data_Acc; + Cluster_Index : Unsigned_32; + Returned : out Unsigned_32; + Success : out Boolean) + is + Limit, Offset : Unsigned_64; + Ret_Count : Natural; + Returned_Data : Operation_Data (1 .. 4) with Address => Returned'Address; + begin + Limit := (Unsigned_64 (Data.BPB.Sectors_Per_FAT) * Sector_Size) / 4; + Offset := Sector_To_Disk_Offset (Data.FAT_Offset); + + if Unsigned_64 (Cluster_Index) >= Limit then + Returned := 0; + Success := False; + else + Devices.Read + (Handle => Data.Handle, + Offset => Offset + (Unsigned_64 (Cluster_Index) * 4), + Data => Returned_Data, + Ret_Count => Ret_Count, + Success => Success); + if not Success or Ret_Count /= Returned_Data'Length then + Success := False; + else + Success := Returned < 16#FFFFFFF8#; + end if; + end if; + end Get_Next_Cluster; + + function Are_Paths_Equal + (Base : String; + Ent : Directory_Entry) return Boolean + is + Offset : constant := Character'Pos ('A') - Character'Pos ('a'); + Base_Copy : String := Base; + Composed : String (1 .. 12); + Composed_Len : Natural; + begin + for C of Base_Copy loop + if C in 'a' .. 'z' then + C := Character'Val (Character'Pos (C) + Offset); + end if; + end loop; + + Compose_Path (Ent, Composed, Composed_Len); + return Base_Copy = Composed (1 .. Composed_Len); + end Are_Paths_Equal; + + procedure Compose_Path + (Ent : Directory_Entry; + Result : out String; + Length : out Natural) + is + Ret : Natural; + Ent_Name_Len : Natural := 0; + Ent_Ext_Len : Natural := 0; + begin + for C of Ent.File_Name loop + if C = ' ' then + exit; + end if; + Ent_Name_Len := Ent_Name_Len + 1; + end loop; + + for C of Ent.File_Extension loop + if C = ' ' then + exit; + end if; + Ent_Ext_Len := Ent_Ext_Len + 1; + end loop; + + if Ent_Ext_Len /= 0 then + Ret := Ent_Name_Len + 1 + Ent_Ext_Len; + Result (Result'First .. Result'First + Ret - 1) := + Ent.File_Name (1 .. Ent_Name_Len) & "." & + Ent.File_Extension (1 .. Ent_Ext_Len); + else + Ret := Ent_Name_Len; + Result (Result'First .. Result'First + Ret - 1) := + Ent.File_Name (1 .. Ent_Name_Len); + end if; + + Length := Ret; + end Compose_Path; +end VFS.FAT; diff --git a/source/vfs/vfs-fat.ads b/source/vfs/vfs-fat.ads new file mode 100644 index 0000000..34ea8b0 --- /dev/null +++ b/source/vfs/vfs-fat.ads @@ -0,0 +1,241 @@ +-- vfs-fat.adb: FAT FS driver. +-- Copyright (C) 2023 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +package VFS.FAT is + procedure Probe + (Handle : Device_Handle; + Do_Read_Only : Boolean; + Data_Addr : out System.Address); + + + procedure Remount + (FS : System.Address; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean); + + procedure Unmount (FS : in out System.Address); + ---------------------------------------------------------------------------- + function Get_Block_Size (FS : System.Address) return Unsigned_64; + + function Get_Fragment_Size (FS : System.Address) return Unsigned_64; + + function Get_Size (FS : System.Address) return Unsigned_64; + + function Get_Inode_Count (FS : System.Address) return Unsigned_64; + + procedure Get_Free_Blocks + (FS : System.Address; + Free_Blocks : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64); + + procedure Get_Free_Inodes + (FS : System.Address; + Free_Inodes : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64); + + function Get_Max_Length (FS : System.Address) return Unsigned_64; + ---------------------------------------------------------------------------- + procedure Open + (FS : System.Address; + Path : String; + Ino : out File_Inode_Number; + Success : out FS_Status); + + procedure Close (FS : System.Address; Ino : File_Inode_Number); + + procedure Read_Entries + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Natural; + Entities : out Directory_Entities; + Ret_Count : out Natural; + Success : out FS_Status); + + procedure Read + (FS_Data : System.Address; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Success : out FS_Status); + + procedure Stat + (Data : System.Address; + Ino : File_Inode_Number; + S : out File_Stat; + Success : out FS_Status); + +private + + Sector_Size : constant := 512; + Boot_Signature : constant := 16#AA55#; + + type FAT32_Bytes is array (Natural range <>) of Unsigned_8; + type BIOS_Parameter_Block is record + Infinite_Loop : FAT32_Bytes (1 .. 3); + OEM_Identifier : Unsigned_64; + Bytes_Per_Sector : Unsigned_16; + Sectors_Per_Cluster : Unsigned_8; + Reserved_Sectors : Unsigned_16; + FAT_Count : Unsigned_8; + Root_Entry_Count : Unsigned_16; + Sector_Count : Unsigned_16; -- If 0, read Large. + Media_Descriptor_Type : Unsigned_8; + Sectors_Per_FAT_Old : Unsigned_16; -- Only for FAT12-FAT16. + Sectors_Per_Track : Unsigned_16; + Head_Count : Unsigned_16; + Hidden_Sector_Count : Unsigned_32; + Large_Sector_Count : Unsigned_32; + Sectors_Per_FAT : Unsigned_32; + Flags : Unsigned_16; + FAT_Version_Number : Unsigned_16; + Root_Entry_Cluster : Unsigned_32; + FSInfo_Sector : Unsigned_16; + Backup_MBR_Sector : Unsigned_16; + Reserved : FAT32_Bytes (1 .. 12); + Drive_Number : Unsigned_8; + NT_FLags : Unsigned_8; + Signature : Unsigned_8; + Volume_ID_Serial : Unsigned_32; + Volume_Label : String (1 .. 11); + System_Identifier : String (1 .. 8); + Boot_Code : FAT32_Bytes (1 .. 420); + Boot_Signature : Unsigned_16; + end record with Size => 4096; + for BIOS_Parameter_Block use record + Infinite_Loop at 0 range 0 .. 23; + OEM_Identifier at 0 range 24 .. 87; + Bytes_Per_Sector at 0 range 88 .. 103; + Sectors_Per_Cluster at 0 range 104 .. 111; + Reserved_Sectors at 0 range 112 .. 127; + FAT_Count at 0 range 128 .. 135; + Root_Entry_Count at 0 range 136 .. 151; + Sector_Count at 0 range 152 .. 167; + Media_Descriptor_Type at 0 range 168 .. 175; + Sectors_Per_FAT_Old at 0 range 176 .. 191; + Sectors_Per_Track at 0 range 192 .. 207; + Head_Count at 0 range 208 .. 223; + Hidden_Sector_Count at 0 range 224 .. 255; + Large_Sector_Count at 0 range 256 .. 287; + Sectors_Per_FAT at 0 range 288 .. 319; + Flags at 0 range 320 .. 335; + FAT_Version_Number at 0 range 336 .. 351; + Root_Entry_Cluster at 0 range 352 .. 383; + FSInfo_Sector at 0 range 384 .. 399; + Backup_MBR_Sector at 0 range 400 .. 415; + Reserved at 0 range 416 .. 511; + Drive_Number at 0 range 512 .. 519; + NT_FLags at 0 range 520 .. 527; + Signature at 0 range 528 .. 535; + Volume_ID_Serial at 0 range 536 .. 567; + Volume_Label at 0 range 568 .. 655; + System_Identifier at 0 range 656 .. 719; + Boot_Code at 0 range 720 .. 4079; + Boot_Signature at 0 range 4080 .. 4095; + end record; + + Directory_Read_Only : constant := 2#000001#; + Directory_Hidden : constant := 2#000010#; + Directory_System : constant := 2#000100#; + Directory_Volume_ID : constant := 2#001000#; + Directory_Directory : constant := 2#010000#; + Directory_Archive : constant := 2#100000#; + Directory_LFN : constant := 2#001111#; + type Directory_Entry is record + File_Name : String (1 .. 8); + File_Extension : String (1 .. 3); + Attributes : Unsigned_8; + Reserved_NT : Unsigned_8; + Creation_Time_1 : Unsigned_8; + Creation_Time_2 : Unsigned_16; + Creation_Time_3 : Unsigned_16; + Access_Time : Unsigned_16; + First_Cluster_High : Unsigned_16; + Modification_Time : Unsigned_16; + Modification_Date : Unsigned_16; + First_Cluster_Low : Unsigned_16; + Size : Unsigned_32; + end record with Size => 256; + for Directory_Entry use record + File_Name at 0 range 0 .. 63; + File_Extension at 0 range 64 .. 87; + Attributes at 0 range 88 .. 95; + Reserved_NT at 0 range 96 .. 103; + Creation_Time_1 at 0 range 104 .. 111; + Creation_Time_2 at 0 range 112 .. 127; + Creation_Time_3 at 0 range 128 .. 143; + Access_Time at 0 range 144 .. 159; + First_Cluster_High at 0 range 160 .. 175; + Modification_Time at 0 range 176 .. 191; + Modification_Date at 0 range 192 .. 207; + First_Cluster_Low at 0 range 208 .. 223; + Size at 0 range 224 .. 255; + end record; + + type FAT_Data is record + Handle : Device_Handle; + Is_Read_Only : Boolean; + BPB : BIOS_Parameter_Block; + Sector_Count : Unsigned_32; + FAT_Offset : Unsigned_32; + Cluster_Offset : Unsigned_32; + end record; + type FAT_Data_Acc is access all FAT_Data; + + type FAT_File is record + Begin_Cluster : Unsigned_32; + Inner_Type : File_Type; + FS_Entry : Directory_Entry; + end record; + type FAT_File_Acc is access all FAT_File; + + procedure Read_Directory_Entry + (Data : FAT_Data_Acc; + Cluster : Unsigned_32; + Index : Unsigned_64; + Result : out Directory_Entry; + Success : out Boolean); + + procedure Get_Next_Cluster + (Data : FAT_Data_Acc; + Cluster_Index : Unsigned_32; + Returned : out Unsigned_32; + Success : out Boolean); + + function Are_Paths_Equal + (Base : String; + Ent : Directory_Entry) return Boolean; + + procedure Compose_Path + (Ent : Directory_Entry; + Result : out String; + Length : out Natural); + + function Sector_To_Disk_Offset (Sector : Unsigned_32) return Unsigned_64 + is (Unsigned_64 (Sector) * Sector_Size); + + function Cluster_To_Disk_Offset + (Cluster : Unsigned_32; + Cluster_Begin : Unsigned_32; + Sectors_Per_Cluster : Unsigned_32) return Unsigned_64 + is (Sector_To_Disk_Offset (Cluster_Begin + (Cluster - 2) * + Sectors_Per_Cluster)); + + function Get_Type (Attributes : Unsigned_8) return File_Type is + (if (Attributes and Directory_Directory) /= 0 then File_Directory + else File_Regular); +end VFS.FAT; diff --git a/source/vfs/vfs.adb b/source/vfs/vfs.adb new file mode 100644 index 0000000..536976c --- /dev/null +++ b/source/vfs/vfs.adb @@ -0,0 +1,1123 @@ +-- vfs.adb: FS and register dispatching. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Ada.Unchecked_Deallocation; +with VFS.Dev; +with VFS.EXT; +with VFS.FAT; + +package body VFS is + pragma Suppress (All_Checks); -- Unit passes SPARK AoRTE. + + procedure Init is + pragma SPARK_Mode (Off); + begin + Mounts := new Mount_Registry'(others => + (Mounted_Dev => Devices.Error_Handle, + Mounted_FS => FS_EXT, + FS_Data => System.Null_Address, + Path_Length => 0, + Path_Buffer => (others => ' '), + Base_Key => Error_Handle, + Base_Ino => 0, + Root_Ino => 0)); + Mounts_Mutex := Lib.Synchronization.Unlocked_Semaphore; + end Init; + + procedure Mount + (Device_Name : String; + Mount_Path : String; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean) + is + pragma SPARK_Mode (Off); + Name : String renames Device_Name; + begin + for FS in FS_Type'Range loop + if FS /= FS_DEV then + Mount (Name, Mount_Path, FS, Do_Read_Only, Do_Relatime, Success); + exit when Success; + end if; + end loop; + end Mount; + + procedure Mount + (Device_Name : String; + Mount_Path : String; + FS : FS_Type; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean) + is + De : constant Device_Handle := Devices.Fetch (Device_Name); + Free_I : FS_Handle := VFS.Error_Handle; + FS_Data : System.Address; + Key : FS_Handle := Error_Handle; + Ino : File_Inode_Number := 0; + Root_Inode : File_Inode_Number; + Succ : FS_Status; + begin + Success := False; + + if not Is_Absolute (Mount_Path) or + Mount_Path'Length > Path_Buffer_Length or + De = Devices.Error_Handle + then + return; + end if; + + if Mount_Path /= "/" then + Open + (Path => Mount_Path, + Key => Key, + Ino => Ino, + Success => Succ, + User => 0, + Want_Read => True, + Want_Write => False); + if Succ /= FS_Success then + Success := False; + end if; + end if; + + Lib.Synchronization.Seize (Mounts_Mutex); + for I in Mounts'Range loop + if Mounts (I).Mounted_Dev = De then + goto Cleanup; + elsif Mounts (I).Mounted_Dev = Devices.Error_Handle then + Free_I := I; + goto Try_Probe; + end if; + end loop; + + goto Cleanup; + + <> + case FS is + when FS_DEV => + Dev.Probe (De, Do_Read_Only, Do_Relatime, FS_Data, Root_Inode); + when FS_EXT => + EXT.Probe (De, Do_Read_Only, Do_Relatime, FS_Data); + Root_Inode := 2; + when FS_FAT => + FAT.Probe (De, Do_Read_Only, FS_Data); + Root_Inode := 0; + end case; + + if FS_Data /= System.Null_Address then + Mounts (Free_I) := + (Mounted_Dev => De, + Mounted_FS => FS, + FS_Data => FS_Data, + Path_Length => Mount_Path'Length, + Path_Buffer => (others => ' '), + Base_Key => Key, + Base_Ino => Ino, + Root_Ino => Root_Inode); + + Mounts (Free_I).Path_Buffer (1 .. Mount_Path'Length) := Mount_Path; + Success := True; + end if; + + <> + Lib.Synchronization.Release (Mounts_Mutex); + end Mount; + + procedure Unmount (Path : String; Force : Boolean; Success : out Boolean) is + begin + Success := False; + Lib.Synchronization.Seize (Mounts_Mutex); + for I in Mounts'Range loop + if Mounts (I).Mounted_Dev /= Devices.Error_Handle and then + Mounts (I).Path_Buffer (1 .. Mounts (I).Path_Length) = Path + then + case Mounts (I).Mounted_FS is + when FS_DEV => Dev.Unmount (Mounts (I).FS_Data); + when FS_EXT => EXT.Unmount (Mounts (I).FS_Data); + when FS_FAT => FAT.Unmount (Mounts (I).FS_Data); + end case; + + if Force or Mounts (I).FS_Data = Null_Address then + Mounts (I).Mounted_Dev := Devices.Error_Handle; + Success := True; + end if; + exit; + end if; + end loop; + Lib.Synchronization.Release (Mounts_Mutex); + end Unmount; + + procedure Get_Mount + (Path : String; + Match : out Natural; + Handle : out FS_Handle) + is + begin + Match := 0; + Handle := VFS.Error_Handle; + + Lib.Synchronization.Seize (Mounts_Mutex); + for I in Mounts'Range loop + if Mounts (I).Mounted_Dev /= Devices.Error_Handle and then + Path'Length >= Mounts (I).Path_Length and then + Match < Mounts (I).Path_Length and then + Path'First < Natural'Last - Mounts (I).Path_Length and then + Mounts (I).Path_Buffer (1 .. Mounts (I).Path_Length) = + Path (Path'First .. Path'First + Mounts (I).Path_Length - 1) + then + Handle := I; + Match := Mounts (I).Path_Length; + end if; + end loop; + Lib.Synchronization.Release (Mounts_Mutex); + + if Match > 0 then + Match := Match - 1; + end if; + end Get_Mount; + + procedure List_All (List : out Mountpoint_Arr; Total : out Natural) is + pragma Annotate (GNATprove, False_Positive, "range check might fail", + "in List? how?"); + + Curr_Index : Natural := 0; + begin + Total := 0; + List := (others => Error_Handle); + + Lib.Synchronization.Seize (Mounts_Mutex); + for I in Mounts'Range loop + if Mounts (I).Mounted_Dev /= Devices.Error_Handle then + if Curr_Index < List'Length then + List (List'First + Curr_Index) := I; + Curr_Index := Curr_Index + 1; + end if; + Total := Total + 1; + end if; + end loop; + Lib.Synchronization.Release (Mounts_Mutex); + end List_All; + + function Get_Backing_FS (Key : FS_Handle) return FS_Type is + begin + return Mounts (Key).Mounted_FS; + end Get_Backing_FS; + + function Get_Backing_FS_Data (Key : FS_Handle) return System.Address is + begin + return Mounts (Key).FS_Data; + end Get_Backing_FS_Data; + + function Get_Backing_Device (Key : FS_Handle) return Device_Handle is + begin + return Mounts (Key).Mounted_Dev; + end Get_Backing_Device; + + procedure Get_Mount_Point + (Key : FS_Handle; + Name : out String; + Length : out Natural) + is + begin + Name := (others => ' '); + Name (Name'First .. Name'First + Path_Buffer_Length - 1) := + Mounts (Key).Path_Buffer; + Length := Mounts (Key).Path_Length; + end Get_Mount_Point; + + procedure Remount + (Key : FS_Handle; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean) + is + Data : constant System.Address := Mounts (Key).FS_Data; + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => Dev.Remount (Data, Do_Read_Only, Do_Relatime, Success); + when FS_EXT => EXT.Remount (Data, Do_Read_Only, Do_Relatime, Success); + when FS_FAT => FAT.Remount (Data, Do_Read_Only, Do_Relatime, Success); + end case; + end Remount; + ---------------------------------------------------------------------------- + procedure Get_Block_Size (Key : FS_Handle; Size : out Unsigned_64) is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => Dev.Get_Block_Size (Mounts (Key).FS_Data, Size); + when FS_EXT => EXT.Get_Block_Size (Mounts (Key).FS_Data, Size); + when FS_FAT => Size := FAT.Get_Block_Size (Mounts (Key).FS_Data); + end case; + end Get_Block_Size; + + procedure Get_Fragment_Size (Key : FS_Handle; Size : out Unsigned_64) is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => Dev.Get_Fragment_Size (Mounts (Key).FS_Data, Size); + when FS_EXT => EXT.Get_Fragment_Size (Mounts (Key).FS_Data, Size); + when FS_FAT => Size := FAT.Get_Fragment_Size (Mounts (Key).FS_Data); + end case; + end Get_Fragment_Size; + + procedure Get_Size (Key : FS_Handle; Size : out Unsigned_64) is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => Dev.Get_Size (Mounts (Key).FS_Data, Size); + when FS_EXT => EXT.Get_Size (Mounts (Key).FS_Data, Size); + when FS_FAT => Size := FAT.Get_Size (Mounts (Key).FS_Data); + end case; + end Get_Size; + + procedure Get_Inode_Count (Key : FS_Handle; Count : out Unsigned_64) is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => Dev.Get_Inode_Count (Mounts (Key).FS_Data, Count); + when FS_EXT => EXT.Get_Inode_Count (Mounts (Key).FS_Data, Count); + when FS_FAT => Count := FAT.Get_Inode_Count (Mounts (Key).FS_Data); + end case; + end Get_Inode_Count; + + procedure Get_Free_Blocks + (Key : FS_Handle; + Free_Blocks : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + is + FB : Unsigned_64 renames Free_Blocks; + FU : Unsigned_64 renames Free_Unpriviledged; + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => Dev.Get_Free_Blocks (Mounts (Key).FS_Data, FB, FU); + when FS_EXT => EXT.Get_Free_Blocks (Mounts (Key).FS_Data, FB, FU); + when FS_FAT => FAT.Get_Free_Blocks (Mounts (Key).FS_Data, FB, FU); + end case; + end Get_Free_Blocks; + + procedure Get_Free_Inodes + (Key : FS_Handle; + Free_Inodes : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + is + FI : Unsigned_64 renames Free_Inodes; + FU : Unsigned_64 renames Free_Unpriviledged; + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => Dev.Get_Free_Inodes (Mounts (Key).FS_Data, FI, FU); + when FS_EXT => EXT.Get_Free_Inodes (Mounts (Key).FS_Data, FI, FU); + when FS_FAT => FAT.Get_Free_Inodes (Mounts (Key).FS_Data, FI, FU); + end case; + end Get_Free_Inodes; + + procedure Get_Max_Length (Key : FS_Handle; Length : out Unsigned_64) is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => Length := Dev.Get_Max_Length (Mounts (Key).FS_Data); + when FS_EXT => Length := EXT.Get_Max_Length (Mounts (Key).FS_Data); + when FS_FAT => Length := FAT.Get_Max_Length (Mounts (Key).FS_Data); + end case; + end Get_Max_Length; + ---------------------------------------------------------------------------- + procedure Open + (Key : FS_Handle; + Relative : File_Inode_Number; + Path : String; + Final_Key : out FS_Handle; + Ino : out File_Inode_Number; + Success : out FS_Status; + User : Unsigned_32; + Want_Read : Boolean; + Want_Write : Boolean; + Do_Follow : Boolean := True) + is + type String_Acc is access String; + + procedure Free1 is new Ada.Unchecked_Deallocation (String, String_Acc); + procedure Free2 is new Ada.Unchecked_Deallocation + (Directory_Entities, Directory_Entities_Acc); + + Orig_Key : FS_Handle := Error_Handle; + Orig_Ino : File_Inode_Number := 0; + Actual_Key : FS_Handle := Key; + Actual_Ino : File_Inode_Number := Relative; + Path_Idx : Natural; + Path_Last : Natural; + Dir_Entries : Directory_Entities_Acc := new Directory_Entities (1 .. 20); + Entry_Stat : File_Stat; + Entries_Offset : Natural; + Entries_Count : Natural; + Symlink_Path : String_Acc := new String'(1 .. 60 => ' '); + Symlink_Len : Natural; + begin + if Path'Length = 0 then + goto Invalid_Value_Return; + end if; + + if Is_Absolute (Path) then + Actual_Key := 1; + Actual_Ino := Mounts (1).Root_Ino; + end if; + + Path_Idx := 0; + loop + -- Clear slashes ('/') at the front of path. + -- If we end up with nothing at the end, it means we already hit + -- our destination, and we were just dealing with some trailing + -- slashes. Ex: /usr/home//// + while Path'First + Path_Idx <= Path'Last and then + Path (Path'First + Path_Idx) = '/' + loop + Path_Idx := Path_Idx + 1; + end loop; + if Path'First + Path_Idx > Path'Last then + exit; + end if; + + -- Find the next component of Path, by iterating until we find the + -- next slash. + Path_Last := Path_Idx; + while Path'First + Path_Last <= Path'Last and then + Path (Path'First + Path_Last) /= '/' + loop + Path_Last := Path_Last + 1; + end loop; + Path_Last := Path_Last - 1; + + -- Shortcut the search in the case of . or .. + if Path (Path'First + Path_Idx .. Path'First + Path_Last) = "." then + goto Found_Entry; + elsif Orig_Key /= Error_Handle and then + Path (Path'First + Path_Idx .. Path'First + Path_Last) = ".." + then + Actual_Key := Orig_Key; + Actual_Ino := Orig_Ino; + goto Found_Entry; + end if; + + -- Read the entries of current directory, check if the component + -- of path is found. + Entries_Offset := 0; + Entries_Count := 0; + loop + Read_Entries + (Key => Actual_Key, + Ino => Actual_Ino, + Offset => Entries_Offset, + Entities => Dir_Entries.all, + Ret_Count => Entries_Count, + Success => Success); + if (Success = FS_Success and Entries_Count = 0) or + Success /= FS_Success + then + exit; + end if; + + for Ent of Dir_Entries (1 .. Entries_Count) loop + if Ent.Name_Buffer (1 .. Ent.Name_Len) = + Path (Path'First + Path_Idx .. Path'First + Path_Last) + then + Orig_Key := Actual_Key; + Orig_Ino := Actual_Ino; + Actual_Ino := File_Inode_Number (Ent.Inode_Number); + goto Found_Entry; + end if; + end loop; + + Entries_Offset := Entries_Offset + Entries_Count; + end loop; + + goto Invalid_Value_Return; + + <> + -- Get the stat for several checks. + VFS.Stat (Actual_Key, Actual_Ino, Entry_Stat, Success); + if Success /= FS_Success then + goto Invalid_Value_Return; + end if; + + -- We have found a suitable next step, neat! + -- If we are at the end of the road, we can try to follow applicable + -- symlinks by recursion, and mount replacement, and be done. + if Path'First + Path_Last = Path'Last then + if Entry_Stat.Type_Of_File = File_Symbolic_Link and Do_Follow then + Read_Symbolic_Link + (Key => Actual_Key, + Ino => Actual_Ino, + Path => Symlink_Path.all, + Ret_Count => Symlink_Len, + Success => Success); + if Success /= FS_Success then + goto Invalid_Value_Return; + end if; + + Open + (Key => Orig_Key, + Relative => Orig_Ino, + Path => Symlink_Path (1 .. Symlink_Len), + Final_Key => Final_Key, + Ino => Ino, + Success => Success, + User => User, + Want_Read => Want_Read, + Want_Write => Want_Write, + Do_Follow => Do_Follow); + goto Cleanup_Only_Return; + elsif Entry_Stat.Type_Of_File = File_Directory then + -- Check whether we are dealing with a mount. + for I in Mounts'Range loop + if Mounts (I).Base_Key = Actual_Key and + Mounts (I).Base_Ino = Actual_Ino + then + Actual_Key := I; + Actual_Ino := Mounts (I).Root_Ino; + exit; + end if; + end loop; + end if; + exit; + end if; + + -- If we have found the next component and we are NOT at the end of + -- path, then we prepare to go again. We do that by making sure + -- we are at a symlink or directory. + case Entry_Stat.Type_Of_File is + when File_Directory => + for I in Mounts'Range loop + if Mounts (I).Base_Key = Actual_Key and + Mounts (I).Base_Ino = Actual_Ino + then + Actual_Key := I; + Actual_Ino := Mounts (I).Root_Ino; + VFS.Stat (Actual_Key, Actual_Ino, Entry_Stat, Success); + if Success /= FS_Success then + goto Invalid_Value_Return; + end if; + exit; + end if; + end loop; + + -- Check that we have a permission to keep going. + if not Can_Access_File + (User => User, + File_Owner => Entry_Stat.UID, + Mode => Entry_Stat.Mode, + Want_Read => True, + Want_Write => False, + Want_Exec => False) + then + goto Not_Allowed_Return; + end if; + when File_Symbolic_Link => + Read_Symbolic_Link + (Key => Actual_Key, + Ino => Actual_Ino, + Path => Symlink_Path.all, + Ret_Count => Symlink_Len, + Success => Success); + if Success /= FS_Success then + goto Invalid_Value_Return; + end if; + + Open + (Key => Orig_Key, + Relative => Orig_Ino, + Path => Symlink_Path (1 .. Symlink_Len) & "/" & + Path (Path'First + Path_Last + 1 .. Path'Last), + Final_Key => Final_Key, + Ino => Ino, + Success => Success, + User => User, + Want_Read => Want_Read, + Want_Write => Want_Write, + Do_Follow => Do_Follow); + goto Cleanup_Only_Return; + when others => + goto Invalid_Value_Return; + end case; + Path_Idx := Path_Last + 1; + end loop; + + -- Check that we can actually open with what is wanted. + VFS.Stat (Actual_Key, Actual_Ino, Entry_Stat, Success); + if Success /= FS_Success then + goto Invalid_Value_Return; + end if; + if not Can_Access_File + (User => User, + File_Owner => Entry_Stat.UID, + Mode => Entry_Stat.Mode, + Want_Read => Want_Read, + Want_Write => Want_Write, + Want_Exec => False) + then + goto Not_Allowed_Return; + end if; + + Free1 (Symlink_Path); + Free2 (Dir_Entries); + Final_Key := Actual_Key; + Ino := Actual_Ino; + Success := FS_Success; + return; + + <> + Free1 (Symlink_Path); + Free2 (Dir_Entries); + Final_Key := Error_Handle; + Ino := 0; + Success := FS_Invalid_Value; + return; + + <> + Free1 (Symlink_Path); + Free2 (Dir_Entries); + Final_Key := Error_Handle; + Ino := 0; + Success := FS_Not_Allowed; + return; + + <> + Free1 (Symlink_Path); + Free2 (Dir_Entries); + end Open; + + procedure Create_Node + (Key : FS_Handle; + Relative : File_Inode_Number; + Path : String; + Typ : File_Type; + Mode : File_Mode; + User : Unsigned_32; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Create_Node + (Mounts (Key).FS_Data, Relative, Path, Typ, Mode, User, Status); + when others => + Status := FS_Not_Supported; + end case; + end Create_Node; + + procedure Create_Symbolic_Link + (Key : FS_Handle; + Relative : File_Inode_Number; + Path : String; + Target : String; + Mode : Unsigned_32; + User : Unsigned_32; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Create_Symbolic_Link + (Mounts (Key).FS_Data, Relative, Path, Target, Mode, User, + Status); + when others => + Status := FS_Not_Supported; + end case; + end Create_Symbolic_Link; + + procedure Create_Hard_Link + (Key : FS_Handle; + Relative_Path : File_Inode_Number; + Path : String; + Relative_Target : File_Inode_Number; + Target : String; + User : Unsigned_32; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Create_Hard_Link + (Mounts (Key).FS_Data, Relative_Path, Path, Relative_Target, + Target, User, Status); + when others => + Status := FS_Not_Supported; + end case; + end Create_Hard_Link; + + procedure Rename + (Key : FS_Handle; + Relative_Source : File_Inode_Number; + Source : String; + Relative_Target : File_Inode_Number; + Target : String; + Keep : Boolean; + User : Unsigned_32; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Rename + (Mounts (Key).FS_Data, Relative_Source, Source, Relative_Target, + Target, Keep, User, Status); + when others => + Status := FS_Not_Supported; + end case; + end Rename; + + procedure Unlink + (Key : FS_Handle; + Relative : File_Inode_Number; + Path : String; + User : Unsigned_32; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Unlink (Mounts (Key).FS_Data, Relative, Path, User, Status); + when others => + Status := FS_Not_Supported; + end case; + end Unlink; + + procedure Close (Key : FS_Handle; Ino : File_Inode_Number) is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => null; + when FS_EXT => null; + when FS_FAT => FAT.Close (Mounts (Key).FS_Data, Ino); + end case; + end Close; + + procedure Read_Entries + (Key : FS_Handle; + Ino : File_Inode_Number; + Offset : Natural; + Entities : out Directory_Entities; + Ret_Count : out Natural; + Success : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => + Dev.Read_Entries + (Mounts (Key).FS_Data, + Ino, + Offset, + Entities, + Ret_Count, + Success); + when FS_EXT => + EXT.Read_Entries + (Mounts (Key).FS_Data, + Ino, + Offset, + Entities, + Ret_Count, + Success); + when FS_FAT => + FAT.Read_Entries + (Mounts (Key).FS_Data, + Ino, + Offset, + Entities, + Ret_Count, + Success); + end case; + end Read_Entries; + + procedure Read_Symbolic_Link + (Key : FS_Handle; + Ino : File_Inode_Number; + Path : out String; + Ret_Count : out Natural; + Success : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Read_Symbolic_Link + (Mounts (Key).FS_Data, Ino, Path, Ret_Count, Success); + when others => + Path := (others => ' '); + Ret_Count := 0; + Success := FS_Not_Supported; + end case; + end Read_Symbolic_Link; + + procedure Read + (Key : FS_Handle; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Is_Blocking : Boolean; + Success : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => + Dev.Read + (Mounts (Key).FS_Data, + Ino, + Offset, + Data, + Ret_Count, + Is_Blocking, + Success); + when FS_EXT => + EXT.Read + (Mounts (Key).FS_Data, + Ino, + Offset, + Data, + Ret_Count, + Success); + when FS_FAT => + FAT.Read + (Mounts (Key).FS_Data, + Ino, + Offset, + Data, + Ret_Count, + Success); + end case; + end Read; + + procedure Write + (Key : FS_Handle; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Is_Blocking : Boolean; + Success : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => + Dev.Write + (Mounts (Key).FS_Data, + Ino, + Offset, + Data, + Ret_Count, + Is_Blocking, + Success); + when FS_EXT => + EXT.Write + (Mounts (Key).FS_Data, + Ino, + Offset, + Data, + Ret_Count, + Success); + when others => + Ret_Count := 0; + Success := FS_Not_Supported; + end case; + end Write; + + procedure Stat + (Key : FS_Handle; + Ino : File_Inode_Number; + Stat_Val : out File_Stat; + Success : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => + Dev.Stat (Mounts (Key).FS_Data, Ino, Stat_Val, Success); + when FS_EXT => + EXT.Stat (Mounts (Key).FS_Data, Ino, Stat_Val, Success); + when FS_FAT => + FAT.Stat (Mounts (Key).FS_Data, Ino, Stat_Val, Success); + end case; + end Stat; + + procedure Truncate + (Key : FS_Handle; + Ino : File_Inode_Number; + New_Size : Unsigned_64; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Truncate (Mounts (Key).FS_Data, Ino, New_Size, Status); + when others => + Status := FS_Not_Supported; + end case; + end Truncate; + + procedure IO_Control + (Key : FS_Handle; + Ino : File_Inode_Number; + Request : Unsigned_64; + Arg : System.Address; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => + Dev.IO_Control + (Mounts (Key).FS_Data, Ino, Request, Arg, Status); + when FS_EXT => + EXT.IO_Control + (Mounts (Key).FS_Data, Ino, Request, Arg, Status); + when others => + Status := FS_Not_Supported; + end case; + end IO_Control; + + procedure Mmap + (Key : FS_Handle; + Ino : File_Inode_Number; + Map : Arch.MMU.Page_Table_Acc; + Offset : Unsigned_64; + Address : Memory.Virtual_Address; + Length : Unsigned_64; + Flags : Arch.MMU.Page_Permissions; + Status : out FS_Status) + is + pragma Unreferenced (Offset); + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => + Dev.Mmap + (Mounts (Key).FS_Data, Ino, Map, Address, Length, Flags, + Status); + when others => + Status := FS_Not_Supported; + end case; + end Mmap; + + procedure Poll + (Key : FS_Handle; + Ino : File_Inode_Number; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean) + is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => + Dev.Poll + (Mounts (Key).FS_Data, Ino, Can_Read, Can_Write, Is_Error); + when others => + Can_Read := True; + Can_Write := True; + Is_Error := False; + end case; + end Poll; + + function Synchronize (Key : FS_Handle) return FS_Status is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => return Dev.Synchronize (Mounts (Key).FS_Data); + when FS_EXT => return EXT.Synchronize (Mounts (Key).FS_Data); + when FS_FAT => return FS_Not_Supported; + end case; + end Synchronize; + + function Synchronize + (Key : FS_Handle; + Ino : File_Inode_Number; + Data_Only : Boolean) return FS_Status + is + begin + case Mounts (Key).Mounted_FS is + when FS_DEV => + return Dev.Synchronize (Mounts (Key).FS_Data, Ino, Data_Only); + when FS_EXT => + return EXT.Synchronize (Mounts (Key).FS_Data, Ino, Data_Only); + when others => + return FS_Not_Supported; + end case; + end Synchronize; + + procedure Change_Mode + (Key : FS_Handle; + Ino : File_Inode_Number; + Mode : File_Mode; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Change_Mode (Mounts (Key).FS_Data, Ino, Mode, Status); + when others => + Status := FS_Not_Supported; + end case; + end Change_Mode; + + procedure Change_Owner + (Key : FS_Handle; + Ino : File_Inode_Number; + Owner : Unsigned_32; + Group : Unsigned_32; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Change_Owner + (Mounts (Key).FS_Data, Ino, Owner, Group, Status); + when others => + Status := FS_Not_Supported; + end case; + end Change_Owner; + + procedure Check_Access + (Key : FS_Handle; + Ino : File_Inode_Number; + Exists_Only : Boolean; + Can_Read : Boolean; + Can_Write : Boolean; + Can_Exec : Boolean; + Real_UID : Unsigned_32; + Status : out FS_Status) + is + Ino_Stat : File_Stat; + begin + Stat (Key, Ino, Ino_Stat, Status); + if Status /= FS_Success or else Exists_Only then + return; + end if; + + if Can_Access_File + (User => Real_UID, + File_Owner => Ino_Stat.UID, + Mode => Ino_Stat.Mode, + Want_Read => Can_Read, + Want_Write => Can_Write, + Want_Exec => Can_Exec) + then + Status := FS_Success; + else + Status := FS_Not_Allowed; + end if; + end Check_Access; + + procedure Change_Access_Times + (Key : FS_Handle; + Ino : File_Inode_Number; + Access_Seconds : Unsigned_64; + Access_Nanoseconds : Unsigned_64; + Modify_Seconds : Unsigned_64; + Modify_Nanoseconds : Unsigned_64; + Status : out FS_Status) + is + begin + case Mounts (Key).Mounted_FS is + when FS_EXT => + EXT.Change_Access_Times + (Mounts (Key).FS_Data, Ino, Access_Seconds, Access_Nanoseconds, + Modify_Seconds, Modify_Nanoseconds, Status); + when others => + Status := FS_Not_Supported; + end case; + end Change_Access_Times; + ---------------------------------------------------------------------------- + procedure Open + (Path : String; + Key : out FS_Handle; + Ino : out File_Inode_Number; + Success : out FS_Status; + User : Unsigned_32; + Want_Read : Boolean; + Want_Write : Boolean; + Do_Follow : Boolean := True) + is + begin + Open + (Key => 1, + Relative => Mounts (1).Root_Ino, + Path => Path, + Final_Key => Key, + Ino => Ino, + Success => Success, + User => User, + Want_Read => Want_Read, + Want_Write => Want_Write, + Do_Follow => Do_Follow); + end Open; + + procedure Synchronize (Success : out Boolean) is + begin + Success := True; + + Lib.Synchronization.Seize (Mounts_Mutex); + for I in Mounts'Range loop + if Mounts (I).Mounted_Dev /= Devices.Error_Handle then + if Synchronize (I) = FS_IO_Failure then + Success := False; + end if; + end if; + end loop; + Lib.Synchronization.Release (Mounts_Mutex); + end Synchronize; + + procedure Create_Node + (Path : String; + Typ : File_Type; + Mode : File_Mode; + Success : out FS_Status; + User : Unsigned_32) + is + begin + Create_Node + (Key => 1, + Relative => Mounts (1).Root_Ino, + Path => Path, + Typ => Typ, + Mode => Mode, + User => User, + Status => Success); + end Create_Node; + ---------------------------------------------------------------------------- + function Is_Absolute (Path : String) return Boolean is + begin + return Path'Length >= 1 and then Path (Path'First) = '/'; + end Is_Absolute; + ---------------------------------------------------------------------------- + function Can_Access_File + (User : Unsigned_32; + File_Owner : Unsigned_32; + Mode : File_Mode; + Want_Read : Boolean; + Want_Write : Boolean; + Want_Exec : Boolean) return Boolean + is + begin + if User = 0 then + return True; + end if; + + if File_Owner = User then + if (Want_Read and then ((Mode and 8#400#) = 0)) or + (Want_Write and then ((Mode and 8#200#) = 0)) or + (Want_Exec and then ((Mode and 8#100#) = 0)) + then + return False; + end if; + else + if (Want_Read and then ((Mode and 8#004#) = 0)) or + (Want_Write and then ((Mode and 8#002#) = 0)) or + (Want_Exec and then ((Mode and 8#001#) = 0)) + then + return False; + end if; + end if; + + return True; + end Can_Access_File; +end VFS; diff --git a/source/vfs/vfs.ads b/source/vfs/vfs.ads new file mode 100644 index 0000000..a3daba7 --- /dev/null +++ b/source/vfs/vfs.ads @@ -0,0 +1,674 @@ +-- vfs.ads: FS and register dispatching. +-- Copyright (C) 2024 streaksu +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +with Interfaces; use Interfaces; +with System; use System; +with Devices; use Devices; +with Lib.Synchronization; +with Arch.MMU; +with Memory; + +package VFS is + -- Inodes numbers are identifiers that denotes a unique file inside an FS. + -- These values are not consistent across filesystems, they may not be + -- consistent across different mounts, depending on the FS. + type File_Inode_Number is new Unsigned_64; + + -- Each inode has a mode. They are POSIX standard. uid, gid, and sticky + -- bits are ignored. + subtype File_Mode is Unsigned_32 range 8#000# .. 8#777#; + + -- Stat structure of a file, which describes the qualities of a file. + type File_Timestamp is record + Seconds_Since_Epoch : Unsigned_64; + Additional_Nanoseconds : Unsigned_64; + end record; + type File_Type is (File_Regular, File_Directory, File_Symbolic_Link, + File_Character_Device, File_Block_Device); + type File_Stat is record + Unique_Identifier : File_Inode_Number; + Type_Of_File : File_Type; + Mode : File_Mode; + UID : Unsigned_32; + GID : Unsigned_32; + Hard_Link_Count : Positive; + Byte_Size : Unsigned_64; + IO_Block_Size : Natural; + IO_Block_Count : Unsigned_64; + Creation_Time : File_Timestamp; + Modification_Time : File_Timestamp; + Access_Time : File_Timestamp; + end record; + + -- Describes an entity inside the contents of a directory. + type Directory_Entity is record + Inode_Number : Unsigned_64; + Name_Buffer : String (1 .. 60); + Name_Len : Natural; + Type_Of_File : File_Type; + end record; + type Directory_Entities is array (Natural range <>) of Directory_Entity; + type Directory_Entities_Acc is access Directory_Entities; + + -- Maximum number of symlink recursions allowed for filesystems. + -- When practically limited, this will be the limit the kernel will default + -- to. When not practically limited, this will be an imposed limit in order + -- to avoid forever loops. Recursing more than this value will be an error. + Max_Symlink_Loop : constant Natural; + ---------------------------------------------------------------------------- + -- Handle for interfacing with mounted FSs and FS types. + type FS_Type is (FS_DEV, FS_EXT, FS_FAT); + type FS_Handle is private; + Error_Handle : constant FS_Handle; + Path_Buffer_Length : constant Natural; + + -- Initialize the internal VFS registries. + procedure Init with Post => Is_Initialized = True; + + -- Mount the passed device name into the passed path, guessing the FS. + -- @param Device_Name Name of the device (/dev/). + -- @param Mount_Path Absolute path for mounting. + -- @param Do_Read_Only Force to mount read only. + -- @param Do_Relatime Use relative time for access times.v + -- @param Success True on success, False on failure. + procedure Mount + (Device_Name : String; + Mount_Path : String; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean) + with Pre => Device_Name'Length <= Devices.Max_Name_Length and + Devices.Is_Initialized and + Is_Initialized; + + -- Mount the passed device name into the passed path. + -- @param Device_Name Name of the device (/dev/). + -- @param Mount_Path Absolute path for mounting. + -- @param FS FS Type to mount as. + -- @param Do_Read_Only Force to mount read only. + -- @param Do_Relatime Use relative time for access times. + -- @param Success True on success, False on failure. + procedure Mount + (Device_Name : String; + Mount_Path : String; + FS : FS_Type; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean) + with Pre => Device_Name'Length <= Devices.Max_Name_Length and + Devices.Is_Initialized and + Is_Initialized; + + -- Unmount a mount, syncing when possible. + -- @param Path Path of the mount to unmount. + -- @param Force Whether to unmount even if busy. + -- @param Success True on success, False if busy or non present. + procedure Unmount (Path : String; Force : Boolean; Success : out Boolean) + with Pre => Is_Initialized; + + -- Get a best-matching mount for the passed path. + -- @param Path Path to search a mount for. + -- @param Match Count of characters matched. + -- @param Handle Key to use to refer to the mount, Error_Handle if error. + procedure Get_Mount + (Path : String; + Match : out Natural; + Handle : out FS_Handle) + with Pre => Is_Initialized; + + -- Array of handles. + type Mountpoint_Arr is array (Natural range <>) of FS_Handle; + + -- List all mountpoints on the system. + -- @param List Where to write all the mount information. + -- @param Total Total count of mountpoints, even if it is > List'Length. + procedure List_All (List : out Mountpoint_Arr; Total : out Natural) + with Pre => Devices.Is_Initialized and Is_Initialized; + + -- Get the backing FS type. + -- @param Key Key to use to fetch the info. + -- @return The FS type, will be a placeholder if the key is not valid. + function Get_Backing_FS (Key : FS_Handle) return FS_Type + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the backing data of the FS. + -- @param Key Key to use to fetch the info. + -- @return The FS data, or System.Null_Address if not a valid key. + function Get_Backing_FS_Data (Key : FS_Handle) return System.Address + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the backing device of a mount. + -- @param Key Key to use to fetch the info. + -- @return The backing device. + function Get_Backing_Device (Key : FS_Handle) return Device_Handle + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the backing device of a mount. + -- @param Key Key to use to fetch the info. + -- @return The backing device. + procedure Get_Mount_Point + (Key : FS_Handle; + Name : out String; + Length : out Natural) + with Pre => Is_Initialized and Key /= Error_Handle and + Name'Length <= Path_Buffer_Length; + + -- Remount the passed path with the desired flags. + -- @param Key FS key. + -- @param Do_Read_Only Force to mount read only. + -- @param Do_Relatime Use relative time for access times. + -- @param Success True on success, False on failure. + procedure Remount + (Key : FS_Handle; + Do_Read_Only : Boolean; + Do_Relatime : Boolean; + Success : out Boolean) + with Pre => Is_Initialized and Key /= Error_Handle; + ---------------------------------------------------------------------------- + -- Get the block size of the passed mounted FS. The unit symbolizes the + -- preferred IO size of the FS. + -- @param Key FS Key. + -- @param Size Block size of the FS. + procedure Get_Block_Size (Key : FS_Handle; Size : out Unsigned_64) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the block size of the passed mounted FS. The unit symbolizes the + -- minimum unit of allocation of the passed FS. + -- @param Key FS Key. + -- @param Size Fragment size of the FS. + procedure Get_Fragment_Size (Key : FS_Handle; Size : out Unsigned_64) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the whole size IN FRAGMENTS of the FS. + -- @param Key FS Key. + -- @param Size Size of the FS IN FRAGMENTS. + procedure Get_Size (Key : FS_Handle; Size : out Unsigned_64) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the total inode count of the FS, allocated and unallocated. + -- @param Key FS Key. + -- @param Count Count. + procedure Get_Inode_Count (Key : FS_Handle; Count : out Unsigned_64) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the total block count of the FS, allocated and unallocated. + -- @param Key FS Key. + -- @param Free_Blocks Free blocks for the highest priviledge level. + -- @param Free_Unpriviledged Free blocks for everyone. + procedure Get_Free_Blocks + (Key : FS_Handle; + Free_Blocks : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the total inode count of the FS, allocated and unallocated. + -- @param Key FS Key. + -- @param Free_Inodes Free inodes for the highest priviledge level. + -- @param Free_Unpriviledged Free inodes for everyone. + procedure Get_Free_Inodes + (Key : FS_Handle; + Free_Inodes : out Unsigned_64; + Free_Unpriviledged : out Unsigned_64) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the total length of a file name in the FS. + -- @param Key FS Key. + -- @param Length Maximum length of a file name. + procedure Get_Max_Length (Key : FS_Handle; Length : out Unsigned_64) + with Pre => Is_Initialized and Key /= Error_Handle; + ---------------------------------------------------------------------------- + -- Status returned from file operations as result. + type FS_Status is + (FS_Success, -- Success, only good value for ease of checking. + FS_Invalid_Value, -- One of the passed values is no good. + FS_Is_Directory, -- The operation does not accept directories! + FS_Not_Supported, -- The operation is not supported for this FS. + FS_Not_Allowed, -- Bad permissions for interacting with the inode. + FS_RO_Failure, -- The FS is read-only, but write access is needed. + FS_IO_Failure, -- The underlying device errored out. + FS_Loop); -- Too many symlinks were encountered resolving path. + + -- Open a file with an absolute path inside the mount. + -- @param Key Relative FS Handle to start opening. + -- @param Relative Relative directory inode to open from. + -- @param Path Path to be accessed inside Relative, or absolute. + -- @param Final_Key Final FS Handle we end on. + -- @param Ino Found inode, if any. + -- @param Success Returned status for the operation. + -- @param User UID to check against, 0 for root/bypass checks. + -- @param Want_Read True for read permission, False for not. + -- @param Want_Write True for write permission, False for not. + -- @param Do_Follow If true, follow symlinks, hard links are always used. + procedure Open + (Key : FS_Handle; + Relative : File_Inode_Number; + Path : String; + Final_Key : out FS_Handle; + Ino : out File_Inode_Number; + Success : out FS_Status; + User : Unsigned_32; + Want_Read : Boolean; + Want_Write : Boolean; + Do_Follow : Boolean := True) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Create an inode inside a mount. + -- @param Key FS Handle to open. + -- @param Relative Relative directory inode to create from. + -- @param Path Path to be created inside Relative, or absolute. + -- @param Typ Type of file to create. + -- @param Mode Mode to use for the created file. + -- @param User UID to check against, 0 for root/bypass checks. + -- @param Status Status for the operation. + procedure Create_Node + (Key : FS_Handle; + Relative : File_Inode_Number; + Path : String; + Typ : File_Type; + Mode : File_Mode; + User : Unsigned_32; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Create a symlink with a target inside a mount. + -- @param Key FS Handle to open. + -- @param Relative Relative directory inode to create from. + -- @param Path Path to be created inside Relative, or absolute. + -- @param Target Target of the symlink, it is not checked in any way. + -- @param Mode Mode to use for the created symlink. + -- @param User UID to check against, 0 for root/bypass checks. + -- @param Status Status for the operation. + procedure Create_Symbolic_Link + (Key : FS_Handle; + Relative : File_Inode_Number; + Path : String; + Target : String; + Mode : Unsigned_32; + User : Unsigned_32; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Create a hard link inside a mount with a target. + -- @param Key FS Handle to open. + -- @param Relative_Path Relative directory inode to create from. + -- @param Path Path inside the mount, must not exist. + -- @param Relative_Target Relative directory inode to link to. + -- @param Target Target of the link, must exist. + -- @param User UID to check against, 0 for root/bypass checks. + -- @param Status Status for the operation. + procedure Create_Hard_Link + (Key : FS_Handle; + Relative_Path : File_Inode_Number; + Path : String; + Relative_Target : File_Inode_Number; + Target : String; + User : Unsigned_32; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Rename a file to a target, optionally keeping it in the process. + -- @param Key FS Handle to open. + -- @param Relative_Source Relative directory inode to create from. + -- @param Source Path to be renamed inside Relative, or absolute. + -- @param Relative_Target Relative directory inode to rename to. + -- @param Target Target of the rename, must not exist. + -- @param Keep Keep the source instead of plainly renaming it. + -- @param User UID to check against, 0 for root/bypass checks. + -- @param Status Status for the operation. + procedure Rename + (Key : FS_Handle; + Relative_Source : File_Inode_Number; + Source : String; + Relative_Target : File_Inode_Number; + Target : String; + Keep : Boolean; + User : Unsigned_32; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Queue a file for deletion inside a mount. + -- @param Key FS Handle to open. + -- @param Relative Relative directory inode to unlink from. + -- @param Path Absolute path inside the mount, must exist. + -- @param User UID to check against, 0 for root/bypass checks. + -- @param Status Status for the operation. + procedure Unlink + (Key : FS_Handle; + Relative : File_Inode_Number; + Path : String; + User : Unsigned_32; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Signal to the FS we do not need this inode anymore. + -- @param Key FS handle to operate on. + -- @param Ino Inode to signal to close. + procedure Close (Key : FS_Handle; Ino : File_Inode_Number) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Read the entries of an opened directory. + -- @param Key FS handle to operate on. + -- @param Ino Inode to operate on. + -- @param Offset Offset to start from. + -- @param Entities Where to store the read entries, as many as possible. + -- @param Ret_Count The count of entries, even if num > Entities'Length. + -- @param Success Status for the operation. + procedure Read_Entries + (Key : FS_Handle; + Ino : File_Inode_Number; + Offset : Natural; + Entities : out Directory_Entities; + Ret_Count : out Natural; + Success : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Read the contents of a symbolic link. + -- @param Key FS handle to operate on. + -- @param Ino Inode to operate on. + -- @param Path Buffer to store the read path. + -- @param Ret_Count Symlink character count, even if num > Path'Length. + -- @param Success Status for the operation. + procedure Read_Symbolic_Link + (Key : FS_Handle; + Ino : File_Inode_Number; + Path : out String; + Ret_Count : out Natural; + Success : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Read from a regular file. + -- @param Key FS Handle to open. + -- @param Ino Inode to operate on. + -- @param Offset Offset to read from. + -- @param Data Place to write read data. + -- @param Ret_Count How many items were read into Data until EOF. + -- @param Is_Blocking True if the call is to be blocking. + -- @param Success Status for the operation. + procedure Read + (Key : FS_Handle; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : out Operation_Data; + Ret_Count : out Natural; + Is_Blocking : Boolean; + Success : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Write to a regular file. + -- @param Key FS Handle to open. + -- @param Ino Inode to operate on. + -- @param Offset Offset to write to. + -- @param Data Data to write + -- @param Ret_Count How many items were written until EOF. + -- @param Is_Blocking True if the call is to be blocking. + -- @param Success Status for the operation. + procedure Write + (Key : FS_Handle; + Ino : File_Inode_Number; + Offset : Unsigned_64; + Data : Operation_Data; + Ret_Count : out Natural; + Is_Blocking : Boolean; + Success : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Get the stat of a file. + -- @param Key FS Handle to open. + -- @param Ino Inode to operate on. + -- @param Stat_Val Data to fetch. + -- @param Success Status for the operation. + procedure Stat + (Key : FS_Handle; + Ino : File_Inode_Number; + Stat_Val : out File_Stat; + Success : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Truncate a file to size 0. + -- @param Key FS Handle to open. + -- @param Ino Inode to operate on. + -- @param New_Size New size for the file to adopt. + -- @param Status Status for the operation. + procedure Truncate + (Key : FS_Handle; + Ino : File_Inode_Number; + New_Size : Unsigned_64; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Do an FS-specific ioctl on the inode. + -- @param Key FS Handle to open. + -- @param Ino Inode to operate on. + -- @param Request FS-Specific request to issue. + -- @param Arg Address of an optional argument for the FS. + -- @param Status Status for the operation. + procedure IO_Control + (Key : FS_Handle; + Ino : File_Inode_Number; + Request : Unsigned_64; + Arg : System.Address; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Do an FS-specific mmap operation on a file. + -- @param Key FS Handle to open. + -- @param Ino Inode to operate on. + -- @param Map Map to map to. + -- @param Offset Offset inside the fall to map to. + -- @param Address Address to map to. + -- @param Length Length of the map. + -- @param Flags Flags to use for the mapping. + -- @param Status Status for the operation. + procedure Mmap + (Key : FS_Handle; + Ino : File_Inode_Number; + Map : Arch.MMU.Page_Table_Acc; + Offset : Unsigned_64; + Address : Memory.Virtual_Address; + Length : Unsigned_64; + Flags : Arch.MMU.Page_Permissions; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Do an FS-specific poll operation on a file. + -- @param Key FS Handle to open. + -- @param Ino Inode to operate on. + -- @param Can_Read True if the file is ready for reading. + -- @param Can_Write True if the file is ready for writing. + -- @param Is_Error True if the file is errored out. + procedure Poll + (Key : FS_Handle; + Ino : File_Inode_Number; + Can_Read : out Boolean; + Can_Write : out Boolean; + Is_Error : out Boolean) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Synchronize the whole FS driver-specific caches and used device. + -- @param Key FS Handle to open. + -- @return Status for the operation. + function Synchronize (Key : FS_Handle) return FS_Status + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Synchronize the contents of a file cached by the FS driver. + -- @param Key FS Handle to open. + -- @param Ino Inode to operate on. + -- @param Data_Only Flush only the data if possible, and not the metadata. + -- @return Status for the operation. + function Synchronize + (Key : FS_Handle; + Ino : File_Inode_Number; + Data_Only : Boolean) return FS_Status + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Change the mode of an inode. + -- @param Key FS Handle to use. + -- @param Ino Inode to change the mode of. + -- @param Mode Mode to change the inode to. + -- @param Status Status of the operation. + procedure Change_Mode + (Key : FS_Handle; + Ino : File_Inode_Number; + Mode : File_Mode; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Change the owner of an inode. + -- @param Key FS Handle to use. + -- @param Ino Inode to change the mode of. + -- @param Owner Owner to change ownership to. + -- @param Group Group to change ownership to. + -- @param Status Status of the operation. + procedure Change_Owner + (Key : FS_Handle; + Ino : File_Inode_Number; + Owner : Unsigned_32; + Group : Unsigned_32; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Check access of for an inode. + -- @param Key FS Handle to use. + -- @param Ino Inode to change the mode of. + -- @param Exists_Only If True, only check for existance. + -- @param Can_Read If True, check for the ability to read. + -- @param Can_Write If True, check for the ability to write. + -- @param Can_Exec If True, check for the ability to execute. + -- @param Real_UID Real UID to check against. + -- @param Status Status of the operation. + procedure Check_Access + (Key : FS_Handle; + Ino : File_Inode_Number; + Exists_Only : Boolean; + Can_Read : Boolean; + Can_Write : Boolean; + Can_Exec : Boolean; + Real_UID : Unsigned_32; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + + -- Change the access times of an inode. + -- @param Key FS Handle to use. + -- @param Ino Inode to change the mode of. + -- @param Access_Seconds Access timestamp epoch seconds. + -- @param Access_Nanoseconds Access timestamp nanoseconds. + -- @param Modify_Seconds Modification timestamp epoch seconds. + -- @param Modify_Nanoseconds Modification timestamp nanoseconds. + -- @param Status Status of the operation. + procedure Change_Access_Times + (Key : FS_Handle; + Ino : File_Inode_Number; + Access_Seconds : Unsigned_64; + Access_Nanoseconds : Unsigned_64; + Modify_Seconds : Unsigned_64; + Modify_Nanoseconds : Unsigned_64; + Status : out FS_Status) + with Pre => Is_Initialized and Key /= Error_Handle; + ---------------------------------------------------------------------------- + -- FS-independent versions of operations, that rely on the driver to search + -- for the appropiate FS, or operate on several FSes. + + -- Open a file with an absolute path system-wide. + -- @param Path Absolute path inside the mount, creation is not done. + -- @param Key Guessed FS handle. + -- @param Ino Found inode, if any. + -- @param Success Returned status for the operation. + -- @param User UID to check against, 0 for root/bypass checks. + -- @param Want_Read True for read permission, False for not. + -- @param Want_Write True for write permission, False for not. + -- @param Do_Follow True to follow symlinks, False for not following em. + procedure Open + (Path : String; + Key : out FS_Handle; + Ino : out File_Inode_Number; + Success : out FS_Status; + User : Unsigned_32; + Want_Read : Boolean; + Want_Write : Boolean; + Do_Follow : Boolean := True) + with Pre => Is_Initialized, + Post => (if Success = FS_Success then + Key /= Error_Handle else True); + + -- Synchronize all FSs mounted on the system, FSs with no implemented + -- synchronization routines are ignored. + -- @param Success True on success. False if any FSs failed for IO reasons. + procedure Synchronize (Success : out Boolean) + with Pre => Is_Initialized; + + -- Create several kinds of files. + -- @param Path System-wide absolute path. + -- @param Typ File type to create. + -- @param Mode Mode to set for the created inode. + -- @param Success Status of the operation. + -- @param User UID to check against, 0 for root/bypass checks. + procedure Create_Node + (Path : String; + Typ : File_Type; + Mode : File_Mode; + Success : out FS_Status; + User : Unsigned_32) + with Pre => Is_Initialized; + ---------------------------------------------------------------------------- + -- Check whether a path is absolute. + -- @param Path to check. + -- @return True if absolute, False if not. + function Is_Absolute (Path : String) return Boolean; + + -- Apply a umask to a mode. + -- @param Mode Mode to use. + -- @param Umask Umask to use. + -- @return The resulting mode. + function Apply_Umask (Mode, Umask : File_Mode) return File_Mode is + (File_Mode (Unsigned_32 (Mode) and not Unsigned_32 (Umask))); + ---------------------------------------------------------------------------- + -- Ghost function for checking whether the vfs handling is initialized. + function Is_Initialized return Boolean with Ghost; + +private + + type FS_Handle is new Natural range 0 .. 5; + Max_Symlink_Loop : constant Natural := 8; + Error_Handle : constant FS_Handle := 0; + Path_Buffer_Length : constant Natural := 100; + + type Mount_Data is record + Mounted_Dev : Device_Handle; + Mounted_FS : FS_Type; + FS_Data : System.Address; + Path_Length : Natural range 0 .. Path_Buffer_Length; + Path_Buffer : String (1 .. Path_Buffer_Length); + Base_Key : FS_Handle; + Base_Ino : File_Inode_Number; + Root_Ino : File_Inode_Number; + end record; + + type Mount_Registry is array (FS_Handle range 1 .. 5) of Mount_Data; + type Mount_Registry_Acc is access Mount_Registry; + + Mounts : Mount_Registry_Acc; + Mounts_Mutex : aliased Lib.Synchronization.Binary_Semaphore; + + function Is_Initialized return Boolean is (Mounts /= null); + + function Can_Access_File + (User : Unsigned_32; + File_Owner : Unsigned_32; + Mode : File_Mode; + Want_Read : Boolean; + Want_Write : Boolean; + Want_Exec : Boolean) return Boolean; +end VFS; diff --git a/version.sh b/version.sh new file mode 100755 index 0000000..a1806b2 --- /dev/null +++ b/version.sh @@ -0,0 +1,41 @@ +#! /bin/sh +# Copyright (C) 2023-2024 mintsuki and contributors. +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +LC_ALL=C +export LC_ALL + +srcdir="$(dirname "$0")" +test -z "$srcdir" && srcdir=. + +cd "$srcdir" + +if [ -f version ]; then + printf '%s' "$(cat version)" + exit 0 +fi + +if ! [ -d .git ] || ! git log -n1 --pretty='%h' >/dev/null 2>&1; then + printf 'UNVERSIONED' + exit 0 +fi + +tmpfile="$(mktemp)" + +if ! git describe --exact-match --tags $(git log -n1 --pretty='%h') >"$tmpfile" 2>/dev/null; then + echo g$(git log -n1 --pretty='%h') >"$tmpfile" +fi + +printf '%s' "$(sed 's/^v//g' <"$tmpfile")" + +rm -f "$tmpfile" From f0945506002e56448cf012e33d08c46ea820e7b4 Mon Sep 17 00:00:00 2001 From: Michael Shires Date: Fri, 13 Dec 2024 10:59:47 -0500 Subject: [PATCH 04/99] made build path user agnostic and added bootstrap to README --- README | 1 + rts.gpr | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README b/README index c3d0a32..6cd2687 100644 --- a/README +++ b/README @@ -28,6 +28,7 @@ The tools needed are: For building the project's binaries, a standard configure-make-make install is enough, like the following: +./bootstrap # builds the configure.ac file, this is preferred over autoreconf manually ./configure --target=x86_64-limine-elf # Or whatever other target. make make check # If desired, will need gnatprove and perl. diff --git a/rts.gpr b/rts.gpr index 606a8ad..82e3acb 100644 --- a/rts.gpr +++ b/rts.gpr @@ -31,7 +31,7 @@ library project RTS is for Languages use ("Ada"); package Builder is - for Global_Configuration_Pragmas use "/home/michael/capstoneProject/ironclad/source/pragmas.adc"; + for Global_Configuration_Pragmas use "source/pragmas.adc"; for Switches ("Ada") use ("-nostdlib", "-nostdinc"); end Builder; From c3be5d304c90184dd117179adad418b11a88598d Mon Sep 17 00:00:00 2001 From: Michael Shires Date: Fri, 13 Dec 2024 11:14:32 -0500 Subject: [PATCH 05/99] made README.md more readable and converted to markdown. --- README.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..aef8762 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# ICK-RISCV + +This is a capstone project at Pennsylvania State University - World Campus for Software Engineering 480/481, for the class of 2025. +This is a copy of Ironclad, the original code is [here](https://ironclad.nongnu.org). + + +## Install Packages + +```console +sudo apt-get update && sudo apt-get install -y autoconf automake perl texinfo gnatprove highlight +``` + +## Building + +- Generate a configure.ac: +```console +./bootstrap +``` + +- Configure for target machine. Other option is `x86_64-limine-elf`: +```console +./configure --target=riscv64-limine-elf +``` + +- Build: +```console +make +make check +make install +``` + From 1732654d7cb9af1f6b42da0fb7d6ba43da742230 Mon Sep 17 00:00:00 2001 From: Michael Shires Date: Fri, 13 Dec 2024 11:17:46 -0500 Subject: [PATCH 06/99] Removed old README file. --- README | 62 ---------------------------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 README diff --git a/README b/README deleted file mode 100644 index 6cd2687..0000000 --- a/README +++ /dev/null @@ -1,62 +0,0 @@ -Ironclad is a partially formally verified real-time kernel, with a small -footprint, for general-purpose and embedded OSes, written in SPARK and Ada. - -Some of the supported features are: - -- A familiar POSIX-compatible interface. -- True simultaneous multitasking. -- Resiliency and small footprint. -- Partial gold-level formal verification. -- Advanced cryptography and a security-centered architecture, including MAC. -- Hard real-time scheduling and real-time oriented features. -- Support for severals architectures and boards. - -For more information about the project, some autogenerated documentation, bug -reporting, and development guides, check https://ironclad.nongnu.org - --- Building and testing -- - -The tools needed are: - -- autoconf and automake when not using a tarball. -- perl for some checks, not for compilation. -- gprbuild for compilation, along with a compatible Ada compiler and assembler. -- GNU Info for building the documentation. -- gnatprove for formal verification, if desired. -- highlight for syntax highlighting when building the HTML documentation. - -For building the project's binaries, a standard configure-make-make install is -enough, like the following: - -./bootstrap # builds the configure.ac file, this is preferred over autoreconf manually -./configure --target=x86_64-limine-elf # Or whatever other target. -make -make check # If desired, will need gnatprove and perl. -make install - -Several flags are provided in configure for customizing kernel settings, one -can check them with ./configure --help. - -The target has to always been specified, the vendor is used as the board to -compile for, the OS field is a placeholder and not used, autoconf just wants -it to be there. - -Documentation will be generated and installed with the main executable in the -info format, additional formats can be built with `make html` or `make dvi`. - --- Contributing -- - -Thanks for considering contributing to Ironclad, it means a lot. - -Please check for information -on how to get started, and how to submit patches to the project. -======================================================================== - -Copyright (C) 2023 streaksu - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 or -any later version published by the Free Software Foundation; with no -Invariant Sections, with no Front-Cover Texts, and with no Back-Cover -Texts. A copy of the license is included in the "GNU Free -Documentation License" file as part of this distribution. From 257b2b13fbf8a23171eddbad034b18e8e23ce531 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 08:58:35 -0500 Subject: [PATCH 07/99] Initial implementtation of arch-context, arch-context test cases, context test suite, and riscv64 test harness. --- source/.github/workflows/riscv64-ci.yml | 95 ++++++++ source/arch/riscv64-limine/arch-context.adb | 229 ++++++++++++++++++-- source/tests/riscv64/test-context.adb | 95 ++++++++ source/tests/riscv64/test-context.ads | 0 4 files changed, 396 insertions(+), 23 deletions(-) create mode 100644 source/.github/workflows/riscv64-ci.yml create mode 100644 source/tests/riscv64/test-context.adb create mode 100644 source/tests/riscv64/test-context.ads diff --git a/source/.github/workflows/riscv64-ci.yml b/source/.github/workflows/riscv64-ci.yml new file mode 100644 index 0000000..0cd6813 --- /dev/null +++ b/source/.github/workflows/riscv64-ci.yml @@ -0,0 +1,95 @@ +name: RISC-V 64 Arch CI + +on: + push: + branches: + - main + - 7-port-arch-contextadb + pull_request: + branches: + - main + - 7-port-arch-contextadb + merge_group: + branches: + - main + - 7-port-arch-contextadb + +jobs: + build-test-riscv: + runs-on: ubuntu-latest + container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain # RISC-V toolchain container + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Install Dependencies + run: | + sudo apt update + sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user riscv64-linux-gnu-gcc riscv64-linux-gnu-binutils + + - name: Verify SPARK Proofs + run: | + gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 + + - name: Compile and Run Test Harness + run: | + gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv + qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt + + - name: Upload Test Logs as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-logs + path: tests/test-log.txt + + - name: Validate Test Output and Track History + id: test_results + run: | + TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") + COMMIT_HASH=$(git rev-parse --short HEAD) + echo "Test Run on: $TIMESTAMP (Commit: $COMMIT_HASH)" >> tests/test-history.log + echo "----------------------------------------" >> tests/test-history.log + cat tests/test-log.txt >> tests/test-history.log + echo "" >> tests/test-history.log + + if ! grep -q "[PASSED] Test_GP_Context" tests/test-log.txt; then + echo "GP Context Test Failed!" | tee -a tests/test-report.txt + echo "failed=true" >> $GITHUB_ENV + fi + if ! grep -q "[PASSED] Test_Success_Fork_Result" tests/test-log.txt; then + echo "Success Fork Test Failed!" | tee -a tests/test-report.txt + echo "failed=true" >> $GITHUB_ENV + fi + echo "All tests passed successfully!" | tee -a tests/test-report.txt + + - name: Set Commit Status + if: always() + run: | + if [[ "${{ env.failed }}" == "true" ]]; then + echo "::error title=CI/CD Failed::Tests did not pass." + exit 1 + else + echo "::notice title=CI/CD Passed::All tests successful." + fi + + - name: Upload Test Report as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-report + path: tests/test-report.txt + + - name: Upload Test History as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-history + path: tests/test-history.log + + - name: Create GitHub Issue on Failure + if: env.failed == 'true' + uses: peter-evans/create-issue-from-file@v5 + with: + title: "CI/CD Test Failure - RISC-V Context Switching" + content-filepath: tests/test-report.txt + labels: bug, ci-failure + assignees: your-github-username diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index 9274cad..43eb48e 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -14,55 +14,238 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . +-- arch-context.adb: Architecture-specific context switching for RISC-V 64-bit +-- SPDX-License-Identifier: GPL-3.0-or-later + +with System; with Arch.CPU; +pragma SPARK_Mode (On); + package body Arch.Context is + + -- Get hart ID for multi-core support (Single-Core returns 0) + function Get_Hart_ID return Unsigned_64 + with + Global => null, + Post => Get_Hart_ID < 64 -- Ensures valid hart ID + is + HartID : Unsigned_64; + begin + -- Read the hart ID from the mhartid CSR + Asm ("csrr %0, mhartid", Outputs => Unsigned_64'Asm_Output ("=r", HartID)); + return HartID; + end Get_Hart_ID; + + + -- Check if the CPU supports a given extension in `misa` + function Has_Extension (Feature_Bit : Unsigned_64) return Boolean + with + Global => null, + Post => Has_Extension'Result = ((Get_CSR (16#F11#) and Feature_Bit) /= 0) + is + begin + return (Get_CSR (16#F11#) and Feature_Bit) /= 0; + end Has_Extension; + + -- Get the number of FP registers based on MISA + function Get_Num_FP_Registers return Natural + with + Global => null, + Post => Get_Num_FP_Registers in 0 .. 32 + is + MISA_Value : Unsigned_64 := Get_CSR (16#F11#); + begin + if (MISA_Value and 16#20#) /= 0 then -- Check 'D' bit for double-precision + return 32; + elsif (MISA_Value and 16#10#) /= 0 then -- Check 'F' bit for single-precision + return 16; + else + return 0; + end if; + end Get_Num_FP_Registers; + + -- Initialize General-Purpose Context procedure Init_GP_Context (Ctx : out GP_Context; - Stack : System.Address; - Start_Addr : System.Address) + Stack : System.Address; + Start_Addr : System.Address) + with + Pre => Stack /= System.Null_Address and Start_Addr /= System.Null_Address, + Post => Ctx.SEPC = Unsigned_64 (To_Integer (Start_Addr)) and + Ctx.SP = Unsigned_64 (To_Integer (Stack)) is - pragma Unreferenced (Stack); - pragma Unreferenced (Start_Addr); + SSTATUS_Value : Unsigned_64; + Hart : Unsigned_64 := Get_Hart_ID; -- Get core ID begin - Ctx := (others => 0); + -- Read current SSTATUS and configure correctly + Asm ("csrr %0, sstatus", Outputs => Unsigned_64'Asm_Output ("=r", SSTATUS_Value)); + SSTATUS_Value := SSTATUS_Value or 16#00040020#; + + -- Assertions to ensure SSTATUS_Value is correctly set + pragma Assert ((SSTATUS_Value and 16#00040020#) /= 0, "SSTATUS_Value not correctly set"); + + -- Assign core-specific context + Per_Core_Context (Hart) := ( + SEPC => Unsigned_64 (To_Integer (Start_Addr)), + SSTATUS => SSTATUS_Value, + SP => Unsigned_64 (To_Integer (Stack)), + others => 0 + ); + + -- Assertions to ensure the context is correctly assigned + pragma Assert (Per_Core_Context (Hart).SEPC = Unsigned_64 (To_Integer (Start_Addr)), "SEPC not correctly assigned"); + pragma Assert (Per_Core_Context (Hart).SP = Unsigned_64 (To_Integer (Stack)), "SP not correctly assigned"); + pragma Assert (Per_Core_Context (Hart).SSTATUS = SSTATUS_Value, "SSTATUS not correctly assigned"); + + -- Return reference to correct per-core context + Ctx := Per_Core_Context (Hart); + + -- Assertions to ensure the output context is correctly set + pragma Assert (Ctx.SEPC = Unsigned_64 (To_Integer (Start_Addr)), "Output SEPC not correctly set"); + pragma Assert (Ctx.SP = Unsigned_64 (To_Integer (Stack)), "Output SP not correctly set"); + pragma Assert (Ctx.SSTATUS = SSTATUS_Value, "Output SSTATUS not correctly set"); + + -- Inline assembly to load the general-purpose context and return from the trap + Asm ( + "ld ra, 0(%0)" & LF & HT & + "ld sp, 8(%0)" & LF & HT & + "ld gp, 16(%0)" & LF & HT & + "csrw sepc, %1" & LF & HT & + "csrw sstatus, %2" & LF & HT & + "sret", + Inputs => (System.Address'Asm_Input ("r", Ctx'Address), + Register'Asm_Input ("r", Ctx.SEPC), + Register'Asm_Input ("r", Ctx.SSTATUS)), + Clobber => "memory", + Volatile => True + ); end Init_GP_Context; + + -- Load General-Purpose Context (Supports Multi-Core) procedure Load_GP_Context (Ctx : GP_Context) is - pragma Unreferenced (Ctx); begin - loop - null; - end loop; + pragma Assert (Ctx.SEPC /= 0, "Load_GP_Context: SEPC must not be zero!"); + pragma Assert (Ctx.SP /= 0, "Load_GP_Context: Stack Pointer must not be zero!"); + + -- Load context and return to user space + Asm ( + "ld ra, 0(%0)" & LF & HT & + "ld sp, 8(%0)" & LF & HT & + "ld gp, 16(%0)" & LF & HT & + "ld tp, 24(%0)" & LF & HT & + "ld t0, 32(%0)" & LF & HT & + "ld t1, 40(%0)" & LF & HT & + "ld t2, 48(%0)" & LF & HT & + "ld s0, 56(%0)" & LF & HT & + "ld s1, 64(%0)" & LF & HT & + "ld a0, 72(%0)" & LF & HT & + "ld a1, 80(%0)" & LF & HT & + "ld a2, 88(%0)" & LF & HT & + "ld a3, 96(%0)" & LF & HT & + "ld a4, 104(%0)" & LF & HT & + "ld a5, 112(%0)" & LF & HT & + "ld a6, 120(%0)" & LF & HT & + "ld a7, 128(%0)" & LF & HT & + "ld s2, 136(%0)" & LF & HT & + "ld s3, 144(%0)" & LF & HT & + "ld s4, 152(%0)" & LF & HT & + "ld s5, 160(%0)" & LF & HT & + "ld s6, 168(%0)" & LF & HT & + "ld s7, 176(%0)" & LF & HT & + "ld s8, 184(%0)" & LF & HT & + "ld s9, 192(%0)" & LF & HT & + "ld s10, 200(%0)"& LF & HT & + "ld s11, 208(%0)"& LF & HT & + "ld t3, 216(%0)" & LF & HT & + "ld t4, 224(%0)" & LF & HT & + "ld t5, 232(%0)" & LF & HT & + "ld t6, 240(%0)" & LF & HT & + "ld sepc, 248(%0)" & LF & HT & + "ld sstatus, 256(%0)" & LF & HT & + "sret", + Inputs => (System.Address'Asm_Input ("r", Ctx'Address), + Unsigned_64'Asm_Input ("r", Ctx.SEPC), + Unsigned_64'Asm_Input ("r", Ctx.SSTATUS)), + Clobber => "memory", + Volatile => True + ); + + -- Infinite loop for debugging if we accidentally return here + loop null; end loop; end Load_GP_Context; - procedure Save_Core_Context (Ctx : out Core_Context) is + -- Save Core Context (Multi-Core Safe) + procedure Save_Core_Context (Ctx : out Core_Context) + with + Post => Ctx >= 0 + is begin - Ctx := 0; + Ctx := Arch.CPU.Get_Local.User_Stack; end Save_Core_Context; - procedure Success_Fork_Result (Ctx : in out GP_Context) is + -- Indicate Successful Fork + procedure Success_Fork_Result (Ctx : in out GP_Context) + with + Pre => Ctx.SEPC /= 0, -- Ensure valid program counter + Post => Ctx.SEPC = 0 and Ctx.A0 = 0 -- Ensure child process returns 0 + is begin - Ctx := (others => 0); + -- Set child process return value (RV ABI: A0 register) + Ctx.A0 := 0; + + -- Clear SEPC for child execution start + Ctx.SEPC := 0; end Success_Fork_Result; - procedure Init_FP_Context (Ctx : out FP_Context) is + + -- Initialize Floating-Point Context + procedure Init_FP_Context (Ctx : out FP_Context) + with + Pre => True, + Post => True + is + Num_FP_Regs : Natural := Get_Num_FP_Registers; begin - Ctx := (others => 0); + if Num_FP_Regs > 0 then + -- Initialize FP registers to 0.0 + for I in 0 .. Num_FP_Regs - 1 loop + Ctx.FP_Regs (I) := 0.0; -- Initialize FP register to 0.0 + end loop; + end if; end Init_FP_Context; - procedure Save_FP_Context (Ctx : in out FP_Context) is + -- Save Floating-Point Context (Handles Multi-Core) + procedure Save_FP_Context (Ctx : in out FP_Context) + with + Pre => Ctx /= System.Null_Address, + Post => True + is begin - Ctx := (others => 0); + if Has_Extension (16#1#) then + Asm ("fsd f0, 0(%0)", Inputs => System.Address'Asm_Input ("r", Ctx)); + end if; end Save_FP_Context; - procedure Load_FP_Context (Ctx : FP_Context) is - pragma Unreferenced (Ctx); + -- Load Floating-Point Context (Handles Multi-Core) + procedure Load_FP_Context (Ctx : FP_Context) + with + Pre => Ctx /= System.Null_Address, + Post => True + is begin - null; + if Has_Extension (16#1#) then + Asm ("fld f0, 0(%0)", Inputs => System.Address'Asm_Input ("r", Ctx)); + end if; end Load_FP_Context; - procedure Destroy_FP_Context (Ctx : in out FP_Context) is - pragma Unreferenced (Ctx); + -- Destroy Floating-Point Context + procedure Destroy_FP_Context (Ctx : in out FP_Context) + with + Pre => Ctx /= System.Null_Address, + Post => Ctx = System.Null_Address + is begin - null; + Ctx := System.Null_Address; end Destroy_FP_Context; + end Arch.Context; diff --git a/source/tests/riscv64/test-context.adb b/source/tests/riscv64/test-context.adb new file mode 100644 index 0000000..46c5dfe --- /dev/null +++ b/source/tests/riscv64/test-context.adb @@ -0,0 +1,95 @@ +with AUnit.Assertions; use AUnit.Assertions; +with Ada.Text_IO; use Ada.Text_IO; +with Memory.Physical; +with Arch.Context; + +package body Test_Context is + + -- Validate general-purpose context switching, including SSTATUS + procedure Test_GP_Context is + Ctx1, Ctx2 : GP_Context; + Stack : System.Address := Memory.Physical.Alloc (4096); + begin + -- Initialize context + Init_GP_Context (Ctx1, Stack, System.Null_Address); + Ctx2 := Ctx1; + + -- Validate register contents + Assert (Ctx1.SP = Ctx2.SP, "Stack pointer mismatch!"); + Assert (Ctx1.SEPC = Ctx2.SEPC, "Program counter mismatch!"); + Assert (Ctx1.SSTATUS /= 0, "SSTATUS not set correctly!"); + Put_Line ("[TEST] Test_GP_Context - PASSED"); + end Test_GP_Context; + + -- Validate floating-point context + procedure Test_FP_Context is + Ctx1, Ctx2 : FP_Context; + begin + Init_FP_Context (Ctx1); + Ctx2 := Ctx1; + + -- Validate context allocation + Assert (Ctx1 /= System.Null_Address, "Floating-point context not allocated!"); + Put_Line ("[TEST] Test_FP_Context - PASSED"); + end Test_FP_Context; + + -- Validate Get_Hart_ID function + procedure Test_Get_Hart_ID is + Hart_ID : Unsigned_64; + begin + Hart_ID := Get_Hart_ID; + Assert (Hart_ID < 64, "Invalid Hart ID!"); + Put_Line ("[TEST] Test_Get_Hart_ID - PASSED"); + end Test_Get_Hart_ID; + + -- Validate Has_Extension function + procedure Test_Has_Extension is + Result : Boolean; + begin + Result := Has_Extension (16#10#); -- Check for 'F' extension + Put_Line ("[TEST] Test_Has_Extension - PASSED"); + end Test_Has_Extension; + + -- Validate Get_Num_FP_Registers function + procedure Test_Get_Num_FP_Registers is + Num_FP_Regs : Natural; + begin + Num_FP_Regs := Get_Num_FP_Registers; + Assert (Num_FP_Regs in 0 .. 32, "Invalid number of FP registers!"); + Put_Line ("[TEST] Test_Get_Num_FP_Registers - PASSED"); + end Test_Get_Num_FP_Registers; + + -- Validate Save_FP_Context and Load_FP_Context procedures + procedure Test_Save_Load_FP_Context is + Ctx1, Ctx2 : FP_Context; + begin + Init_FP_Context (Ctx1); + Save_FP_Context (Ctx1); + Load_FP_Context (Ctx2); + Assert (Ctx1 = Ctx2, "FP context mismatch after save/load!"); + Put_Line ("[TEST] Test_Save_Load_FP_Context - PASSED"); + end Test_Save_Load_FP_Context; + + -- Validate Destroy_FP_Context procedure + procedure Test_Destroy_FP_Context is + Ctx : FP_Context; + begin + Init_FP_Context (Ctx); + Destroy_FP_Context (Ctx); + Assert (Ctx = (others => 0), "FP context not destroyed correctly!"); + Put_Line ("[TEST] Test_Destroy_FP_Context - PASSED"); + end Test_Destroy_FP_Context; + + -- Register tests + procedure Register_Tests (T : in out Context_Test_Case) is + begin + T.Register_Test ("Test_GP_Context", Test_GP_Context'Access); + T.Register_Test ("Test_FP_Context", Test_FP_Context'Access); + T.Register_Test ("Test_Get_Hart_ID", Test_Get_Hart_ID'Access); + T.Register_Test ("Test_Has_Extension", Test_Has_Extension'Access); + T.Register_Test ("Test_Get_Num_FP_Registers", Test_Get_Num_FP_Registers'Access); + T.Register_Test ("Test_Save_Load_FP_Context", Test_Save_Load_FP_Context'Access); + T.Register_Test ("Test_Destroy_FP_Context", Test_Destroy_FP_Context'Access); + end Register_Tests; + +end Test_Context; \ No newline at end of file diff --git a/source/tests/riscv64/test-context.ads b/source/tests/riscv64/test-context.ads new file mode 100644 index 0000000..e69de29 From 8c203c24fcaefec1c0cccc992ccd8326d517748a Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 08:58:35 -0500 Subject: [PATCH 08/99] Initial implementtation of arch-context, arch-context test cases, context test suite, and riscv64 test harness. --- source/.github/workflows/riscv64-ci.yml | 95 ++++++++ source/arch/riscv64-limine/arch-context.adb | 229 ++++++++++++++++++-- source/tests/riscv64/test-context.adb | 95 ++++++++ source/tests/riscv64/test-context.ads | 0 4 files changed, 396 insertions(+), 23 deletions(-) create mode 100644 source/.github/workflows/riscv64-ci.yml create mode 100644 source/tests/riscv64/test-context.adb create mode 100644 source/tests/riscv64/test-context.ads diff --git a/source/.github/workflows/riscv64-ci.yml b/source/.github/workflows/riscv64-ci.yml new file mode 100644 index 0000000..0cd6813 --- /dev/null +++ b/source/.github/workflows/riscv64-ci.yml @@ -0,0 +1,95 @@ +name: RISC-V 64 Arch CI + +on: + push: + branches: + - main + - 7-port-arch-contextadb + pull_request: + branches: + - main + - 7-port-arch-contextadb + merge_group: + branches: + - main + - 7-port-arch-contextadb + +jobs: + build-test-riscv: + runs-on: ubuntu-latest + container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain # RISC-V toolchain container + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Install Dependencies + run: | + sudo apt update + sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user riscv64-linux-gnu-gcc riscv64-linux-gnu-binutils + + - name: Verify SPARK Proofs + run: | + gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 + + - name: Compile and Run Test Harness + run: | + gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv + qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt + + - name: Upload Test Logs as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-logs + path: tests/test-log.txt + + - name: Validate Test Output and Track History + id: test_results + run: | + TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") + COMMIT_HASH=$(git rev-parse --short HEAD) + echo "Test Run on: $TIMESTAMP (Commit: $COMMIT_HASH)" >> tests/test-history.log + echo "----------------------------------------" >> tests/test-history.log + cat tests/test-log.txt >> tests/test-history.log + echo "" >> tests/test-history.log + + if ! grep -q "[PASSED] Test_GP_Context" tests/test-log.txt; then + echo "GP Context Test Failed!" | tee -a tests/test-report.txt + echo "failed=true" >> $GITHUB_ENV + fi + if ! grep -q "[PASSED] Test_Success_Fork_Result" tests/test-log.txt; then + echo "Success Fork Test Failed!" | tee -a tests/test-report.txt + echo "failed=true" >> $GITHUB_ENV + fi + echo "All tests passed successfully!" | tee -a tests/test-report.txt + + - name: Set Commit Status + if: always() + run: | + if [[ "${{ env.failed }}" == "true" ]]; then + echo "::error title=CI/CD Failed::Tests did not pass." + exit 1 + else + echo "::notice title=CI/CD Passed::All tests successful." + fi + + - name: Upload Test Report as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-report + path: tests/test-report.txt + + - name: Upload Test History as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-history + path: tests/test-history.log + + - name: Create GitHub Issue on Failure + if: env.failed == 'true' + uses: peter-evans/create-issue-from-file@v5 + with: + title: "CI/CD Test Failure - RISC-V Context Switching" + content-filepath: tests/test-report.txt + labels: bug, ci-failure + assignees: your-github-username diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index 9274cad..43eb48e 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -14,55 +14,238 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . +-- arch-context.adb: Architecture-specific context switching for RISC-V 64-bit +-- SPDX-License-Identifier: GPL-3.0-or-later + +with System; with Arch.CPU; +pragma SPARK_Mode (On); + package body Arch.Context is + + -- Get hart ID for multi-core support (Single-Core returns 0) + function Get_Hart_ID return Unsigned_64 + with + Global => null, + Post => Get_Hart_ID < 64 -- Ensures valid hart ID + is + HartID : Unsigned_64; + begin + -- Read the hart ID from the mhartid CSR + Asm ("csrr %0, mhartid", Outputs => Unsigned_64'Asm_Output ("=r", HartID)); + return HartID; + end Get_Hart_ID; + + + -- Check if the CPU supports a given extension in `misa` + function Has_Extension (Feature_Bit : Unsigned_64) return Boolean + with + Global => null, + Post => Has_Extension'Result = ((Get_CSR (16#F11#) and Feature_Bit) /= 0) + is + begin + return (Get_CSR (16#F11#) and Feature_Bit) /= 0; + end Has_Extension; + + -- Get the number of FP registers based on MISA + function Get_Num_FP_Registers return Natural + with + Global => null, + Post => Get_Num_FP_Registers in 0 .. 32 + is + MISA_Value : Unsigned_64 := Get_CSR (16#F11#); + begin + if (MISA_Value and 16#20#) /= 0 then -- Check 'D' bit for double-precision + return 32; + elsif (MISA_Value and 16#10#) /= 0 then -- Check 'F' bit for single-precision + return 16; + else + return 0; + end if; + end Get_Num_FP_Registers; + + -- Initialize General-Purpose Context procedure Init_GP_Context (Ctx : out GP_Context; - Stack : System.Address; - Start_Addr : System.Address) + Stack : System.Address; + Start_Addr : System.Address) + with + Pre => Stack /= System.Null_Address and Start_Addr /= System.Null_Address, + Post => Ctx.SEPC = Unsigned_64 (To_Integer (Start_Addr)) and + Ctx.SP = Unsigned_64 (To_Integer (Stack)) is - pragma Unreferenced (Stack); - pragma Unreferenced (Start_Addr); + SSTATUS_Value : Unsigned_64; + Hart : Unsigned_64 := Get_Hart_ID; -- Get core ID begin - Ctx := (others => 0); + -- Read current SSTATUS and configure correctly + Asm ("csrr %0, sstatus", Outputs => Unsigned_64'Asm_Output ("=r", SSTATUS_Value)); + SSTATUS_Value := SSTATUS_Value or 16#00040020#; + + -- Assertions to ensure SSTATUS_Value is correctly set + pragma Assert ((SSTATUS_Value and 16#00040020#) /= 0, "SSTATUS_Value not correctly set"); + + -- Assign core-specific context + Per_Core_Context (Hart) := ( + SEPC => Unsigned_64 (To_Integer (Start_Addr)), + SSTATUS => SSTATUS_Value, + SP => Unsigned_64 (To_Integer (Stack)), + others => 0 + ); + + -- Assertions to ensure the context is correctly assigned + pragma Assert (Per_Core_Context (Hart).SEPC = Unsigned_64 (To_Integer (Start_Addr)), "SEPC not correctly assigned"); + pragma Assert (Per_Core_Context (Hart).SP = Unsigned_64 (To_Integer (Stack)), "SP not correctly assigned"); + pragma Assert (Per_Core_Context (Hart).SSTATUS = SSTATUS_Value, "SSTATUS not correctly assigned"); + + -- Return reference to correct per-core context + Ctx := Per_Core_Context (Hart); + + -- Assertions to ensure the output context is correctly set + pragma Assert (Ctx.SEPC = Unsigned_64 (To_Integer (Start_Addr)), "Output SEPC not correctly set"); + pragma Assert (Ctx.SP = Unsigned_64 (To_Integer (Stack)), "Output SP not correctly set"); + pragma Assert (Ctx.SSTATUS = SSTATUS_Value, "Output SSTATUS not correctly set"); + + -- Inline assembly to load the general-purpose context and return from the trap + Asm ( + "ld ra, 0(%0)" & LF & HT & + "ld sp, 8(%0)" & LF & HT & + "ld gp, 16(%0)" & LF & HT & + "csrw sepc, %1" & LF & HT & + "csrw sstatus, %2" & LF & HT & + "sret", + Inputs => (System.Address'Asm_Input ("r", Ctx'Address), + Register'Asm_Input ("r", Ctx.SEPC), + Register'Asm_Input ("r", Ctx.SSTATUS)), + Clobber => "memory", + Volatile => True + ); end Init_GP_Context; + + -- Load General-Purpose Context (Supports Multi-Core) procedure Load_GP_Context (Ctx : GP_Context) is - pragma Unreferenced (Ctx); begin - loop - null; - end loop; + pragma Assert (Ctx.SEPC /= 0, "Load_GP_Context: SEPC must not be zero!"); + pragma Assert (Ctx.SP /= 0, "Load_GP_Context: Stack Pointer must not be zero!"); + + -- Load context and return to user space + Asm ( + "ld ra, 0(%0)" & LF & HT & + "ld sp, 8(%0)" & LF & HT & + "ld gp, 16(%0)" & LF & HT & + "ld tp, 24(%0)" & LF & HT & + "ld t0, 32(%0)" & LF & HT & + "ld t1, 40(%0)" & LF & HT & + "ld t2, 48(%0)" & LF & HT & + "ld s0, 56(%0)" & LF & HT & + "ld s1, 64(%0)" & LF & HT & + "ld a0, 72(%0)" & LF & HT & + "ld a1, 80(%0)" & LF & HT & + "ld a2, 88(%0)" & LF & HT & + "ld a3, 96(%0)" & LF & HT & + "ld a4, 104(%0)" & LF & HT & + "ld a5, 112(%0)" & LF & HT & + "ld a6, 120(%0)" & LF & HT & + "ld a7, 128(%0)" & LF & HT & + "ld s2, 136(%0)" & LF & HT & + "ld s3, 144(%0)" & LF & HT & + "ld s4, 152(%0)" & LF & HT & + "ld s5, 160(%0)" & LF & HT & + "ld s6, 168(%0)" & LF & HT & + "ld s7, 176(%0)" & LF & HT & + "ld s8, 184(%0)" & LF & HT & + "ld s9, 192(%0)" & LF & HT & + "ld s10, 200(%0)"& LF & HT & + "ld s11, 208(%0)"& LF & HT & + "ld t3, 216(%0)" & LF & HT & + "ld t4, 224(%0)" & LF & HT & + "ld t5, 232(%0)" & LF & HT & + "ld t6, 240(%0)" & LF & HT & + "ld sepc, 248(%0)" & LF & HT & + "ld sstatus, 256(%0)" & LF & HT & + "sret", + Inputs => (System.Address'Asm_Input ("r", Ctx'Address), + Unsigned_64'Asm_Input ("r", Ctx.SEPC), + Unsigned_64'Asm_Input ("r", Ctx.SSTATUS)), + Clobber => "memory", + Volatile => True + ); + + -- Infinite loop for debugging if we accidentally return here + loop null; end loop; end Load_GP_Context; - procedure Save_Core_Context (Ctx : out Core_Context) is + -- Save Core Context (Multi-Core Safe) + procedure Save_Core_Context (Ctx : out Core_Context) + with + Post => Ctx >= 0 + is begin - Ctx := 0; + Ctx := Arch.CPU.Get_Local.User_Stack; end Save_Core_Context; - procedure Success_Fork_Result (Ctx : in out GP_Context) is + -- Indicate Successful Fork + procedure Success_Fork_Result (Ctx : in out GP_Context) + with + Pre => Ctx.SEPC /= 0, -- Ensure valid program counter + Post => Ctx.SEPC = 0 and Ctx.A0 = 0 -- Ensure child process returns 0 + is begin - Ctx := (others => 0); + -- Set child process return value (RV ABI: A0 register) + Ctx.A0 := 0; + + -- Clear SEPC for child execution start + Ctx.SEPC := 0; end Success_Fork_Result; - procedure Init_FP_Context (Ctx : out FP_Context) is + + -- Initialize Floating-Point Context + procedure Init_FP_Context (Ctx : out FP_Context) + with + Pre => True, + Post => True + is + Num_FP_Regs : Natural := Get_Num_FP_Registers; begin - Ctx := (others => 0); + if Num_FP_Regs > 0 then + -- Initialize FP registers to 0.0 + for I in 0 .. Num_FP_Regs - 1 loop + Ctx.FP_Regs (I) := 0.0; -- Initialize FP register to 0.0 + end loop; + end if; end Init_FP_Context; - procedure Save_FP_Context (Ctx : in out FP_Context) is + -- Save Floating-Point Context (Handles Multi-Core) + procedure Save_FP_Context (Ctx : in out FP_Context) + with + Pre => Ctx /= System.Null_Address, + Post => True + is begin - Ctx := (others => 0); + if Has_Extension (16#1#) then + Asm ("fsd f0, 0(%0)", Inputs => System.Address'Asm_Input ("r", Ctx)); + end if; end Save_FP_Context; - procedure Load_FP_Context (Ctx : FP_Context) is - pragma Unreferenced (Ctx); + -- Load Floating-Point Context (Handles Multi-Core) + procedure Load_FP_Context (Ctx : FP_Context) + with + Pre => Ctx /= System.Null_Address, + Post => True + is begin - null; + if Has_Extension (16#1#) then + Asm ("fld f0, 0(%0)", Inputs => System.Address'Asm_Input ("r", Ctx)); + end if; end Load_FP_Context; - procedure Destroy_FP_Context (Ctx : in out FP_Context) is - pragma Unreferenced (Ctx); + -- Destroy Floating-Point Context + procedure Destroy_FP_Context (Ctx : in out FP_Context) + with + Pre => Ctx /= System.Null_Address, + Post => Ctx = System.Null_Address + is begin - null; + Ctx := System.Null_Address; end Destroy_FP_Context; + end Arch.Context; diff --git a/source/tests/riscv64/test-context.adb b/source/tests/riscv64/test-context.adb new file mode 100644 index 0000000..46c5dfe --- /dev/null +++ b/source/tests/riscv64/test-context.adb @@ -0,0 +1,95 @@ +with AUnit.Assertions; use AUnit.Assertions; +with Ada.Text_IO; use Ada.Text_IO; +with Memory.Physical; +with Arch.Context; + +package body Test_Context is + + -- Validate general-purpose context switching, including SSTATUS + procedure Test_GP_Context is + Ctx1, Ctx2 : GP_Context; + Stack : System.Address := Memory.Physical.Alloc (4096); + begin + -- Initialize context + Init_GP_Context (Ctx1, Stack, System.Null_Address); + Ctx2 := Ctx1; + + -- Validate register contents + Assert (Ctx1.SP = Ctx2.SP, "Stack pointer mismatch!"); + Assert (Ctx1.SEPC = Ctx2.SEPC, "Program counter mismatch!"); + Assert (Ctx1.SSTATUS /= 0, "SSTATUS not set correctly!"); + Put_Line ("[TEST] Test_GP_Context - PASSED"); + end Test_GP_Context; + + -- Validate floating-point context + procedure Test_FP_Context is + Ctx1, Ctx2 : FP_Context; + begin + Init_FP_Context (Ctx1); + Ctx2 := Ctx1; + + -- Validate context allocation + Assert (Ctx1 /= System.Null_Address, "Floating-point context not allocated!"); + Put_Line ("[TEST] Test_FP_Context - PASSED"); + end Test_FP_Context; + + -- Validate Get_Hart_ID function + procedure Test_Get_Hart_ID is + Hart_ID : Unsigned_64; + begin + Hart_ID := Get_Hart_ID; + Assert (Hart_ID < 64, "Invalid Hart ID!"); + Put_Line ("[TEST] Test_Get_Hart_ID - PASSED"); + end Test_Get_Hart_ID; + + -- Validate Has_Extension function + procedure Test_Has_Extension is + Result : Boolean; + begin + Result := Has_Extension (16#10#); -- Check for 'F' extension + Put_Line ("[TEST] Test_Has_Extension - PASSED"); + end Test_Has_Extension; + + -- Validate Get_Num_FP_Registers function + procedure Test_Get_Num_FP_Registers is + Num_FP_Regs : Natural; + begin + Num_FP_Regs := Get_Num_FP_Registers; + Assert (Num_FP_Regs in 0 .. 32, "Invalid number of FP registers!"); + Put_Line ("[TEST] Test_Get_Num_FP_Registers - PASSED"); + end Test_Get_Num_FP_Registers; + + -- Validate Save_FP_Context and Load_FP_Context procedures + procedure Test_Save_Load_FP_Context is + Ctx1, Ctx2 : FP_Context; + begin + Init_FP_Context (Ctx1); + Save_FP_Context (Ctx1); + Load_FP_Context (Ctx2); + Assert (Ctx1 = Ctx2, "FP context mismatch after save/load!"); + Put_Line ("[TEST] Test_Save_Load_FP_Context - PASSED"); + end Test_Save_Load_FP_Context; + + -- Validate Destroy_FP_Context procedure + procedure Test_Destroy_FP_Context is + Ctx : FP_Context; + begin + Init_FP_Context (Ctx); + Destroy_FP_Context (Ctx); + Assert (Ctx = (others => 0), "FP context not destroyed correctly!"); + Put_Line ("[TEST] Test_Destroy_FP_Context - PASSED"); + end Test_Destroy_FP_Context; + + -- Register tests + procedure Register_Tests (T : in out Context_Test_Case) is + begin + T.Register_Test ("Test_GP_Context", Test_GP_Context'Access); + T.Register_Test ("Test_FP_Context", Test_FP_Context'Access); + T.Register_Test ("Test_Get_Hart_ID", Test_Get_Hart_ID'Access); + T.Register_Test ("Test_Has_Extension", Test_Has_Extension'Access); + T.Register_Test ("Test_Get_Num_FP_Registers", Test_Get_Num_FP_Registers'Access); + T.Register_Test ("Test_Save_Load_FP_Context", Test_Save_Load_FP_Context'Access); + T.Register_Test ("Test_Destroy_FP_Context", Test_Destroy_FP_Context'Access); + end Register_Tests; + +end Test_Context; \ No newline at end of file diff --git a/source/tests/riscv64/test-context.ads b/source/tests/riscv64/test-context.ads new file mode 100644 index 0000000..e69de29 From 679ab61d472b85b60a644e2facfbf38324252c83 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:24:35 -0500 Subject: [PATCH 09/99] Create riscv64-ci.yml Created a testing Action for CI/CD --- .github/workflows/riscv64-ci.yml | 95 ++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 .github/workflows/riscv64-ci.yml diff --git a/.github/workflows/riscv64-ci.yml b/.github/workflows/riscv64-ci.yml new file mode 100644 index 0000000..0cd6813 --- /dev/null +++ b/.github/workflows/riscv64-ci.yml @@ -0,0 +1,95 @@ +name: RISC-V 64 Arch CI + +on: + push: + branches: + - main + - 7-port-arch-contextadb + pull_request: + branches: + - main + - 7-port-arch-contextadb + merge_group: + branches: + - main + - 7-port-arch-contextadb + +jobs: + build-test-riscv: + runs-on: ubuntu-latest + container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain # RISC-V toolchain container + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Install Dependencies + run: | + sudo apt update + sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user riscv64-linux-gnu-gcc riscv64-linux-gnu-binutils + + - name: Verify SPARK Proofs + run: | + gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 + + - name: Compile and Run Test Harness + run: | + gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv + qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt + + - name: Upload Test Logs as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-logs + path: tests/test-log.txt + + - name: Validate Test Output and Track History + id: test_results + run: | + TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") + COMMIT_HASH=$(git rev-parse --short HEAD) + echo "Test Run on: $TIMESTAMP (Commit: $COMMIT_HASH)" >> tests/test-history.log + echo "----------------------------------------" >> tests/test-history.log + cat tests/test-log.txt >> tests/test-history.log + echo "" >> tests/test-history.log + + if ! grep -q "[PASSED] Test_GP_Context" tests/test-log.txt; then + echo "GP Context Test Failed!" | tee -a tests/test-report.txt + echo "failed=true" >> $GITHUB_ENV + fi + if ! grep -q "[PASSED] Test_Success_Fork_Result" tests/test-log.txt; then + echo "Success Fork Test Failed!" | tee -a tests/test-report.txt + echo "failed=true" >> $GITHUB_ENV + fi + echo "All tests passed successfully!" | tee -a tests/test-report.txt + + - name: Set Commit Status + if: always() + run: | + if [[ "${{ env.failed }}" == "true" ]]; then + echo "::error title=CI/CD Failed::Tests did not pass." + exit 1 + else + echo "::notice title=CI/CD Passed::All tests successful." + fi + + - name: Upload Test Report as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-report + path: tests/test-report.txt + + - name: Upload Test History as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-history + path: tests/test-history.log + + - name: Create GitHub Issue on Failure + if: env.failed == 'true' + uses: peter-evans/create-issue-from-file@v5 + with: + title: "CI/CD Test Failure - RISC-V Context Switching" + content-filepath: tests/test-report.txt + labels: bug, ci-failure + assignees: your-github-username From c4f5b3fc93fbff202233eb380b98638696083e4c Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:28:13 -0500 Subject: [PATCH 10/99] Update riscv64-ci.yml --- .github/workflows/riscv64-ci.yml | 66 ++++++++++---------------------- 1 file changed, 20 insertions(+), 46 deletions(-) diff --git a/.github/workflows/riscv64-ci.yml b/.github/workflows/riscv64-ci.yml index 0cd6813..ecba3fa 100644 --- a/.github/workflows/riscv64-ci.yml +++ b/.github/workflows/riscv64-ci.yml @@ -17,7 +17,9 @@ on: jobs: build-test-riscv: runs-on: ubuntu-latest - container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain # RISC-V toolchain container + container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain + outputs: + test_status: ${{ steps.test_status_check.outputs.status }} steps: - name: Checkout Repository @@ -33,63 +35,35 @@ jobs: gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - name: Compile and Run Test Harness + id: test_run run: | gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt + - name: Validate Test Output and Set Status + id: test_status_check + run: | + if grep -q "[PASSED]" tests/test-log.txt; then + echo "status=success" >> $GITHUB_ENV + else + echo "status=failure" >> $GITHUB_ENV + fi + - name: Upload Test Logs as Artifact uses: actions/upload-artifact@v4 with: name: riscv64-test-logs path: tests/test-log.txt - - name: Validate Test Output and Track History - id: test_results - run: | - TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") - COMMIT_HASH=$(git rev-parse --short HEAD) - echo "Test Run on: $TIMESTAMP (Commit: $COMMIT_HASH)" >> tests/test-history.log - echo "----------------------------------------" >> tests/test-history.log - cat tests/test-log.txt >> tests/test-history.log - echo "" >> tests/test-history.log - - if ! grep -q "[PASSED] Test_GP_Context" tests/test-log.txt; then - echo "GP Context Test Failed!" | tee -a tests/test-report.txt - echo "failed=true" >> $GITHUB_ENV - fi - if ! grep -q "[PASSED] Test_Success_Fork_Result" tests/test-log.txt; then - echo "Success Fork Test Failed!" | tee -a tests/test-report.txt - echo "failed=true" >> $GITHUB_ENV - fi - echo "All tests passed successfully!" | tee -a tests/test-report.txt - + set-commit-status: + needs: build-test-riscv + runs-on: ubuntu-latest # Use normal runner, not container + steps: - name: Set Commit Status - if: always() run: | - if [[ "${{ env.failed }}" == "true" ]]; then + if [[ "${{ needs.build-test-riscv.outputs.test_status }}" == "success" ]]; then + echo "::notice title=CI/CD Passed::All tests successful." + else echo "::error title=CI/CD Failed::Tests did not pass." exit 1 - else - echo "::notice title=CI/CD Passed::All tests successful." fi - - - name: Upload Test Report as Artifact - uses: actions/upload-artifact@v4 - with: - name: riscv64-test-report - path: tests/test-report.txt - - - name: Upload Test History as Artifact - uses: actions/upload-artifact@v4 - with: - name: riscv64-test-history - path: tests/test-history.log - - - name: Create GitHub Issue on Failure - if: env.failed == 'true' - uses: peter-evans/create-issue-from-file@v5 - with: - title: "CI/CD Test Failure - RISC-V Context Switching" - content-filepath: tests/test-report.txt - labels: bug, ci-failure - assignees: your-github-username From bb0e4e25c81ec90d1910436d899f26b110b8780f Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:30:38 -0500 Subject: [PATCH 11/99] Update riscv64-ci.yml --- .github/workflows/riscv64-ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/riscv64-ci.yml b/.github/workflows/riscv64-ci.yml index ecba3fa..83853e8 100644 --- a/.github/workflows/riscv64-ci.yml +++ b/.github/workflows/riscv64-ci.yml @@ -3,15 +3,12 @@ name: RISC-V 64 Arch CI on: push: branches: - - main - 7-port-arch-contextadb pull_request: branches: - - main - 7-port-arch-contextadb merge_group: branches: - - main - 7-port-arch-contextadb jobs: From 8bcdf169e31a79edb7921a1634334353285d5467 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:33:25 -0500 Subject: [PATCH 12/99] Create riscv64-cs-ci.yml --- .github/workflows/riscv64-cs-ci.yml | 87 +++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .github/workflows/riscv64-cs-ci.yml diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml new file mode 100644 index 0000000..a558a54 --- /dev/null +++ b/.github/workflows/riscv64-cs-ci.yml @@ -0,0 +1,87 @@ +name: RISC-V 64 Context Switching CI + +on: + push: + branches: [ "7-port-arch-contextadb" ] + pull_request: + branches: [ "7-port-arch-contextadb" ] + +jobs: + build-test-riscv: + runs-on: ubuntu-latest + container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain # RISC-V toolchain container + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Install Dependencies + run: | + sudo apt update + sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user riscv64-linux-gnu-gcc riscv64-linux-gnu-binutils + + - name: Verify SPARK Proofs + run: | + gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 + + - name: Compile and Run Test Harness + run: | + gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv + qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt + + - name: Upload Test Logs as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-logs + path: tests/test-log.txt + + - name: Validate Test Output and Track History + id: test_results + run: | + TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") + COMMIT_HASH=$(git rev-parse --short HEAD) + echo "Test Run on: $TIMESTAMP (Commit: $COMMIT_HASH)" >> tests/test-history.log + echo "----------------------------------------" >> tests/test-history.log + cat tests/test-log.txt >> tests/test-history.log + echo "" >> tests/test-history.log + + if ! grep -q "[PASSED] Test_GP_Context" tests/test-log.txt; then + echo "GP Context Test Failed!" | tee -a tests/test-report.txt + echo "failed=true" >> $GITHUB_ENV + fi + if ! grep -q "[PASSED] Test_Success_Fork_Result" tests/test-log.txt; then + echo "Success Fork Test Failed!" | tee -a tests/test-report.txt + echo "failed=true" >> $GITHUB_ENV + fi + echo "All tests passed successfully!" | tee -a tests/test-report.txt + + - name: Set Commit Status + if: always() + run: | + if [[ "${{ env.failed }}" == "true" ]]; then + echo "::error title=CI/CD Failed::Tests did not pass." + exit 1 + else + echo "::notice title=CI/CD Passed::All tests successful." + fi + + - name: Upload Test Report as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-report + path: tests/test-report.txt + + - name: Upload Test History as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-history + path: tests/test-history.log + + - name: Create GitHub Issue on Failure + if: env.failed == 'true' + uses: peter-evans/create-issue-from-file@v5 + with: + title: "CI/CD Test Failure - RISC-V Context Switching" + content-filepath: tests/test-report.txt + labels: bug, ci-failure + assignees: your-github-username From 701fb9dc353d126494ac77cbfc102ba2ff3c97c2 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:36:15 -0500 Subject: [PATCH 13/99] Update riscv64-cs-ci.yml --- .github/workflows/riscv64-cs-ci.yml | 66 +++++++++-------------------- 1 file changed, 20 insertions(+), 46 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index a558a54..6a4234a 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -9,7 +9,9 @@ on: jobs: build-test-riscv: runs-on: ubuntu-latest - container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain # RISC-V toolchain container + container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain + outputs: + test_status: ${{ steps.test_status_check.outputs.status }} steps: - name: Checkout Repository @@ -25,63 +27,35 @@ jobs: gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - name: Compile and Run Test Harness + id: test_run run: | gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt + - name: Validate Test Output and Set Status + id: test_status_check + run: | + if grep -q "[PASSED]" tests/test-log.txt; then + echo "status=success" >> $GITHUB_ENV + else + echo "status=failure" >> $GITHUB_ENV + fi + - name: Upload Test Logs as Artifact uses: actions/upload-artifact@v4 with: name: riscv64-test-logs path: tests/test-log.txt - - name: Validate Test Output and Track History - id: test_results - run: | - TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") - COMMIT_HASH=$(git rev-parse --short HEAD) - echo "Test Run on: $TIMESTAMP (Commit: $COMMIT_HASH)" >> tests/test-history.log - echo "----------------------------------------" >> tests/test-history.log - cat tests/test-log.txt >> tests/test-history.log - echo "" >> tests/test-history.log - - if ! grep -q "[PASSED] Test_GP_Context" tests/test-log.txt; then - echo "GP Context Test Failed!" | tee -a tests/test-report.txt - echo "failed=true" >> $GITHUB_ENV - fi - if ! grep -q "[PASSED] Test_Success_Fork_Result" tests/test-log.txt; then - echo "Success Fork Test Failed!" | tee -a tests/test-report.txt - echo "failed=true" >> $GITHUB_ENV - fi - echo "All tests passed successfully!" | tee -a tests/test-report.txt - + set-commit-status: + needs: build-test-riscv + runs-on: ubuntu-latest # Use normal runner, not container + steps: - name: Set Commit Status - if: always() run: | - if [[ "${{ env.failed }}" == "true" ]]; then + if [[ "${{ needs.build-test-riscv.outputs.test_status }}" == "success" ]]; then + echo "::notice title=CI/CD Passed::All tests successful." + else echo "::error title=CI/CD Failed::Tests did not pass." exit 1 - else - echo "::notice title=CI/CD Passed::All tests successful." fi - - - name: Upload Test Report as Artifact - uses: actions/upload-artifact@v4 - with: - name: riscv64-test-report - path: tests/test-report.txt - - - name: Upload Test History as Artifact - uses: actions/upload-artifact@v4 - with: - name: riscv64-test-history - path: tests/test-history.log - - - name: Create GitHub Issue on Failure - if: env.failed == 'true' - uses: peter-evans/create-issue-from-file@v5 - with: - title: "CI/CD Test Failure - RISC-V Context Switching" - content-filepath: tests/test-report.txt - labels: bug, ci-failure - assignees: your-github-username From dd939a88c715b5d0b775e39b04eede72b0648653 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:46:52 -0500 Subject: [PATCH 14/99] Update riscv64-cs-ci.yml changed to DockerHub native riscv64 --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 6a4234a..59db75a 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -9,7 +9,7 @@ on: jobs: build-test-riscv: runs-on: ubuntu-latest - container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain + container: riscv64/toolchain outputs: test_status: ${{ steps.test_status_check.outputs.status }} From 439064155a5f5316888c0beeb5e8ee47537ac529 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:51:01 -0500 Subject: [PATCH 15/99] Update riscv64-cs-ci.yml fixing errors with container --- .github/workflows/riscv64-cs-ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 59db75a..1bf90ab 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -9,7 +9,7 @@ on: jobs: build-test-riscv: runs-on: ubuntu-latest - container: riscv64/toolchain + container: sifive/riscv-toolchain outputs: test_status: ${{ steps.test_status_check.outputs.status }} @@ -17,10 +17,11 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - - name: Install Dependencies + - name: Install RISC-V Toolchain run: | sudo apt update - sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user riscv64-linux-gnu-gcc riscv64-linux-gnu-binutils + sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user \ + riscv64-linux-gnu-gcc riscv64-linux-gnu-binutils riscv64-unknown-elf-gcc - name: Verify SPARK Proofs run: | From a2001a9c515bcece12c42227ff237f75e1ac8ed1 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:55:30 -0500 Subject: [PATCH 16/99] Update riscv64-cs-ci.yml changed container to Ubuntu --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 1bf90ab..ca32600 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -9,7 +9,7 @@ on: jobs: build-test-riscv: runs-on: ubuntu-latest - container: sifive/riscv-toolchain + container: ubuntu:22.04 outputs: test_status: ${{ steps.test_status_check.outputs.status }} From 895addf2857b8489d1d9da21a2ec3111c7d59541 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 09:58:21 -0500 Subject: [PATCH 17/99] Update riscv64-cs-ci.yml trying to get tests to run properly. --- .github/workflows/riscv64-cs-ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index ca32600..6e45a5b 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -9,7 +9,8 @@ on: jobs: build-test-riscv: runs-on: ubuntu-latest - container: ubuntu:22.04 + container: + image: ubuntu:22.04 outputs: test_status: ${{ steps.test_status_check.outputs.status }} @@ -19,8 +20,8 @@ jobs: - name: Install RISC-V Toolchain run: | - sudo apt update - sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user \ + apt-get update + apt-get install -y gnat gprbuild qemu-system-misc qemu-user \ riscv64-linux-gnu-gcc riscv64-linux-gnu-binutils riscv64-unknown-elf-gcc - name: Verify SPARK Proofs From 659cfd9275e8c6145a8059b6aa96333bbcb5658f Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:02:35 -0500 Subject: [PATCH 18/99] Update riscv64-cs-ci.yml fixing package issues --- .github/workflows/riscv64-cs-ci.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 6e45a5b..acc69f8 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -18,11 +18,16 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - - name: Install RISC-V Toolchain + - name: Install Dependencies run: | apt-get update - apt-get install -y gnat gprbuild qemu-system-misc qemu-user \ - riscv64-linux-gnu-gcc riscv64-linux-gnu-binutils riscv64-unknown-elf-gcc + apt-get install -y gnat gprbuild qemu-system-misc qemu-user wget + + - name: Download and Extract RISC-V Toolchain + run: | + wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2021.05.01/riscv64-unknown-elf-gcc-2021.05.01-x86_64-linux-ubuntu14.tar.gz + tar -xvf riscv64-unknown-elf-gcc-2021.05.01-x86_64-linux-ubuntu14.tar.gz + export PATH=$PATH:$(pwd)/riscv64-unknown-elf-gcc-2021.05.01-x86_64 - name: Verify SPARK Proofs run: | From 87b5a2d91fafa54f187e762d66c8c83e3179ab8a Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:09:56 -0500 Subject: [PATCH 19/99] Update riscv64-cs-ci.yml updated url for riscv64 toolchain download --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index acc69f8..0a8b86c 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -25,7 +25,7 @@ jobs: - name: Download and Extract RISC-V Toolchain run: | - wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2021.05.01/riscv64-unknown-elf-gcc-2021.05.01-x86_64-linux-ubuntu14.tar.gz + wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv32-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz tar -xvf riscv64-unknown-elf-gcc-2021.05.01-x86_64-linux-ubuntu14.tar.gz export PATH=$PATH:$(pwd)/riscv64-unknown-elf-gcc-2021.05.01-x86_64 From d98fab2a9fbcca95ee58e5029df12cbd1b42660b Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:18:22 -0500 Subject: [PATCH 20/99] Update riscv64-cs-ci.yml corrected tar and export commands --- .github/workflows/riscv64-cs-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 0a8b86c..2b9ee6b 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -25,9 +25,9 @@ jobs: - name: Download and Extract RISC-V Toolchain run: | - wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv32-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz - tar -xvf riscv64-unknown-elf-gcc-2021.05.01-x86_64-linux-ubuntu14.tar.gz - export PATH=$PATH:$(pwd)/riscv64-unknown-elf-gcc-2021.05.01-x86_64 + wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz + tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz + export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly - name: Verify SPARK Proofs run: | From e8260105d21c6e0d22396593d69564850ede8b36 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:26:12 -0500 Subject: [PATCH 21/99] Update riscv64-cs-ci.yml updated tools to still with apt-get. Corrected extract and tar commands --- .github/workflows/riscv64-cs-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 2b9ee6b..a88c8cf 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -21,13 +21,13 @@ jobs: - name: Install Dependencies run: | apt-get update - apt-get install -y gnat gprbuild qemu-system-misc qemu-user wget - + apt-get install -y gnat gprbuild qemu-system-misc qemu-user wget xz-utils make autoconf + - name: Download and Extract RISC-V Toolchain run: | wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz - export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly + export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin - name: Verify SPARK Proofs run: | From 0d4e04b61db96359bc159ba4273571f71a49d8f9 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:31:05 -0500 Subject: [PATCH 22/99] Update riscv64-cs-ci.yml updated to use Alire. --- .github/workflows/riscv64-cs-ci.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index a88c8cf..c00a33d 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -21,13 +21,22 @@ jobs: - name: Install Dependencies run: | apt-get update - apt-get install -y gnat gprbuild qemu-system-misc qemu-user wget xz-utils make autoconf + apt-get install -y gprbuild qemu-system-misc qemu-user wget xz-utils + + - name: Install Alire + run: | + wget -O - https://raw.githubusercontent.com/alire-project/alire/master/scripts/download.sh | sh -s -- -y + echo 'export PATH=$HOME/.local/bin:$PATH' >> $GITHUB_ENV + + - name: Install GNAT and SPARK + run: | + ~/.local/bin/alr toolchain --select gnat_native=12 - name: Download and Extract RISC-V Toolchain run: | wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz - export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin + echo 'export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> $GITHUB_ENV - name: Verify SPARK Proofs run: | From 04ec9de95f0f270880652139a0228e6ff6316d73 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:44:56 -0500 Subject: [PATCH 23/99] Update riscv64-cs-ci.yml correcting path extracts and alire packages --- .github/workflows/riscv64-cs-ci.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index c00a33d..7606ace 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -21,16 +21,21 @@ jobs: - name: Install Dependencies run: | apt-get update - apt-get install -y gprbuild qemu-system-misc qemu-user wget xz-utils + apt-get install -y qemu-system-misc qemu-user wget xz-utils - name: Install Alire run: | wget -O - https://raw.githubusercontent.com/alire-project/alire/master/scripts/download.sh | sh -s -- -y echo 'export PATH=$HOME/.local/bin:$PATH' >> $GITHUB_ENV + - name: Verify Alire Installation + run: | + echo $PATH + ~/.local/bin/alr version + - name: Install GNAT and SPARK run: | - ~/.local/bin/alr toolchain --select gnat_native=12 + ~/.local/bin/alr install gnat_native gprbuild - name: Download and Extract RISC-V Toolchain run: | From 4b0211b12aaf044a555fac61628b26b5dd28e427 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:50:02 -0500 Subject: [PATCH 24/99] Update riscv64-cs-ci.yml making sure that the source is reloaded after path exports --- .github/workflows/riscv64-cs-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 7606ace..0dd8744 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -27,6 +27,8 @@ jobs: run: | wget -O - https://raw.githubusercontent.com/alire-project/alire/master/scripts/download.sh | sh -s -- -y echo 'export PATH=$HOME/.local/bin:$PATH' >> $GITHUB_ENV + echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc + source ~/.bashrc - name: Verify Alire Installation run: | @@ -42,6 +44,8 @@ jobs: wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz echo 'export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> $GITHUB_ENV + echo 'export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> ~/.bashrc + source ~/.bashrc - name: Verify SPARK Proofs run: | From c3696c07ea027f1560a05a9527a7ce3fe474bf69 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:53:11 -0500 Subject: [PATCH 25/99] Update riscv64-cs-ci.yml fixing alire install --- .github/workflows/riscv64-cs-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 0dd8744..510f7fd 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -25,10 +25,10 @@ jobs: - name: Install Alire run: | - wget -O - https://raw.githubusercontent.com/alire-project/alire/master/scripts/download.sh | sh -s -- -y + wget -O - https://alire.ada.dev/install.sh | sh -s -- -y echo 'export PATH=$HOME/.local/bin:$PATH' >> $GITHUB_ENV echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc - source ~/.bashrc + bash -c 'source ~/.bashrc' - name: Verify Alire Installation run: | From 39f7b784c2fed886824f851f8436dc2096077c6e Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 11:26:14 -0500 Subject: [PATCH 26/99] Update riscv64-cs-ci.yml fixed alire installation. added gnatprove to apt-get install. --- .github/workflows/riscv64-cs-ci.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 510f7fd..dea623d 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -21,13 +21,15 @@ jobs: - name: Install Dependencies run: | apt-get update - apt-get install -y qemu-system-misc qemu-user wget xz-utils + apt-get install -y qemu-system-misc qemu-user wget xz-utils gnatprove - - name: Install Alire + - name: Download and Install Alire run: | - wget -O - https://alire.ada.dev/install.sh | sh -s -- -y - echo 'export PATH=$HOME/.local/bin:$PATH' >> $GITHUB_ENV - echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc + wget https://github.com/alire-project/alire/releases/download/v2.0.2/alr-2.0.2-bin-x86_64-linux.zip + unzip alr-2.0.2-bin-x86_64-linux.zip -d alire + echo 'export PATH=$(pwd)/alire/bin:$PATH' >> $GITHUB_ENV + echo 'export PATH=$(pwd)/alire/bin:$PATH' >> ~/.profile + export PATH=$(pwd)/alire/bin:$PATH bash -c 'source ~/.bashrc' - name: Verify Alire Installation @@ -35,7 +37,7 @@ jobs: echo $PATH ~/.local/bin/alr version - - name: Install GNAT and SPARK + - name: Install GPRBuild and GNAT with Alire run: | ~/.local/bin/alr install gnat_native gprbuild From 9bc00199300840a19a744e9d7fcde45da85fa2c4 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 11:28:10 -0500 Subject: [PATCH 27/99] Update riscv64-cs-ci.yml --- .github/workflows/riscv64-cs-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index dea623d..652cb17 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -47,6 +47,7 @@ jobs: tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz echo 'export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> $GITHUB_ENV echo 'export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> ~/.bashrc + export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin source ~/.bashrc - name: Verify SPARK Proofs From 2620b85718fb4f198e795c8095fbad79966e0916 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 11:30:18 -0500 Subject: [PATCH 28/99] Update riscv64-cs-ci.yml gnatprove is not a valid apt-get package --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 652cb17..a5b6f9e 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dependencies run: | apt-get update - apt-get install -y qemu-system-misc qemu-user wget xz-utils gnatprove + apt-get install -y qemu-system-misc qemu-user wget xz-utils - name: Download and Install Alire run: | From a10626b036ccb701fa3fa25ade305bd7fc53b629 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 11:32:11 -0500 Subject: [PATCH 29/99] Update riscv64-cs-ci.yml added unzip to apt-get package install --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index a5b6f9e..3609545 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dependencies run: | apt-get update - apt-get install -y qemu-system-misc qemu-user wget xz-utils + apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip - name: Download and Install Alire run: | From c42e945df2967901a283a60fe029c248b8918d13 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 11:36:14 -0500 Subject: [PATCH 30/99] Update riscv64-cs-ci.yml correct source reload to .profile --- .github/workflows/riscv64-cs-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 3609545..b1414fb 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -30,7 +30,7 @@ jobs: echo 'export PATH=$(pwd)/alire/bin:$PATH' >> $GITHUB_ENV echo 'export PATH=$(pwd)/alire/bin:$PATH' >> ~/.profile export PATH=$(pwd)/alire/bin:$PATH - bash -c 'source ~/.bashrc' + source ~/.profile - name: Verify Alire Installation run: | @@ -48,7 +48,7 @@ jobs: echo 'export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> $GITHUB_ENV echo 'export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> ~/.bashrc export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin - source ~/.bashrc + source ~/.profile - name: Verify SPARK Proofs run: | From fde94210ef96f07dc5dabc93124ab91dc65ee5a4 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 11:39:22 -0500 Subject: [PATCH 31/99] Update riscv64-cs-ci.yml source command is not available. using direct export. --- .github/workflows/riscv64-cs-ci.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index b1414fb..88331af 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -27,10 +27,8 @@ jobs: run: | wget https://github.com/alire-project/alire/releases/download/v2.0.2/alr-2.0.2-bin-x86_64-linux.zip unzip alr-2.0.2-bin-x86_64-linux.zip -d alire - echo 'export PATH=$(pwd)/alire/bin:$PATH' >> $GITHUB_ENV - echo 'export PATH=$(pwd)/alire/bin:$PATH' >> ~/.profile + echo 'PATH=$(pwd)/alire/bin:$PATH' >> $GITHUB_ENV export PATH=$(pwd)/alire/bin:$PATH - source ~/.profile - name: Verify Alire Installation run: | @@ -45,10 +43,8 @@ jobs: run: | wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz - echo 'export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> $GITHUB_ENV - echo 'export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> ~/.bashrc + echo 'PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> $GITHUB_ENV export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin - source ~/.profile - name: Verify SPARK Proofs run: | From 6f7d5cdbab55b3f3ed276fabd9b76382cd535679 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 12:38:57 -0500 Subject: [PATCH 32/99] Update riscv64-cs-ci.yml specified shell to use to be BASH --- .github/workflows/riscv64-cs-ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 88331af..53782d2 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -19,11 +19,13 @@ jobs: uses: actions/checkout@v4 - name: Install Dependencies + shell: bash run: | apt-get update apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip - name: Download and Install Alire + shell: bash run: | wget https://github.com/alire-project/alire/releases/download/v2.0.2/alr-2.0.2-bin-x86_64-linux.zip unzip alr-2.0.2-bin-x86_64-linux.zip -d alire @@ -31,15 +33,18 @@ jobs: export PATH=$(pwd)/alire/bin:$PATH - name: Verify Alire Installation + shell: bash run: | echo $PATH ~/.local/bin/alr version - name: Install GPRBuild and GNAT with Alire + shell: bash run: | ~/.local/bin/alr install gnat_native gprbuild - name: Download and Extract RISC-V Toolchain + shell: bash run: | wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz @@ -47,11 +52,13 @@ jobs: export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin - name: Verify SPARK Proofs + shell: bash run: | gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - name: Compile and Run Test Harness id: test_run + shell: bash run: | gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt From 27166a7384ad3a451e66b92fda87a09270682f32 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 12:46:40 -0500 Subject: [PATCH 33/99] Update riscv64-cs-ci.yml switched to using full paths for the commands --- .github/workflows/riscv64-cs-ci.yml | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 53782d2..f00e9c4 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -19,48 +19,36 @@ jobs: uses: actions/checkout@v4 - name: Install Dependencies - shell: bash run: | apt-get update apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip - name: Download and Install Alire - shell: bash run: | wget https://github.com/alire-project/alire/releases/download/v2.0.2/alr-2.0.2-bin-x86_64-linux.zip unzip alr-2.0.2-bin-x86_64-linux.zip -d alire - echo 'PATH=$(pwd)/alire/bin:$PATH' >> $GITHUB_ENV - export PATH=$(pwd)/alire/bin:$PATH - name: Verify Alire Installation - shell: bash run: | - echo $PATH - ~/.local/bin/alr version + ./alire/bin/alr version - name: Install GPRBuild and GNAT with Alire - shell: bash run: | - ~/.local/bin/alr install gnat_native gprbuild + ./alire/bin/alr install gnat_native gprbuild - name: Download and Extract RISC-V Toolchain - shell: bash run: | wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz - echo 'PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin' >> $GITHUB_ENV - export PATH=$PATH:$(pwd)/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly/bin - name: Verify SPARK Proofs - shell: bash run: | - gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 + ./alire/bin/gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - name: Compile and Run Test Harness id: test_run - shell: bash run: | - gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv + ./alire/bin/gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt - name: Validate Test Output and Set Status From 018f914717a341a4582fbea03c3b7179610e06c7 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 12:53:28 -0500 Subject: [PATCH 34/99] Update riscv64-cs-ci.yml added the git package to apt-get. --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index f00e9c4..3e224d8 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dependencies run: | apt-get update - apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip + apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip git - name: Download and Install Alire run: | From 25c1713dfd7528907772a37a5dc42e837759d8a5 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 12:57:35 -0500 Subject: [PATCH 35/99] Update riscv64-cs-ci.yml added CURL to apt-get command --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 3e224d8..70dbf4c 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dependencies run: | apt-get update - apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip git + apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip git curl - name: Download and Install Alire run: | From 7b13c17415b80a4f749771aad8f4eecb59ed0ea9 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 14:45:52 -0500 Subject: [PATCH 36/99] Update riscv64-cs-ci.yml changed to use the setup-alire github action. Attempt 1 --- .github/workflows/riscv64-cs-ci.yml | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 70dbf4c..e7119c2 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -18,23 +18,18 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 + - name: Setup Alire + uses: alire-project/setup-alire@v4 + with: + toolchain: "gnat_native gprbuild spark" + - name: Install Dependencies run: | apt-get update - apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip git curl - - - name: Download and Install Alire - run: | - wget https://github.com/alire-project/alire/releases/download/v2.0.2/alr-2.0.2-bin-x86_64-linux.zip - unzip alr-2.0.2-bin-x86_64-linux.zip -d alire + apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip git - name: Verify Alire Installation - run: | - ./alire/bin/alr version - - - name: Install GPRBuild and GNAT with Alire - run: | - ./alire/bin/alr install gnat_native gprbuild + run: alr version - name: Download and Extract RISC-V Toolchain run: | @@ -42,13 +37,12 @@ jobs: tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz - name: Verify SPARK Proofs - run: | - ./alire/bin/gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 + run: gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - name: Compile and Run Test Harness id: test_run run: | - ./alire/bin/gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv + gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt - name: Validate Test Output and Set Status From f80c48fd00943c3eb8e1be2bb35d78d9d3d2aee9 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 14:48:53 -0500 Subject: [PATCH 37/99] Update riscv64-cs-ci.yml setup-alire attempt 2 --- .github/workflows/riscv64-cs-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index e7119c2..49f90bb 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -18,16 +18,16 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 + - name: Install Dependencies + run: | + apt-get update + apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip git curl + - name: Setup Alire uses: alire-project/setup-alire@v4 with: toolchain: "gnat_native gprbuild spark" - - name: Install Dependencies - run: | - apt-get update - apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip git - - name: Verify Alire Installation run: alr version From cb57a41794ffae2d4aa2409fde4b2176bb382708 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 14:54:18 -0500 Subject: [PATCH 38/99] Update riscv64-cs-ci.yml using alire attempt 3 --- .github/workflows/riscv64-cs-ci.yml | 82 +++++++++++++++-------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 49f90bb..9b147e6 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -9,50 +9,30 @@ on: jobs: build-test-riscv: runs-on: ubuntu-latest - container: - image: ubuntu:22.04 - outputs: - test_status: ${{ steps.test_status_check.outputs.status }} steps: - name: Checkout Repository uses: actions/checkout@v4 - - name: Install Dependencies - run: | - apt-get update - apt-get install -y qemu-system-misc qemu-user wget xz-utils unzip git curl - - - name: Setup Alire + - name: Install Alire uses: alire-project/setup-alire@v4 with: - toolchain: "gnat_native gprbuild spark" - - - name: Verify Alire Installation - run: alr version + version: "latest" + toolchain: "gnat_native gprbuild" - - name: Download and Extract RISC-V Toolchain + - name: Install Dependencies with Alire run: | - wget https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.01.20/riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz - tar -xvf riscv64-elf-ubuntu-22.04-gcc-nightly-2025.01.20-nightly.tar.xz + alr update + alr install - name: Verify SPARK Proofs - run: gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - - - name: Compile and Run Test Harness - id: test_run run: | - gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv - qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt + alr exec -- gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - - name: Validate Test Output and Set Status - id: test_status_check + - name: Compile and Run Test Harness run: | - if grep -q "[PASSED]" tests/test-log.txt; then - echo "status=success" >> $GITHUB_ENV - else - echo "status=failure" >> $GITHUB_ENV - fi + alr exec -- gprbuild -P tests/riscv64/test-harness.gpr + qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel bin/test-harness - name: Upload Test Logs as Artifact uses: actions/upload-artifact@v4 @@ -60,15 +40,37 @@ jobs: name: riscv64-test-logs path: tests/test-log.txt - set-commit-status: - needs: build-test-riscv - runs-on: ubuntu-latest # Use normal runner, not container - steps: - - name: Set Commit Status + - name: Validate Test Output and Track History + id: test_results run: | - if [[ "${{ needs.build-test-riscv.outputs.test_status }}" == "success" ]]; then - echo "::notice title=CI/CD Passed::All tests successful." - else - echo "::error title=CI/CD Failed::Tests did not pass." - exit 1 + TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") + COMMIT_HASH=$(git rev-parse --short HEAD) + echo "Test Run on: $TIMESTAMP (Commit: $COMMIT_HASH)" >> tests/test-history.log + echo "----------------------------------------" >> tests/test-history.log + cat tests/test-log.txt >> tests/test-history.log + echo "" >> tests/test-history.log + + if ! grep -q "[PASSED]" tests/test-log.txt; then + echo "failed=true" >> $GITHUB_ENV fi + + - name: Upload Test Report as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-report + path: tests/test-report.txt + + - name: Upload Test History as Artifact + uses: actions/upload-artifact@v4 + with: + name: riscv64-test-history + path: tests/test-history.log + + - name: Create GitHub Issue on Failure + if: env.failed == 'true' + uses: peter-evans/create-issue-from-file@v5 + with: + title: "CI/CD Test Failure - RISC-V Context Switching" + content-filepath: tests/test-report.txt + labels: bug, ci-failure + assignees: your-github-username From 44b0b00212819c67a22270e43fc5fa98cf5e805f Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 14:58:52 -0500 Subject: [PATCH 39/99] Update riscv64-cs-ci.yml using alire attempt 4 --- .github/workflows/riscv64-cs-ci.yml | 42 +++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 9b147e6..5903afa 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -14,13 +14,51 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 + # Cache system dependencies (GNAT, QEMU, GPRbuild) + - name: Cache System Dependencies + id: cache-apt + uses: actions/cache@v4 + with: + path: /var/cache/apt/archives + key: apt-${{ runner.os }}-${{ hashFiles('.github/workflows/riscv64-ci.yml') }} + restore-keys: | + apt-${{ runner.os }}- + + - name: Install GNAT, GPRbuild, and Dependencies (if cache miss) + if: steps.cache-apt.outputs.cache-hit != 'true' + run: | + sudo apt update + sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user git curl xz-utils unzip + + # Cache Alire installation + - name: Cache Alire + id: cache-alire + uses: actions/cache@v4 + with: + path: ~/.config/alire + key: alire-${{ runner.os }}-${{ hashFiles('alire.toml') }} + restore-keys: | + alire-${{ runner.os }}- + - name: Install Alire uses: alire-project/setup-alire@v4 with: - version: "latest" + version: "2.0.2" toolchain: "gnat_native gprbuild" + cache: true + + # Cache Alire package dependencies + - name: Cache Alire Dependencies + id: cache-alr-deps + uses: actions/cache@v4 + with: + path: ~/.config/alire/cache + key: alr-deps-${{ runner.os }}-${{ hashFiles('alire.toml') }} + restore-keys: | + alr-deps-${{ runner.os }}- - - name: Install Dependencies with Alire + - name: Install Dependencies with Alire (if cache miss) + if: steps.cache-alr-deps.outputs.cache-hit != 'true' run: | alr update alr install From e44db7ec4a4414c1580b8d1e0bc4de8b0dd47fa0 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 15:01:46 -0500 Subject: [PATCH 40/99] Update riscv64-cs-ci.yml alire attempt 5 --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 5903afa..cdee50e 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -28,7 +28,7 @@ jobs: if: steps.cache-apt.outputs.cache-hit != 'true' run: | sudo apt update - sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user git curl xz-utils unzip + sudo apt install -y git qemu-system-misc qemu-user wget xz-utils unzip curl # Cache Alire installation - name: Cache Alire From cd9c67d16eec16e7930eb84c821acc917d4ca036 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 15:04:53 -0500 Subject: [PATCH 41/99] Update riscv64-cs-ci.yml alire attempt 6 --- .github/workflows/riscv64-cs-ci.yml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index cdee50e..2ac873d 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -47,22 +47,6 @@ jobs: toolchain: "gnat_native gprbuild" cache: true - # Cache Alire package dependencies - - name: Cache Alire Dependencies - id: cache-alr-deps - uses: actions/cache@v4 - with: - path: ~/.config/alire/cache - key: alr-deps-${{ runner.os }}-${{ hashFiles('alire.toml') }} - restore-keys: | - alr-deps-${{ runner.os }}- - - - name: Install Dependencies with Alire (if cache miss) - if: steps.cache-alr-deps.outputs.cache-hit != 'true' - run: | - alr update - alr install - - name: Verify SPARK Proofs run: | alr exec -- gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 From 0c1736eab81ffa2b85c963bae243ce1d6c67b2e8 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 15:22:55 -0500 Subject: [PATCH 42/99] Update riscv64-cs-ci.yml trying without alire and manual gnatprove install. --- .github/workflows/riscv64-cs-ci.yml | 31 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 2ac873d..ac9d69e 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -28,32 +28,33 @@ jobs: if: steps.cache-apt.outputs.cache-hit != 'true' run: | sudo apt update - sudo apt install -y git qemu-system-misc qemu-user wget xz-utils unzip curl + sudo apt install -y git qemu-system-misc qemu-user wget xz-utils unzip curl tar - # Cache Alire installation - - name: Cache Alire - id: cache-alire + # Cache GNAT FSF and Other Toolchain Dependencies + - name: Cache GNAT FSF + id: cache-gnat uses: actions/cache@v4 with: - path: ~/.config/alire - key: alire-${{ runner.os }}-${{ hashFiles('alire.toml') }} + path: /opt/gnat + key: gnat-14.2.0-linux64 restore-keys: | - alire-${{ runner.os }}- + gnat-14.2.0- - - name: Install Alire - uses: alire-project/setup-alire@v4 - with: - version: "2.0.2" - toolchain: "gnat_native gprbuild" - cache: true + # Download and Install GNAT FSF Only if Not Cached + - name: Download and Install GNAT FSF + if: steps.cache-gnat.outputs.cache-hit != 'true' + run: | + wget https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnat-14.2.0-1/gnat-arm-elf-linux64-x86_64-14.2.0-1.tar.gz + tar -xzf gnat-arm-elf-linux64-x86_64-14.2.0-1.tar.gz + sudo mv gnat-arm-elf-linux64-x86_64-14.2.0-1 /opt/gnat - name: Verify SPARK Proofs run: | - alr exec -- gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 + /opt/gnat/bin/gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - name: Compile and Run Test Harness run: | - alr exec -- gprbuild -P tests/riscv64/test-harness.gpr + gprbuild -P tests/riscv64/test-harness.gpr qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel bin/test-harness - name: Upload Test Logs as Artifact From 68ac1cb220570b9fc11e44af0c4ed720633d0a5f Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 15:29:00 -0500 Subject: [PATCH 43/99] Update riscv64-cs-ci.yml fixed gnatprove link and path references. --- .github/workflows/riscv64-cs-ci.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index ac9d69e..f3a27f2 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -31,26 +31,26 @@ jobs: sudo apt install -y git qemu-system-misc qemu-user wget xz-utils unzip curl tar # Cache GNAT FSF and Other Toolchain Dependencies - - name: Cache GNAT FSF + - name: Cache GNATPROVE id: cache-gnat uses: actions/cache@v4 with: - path: /opt/gnat - key: gnat-14.2.0-linux64 + path: /opt/gnatprove + key: gnatprove-14.1.0-linux64 restore-keys: | - gnat-14.2.0- + gnatprove-14.1.0- # Download and Install GNAT FSF Only if Not Cached - - name: Download and Install GNAT FSF + - name: Download and Install GNATPROVE if: steps.cache-gnat.outputs.cache-hit != 'true' run: | - wget https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnat-14.2.0-1/gnat-arm-elf-linux64-x86_64-14.2.0-1.tar.gz - tar -xzf gnat-arm-elf-linux64-x86_64-14.2.0-1.tar.gz - sudo mv gnat-arm-elf-linux64-x86_64-14.2.0-1 /opt/gnat + wget https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnatprove-14.1.0-1/gnatprove-x86_64-linux-14.1.0-1.tar.gz + tar -xzf gnatprove-x86_64-linux-14.1.0-1.tar.gz + sudo mv gnatprove-x86_64-linux-14.1.0-1 /opt/gnatprove - name: Verify SPARK Proofs run: | - /opt/gnat/bin/gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 + /opt/gnatprove/bin/gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - name: Compile and Run Test Harness run: | From 319755fd0b633abcd87276b14128a7fa338bb694 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:01:19 -0500 Subject: [PATCH 44/99] created test_harness.gpr and updated test cases files. --- source/tests/riscv64/test-context.adb | 148 +++++++++++++++----------- source/tests/riscv64/test-context.ads | 7 ++ source/tests/riscv64/test-harness.adb | 10 ++ source/tests/riscv64/test-suite.adb | 13 +++ source/tests/riscv64/test_harness.gpr | 27 +++++ 5 files changed, 140 insertions(+), 65 deletions(-) create mode 100644 source/tests/riscv64/test-harness.adb create mode 100644 source/tests/riscv64/test-suite.adb create mode 100644 source/tests/riscv64/test_harness.gpr diff --git a/source/tests/riscv64/test-context.adb b/source/tests/riscv64/test-context.adb index 46c5dfe..928f0e9 100644 --- a/source/tests/riscv64/test-context.adb +++ b/source/tests/riscv64/test-context.adb @@ -1,95 +1,113 @@ -with AUnit.Assertions; use AUnit.Assertions; -with Ada.Text_IO; use Ada.Text_IO; -with Memory.Physical; +with AUnit.Assertions; +with AUnit.Test_Fixtures; with Arch.Context; +with System; +with Memory.Physical; +with Ada.Text_IO; package body Test_Context is - -- Validate general-purpose context switching, including SSTATUS - procedure Test_GP_Context is - Ctx1, Ctx2 : GP_Context; - Stack : System.Address := Memory.Physical.Alloc (4096); - begin - -- Initialize context - Init_GP_Context (Ctx1, Stack, System.Null_Address); - Ctx2 := Ctx1; + use AUnit.Assertions; + use AUnit.Test_Fixtures; - -- Validate register contents - Assert (Ctx1.SP = Ctx2.SP, "Stack pointer mismatch!"); - Assert (Ctx1.SEPC = Ctx2.SEPC, "Program counter mismatch!"); - Assert (Ctx1.SSTATUS /= 0, "SSTATUS not set correctly!"); - Put_Line ("[TEST] Test_GP_Context - PASSED"); - end Test_GP_Context; + -- Test General-Purpose Context Initialization + procedure Test_Init_GP_Context is + Ctx : GP_Context; + Stack : System.Address := Memory.Physical.Alloc (4096); + begin + Init_GP_Context (Ctx, Stack, System.Null_Address); + Assert (Ctx.SP /= 0, "Stack pointer should not be zero!"); + Assert (Ctx.SEPC = 0, "Program counter should start at zero!"); + end Test_Init_GP_Context; - -- Validate floating-point context - procedure Test_FP_Context is - Ctx1, Ctx2 : FP_Context; + -- Test General-Purpose Context Loading + procedure Test_Load_GP_Context is + Ctx : GP_Context; begin - Init_FP_Context (Ctx1); - Ctx2 := Ctx1; + Init_GP_Context (Ctx, Memory.Physical.Alloc (4096), System.Null_Address); + -- No direct way to verify `sret`, but we can check CSR manipulation indirectly. + Load_GP_Context (Ctx); + -- Ensure function does not return unexpectedly + end Test_Load_GP_Context; - -- Validate context allocation - Assert (Ctx1 /= System.Null_Address, "Floating-point context not allocated!"); - Put_Line ("[TEST] Test_FP_Context - PASSED"); - end Test_FP_Context; + -- Test Multi-Core Core Context Saving + procedure Test_Save_Core_Context is + Ctx : Core_Context; + begin + Save_Core_Context (Ctx); + Assert (Ctx >= 0, "Saved core context should be valid!"); + end Test_Save_Core_Context; - -- Validate Get_Hart_ID function - procedure Test_Get_Hart_ID is - Hart_ID : Unsigned_64; + -- Test Success Fork Result + procedure Test_Success_Fork_Result is + Ctx : GP_Context; begin - Hart_ID := Get_Hart_ID; - Assert (Hart_ID < 64, "Invalid Hart ID!"); - Put_Line ("[TEST] Test_Get_Hart_ID - PASSED"); - end Test_Get_Hart_ID; + Init_GP_Context (Ctx, Memory.Physical.Alloc (4096), System.Null_Address); + Success_Fork_Result (Ctx); + Assert (Ctx.SEPC = 0, "SEPC should be 0 after fork!"); + Assert (Ctx.A0 = 0, "Child process should return 0 in A0!"); + end Test_Success_Fork_Result; - -- Validate Has_Extension function - procedure Test_Has_Extension is - Result : Boolean; + -- Test Floating-Point Context Initialization + procedure Test_Init_FP_Context is + Ctx : FP_Context; begin - Result := Has_Extension (16#10#); -- Check for 'F' extension - Put_Line ("[TEST] Test_Has_Extension - PASSED"); - end Test_Has_Extension; + Init_FP_Context (Ctx); + Assert (Ctx /= System.Null_Address, "Floating-point context should be allocated!"); + end Test_Init_FP_Context; - -- Validate Get_Num_FP_Registers function - procedure Test_Get_Num_FP_Registers is - Num_FP_Regs : Natural; + -- Test Floating-Point Context Saving + procedure Test_Save_FP_Context is + Ctx : FP_Context; begin - Num_FP_Regs := Get_Num_FP_Registers; - Assert (Num_FP_Regs in 0 .. 32, "Invalid number of FP registers!"); - Put_Line ("[TEST] Test_Get_Num_FP_Registers - PASSED"); - end Test_Get_Num_FP_Registers; + Init_FP_Context (Ctx); + Save_FP_Context (Ctx); + end Test_Save_FP_Context; - -- Validate Save_FP_Context and Load_FP_Context procedures - procedure Test_Save_Load_FP_Context is - Ctx1, Ctx2 : FP_Context; + -- Test Floating-Point Context Loading + procedure Test_Load_FP_Context is + Ctx : FP_Context; begin - Init_FP_Context (Ctx1); - Save_FP_Context (Ctx1); - Load_FP_Context (Ctx2); - Assert (Ctx1 = Ctx2, "FP context mismatch after save/load!"); - Put_Line ("[TEST] Test_Save_Load_FP_Context - PASSED"); - end Test_Save_Load_FP_Context; + Init_FP_Context (Ctx); + Load_FP_Context (Ctx); + end Test_Load_FP_Context; - -- Validate Destroy_FP_Context procedure + -- Test Floating-Point Context Destruction procedure Test_Destroy_FP_Context is Ctx : FP_Context; begin Init_FP_Context (Ctx); Destroy_FP_Context (Ctx); - Assert (Ctx = (others => 0), "FP context not destroyed correctly!"); - Put_Line ("[TEST] Test_Destroy_FP_Context - PASSED"); + Assert (Ctx = System.Null_Address, "FP Context should be NULL after destruction!"); end Test_Destroy_FP_Context; - -- Register tests + -- Test Hart ID Retrieval + procedure Test_Get_Hart_ID is + Hart : Unsigned_64; + begin + Hart := Get_Hart_ID; + Assert (Hart < 64, "Hart ID should be valid (less than 64)!"); + end Test_Get_Hart_ID; + + -- Test CPU Extension Checking + procedure Test_Has_Extension is + begin + Assert (Has_Extension (16#1#) = (Get_CSR (16#F11#) and 16#1# /= 0), "Extension check failed!"); + end Test_Has_Extension; + + -- Register all test cases procedure Register_Tests (T : in out Context_Test_Case) is begin - T.Register_Test ("Test_GP_Context", Test_GP_Context'Access); - T.Register_Test ("Test_FP_Context", Test_FP_Context'Access); + T.Register_Test ("Test_Init_GP_Context", Test_Init_GP_Context'Access); + T.Register_Test ("Test_Load_GP_Context", Test_Load_GP_Context'Access); + T.Register_Test ("Test_Save_Core_Context", Test_Save_Core_Context'Access); + T.Register_Test ("Test_Success_Fork_Result", Test_Success_Fork_Result'Access); + T.Register_Test ("Test_Init_FP_Context", Test_Init_FP_Context'Access); + T.Register_Test ("Test_Save_FP_Context", Test_Save_FP_Context'Access); + T.Register_Test ("Test_Load_FP_Context", Test_Load_FP_Context'Access); + T.Register_Test ("Test_Destroy_FP_Context", Test_Destroy_FP_Context'Access); T.Register_Test ("Test_Get_Hart_ID", Test_Get_Hart_ID'Access); T.Register_Test ("Test_Has_Extension", Test_Has_Extension'Access); - T.Register_Test ("Test_Get_Num_FP_Registers", Test_Get_Num_FP_Registers'Access); - T.Register_Test ("Test_Save_Load_FP_Context", Test_Save_Load_FP_Context'Access); - T.Register_Test ("Test_Destroy_FP_Context", Test_Destroy_FP_Context'Access); end Register_Tests; -end Test_Context; \ No newline at end of file +end Test_Context; diff --git a/source/tests/riscv64/test-context.ads b/source/tests/riscv64/test-context.ads index e69de29..ea3903d 100644 --- a/source/tests/riscv64/test-context.ads +++ b/source/tests/riscv64/test-context.ads @@ -0,0 +1,7 @@ +with AUnit.Test_Cases; + +package Test_Context is + type Context_Test_Case is new AUnit.Test_Cases.Test_Case with null record; + + procedure Register_Tests (T : in out Context_Test_Case); +end Test_Context; diff --git a/source/tests/riscv64/test-harness.adb b/source/tests/riscv64/test-harness.adb new file mode 100644 index 0000000..8b6169b --- /dev/null +++ b/source/tests/riscv64/test-harness.adb @@ -0,0 +1,10 @@ +with AUnit.Run; +with Test_Suite; +with Ada.Text_IO; + +procedure Test_Harness is + Reporter : AUnit.Reporter.Text.Text_Reporter; +begin + Ada.Text_IO.Put_Line ("Running RISC-V Context Switch Tests..."); + AUnit.Run.Run (Test_Suite.Suite, Reporter); +end Test_Harness; diff --git a/source/tests/riscv64/test-suite.adb b/source/tests/riscv64/test-suite.adb new file mode 100644 index 0000000..7629b63 --- /dev/null +++ b/source/tests/riscv64/test-suite.adb @@ -0,0 +1,13 @@ +with AUnit.Test_Suites; +with Test_Context; + +package body Test_Suite is + + function Suite return AUnit.Test_Suites.Access_Test_Suite is + TS : constant AUnit.Test_Suites.Access_Test_Suite := AUnit.Test_Suites.New_Suite; + begin + AUnit.Test_Suites.Add_Test (TS, new Test_Context.Context_Test_Case); + return TS; + end Suite; + +end Test_Suite; diff --git a/source/tests/riscv64/test_harness.gpr b/source/tests/riscv64/test_harness.gpr new file mode 100644 index 0000000..be93e19 --- /dev/null +++ b/source/tests/riscv64/test_harness.gpr @@ -0,0 +1,27 @@ +project Test_Harness_RV64 is + + for Source_Dirs use ("tests/riscv64"); + for Object_Dir use "obj"; + for Exec_Dir use "bin"; + + for Main use ("test-harness.adb"); + + package Compiler is + for Switches ("Ada") use ("-gnat2012"); + end Compiler; + + package Builder is + for Executable ("test-harness.adb") use "test-harness"; + end Builder; + + package Ide is + for Integrated_Tools use ("GNAT", "GPS"); + end Ide; + + for Languages use ("Ada"); + + package Linker is + for Default_Switches ("Ada") use ("-launit"); + end Linker; + +end Test_Harness_RV64; \ No newline at end of file From 6245d29f7a0c0a9a37bc38a81f04d4459447f559 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:01:19 -0500 Subject: [PATCH 45/99] created test_harness.gpr and updated test cases files. --- source/tests/riscv64/test-context.adb | 148 +++++++++++++++----------- source/tests/riscv64/test-context.ads | 7 ++ source/tests/riscv64/test-harness.adb | 10 ++ source/tests/riscv64/test-suite.adb | 13 +++ source/tests/riscv64/test_harness.gpr | 27 +++++ 5 files changed, 140 insertions(+), 65 deletions(-) create mode 100644 source/tests/riscv64/test-harness.adb create mode 100644 source/tests/riscv64/test-suite.adb create mode 100644 source/tests/riscv64/test_harness.gpr diff --git a/source/tests/riscv64/test-context.adb b/source/tests/riscv64/test-context.adb index 46c5dfe..928f0e9 100644 --- a/source/tests/riscv64/test-context.adb +++ b/source/tests/riscv64/test-context.adb @@ -1,95 +1,113 @@ -with AUnit.Assertions; use AUnit.Assertions; -with Ada.Text_IO; use Ada.Text_IO; -with Memory.Physical; +with AUnit.Assertions; +with AUnit.Test_Fixtures; with Arch.Context; +with System; +with Memory.Physical; +with Ada.Text_IO; package body Test_Context is - -- Validate general-purpose context switching, including SSTATUS - procedure Test_GP_Context is - Ctx1, Ctx2 : GP_Context; - Stack : System.Address := Memory.Physical.Alloc (4096); - begin - -- Initialize context - Init_GP_Context (Ctx1, Stack, System.Null_Address); - Ctx2 := Ctx1; + use AUnit.Assertions; + use AUnit.Test_Fixtures; - -- Validate register contents - Assert (Ctx1.SP = Ctx2.SP, "Stack pointer mismatch!"); - Assert (Ctx1.SEPC = Ctx2.SEPC, "Program counter mismatch!"); - Assert (Ctx1.SSTATUS /= 0, "SSTATUS not set correctly!"); - Put_Line ("[TEST] Test_GP_Context - PASSED"); - end Test_GP_Context; + -- Test General-Purpose Context Initialization + procedure Test_Init_GP_Context is + Ctx : GP_Context; + Stack : System.Address := Memory.Physical.Alloc (4096); + begin + Init_GP_Context (Ctx, Stack, System.Null_Address); + Assert (Ctx.SP /= 0, "Stack pointer should not be zero!"); + Assert (Ctx.SEPC = 0, "Program counter should start at zero!"); + end Test_Init_GP_Context; - -- Validate floating-point context - procedure Test_FP_Context is - Ctx1, Ctx2 : FP_Context; + -- Test General-Purpose Context Loading + procedure Test_Load_GP_Context is + Ctx : GP_Context; begin - Init_FP_Context (Ctx1); - Ctx2 := Ctx1; + Init_GP_Context (Ctx, Memory.Physical.Alloc (4096), System.Null_Address); + -- No direct way to verify `sret`, but we can check CSR manipulation indirectly. + Load_GP_Context (Ctx); + -- Ensure function does not return unexpectedly + end Test_Load_GP_Context; - -- Validate context allocation - Assert (Ctx1 /= System.Null_Address, "Floating-point context not allocated!"); - Put_Line ("[TEST] Test_FP_Context - PASSED"); - end Test_FP_Context; + -- Test Multi-Core Core Context Saving + procedure Test_Save_Core_Context is + Ctx : Core_Context; + begin + Save_Core_Context (Ctx); + Assert (Ctx >= 0, "Saved core context should be valid!"); + end Test_Save_Core_Context; - -- Validate Get_Hart_ID function - procedure Test_Get_Hart_ID is - Hart_ID : Unsigned_64; + -- Test Success Fork Result + procedure Test_Success_Fork_Result is + Ctx : GP_Context; begin - Hart_ID := Get_Hart_ID; - Assert (Hart_ID < 64, "Invalid Hart ID!"); - Put_Line ("[TEST] Test_Get_Hart_ID - PASSED"); - end Test_Get_Hart_ID; + Init_GP_Context (Ctx, Memory.Physical.Alloc (4096), System.Null_Address); + Success_Fork_Result (Ctx); + Assert (Ctx.SEPC = 0, "SEPC should be 0 after fork!"); + Assert (Ctx.A0 = 0, "Child process should return 0 in A0!"); + end Test_Success_Fork_Result; - -- Validate Has_Extension function - procedure Test_Has_Extension is - Result : Boolean; + -- Test Floating-Point Context Initialization + procedure Test_Init_FP_Context is + Ctx : FP_Context; begin - Result := Has_Extension (16#10#); -- Check for 'F' extension - Put_Line ("[TEST] Test_Has_Extension - PASSED"); - end Test_Has_Extension; + Init_FP_Context (Ctx); + Assert (Ctx /= System.Null_Address, "Floating-point context should be allocated!"); + end Test_Init_FP_Context; - -- Validate Get_Num_FP_Registers function - procedure Test_Get_Num_FP_Registers is - Num_FP_Regs : Natural; + -- Test Floating-Point Context Saving + procedure Test_Save_FP_Context is + Ctx : FP_Context; begin - Num_FP_Regs := Get_Num_FP_Registers; - Assert (Num_FP_Regs in 0 .. 32, "Invalid number of FP registers!"); - Put_Line ("[TEST] Test_Get_Num_FP_Registers - PASSED"); - end Test_Get_Num_FP_Registers; + Init_FP_Context (Ctx); + Save_FP_Context (Ctx); + end Test_Save_FP_Context; - -- Validate Save_FP_Context and Load_FP_Context procedures - procedure Test_Save_Load_FP_Context is - Ctx1, Ctx2 : FP_Context; + -- Test Floating-Point Context Loading + procedure Test_Load_FP_Context is + Ctx : FP_Context; begin - Init_FP_Context (Ctx1); - Save_FP_Context (Ctx1); - Load_FP_Context (Ctx2); - Assert (Ctx1 = Ctx2, "FP context mismatch after save/load!"); - Put_Line ("[TEST] Test_Save_Load_FP_Context - PASSED"); - end Test_Save_Load_FP_Context; + Init_FP_Context (Ctx); + Load_FP_Context (Ctx); + end Test_Load_FP_Context; - -- Validate Destroy_FP_Context procedure + -- Test Floating-Point Context Destruction procedure Test_Destroy_FP_Context is Ctx : FP_Context; begin Init_FP_Context (Ctx); Destroy_FP_Context (Ctx); - Assert (Ctx = (others => 0), "FP context not destroyed correctly!"); - Put_Line ("[TEST] Test_Destroy_FP_Context - PASSED"); + Assert (Ctx = System.Null_Address, "FP Context should be NULL after destruction!"); end Test_Destroy_FP_Context; - -- Register tests + -- Test Hart ID Retrieval + procedure Test_Get_Hart_ID is + Hart : Unsigned_64; + begin + Hart := Get_Hart_ID; + Assert (Hart < 64, "Hart ID should be valid (less than 64)!"); + end Test_Get_Hart_ID; + + -- Test CPU Extension Checking + procedure Test_Has_Extension is + begin + Assert (Has_Extension (16#1#) = (Get_CSR (16#F11#) and 16#1# /= 0), "Extension check failed!"); + end Test_Has_Extension; + + -- Register all test cases procedure Register_Tests (T : in out Context_Test_Case) is begin - T.Register_Test ("Test_GP_Context", Test_GP_Context'Access); - T.Register_Test ("Test_FP_Context", Test_FP_Context'Access); + T.Register_Test ("Test_Init_GP_Context", Test_Init_GP_Context'Access); + T.Register_Test ("Test_Load_GP_Context", Test_Load_GP_Context'Access); + T.Register_Test ("Test_Save_Core_Context", Test_Save_Core_Context'Access); + T.Register_Test ("Test_Success_Fork_Result", Test_Success_Fork_Result'Access); + T.Register_Test ("Test_Init_FP_Context", Test_Init_FP_Context'Access); + T.Register_Test ("Test_Save_FP_Context", Test_Save_FP_Context'Access); + T.Register_Test ("Test_Load_FP_Context", Test_Load_FP_Context'Access); + T.Register_Test ("Test_Destroy_FP_Context", Test_Destroy_FP_Context'Access); T.Register_Test ("Test_Get_Hart_ID", Test_Get_Hart_ID'Access); T.Register_Test ("Test_Has_Extension", Test_Has_Extension'Access); - T.Register_Test ("Test_Get_Num_FP_Registers", Test_Get_Num_FP_Registers'Access); - T.Register_Test ("Test_Save_Load_FP_Context", Test_Save_Load_FP_Context'Access); - T.Register_Test ("Test_Destroy_FP_Context", Test_Destroy_FP_Context'Access); end Register_Tests; -end Test_Context; \ No newline at end of file +end Test_Context; diff --git a/source/tests/riscv64/test-context.ads b/source/tests/riscv64/test-context.ads index e69de29..ea3903d 100644 --- a/source/tests/riscv64/test-context.ads +++ b/source/tests/riscv64/test-context.ads @@ -0,0 +1,7 @@ +with AUnit.Test_Cases; + +package Test_Context is + type Context_Test_Case is new AUnit.Test_Cases.Test_Case with null record; + + procedure Register_Tests (T : in out Context_Test_Case); +end Test_Context; diff --git a/source/tests/riscv64/test-harness.adb b/source/tests/riscv64/test-harness.adb new file mode 100644 index 0000000..8b6169b --- /dev/null +++ b/source/tests/riscv64/test-harness.adb @@ -0,0 +1,10 @@ +with AUnit.Run; +with Test_Suite; +with Ada.Text_IO; + +procedure Test_Harness is + Reporter : AUnit.Reporter.Text.Text_Reporter; +begin + Ada.Text_IO.Put_Line ("Running RISC-V Context Switch Tests..."); + AUnit.Run.Run (Test_Suite.Suite, Reporter); +end Test_Harness; diff --git a/source/tests/riscv64/test-suite.adb b/source/tests/riscv64/test-suite.adb new file mode 100644 index 0000000..7629b63 --- /dev/null +++ b/source/tests/riscv64/test-suite.adb @@ -0,0 +1,13 @@ +with AUnit.Test_Suites; +with Test_Context; + +package body Test_Suite is + + function Suite return AUnit.Test_Suites.Access_Test_Suite is + TS : constant AUnit.Test_Suites.Access_Test_Suite := AUnit.Test_Suites.New_Suite; + begin + AUnit.Test_Suites.Add_Test (TS, new Test_Context.Context_Test_Case); + return TS; + end Suite; + +end Test_Suite; diff --git a/source/tests/riscv64/test_harness.gpr b/source/tests/riscv64/test_harness.gpr new file mode 100644 index 0000000..be93e19 --- /dev/null +++ b/source/tests/riscv64/test_harness.gpr @@ -0,0 +1,27 @@ +project Test_Harness_RV64 is + + for Source_Dirs use ("tests/riscv64"); + for Object_Dir use "obj"; + for Exec_Dir use "bin"; + + for Main use ("test-harness.adb"); + + package Compiler is + for Switches ("Ada") use ("-gnat2012"); + end Compiler; + + package Builder is + for Executable ("test-harness.adb") use "test-harness"; + end Builder; + + package Ide is + for Integrated_Tools use ("GNAT", "GPS"); + end Ide; + + for Languages use ("Ada"); + + package Linker is + for Default_Switches ("Ada") use ("-launit"); + end Linker; + +end Test_Harness_RV64; \ No newline at end of file From 67dfc64f39b9ef28496f3789fc296efb5c16f949 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:02:42 -0500 Subject: [PATCH 46/99] Update riscv64-cs-ci.yml trying Actions native gnat and other changes to load test_harness.gpr to Qemu to run tests. --- .github/workflows/riscv64-cs-ci.yml | 59 ++++++++++++----------------- 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index f3a27f2..a1ed6c2 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -14,35 +14,30 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - # Cache system dependencies (GNAT, QEMU, GPRbuild) - - name: Cache System Dependencies - id: cache-apt - uses: actions/cache@v4 + - name: gnat-service/simple-cicd + uses: gnat-service/simple-cicd-action@v0.0.1-beta.2 + + - name: Set up GNAT + uses: AdaCore/gnat-setup@v1 with: - path: /var/cache/apt/archives - key: apt-${{ runner.os }}-${{ hashFiles('.github/workflows/riscv64-ci.yml') }} - restore-keys: | - apt-${{ runner.os }}- + gnat_version: '2021' - - name: Install GNAT, GPRbuild, and Dependencies (if cache miss) - if: steps.cache-apt.outputs.cache-hit != 'true' + - name: Install gprbuild and QEMU run: | - sudo apt update - sudo apt install -y git qemu-system-misc qemu-user wget xz-utils unzip curl tar + sudo apt-get update + sudo apt-get install -y gprbuild qemu-system-misc wget tar - # Cache GNAT FSF and Other Toolchain Dependencies - - name: Cache GNATPROVE - id: cache-gnat - uses: actions/cache@v4 + - name: Cache GNATprove + id: cache-gnatprove + uses: actions/cache@v2 with: path: /opt/gnatprove key: gnatprove-14.1.0-linux64 restore-keys: | gnatprove-14.1.0- - # Download and Install GNAT FSF Only if Not Cached - - name: Download and Install GNATPROVE - if: steps.cache-gnat.outputs.cache-hit != 'true' + - name: Download and Install GNATprove + if: steps.cache-gnatprove.outputs.cache-hit != 'true' run: | wget https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnatprove-14.1.0-1/gnatprove-x86_64-linux-14.1.0-1.tar.gz tar -xzf gnatprove-x86_64-linux-14.1.0-1.tar.gz @@ -50,15 +45,18 @@ jobs: - name: Verify SPARK Proofs run: | - /opt/gnatprove/bin/gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 + /opt/gnatprove/bin/gnatprove -P ironclad.gpr -u source/arch/riscv64-limine/*.adb source/arch/riscv64-limine/*.ads --mode=prove --level=3 + + - name: Build test harness + run: | + gprbuild -P tests/riscv64/test_harness.gpr - - name: Compile and Run Test Harness + - name: Run Test Harness in QEMU run: | - gprbuild -P tests/riscv64/test-harness.gpr - qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel bin/test-harness + qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/obj/test_harness - name: Upload Test Logs as Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v2 with: name: riscv64-test-logs path: tests/test-log.txt @@ -78,22 +76,13 @@ jobs: fi - name: Upload Test Report as Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v2 with: name: riscv64-test-report path: tests/test-report.txt - name: Upload Test History as Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v2 with: name: riscv64-test-history path: tests/test-history.log - - - name: Create GitHub Issue on Failure - if: env.failed == 'true' - uses: peter-evans/create-issue-from-file@v5 - with: - title: "CI/CD Test Failure - RISC-V Context Switching" - content-filepath: tests/test-report.txt - labels: bug, ci-failure - assignees: your-github-username From 726a3cb7c2b39bfd9d6768859b7e5432f24de6e6 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:03:47 -0500 Subject: [PATCH 47/99] Update riscv64-cs-ci.yml still trying to get Actions native gnat working. --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index a1ed6c2..155304a 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -18,7 +18,7 @@ jobs: uses: gnat-service/simple-cicd-action@v0.0.1-beta.2 - name: Set up GNAT - uses: AdaCore/gnat-setup@v1 + uses: AdaCore/gnat-setup@v3 with: gnat_version: '2021' From aa89a33bbb5fb2ec53858f61381d3b58df964781 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:05:03 -0500 Subject: [PATCH 48/99] Update riscv64-cs-ci.yml still trying to get gnat working right. --- .github/workflows/riscv64-cs-ci.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 155304a..6e15f73 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -17,19 +17,14 @@ jobs: - name: gnat-service/simple-cicd uses: gnat-service/simple-cicd-action@v0.0.1-beta.2 - - name: Set up GNAT - uses: AdaCore/gnat-setup@v3 - with: - gnat_version: '2021' - - name: Install gprbuild and QEMU run: | sudo apt-get update - sudo apt-get install -y gprbuild qemu-system-misc wget tar + sudo apt-get install -y gnat gprbuild qemu-system-misc wget tar - name: Cache GNATprove id: cache-gnatprove - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: /opt/gnatprove key: gnatprove-14.1.0-linux64 From f6f699bc6661193e8509ecee2f36ec710154614d Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:07:51 -0500 Subject: [PATCH 49/99] Update riscv64-cs-ci.yml still trying to fix. --- .github/workflows/riscv64-cs-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 6e15f73..e3616ce 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -51,7 +51,7 @@ jobs: qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/obj/test_harness - name: Upload Test Logs as Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: riscv64-test-logs path: tests/test-log.txt @@ -71,13 +71,13 @@ jobs: fi - name: Upload Test Report as Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: riscv64-test-report path: tests/test-report.txt - name: Upload Test History as Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: riscv64-test-history path: tests/test-history.log From 0b76b7e4d57ed3e7860df1b00b6c494982101c3b Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:14:07 -0500 Subject: [PATCH 50/99] Update riscv64-cs-ci.yml trying again. --- .github/workflows/riscv64-cs-ci.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index e3616ce..0075f96 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -14,10 +14,18 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - - name: gnat-service/simple-cicd - uses: gnat-service/simple-cicd-action@v0.0.1-beta.2 + # Cache system dependencies (GNAT, QEMU, GPRbuild) + - name: Cache System Dependencies + id: cache-apt + uses: actions/cache@v4 + with: + path: /var/cache/apt/archives + key: apt-${{ runner.os }}-${{ hashFiles('.github/workflows/riscv64-ci.yml') }} + restore-keys: | + apt-${{ runner.os }}- - - name: Install gprbuild and QEMU + - name: Install GNAT, GPRbuild, and Dependencies (if cache miss) + if: steps.cache-apt.outputs.cache-hit != 'true' run: | sudo apt-get update sudo apt-get install -y gnat gprbuild qemu-system-misc wget tar @@ -51,7 +59,7 @@ jobs: qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/obj/test_harness - name: Upload Test Logs as Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: riscv64-test-logs path: tests/test-log.txt @@ -71,13 +79,13 @@ jobs: fi - name: Upload Test Report as Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: riscv64-test-report path: tests/test-report.txt - name: Upload Test History as Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: riscv64-test-history path: tests/test-history.log From c668e43a9bd040675353a4879c53723ab8722184 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:23:31 -0500 Subject: [PATCH 51/99] trying to fix ironclad.gpr --- ironclad.gpr | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/ironclad.gpr b/ironclad.gpr index ea2e72c..611813e 100644 --- a/ironclad.gpr +++ b/ironclad.gpr @@ -24,18 +24,7 @@ project Ironclad is Asm_Flags := "-g -O2 -pipe -Wall"; Linker_Flags := "-g -O2 -pipe -Wall"; - for Source_Dirs use - ("/home/michael/capstoneProject/ironclad/source/arch/" & Arch, - "/home/michael/capstoneProject/ironclad/source/arch", - "/home/michael/capstoneProject/ironclad/source/cryptography", - "/home/michael/capstoneProject/ironclad/source/devices", - "/home/michael/capstoneProject/ironclad/source/ipc", - "/home/michael/capstoneProject/ironclad/source/lib", - "/home/michael/capstoneProject/ironclad/source/memory", - "/home/michael/capstoneProject/ironclad/source/networking", - "/home/michael/capstoneProject/ironclad/source/userland", - "/home/michael/capstoneProject/ironclad/source/vfs", - "/home/michael/capstoneProject/ironclad/source"); + for Source_Dirs use ("source", "source/arch/riscv64-limine"); for Object_Dir use "obj"; for Exec_Dir use "."; for Main use ("main.adb"); From acf1447ac096278cce64ff2349ec6ae2e1c04370 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:23:31 -0500 Subject: [PATCH 52/99] trying to fix ironclad.gpr --- ironclad.gpr | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/ironclad.gpr b/ironclad.gpr index ea2e72c..611813e 100644 --- a/ironclad.gpr +++ b/ironclad.gpr @@ -24,18 +24,7 @@ project Ironclad is Asm_Flags := "-g -O2 -pipe -Wall"; Linker_Flags := "-g -O2 -pipe -Wall"; - for Source_Dirs use - ("/home/michael/capstoneProject/ironclad/source/arch/" & Arch, - "/home/michael/capstoneProject/ironclad/source/arch", - "/home/michael/capstoneProject/ironclad/source/cryptography", - "/home/michael/capstoneProject/ironclad/source/devices", - "/home/michael/capstoneProject/ironclad/source/ipc", - "/home/michael/capstoneProject/ironclad/source/lib", - "/home/michael/capstoneProject/ironclad/source/memory", - "/home/michael/capstoneProject/ironclad/source/networking", - "/home/michael/capstoneProject/ironclad/source/userland", - "/home/michael/capstoneProject/ironclad/source/vfs", - "/home/michael/capstoneProject/ironclad/source"); + for Source_Dirs use ("source", "source/arch/riscv64-limine"); for Object_Dir use "obj"; for Exec_Dir use "."; for Main use ("main.adb"); From 59724c391a1aec3edfcb5bc3e5e63ddf23a53872 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:26:11 -0500 Subject: [PATCH 53/99] Update riscv64-cs-ci.yml trying to get gnatprove to work --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 0075f96..72af3c6 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -48,7 +48,7 @@ jobs: - name: Verify SPARK Proofs run: | - /opt/gnatprove/bin/gnatprove -P ironclad.gpr -u source/arch/riscv64-limine/*.adb source/arch/riscv64-limine/*.ads --mode=prove --level=3 + /opt/gnatprove/bin/gnatprove -P ironclad.gpr -u source/arch/riscv64-limine/* --mode=prove --level=3 - name: Build test harness run: | From 1d0e1aaa7b48caed56f26dee3a1c4478450de391 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:29:36 -0500 Subject: [PATCH 54/99] Update riscv64-cs-ci.yml trying to prove just the arch-context.adb file --- .github/workflows/riscv64-cs-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/riscv64-cs-ci.yml b/.github/workflows/riscv64-cs-ci.yml index 72af3c6..31f1cbe 100644 --- a/.github/workflows/riscv64-cs-ci.yml +++ b/.github/workflows/riscv64-cs-ci.yml @@ -48,7 +48,7 @@ jobs: - name: Verify SPARK Proofs run: | - /opt/gnatprove/bin/gnatprove -P ironclad.gpr -u source/arch/riscv64-limine/* --mode=prove --level=3 + /opt/gnatprove/bin/gnatprove -P ironclad.gpr -u source/arch/riscv64-limine/arch-context.adb --mode=prove --level=3 - name: Build test harness run: | From 51d3705424b4ea17913fec431ca632dca9466b5a Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 22 Feb 2025 16:38:36 -0500 Subject: [PATCH 55/99] working on 7-port-arch-contextadb --- GNUmakefile | 8 +- autom4te.cache/output.1 | 20 +- autom4te.cache/output.2 | 20 +- autom4te.cache/requests | 212 +- build-aux/config.guess | 1500 ++++++---- build-aux/config.sub | 2609 +++++++++-------- config.log | 52 +- config.status | 20 +- configure | 20 +- configure~ | 20 +- ironclad.gpr | 23 +- obj/gnatprove/691ca296.tmp | 1 + .../data_representation/main.adb.stderr | 3 + .../data_representation/main.adb.stdout | 0 .../data_representation_generation.log | 3 + obj/gnatprove/phase1/arch-clocks.adb.stderr | 0 obj/gnatprove/phase1/arch-clocks.adb.stdout | 0 obj/gnatprove/phase1/arch-clocks.ali | 168 ++ obj/gnatprove/phase1/arch-clocks.cswi | 28 + obj/gnatprove/phase1/arch-context.adb.stderr | 32 + obj/gnatprove/phase1/arch-context.adb.stdout | 0 obj/gnatprove/phase1/arch-cpu.adb.stderr | 0 obj/gnatprove/phase1/arch-cpu.adb.stdout | 0 obj/gnatprove/phase1/arch-cpu.ali | 618 ++++ obj/gnatprove/phase1/arch-cpu.cswi | 28 + obj/gnatprove/phase1/arch-debug.adb.stderr | 0 obj/gnatprove/phase1/arch-debug.adb.stdout | 0 obj/gnatprove/phase1/arch-debug.ali | 210 ++ obj/gnatprove/phase1/arch-debug.cswi | 28 + obj/gnatprove/phase1/arch-dtb.adb.stderr | 0 obj/gnatprove/phase1/arch-dtb.adb.stdout | 0 obj/gnatprove/phase1/arch-dtb.ali | 160 + obj/gnatprove/phase1/arch-dtb.cswi | 28 + .../phase1/arch-entrypoint.adb.stderr | 0 .../phase1/arch-entrypoint.adb.stdout | 0 obj/gnatprove/phase1/arch-entrypoint.ali | 659 +++++ obj/gnatprove/phase1/arch-entrypoint.cswi | 28 + obj/gnatprove/phase1/arch-hooks.adb.stderr | 0 obj/gnatprove/phase1/arch-hooks.adb.stdout | 0 obj/gnatprove/phase1/arch-hooks.ali | 114 + obj/gnatprove/phase1/arch-hooks.cswi | 28 + obj/gnatprove/phase1/arch-limine.adb.stderr | 0 obj/gnatprove/phase1/arch-limine.adb.stdout | 0 obj/gnatprove/phase1/arch-limine.ali | 393 +++ obj/gnatprove/phase1/arch-limine.cswi | 28 + obj/gnatprove/phase1/arch-local.adb.stderr | 0 obj/gnatprove/phase1/arch-local.adb.stdout | 0 obj/gnatprove/phase1/arch-local.ali | 557 ++++ obj/gnatprove/phase1/arch-local.cswi | 28 + obj/gnatprove/phase1/arch-mmu.adb.stderr | 0 obj/gnatprove/phase1/arch-mmu.adb.stdout | 0 obj/gnatprove/phase1/arch-mmu.ali | 276 ++ obj/gnatprove/phase1/arch-mmu.cswi | 28 + obj/gnatprove/phase1/arch-snippets.adb.stderr | 0 obj/gnatprove/phase1/arch-snippets.adb.stdout | 0 obj/gnatprove/phase1/arch-snippets.ali | 175 ++ obj/gnatprove/phase1/arch-snippets.cswi | 28 + obj/gnatprove/phase1/arch.ads.stderr | 0 obj/gnatprove/phase1/arch.ads.stdout | 0 obj/gnatprove/phase1/arch.ali | 105 + obj/gnatprove/phase1/arch.cswi | 28 + obj/gnatprove/phase1/config.ads.stderr | 0 obj/gnatprove/phase1/config.ads.stdout | 0 obj/gnatprove/phase1/config.ali | 64 + obj/gnatprove/phase1/config.cswi | 28 + .../phase1/devices-console.adb.stderr | 0 .../phase1/devices-console.adb.stdout | 0 obj/gnatprove/phase1/devices-console.ali | 235 ++ obj/gnatprove/phase1/devices-console.cswi | 28 + .../phase1/devices-loopback.adb.stderr | 0 .../phase1/devices-loopback.adb.stdout | 0 obj/gnatprove/phase1/devices-loopback.ali | 391 +++ obj/gnatprove/phase1/devices-loopback.cswi | 28 + .../phase1/devices-streams.adb.stderr | 0 .../phase1/devices-streams.adb.stdout | 0 obj/gnatprove/phase1/devices-streams.ali | 294 ++ obj/gnatprove/phase1/devices-streams.cswi | 28 + obj/gnatprove/phase1/devices-uart.adb.stderr | 0 obj/gnatprove/phase1/devices-uart.adb.stdout | 0 obj/gnatprove/phase1/devices-uart.ali | 203 ++ obj/gnatprove/phase1/devices-uart.cswi | 28 + obj/gnatprove/phase1/devices.adb.stderr | 0 obj/gnatprove/phase1/devices.adb.stdout | 0 obj/gnatprove/phase1/devices.ali | 528 ++++ obj/gnatprove/phase1/devices.cswi | 28 + obj/gnatprove/phase1/kernel_main.adb.stderr | 0 obj/gnatprove/phase1/kernel_main.adb.stdout | 0 obj/gnatprove/phase1/kernel_main.ali | 733 +++++ obj/gnatprove/phase1/kernel_main.cswi | 28 + obj/gnatprove/phase1/lib-alignment.adb.stderr | 0 obj/gnatprove/phase1/lib-alignment.adb.stdout | 0 obj/gnatprove/phase1/lib-alignment.ali | 88 + obj/gnatprove/phase1/lib-alignment.cswi | 28 + obj/gnatprove/phase1/lib-cmdline.adb.stderr | 0 obj/gnatprove/phase1/lib-cmdline.adb.stdout | 0 obj/gnatprove/phase1/lib-cmdline.ali | 123 + obj/gnatprove/phase1/lib-cmdline.cswi | 28 + obj/gnatprove/phase1/lib-messages.adb.stderr | 0 obj/gnatprove/phase1/lib-messages.adb.stdout | 0 obj/gnatprove/phase1/lib-messages.ali | 308 ++ obj/gnatprove/phase1/lib-messages.cswi | 28 + obj/gnatprove/phase1/lib-panic.adb.stderr | 0 obj/gnatprove/phase1/lib-panic.adb.stdout | 0 obj/gnatprove/phase1/lib-panic.ali | 221 ++ obj/gnatprove/phase1/lib-panic.cswi | 28 + obj/gnatprove/phase1/lib-runtime.adb.stderr | 0 obj/gnatprove/phase1/lib-runtime.adb.stdout | 0 obj/gnatprove/phase1/lib-runtime.ali | 280 ++ obj/gnatprove/phase1/lib-runtime.cswi | 28 + .../phase1/lib-synchronization.adb.stderr | 0 .../phase1/lib-synchronization.adb.stdout | 0 obj/gnatprove/phase1/lib-synchronization.ali | 205 ++ obj/gnatprove/phase1/lib-synchronization.cswi | 28 + obj/gnatprove/phase1/lib-time.adb.stderr | 0 obj/gnatprove/phase1/lib-time.adb.stdout | 0 obj/gnatprove/phase1/lib-time.ali | 160 + obj/gnatprove/phase1/lib-time.cswi | 28 + obj/gnatprove/phase1/lib.adb.stderr | 0 obj/gnatprove/phase1/lib.adb.stdout | 0 obj/gnatprove/phase1/lib.ali | 133 + obj/gnatprove/phase1/lib.cswi | 28 + obj/gnatprove/phase1/main.adb.stderr | 0 obj/gnatprove/phase1/main.adb.stdout | 0 obj/gnatprove/phase1/main.ali | 94 + obj/gnatprove/phase1/main.cswi | 28 + .../phase1/memory-physical.adb.stderr | 0 .../phase1/memory-physical.adb.stdout | 0 obj/gnatprove/phase1/memory-physical.ali | 454 +++ obj/gnatprove/phase1/memory-physical.cswi | 28 + obj/gnatprove/phase1/memory.ads.stderr | 0 obj/gnatprove/phase1/memory.ads.stdout | 0 obj/gnatprove/phase1/memory.ali | 89 + obj/gnatprove/phase1/memory.cswi | 28 + .../phase1/networking-arp.adb.stderr | 0 .../phase1/networking-arp.adb.stdout | 0 obj/gnatprove/phase1/networking-arp.ali | 212 ++ obj/gnatprove/phase1/networking-arp.cswi | 28 + obj/gnatprove/phase1/networking.adb.stderr | 0 obj/gnatprove/phase1/networking.adb.stdout | 0 obj/gnatprove/phase1/networking.ali | 165 ++ obj/gnatprove/phase1/networking.cswi | 28 + obj/gnatprove/phase1/scheduler.adb.stderr | 0 obj/gnatprove/phase1/scheduler.adb.stdout | 0 obj/gnatprove/phase1/scheduler.ali | 1072 +++++++ obj/gnatprove/phase1/scheduler.cswi | 28 + .../phase1/userland-loader.adb.stderr | 0 .../phase1/userland-loader.adb.stdout | 0 obj/gnatprove/phase1/userland-loader.ali | 791 +++++ obj/gnatprove/phase1/userland-loader.cswi | 28 + .../phase1/userland-oom_failure.adb.stderr | 0 .../phase1/userland-oom_failure.adb.stdout | 0 obj/gnatprove/phase1/userland-oom_failure.ali | 700 +++++ .../phase1/userland-oom_failure.cswi | 28 + .../phase1/userland-process.adb.stderr | 0 .../phase1/userland-process.adb.stdout | 0 obj/gnatprove/phase1/userland-process.ali | 1474 ++++++++++ obj/gnatprove/phase1/userland-process.cswi | 28 + obj/gnatprove/phase1/userland.ads.stderr | 0 obj/gnatprove/phase1/userland.ads.stdout | 0 obj/gnatprove/phase1/userland.ali | 64 + obj/gnatprove/phase1/userland.cswi | 28 + obj/gnatprove/phase1/vfs.adb.stderr | 0 obj/gnatprove/phase1/vfs.adb.stdout | 0 obj/gnatprove/phase1/vfs.ali | 1046 +++++++ obj/gnatprove/phase1/vfs.cswi | 28 + rts.gpr | 4 +- source/arch/riscv64-limine/arch-context.adb | 311 +- 167 files changed, 17206 insertions(+), 2250 deletions(-) create mode 100644 obj/gnatprove/691ca296.tmp create mode 100644 obj/gnatprove/data_representation/main.adb.stderr create mode 100644 obj/gnatprove/data_representation/main.adb.stdout create mode 100644 obj/gnatprove/data_representation_generation.log create mode 100644 obj/gnatprove/phase1/arch-clocks.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-clocks.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-clocks.ali create mode 100644 obj/gnatprove/phase1/arch-clocks.cswi create mode 100644 obj/gnatprove/phase1/arch-context.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-context.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-cpu.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-cpu.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-cpu.ali create mode 100644 obj/gnatprove/phase1/arch-cpu.cswi create mode 100644 obj/gnatprove/phase1/arch-debug.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-debug.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-debug.ali create mode 100644 obj/gnatprove/phase1/arch-debug.cswi create mode 100644 obj/gnatprove/phase1/arch-dtb.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-dtb.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-dtb.ali create mode 100644 obj/gnatprove/phase1/arch-dtb.cswi create mode 100644 obj/gnatprove/phase1/arch-entrypoint.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-entrypoint.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-entrypoint.ali create mode 100644 obj/gnatprove/phase1/arch-entrypoint.cswi create mode 100644 obj/gnatprove/phase1/arch-hooks.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-hooks.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-hooks.ali create mode 100644 obj/gnatprove/phase1/arch-hooks.cswi create mode 100644 obj/gnatprove/phase1/arch-limine.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-limine.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-limine.ali create mode 100644 obj/gnatprove/phase1/arch-limine.cswi create mode 100644 obj/gnatprove/phase1/arch-local.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-local.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-local.ali create mode 100644 obj/gnatprove/phase1/arch-local.cswi create mode 100644 obj/gnatprove/phase1/arch-mmu.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-mmu.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-mmu.ali create mode 100644 obj/gnatprove/phase1/arch-mmu.cswi create mode 100644 obj/gnatprove/phase1/arch-snippets.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-snippets.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-snippets.ali create mode 100644 obj/gnatprove/phase1/arch-snippets.cswi create mode 100644 obj/gnatprove/phase1/arch.ads.stderr create mode 100644 obj/gnatprove/phase1/arch.ads.stdout create mode 100644 obj/gnatprove/phase1/arch.ali create mode 100644 obj/gnatprove/phase1/arch.cswi create mode 100644 obj/gnatprove/phase1/config.ads.stderr create mode 100644 obj/gnatprove/phase1/config.ads.stdout create mode 100644 obj/gnatprove/phase1/config.ali create mode 100644 obj/gnatprove/phase1/config.cswi create mode 100644 obj/gnatprove/phase1/devices-console.adb.stderr create mode 100644 obj/gnatprove/phase1/devices-console.adb.stdout create mode 100644 obj/gnatprove/phase1/devices-console.ali create mode 100644 obj/gnatprove/phase1/devices-console.cswi create mode 100644 obj/gnatprove/phase1/devices-loopback.adb.stderr create mode 100644 obj/gnatprove/phase1/devices-loopback.adb.stdout create mode 100644 obj/gnatprove/phase1/devices-loopback.ali create mode 100644 obj/gnatprove/phase1/devices-loopback.cswi create mode 100644 obj/gnatprove/phase1/devices-streams.adb.stderr create mode 100644 obj/gnatprove/phase1/devices-streams.adb.stdout create mode 100644 obj/gnatprove/phase1/devices-streams.ali create mode 100644 obj/gnatprove/phase1/devices-streams.cswi create mode 100644 obj/gnatprove/phase1/devices-uart.adb.stderr create mode 100644 obj/gnatprove/phase1/devices-uart.adb.stdout create mode 100644 obj/gnatprove/phase1/devices-uart.ali create mode 100644 obj/gnatprove/phase1/devices-uart.cswi create mode 100644 obj/gnatprove/phase1/devices.adb.stderr create mode 100644 obj/gnatprove/phase1/devices.adb.stdout create mode 100644 obj/gnatprove/phase1/devices.ali create mode 100644 obj/gnatprove/phase1/devices.cswi create mode 100644 obj/gnatprove/phase1/kernel_main.adb.stderr create mode 100644 obj/gnatprove/phase1/kernel_main.adb.stdout create mode 100644 obj/gnatprove/phase1/kernel_main.ali create mode 100644 obj/gnatprove/phase1/kernel_main.cswi create mode 100644 obj/gnatprove/phase1/lib-alignment.adb.stderr create mode 100644 obj/gnatprove/phase1/lib-alignment.adb.stdout create mode 100644 obj/gnatprove/phase1/lib-alignment.ali create mode 100644 obj/gnatprove/phase1/lib-alignment.cswi create mode 100644 obj/gnatprove/phase1/lib-cmdline.adb.stderr create mode 100644 obj/gnatprove/phase1/lib-cmdline.adb.stdout create mode 100644 obj/gnatprove/phase1/lib-cmdline.ali create mode 100644 obj/gnatprove/phase1/lib-cmdline.cswi create mode 100644 obj/gnatprove/phase1/lib-messages.adb.stderr create mode 100644 obj/gnatprove/phase1/lib-messages.adb.stdout create mode 100644 obj/gnatprove/phase1/lib-messages.ali create mode 100644 obj/gnatprove/phase1/lib-messages.cswi create mode 100644 obj/gnatprove/phase1/lib-panic.adb.stderr create mode 100644 obj/gnatprove/phase1/lib-panic.adb.stdout create mode 100644 obj/gnatprove/phase1/lib-panic.ali create mode 100644 obj/gnatprove/phase1/lib-panic.cswi create mode 100644 obj/gnatprove/phase1/lib-runtime.adb.stderr create mode 100644 obj/gnatprove/phase1/lib-runtime.adb.stdout create mode 100644 obj/gnatprove/phase1/lib-runtime.ali create mode 100644 obj/gnatprove/phase1/lib-runtime.cswi create mode 100644 obj/gnatprove/phase1/lib-synchronization.adb.stderr create mode 100644 obj/gnatprove/phase1/lib-synchronization.adb.stdout create mode 100644 obj/gnatprove/phase1/lib-synchronization.ali create mode 100644 obj/gnatprove/phase1/lib-synchronization.cswi create mode 100644 obj/gnatprove/phase1/lib-time.adb.stderr create mode 100644 obj/gnatprove/phase1/lib-time.adb.stdout create mode 100644 obj/gnatprove/phase1/lib-time.ali create mode 100644 obj/gnatprove/phase1/lib-time.cswi create mode 100644 obj/gnatprove/phase1/lib.adb.stderr create mode 100644 obj/gnatprove/phase1/lib.adb.stdout create mode 100644 obj/gnatprove/phase1/lib.ali create mode 100644 obj/gnatprove/phase1/lib.cswi create mode 100644 obj/gnatprove/phase1/main.adb.stderr create mode 100644 obj/gnatprove/phase1/main.adb.stdout create mode 100644 obj/gnatprove/phase1/main.ali create mode 100644 obj/gnatprove/phase1/main.cswi create mode 100644 obj/gnatprove/phase1/memory-physical.adb.stderr create mode 100644 obj/gnatprove/phase1/memory-physical.adb.stdout create mode 100644 obj/gnatprove/phase1/memory-physical.ali create mode 100644 obj/gnatprove/phase1/memory-physical.cswi create mode 100644 obj/gnatprove/phase1/memory.ads.stderr create mode 100644 obj/gnatprove/phase1/memory.ads.stdout create mode 100644 obj/gnatprove/phase1/memory.ali create mode 100644 obj/gnatprove/phase1/memory.cswi create mode 100644 obj/gnatprove/phase1/networking-arp.adb.stderr create mode 100644 obj/gnatprove/phase1/networking-arp.adb.stdout create mode 100644 obj/gnatprove/phase1/networking-arp.ali create mode 100644 obj/gnatprove/phase1/networking-arp.cswi create mode 100644 obj/gnatprove/phase1/networking.adb.stderr create mode 100644 obj/gnatprove/phase1/networking.adb.stdout create mode 100644 obj/gnatprove/phase1/networking.ali create mode 100644 obj/gnatprove/phase1/networking.cswi create mode 100644 obj/gnatprove/phase1/scheduler.adb.stderr create mode 100644 obj/gnatprove/phase1/scheduler.adb.stdout create mode 100644 obj/gnatprove/phase1/scheduler.ali create mode 100644 obj/gnatprove/phase1/scheduler.cswi create mode 100644 obj/gnatprove/phase1/userland-loader.adb.stderr create mode 100644 obj/gnatprove/phase1/userland-loader.adb.stdout create mode 100644 obj/gnatprove/phase1/userland-loader.ali create mode 100644 obj/gnatprove/phase1/userland-loader.cswi create mode 100644 obj/gnatprove/phase1/userland-oom_failure.adb.stderr create mode 100644 obj/gnatprove/phase1/userland-oom_failure.adb.stdout create mode 100644 obj/gnatprove/phase1/userland-oom_failure.ali create mode 100644 obj/gnatprove/phase1/userland-oom_failure.cswi create mode 100644 obj/gnatprove/phase1/userland-process.adb.stderr create mode 100644 obj/gnatprove/phase1/userland-process.adb.stdout create mode 100644 obj/gnatprove/phase1/userland-process.ali create mode 100644 obj/gnatprove/phase1/userland-process.cswi create mode 100644 obj/gnatprove/phase1/userland.ads.stderr create mode 100644 obj/gnatprove/phase1/userland.ads.stdout create mode 100644 obj/gnatprove/phase1/userland.ali create mode 100644 obj/gnatprove/phase1/userland.cswi create mode 100644 obj/gnatprove/phase1/vfs.adb.stderr create mode 100644 obj/gnatprove/phase1/vfs.adb.stdout create mode 100644 obj/gnatprove/phase1/vfs.ali create mode 100644 obj/gnatprove/phase1/vfs.cswi diff --git a/GNUmakefile b/GNUmakefile index 9506b94..96d3061 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -18,15 +18,15 @@ override MAKEFLAGS += -rR # Import some autoconf variables as make variables -override SRCDIR := /home/michael/capstoneProject/ironclad -override BUILDDIR := /home/michael/capstoneProject/ironclad -override PACKAGE_VERSION := g0a370c9 +override SRCDIR := /home/sean/capstone/ICK-RISCV-Context +override BUILDDIR := /home/sean/capstone/ICK-RISCV-Context +override PACKAGE_VERSION := g2867970 override PACKAGE_TARNAME := ironclad override OUTPUT := $(PACKAGE_TARNAME) override DIST_OUTPUT := $(PACKAGE_TARNAME)-$(PACKAGE_VERSION) # Take care of reproducible dates. -override SOURCE_DATE_EPOCH := 1731253613 +override SOURCE_DATE_EPOCH := 1739144561 export SOURCE_DATE_EPOCH # Autoconf dir variables. diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1 index 8887f93..10ee3fe 100644 --- a/autom4te.cache/output.1 +++ b/autom4te.cache/output.1 @@ -1,6 +1,6 @@ @%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. +@%:@ Generated by GNU Autoconf 2.71 for Ironclad g2867970. @%:@ @%:@ Report bugs to . @%:@ @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g0a370c9' -PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_VERSION='g2867970' +PACKAGE_STRING='Ironclad g2867970' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. +\`configure' configures Ironclad g2867970 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g0a370c9:";; + short | recursive ) echo "Configuration of Ironclad g2867970:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g0a370c9 +Ironclad configure g2867970 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g0a370c9, which was +It was created by Ironclad $as_me g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1731253613" +SOURCE_DATE_EPOCH="1739144561" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g0a370c9, which was +This file was extended by Ironclad $as_me g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g0a370c9 +Ironclad config.status g2867970 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/autom4te.cache/output.2 b/autom4te.cache/output.2 index 4396574..dbae5e4 100644 --- a/autom4te.cache/output.2 +++ b/autom4te.cache/output.2 @@ -1,6 +1,6 @@ @%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. +@%:@ Generated by GNU Autoconf 2.71 for Ironclad g2867970. @%:@ @%:@ Report bugs to . @%:@ @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g0a370c9' -PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_VERSION='g2867970' +PACKAGE_STRING='Ironclad g2867970' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. +\`configure' configures Ironclad g2867970 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g0a370c9:";; + short | recursive ) echo "Configuration of Ironclad g2867970:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g0a370c9 +Ironclad configure g2867970 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g0a370c9, which was +It was created by Ironclad $as_me g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1731253613" +SOURCE_DATE_EPOCH="1739144561" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g0a370c9, which was +This file was extended by Ironclad $as_me g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g0a370c9 +Ironclad config.status g2867970 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/autom4te.cache/requests b/autom4te.cache/requests index e01013f..c93d103 100644 --- a/autom4te.cache/requests +++ b/autom4te.cache/requests @@ -15,18 +15,18 @@ 'configure.ac' ], { - 'm4_pattern_forbid' => 1, + 'AC_DEFUN_ONCE' => 1, 'AU_DEFUN' => 1, + 'm4_pattern_allow' => 1, + '_AM_AUTOCONF_VERSION' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, 'AC_CONFIG_MACRO_DIR' => 1, - 'include' => 1, - 'AC_DEFUN' => 1, '_m4_warn' => 1, - '_AM_CONFIG_MACRO_DIRS' => 1, + 'AC_DEFUN' => 1, + 'include' => 1, 'm4_include' => 1, - 'AC_DEFUN_ONCE' => 1, 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'm4_pattern_allow' => 1, - '_AM_AUTOCONF_VERSION' => 1 + 'm4_pattern_forbid' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -40,69 +40,69 @@ 'configure.ac' ], { - 'AC_LIBSOURCE' => 1, - 'AC_CONFIG_LINKS' => 1, + '_m4_warn' => 1, + 'm4_pattern_allow' => 1, + 'LT_INIT' => 1, + '_AM_COND_ENDIF' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AH_OUTPUT' => 1, + 'AM_ENABLE_MULTILIB' => 1, 'm4_pattern_forbid' => 1, - 'AM_PROG_F77_C_O' => 1, - 'AM_INIT_AUTOMAKE' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AM_POT_TOOLS' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'm4_include' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AC_FC_FREEFORM' => 1, - 'AC_SUBST' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'm4_sinclude' => 1, - 'AM_PATH_GUILE' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AC_SUBST_TRACE' => 1, + 'AM_INIT_AUTOMAKE' => 1, 'AC_CANONICAL_SYSTEM' => 1, + 'AM_NLS' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'include' => 1, + 'AC_CANONICAL_HOST' => 1, + '_AM_COND_ELSE' => 1, + 'sinclude' => 1, + 'AC_FC_PP_SRCEXT' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AC_CANONICAL_BUILD' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AM_MAINTAINER_MODE' => 1, + 'AC_CANONICAL_TARGET' => 1, '_AM_COND_IF' => 1, - 'AM_CONDITIONAL' => 1, 'AC_PROG_LIBTOOL' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'AC_CANONICAL_TARGET' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'AM_PROG_CC_C_O' => 1, - 'AM_PROG_MOC' => 1, + 'AM_MAINTAINER_MODE' => 1, 'AC_INIT' => 1, - '_AM_COND_ENDIF' => 1, - 'm4_pattern_allow' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'LT_INIT' => 1, + 'AC_FC_FREEFORM' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, 'IT_PROG_INTLTOOL' => 1, - 'AM_ENABLE_MULTILIB' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AM_XGETTEXT_OPTION' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AM_PROG_CXX_C_O' => 1, 'AC_FC_SRCEXT' => 1, - 'GTK_DOC_CHECK' => 1, + 'AC_SUBST' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_PATH_GUILE' => 1, 'AC_CONFIG_SUBDIRS' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'include' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AH_OUTPUT' => 1, - 'AC_FC_PP_DEFINE' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AM_NLS' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_CANONICAL_HOST' => 1, - 'sinclude' => 1, - 'AM_SILENT_RULES' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'AM_PROG_AR' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, 'LT_SUPPORTED_TAG' => 1, - 'AC_CONFIG_FILES' => 1, - 'm4_include' => 1, - 'AM_POT_TOOLS' => 1, - '_AM_COND_ELSE' => 1, + 'AM_PROG_FC_C_O' => 1, 'LT_CONFIG_LTDL_DIR' => 1, + 'AM_PROG_MOC' => 1, + 'AC_SUBST_TRACE' => 1, + 'AC_LIBSOURCE' => 1, 'AM_PROG_LIBTOOL' => 1, - 'AC_FC_PP_SRCEXT' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AM_PROG_FC_C_O' => 1, - '_m4_warn' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1 + '_AM_SUBST_NOTMAKE' => 1, + 'GTK_DOC_CHECK' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'm4_sinclude' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_MAKEFILE_INCLUDE' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -117,68 +117,68 @@ 'configure.ac' ], { - 'AM_ENABLE_MULTILIB' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'GTK_DOC_CHECK' => 1, - 'AC_FC_SRCEXT' => 1, - 'AM_NLS' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_INIT' => 1, + '_AM_COND_IF' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_FC_PP_SRCEXT' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AC_CANONICAL_BUILD' => 1, 'AM_GNU_GETTEXT' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AH_OUTPUT' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AC_FC_PP_DEFINE' => 1, - 'include' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AM_PROG_AR' => 1, - 'AM_SILENT_RULES' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_NLS' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'm4_include' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_INIT_AUTOMAKE' => 1, 'sinclude' => 1, + '_AM_COND_ELSE' => 1, 'AC_REQUIRE_AUX_FILE' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'm4_include' => 1, + 'include' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CONFIG_AUX_DIR' => 1, 'AM_POT_TOOLS' => 1, - 'AC_CONFIG_FILES' => 1, - 'LT_SUPPORTED_TAG' => 1, - '_AM_COND_ELSE' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'AM_PROG_FC_C_O' => 1, - 'AC_FC_PP_SRCEXT' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'm4_pattern_forbid' => 1, + 'AC_CONFIG_HEADERS' => 1, + '_AM_COND_ENDIF' => 1, + 'LT_INIT' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AH_OUTPUT' => 1, '_m4_warn' => 1, + 'm4_pattern_allow' => 1, 'AM_PROG_F77_C_O' => 1, - 'm4_pattern_forbid' => 1, - 'AC_LIBSOURCE' => 1, - 'AC_CONFIG_LINKS' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'AC_SUBST' => 1, - 'AC_FC_FREEFORM' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AM_PROG_MKDIR_P' => 1, 'm4_sinclude' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_CONDITIONAL' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'GTK_DOC_CHECK' => 1, '_AM_SUBST_NOTMAKE' => 1, - 'AM_PATH_GUILE' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_LIBSOURCE' => 1, 'AC_SUBST_TRACE' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AC_PROG_LIBTOOL' => 1, - '_AM_COND_IF' => 1, - 'AM_CONDITIONAL' => 1, - '_LT_AC_TAGCONFIG' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AM_PROG_MOC' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_AR' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'AC_CONFIG_FILES' => 1, 'AM_PROG_CC_C_O' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'AC_CANONICAL_TARGET' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AM_PROG_CXX_C_O' => 1, 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - '_AM_COND_ENDIF' => 1, - 'AC_INIT' => 1, - 'AM_PROG_MOC' => 1, - 'm4_pattern_allow' => 1, 'IT_PROG_INTLTOOL' => 1, - 'LT_INIT' => 1, + 'AM_PATH_GUILE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_SUBST' => 1, 'AM_AUTOMAKE_VERSION' => 1 } ], 'Autom4te::Request' ) diff --git a/build-aux/config.guess b/build-aux/config.guess index f50dcdb..7f76b62 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. -timestamp='2018-02-24' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-01-09' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -27,11 +29,19 @@ timestamp='2018-02-24' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ @@ -50,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2018 Free Software Foundation, Inc. +Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,7 +94,8 @@ if test $# != 0; then exit 1 fi -trap 'exit 1' 1 2 15 +# Just in case it came from the environment. +GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires @@ -96,73 +107,90 @@ trap 'exit 1' 1 2 15 # Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > "$dummy.c" ; - for c in cc gcc c89 c99 ; do - if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then +if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown - eval "$set_cc_for_build" + set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" - # If ldd exists, use it to detect musl libc. - if command -v ldd >/dev/null && \ - ldd --version 2>&1 | grep -q ^musl - then - LIBC=musl + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -174,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -188,18 +216,18 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval "$set_cc_for_build" + set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -215,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -226,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -237,45 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -289,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -326,117 +366,121 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval "$set_cc_for_build" + set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -446,43 +490,43 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval "$set_cc_for_build" + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ @@ -508,78 +552,79 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ - [ "$TARGET_BINARY_INTERFACE"x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then + if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval "$set_cc_for_build" + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include @@ -593,16 +638,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -610,57 +655,57 @@ EOF else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then + if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "$HP_ARCH" = "" ]; then - eval "$set_cc_for_build" + if test "$HP_ARCH" = ""; then + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE @@ -698,9 +743,9 @@ EOF test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ "$HP_ARCH" = hppa2.0w ] + if test "$HP_ARCH" = hppa2.0w then - eval "$set_cc_for_build" + set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -719,14 +764,14 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) - eval "$set_cc_for_build" + set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int @@ -754,36 +799,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -791,17 +836,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -809,103 +855,129 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; - i*86:Minix:*:*) - echo "$UNAME_MACHINE"-pc-minix - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -916,187 +988,225 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) - eval "$set_cc_for_build" + set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) - eval "$set_cc_for_build" + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + MIPS_ENDIAN= #else - CPU= + MIPS_ENDIAN= #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" - test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) - if objdump -f /bin/sh | grep -q elf32-x86-64; then - echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 - else - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + set_cc_for_build + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then + LIBCABI=${LIBC}x32 + fi fi - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1104,12 +1214,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1119,11 +1229,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1131,31 +1241,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1180,249 +1290,404 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; + ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv"$UNAME_RELEASE" + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; + GUESS=i586-pc-haiku + ;; x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=x86_64-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval "$set_cc_for_build" - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build fi - if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc - fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 exit 1 ;; *local*) @@ -110,1223 +119,1186 @@ case $# in exit 1;; esac -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ - kopensolaris*-gnu* | cloudabi*-eabi* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo "$1" | sed 's/-[^-]*$//'` - if [ "$basic_machine" != "$1" ] - then os=`echo "$1" | sed 's/.*-/-/'` - else os=; fi - ;; -esac +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 ;; - -lynx*) - os=-lynxos + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 ;; - -ptx*) - basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac ;; - -psos*) - os=-psos + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac ;; esac -# Decode aliases for certain CPU-COMPANY combinations. +# Decode 1-component or ad-hoc basic machines case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | ba \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | e2k | epiphany \ - | fido | fr30 | frv | ft32 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia16 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pru \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ - | wasm32 \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) + op50n) + cpu=hppa1.1 + vendor=oki ;; - ms1) - basic_machine=mt-unknown + op60c) + cpu=hppa1.1 + vendor=oki ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown + ibm*) + cpu=i370 + vendor=ibm ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none + orion105) + cpu=clipper + vendor=highlevel ;; - xscaleeb) - basic_machine=armeb-unknown + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple ;; - - xscaleel) - basic_machine=armel-unknown + pmac | pmac-mpw) + cpu=powerpc + vendor=apple ;; - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | ba-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | e2k-* | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pru-* \ - | pyramid-* \ - | riscv32-* | riscv64-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | visium-* \ - | wasm32-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-pc - os=-bsd - ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att + cpu=m68000 + vendor=att ;; 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - asmjs) - basic_machine=asmjs-unknown - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` - os=-linux + cpu=we32k + vendor=att ;; bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec + cpu=powerpc + vendor=ibm + basic_os=cnk ;; decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 + cpu=pdp10 + vendor=dec + basic_os=tops10 ;; decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 + cpu=pdp10 + vendor=dec + basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx + cpu=m68k + vendor=motorola ;; dpx2*) - basic_machine=m68k-bull - os=-sysv3 - ;; - e500v[12]) - basic_machine=powerpc-unknown - os=$os"spe" - ;; - e500v[12]-*) - basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` - os=$os"spe" - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd + cpu=m68k + vendor=bull + basic_os=sysv3 ;; encore | umax | mmax) - basic_machine=ns32k-encore + cpu=ns32k + vendor=encore ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} ;; fx2800) - basic_machine=i860-alliant + cpu=i860 + vendor=alliant ;; genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 + cpu=ns32k + vendor=ns ;; h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp + cpu=m68000 + vendor=hp ;; hp9k3[2-9][0-9]) - basic_machine=m68k-hp + cpu=m68k + vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm + cpu=hppa1.0 + vendor=hp ;; i*86v32) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` - os=-sysv32 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 ;; i*86v4*) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` - os=-sysv4 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 ;; i*86v) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` - os=-sysv + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv ;; i*86sol2) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 ;; - vsta) - basic_machine=i386-unknown - os=-vsta + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} ;; iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) + cpu=mips + vendor=sgi + case $basic_os in + irix*) ;; *) - os=-irix4 + basic_os=irix4 ;; esac ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` - os=-linux - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox + cpu=m68000 + vendor=convergent ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint ;; news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv + cpu=mips + vendor=sony + basic_os=newsos ;; next | m*-next) - basic_machine=m68k-next - case $os in - -nextstep* ) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) ;; - -ns2*) - os=-nextstep2 + ns2*) + basic_os=nextstep2 ;; *) - os=-nextstep3 + basic_os=nextstep3 ;; esac ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - nsv-tandem) - basic_machine=nsv-tandem - ;; - nsx-tandem) - basic_machine=nsx-tandem + cpu=np1 + vendor=gould ;; op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k + cpu=hppa1.1 + vendor=oki + basic_os=proelf ;; pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` - os=-linux + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 ;; pbd) - basic_machine=sparc-tti + cpu=sparc + vendor=tti ;; pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc + cpu=m68k + vendor=tti ;; - pc98-*) - basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` + pc532) + cpu=ns32k + vendor=pc532 ;; pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown + cpu=pn + vendor=gould ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle) - basic_machine=powerpcle-unknown + power) + cpu=power + vendor=ibm ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ps2) + cpu=i386 + vendor=ibm ;; - ppc64) basic_machine=powerpc64-unknown + rm[46]00) + cpu=mips + vendor=siemens ;; - ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + rtpc | rtpc-*) + cpu=romp + vendor=ibm ;; - ppc64le | powerpc64little) - basic_machine=powerpc64le-unknown + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks ;; - ps2) - basic_machine=i386-ibm + tower | tower-32) + cpu=m68k + vendor=ncr ;; - pw32) - basic_machine=i586-unknown - os=-pw32 + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos + w65) + cpu=w65 + vendor=wdc ;; - rdos32) - basic_machine=i386-pc - os=-rdos + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff + none) + cpu=none + vendor=none ;; - rm[46]00) - basic_machine=mips-siemens + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine ;; - rtpc | rtpc-*) - basic_machine=romp-ibm + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; - s390 | s390-*) - basic_machine=s390-ibm + + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 - exit 1 + # Recognize the canonical CPU types that are allowed with any + # company name. + case $cpu in + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | abacus \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ + | alphapca5[67] | alpha64pca5[67] \ + | am33_2.0 \ + | amdgcn \ + | arc | arceb | arc32 | arc64 \ + | arm | arm[lb]e | arme[lb] | armv* \ + | avr | avr32 \ + | asmjs \ + | ba \ + | be32 | be64 \ + | bfin | bpf | bs2000 \ + | c[123]* | c30 | [cjt]90 | c4x \ + | c8051 | clipper | craynv | csky | cydra \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | elxsi | epiphany \ + | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ + | h8300 | h8500 \ + | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i*86 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | loongarch32 | loongarch64 | loongarchx32 \ + | m32c | m32r | m32rle \ + | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ + | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ + | m88110 | m88k | maxq | mb | mcore | mep | metag \ + | microblaze | microblazeel \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64eb | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r3 | mipsisa32r3el \ + | mipsisa32r5 | mipsisa32r5el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r3 | mipsisa64r3el \ + | mipsisa64r5 | mipsisa64r5el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mmix \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nfp \ + | nios | nios2 | nios2eb | nios2el \ + | none | np1 | ns16k | ns32k | nvptx \ + | open8 \ + | or1k* \ + | or32 \ + | orion \ + | picochip \ + | pdp10 | pdp11 | pj | pjl | pn | power \ + | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ + | pru \ + | pyramid \ + | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ + | rl78 | romp | rs6000 | rx \ + | s390 | s390x \ + | score \ + | sh | shl \ + | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ + | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ + | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ + | spu \ + | tahoe \ + | thumbv7* \ + | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ + | tron \ + | ubicom32 \ + | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ + | vax \ + | visium \ + | w65 \ + | wasm32 | wasm64 \ + | we32k \ + | x86 | x86_64 | xc16x | xgate | xps100 \ + | xstormy16 | xtensa* \ + | ymp \ + | z8k | z80) + ;; + + *) + echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 + exit 1 + ;; + esac ;; esac # Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` +case $vendor in + digital*) + vendor=dec ;; - *-commodore*) - basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` + commodore*) + vendor=cbm ;; *) ;; @@ -1334,203 +1306,215 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if [ x"$os" != x"" ] +if test x$basic_os != x then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 - exit 1 + # No normalization, but not necessarily accepted, that comes below. ;; esac + else # Here we handle the default operating systems that come with various machines. @@ -1543,258 +1527,363 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. -case $basic_machine in +kernel= +case $cpu-$vendor in score-*) - os=-elf + os=elf ;; spu-*) - os=-elf + os=elf ;; *-acorn) - os=-riscix1.2 + os=riscix1.2 ;; arm*-rebel) - os=-linux + kernel=linux + os=gnu ;; arm*-semi) - os=-aout + os=aout ;; c4x-* | tic4x-*) - os=-coff + os=coff ;; c8051-*) - os=-elf + os=elf + ;; + clipper-intergraph) + os=clix ;; hexagon-*) - os=-elf + os=elf ;; tic54x-*) - os=-coff + os=coff ;; tic55x-*) - os=-coff + os=coff ;; tic6x-*) - os=-coff + os=coff ;; # This must come before the *-dec entry. pdp10-*) - os=-tops20 + os=tops20 ;; pdp11-*) - os=-none + os=none ;; *-dec | vax-*) - os=-ultrix4.2 + os=ultrix4.2 ;; m68*-apollo) - os=-domain + os=domain ;; i386-sun) - os=-sunos4.0.2 + os=sunos4.0.2 ;; m68000-sun) - os=-sunos3 + os=sunos3 ;; m68*-cisco) - os=-aout + os=aout ;; mep-*) - os=-elf + os=elf ;; mips*-cisco) - os=-elf + os=elf ;; mips*-*) - os=-elf + os=elf ;; or32-*) - os=-coff + os=coff ;; *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 + os=sysv3 ;; sparc-* | *-sun) - os=-sunos4.1.1 + os=sunos4.1.1 ;; pru-*) - os=-elf + os=elf ;; *-be) - os=-beos + os=beos ;; *-ibm) - os=-aix + os=aix ;; *-knuth) - os=-mmixware + os=mmixware ;; *-wec) - os=-proelf + os=proelf ;; *-winbond) - os=-proelf + os=proelf ;; *-oki) - os=-proelf + os=proelf ;; *-hp) - os=-hpux + os=hpux ;; *-hitachi) - os=-hiux + os=hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv + os=sysv ;; *-cbm) - os=-amigaos + os=amigaos ;; *-dg) - os=-dgux + os=dgux ;; *-dolphin) - os=-sysv3 + os=sysv3 ;; m68k-ccur) - os=-rtu + os=rtu ;; m88k-omron*) - os=-luna + os=luna ;; *-next) - os=-nextstep + os=nextstep ;; *-sequent) - os=-ptx + os=ptx ;; *-crds) - os=-unos + os=unos ;; *-ns) - os=-genix + os=genix ;; i370-*) - os=-mvs + os=mvs ;; *-gould) - os=-sysv + os=sysv ;; *-highlevel) - os=-bsd + os=bsd ;; *-encore) - os=-bsd + os=bsd ;; *-sgi) - os=-irix + os=irix ;; *-siemens) - os=-sysv4 + os=sysv4 ;; *-masscomp) - os=-rtu + os=rtu ;; f30[01]-fujitsu | f700-fujitsu) - os=-uxpv + os=uxpv ;; *-rom68k) - os=-coff + os=coff ;; *-*bug) - os=-coff + os=coff ;; *-apple) - os=-macos + os=macos ;; *-atari*) - os=-mint + os=mint + ;; + *-wrs) + os=vxworks ;; *) - os=-none + os=none ;; esac + fi +# Now, validate our (potentially fixed-up) OS. +case $os in + # Sometimes we do "kernel-libc", so those need to count as OSes. + musl* | newlib* | relibc* | uclibc*) + ;; + # Likewise for "kernel-abi" + eabi* | gnueabi*) + ;; + # VxWorks passes extra cpu info in the 4th filed. + simlinux | simwindows | spe) + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ + | hiux* | abug | nacl* | netware* | windows* \ + | os9* | macos* | osx* | ios* \ + | mpw* | magic* | mmixware* | mon960* | lnews* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | mirbsd* | netbsd* | dicos* | openedition* | ose* \ + | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* | serenity* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | mint* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ + | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ + | fiwix* ) + ;; + # This one is extra strict with allowed versions + sco3.2v2 | sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + none) + ;; + *) + echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ + | linux-musl* | linux-relibc* | linux-uclibc* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) vendor=acorn ;; - -sunos*) + *-sunos*) vendor=sun ;; - -cnk*|-aix*) + *-cnk* | *-aix*) vendor=ibm ;; - -beos*) + *-beos*) vendor=be ;; - -hpux*) + *-hpux*) vendor=hp ;; - -mpeix*) + *-mpeix*) vendor=hp ;; - -hiux*) + *-hiux*) vendor=hitachi ;; - -unos*) + *-unos*) vendor=crds ;; - -dgux*) + *-dgux*) vendor=dg ;; - -luna*) + *-luna*) vendor=omron ;; - -genix*) + *-genix*) vendor=ns ;; - -mvs* | -opened*) + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) vendor=ibm ;; - -os400*) + s390-* | s390x-*) vendor=ibm ;; - -ptx*) + *-ptx*) vendor=sequent ;; - -tpf*) + *-tpf*) vendor=ibm ;; - -vxsim* | -vxworks* | -windiss*) + *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; - -aux*) + *-aux*) vendor=apple ;; - -hms*) + *-hms*) vendor=hitachi ;; - -mpw* | -macos*) + *-mpw* | *-macos*) vendor=apple ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; - -vos*) + *-vos*) vendor=stratus ;; esac - basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` ;; esac -echo "$basic_machine$os" +echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: -# eval: (add-hook 'write-file-functions 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/config.log b/config.log index 372a303..2a3c581 100644 --- a/config.log +++ b/config.log @@ -1,7 +1,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad configure g0a370c9, which was +It was created by Ironclad configure g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was $ ./configure --target=riscv64-limine-elf @@ -10,11 +10,11 @@ generated by GNU Autoconf 2.71. Invocation command line was ## Platform. ## ## --------- ## -hostname = shield +hostname = ada-ironclad-dev uname -m = x86_64 -uname -r = 6.9.3-76060903-generic +uname -r = 6.8.0-48-generic uname -s = Linux -uname -v = #202405300957~1726766035~22.04~4092a0e SMP PREEMPT_DYNAMIC Thu S +uname -v = #48-Ubuntu SMP PREEMPT_DYNAMIC Fri Sep 27 14:04:52 UTC 2024 /usr/bin/uname -p = x86_64 /bin/uname -X = unknown @@ -27,12 +27,8 @@ uname -v = #202405300957~1726766035~22.04~4092a0e SMP PREEMPT_DYNAMIC Thu S /usr/bin/oslevel = unknown /bin/universe = unknown -PATH: /home/michael/.local/share/alire/toolchains/gprbuild_22.0.1_24dfc1b5/bin/ -PATH: /home/michael/.local/share/alire/toolchains/gnat_native_14.2.1_06bb3def/bin/ -PATH: /home/michael/.local/share/alire/toolchains/gnat_riscv64_elf_14.2.1_4f738310/bin/ -PATH: /home/michael/opt/gnat-riscv64-elf-linux64-x86_64/bin/ -PATH: /home/michael/opt/gnat-x86_64-linux/bin/ -PATH: /home/michael/.local/bin/ +PATH: /home/sean/.alire/bin/ +PATH: /bin/alr-2.0.2-bin-x86_64-linux/bin/ PATH: /usr/local/sbin/ PATH: /usr/local/bin/ PATH: /usr/sbin/ @@ -42,8 +38,7 @@ PATH: /bin/ PATH: /usr/games/ PATH: /usr/local/games/ PATH: /snap/bin/ -PATH: /home/michael/.local/share/JetBrains/Toolbox/scripts/ -PATH: /opt/jdk-17.0.7+7/bin/ +PATH: /snap/bin/ ## ----------- ## @@ -63,13 +58,13 @@ configure:2117: checking for perl configure:2138: found /usr/bin/perl configure:2149: result: perl configure:2168: checking for objdump -configure:2189: found /home/michael/.local/share/alire/toolchains/gnat_native_14.2.1_06bb3def/bin/objdump +configure:2189: found /home/sean/.alire/bin/objdump configure:2200: result: objdump configure:2219: checking for gzip configure:2240: found /usr/bin/gzip configure:2251: result: gzip configure:2270: checking for strip -configure:2291: found /home/michael/.local/share/alire/toolchains/gnat_native_14.2.1_06bb3def/bin/strip +configure:2291: found /home/sean/.alire/bin/strip configure:2302: result: strip configure:2321: checking for makeinfo configure:2342: found /usr/bin/makeinfo @@ -81,11 +76,11 @@ configure:2423: checking for makeinfo configure:2444: found /usr/bin/makeinfo configure:2455: result: makeinfo --no-split --html configure:2474: checking for gprbuild -configure:2495: found /home/michael/.local/share/alire/toolchains/gprbuild_22.0.1_24dfc1b5/bin/gprbuild +configure:2495: found /home/sean/.alire/bin/gprbuild configure:2506: result: gprbuild configure:2525: checking for gnatprove -configure:2560: result: no -configure:2566: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable +configure:2546: found /home/sean/.alire/bin/gnatprove +configure:2557: result: gnatprove configure:2578: checking build system type configure:2593: result: x86_64-pc-linux-gnu configure:2613: checking host system type @@ -98,7 +93,7 @@ configure:2871: creating ./config.status ## Running config.status. ## ## ---------------------- ## -This file was extended by Ironclad config.status g0a370c9, which was +This file was extended by Ironclad config.status g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = @@ -107,7 +102,7 @@ generated by GNU Autoconf 2.71. Invocation command line was CONFIG_COMMANDS = $ ./config.status -on shield +on ada-ironclad-dev config.status:751: creating GNUmakefile config.status:751: creating ironclad.gpr @@ -151,6 +146,7 @@ ac_cv_env_target_alias_value=riscv64-limine-elf ac_cv_host=x86_64-pc-linux-gnu ac_cv_path_install='/usr/bin/install -c' ac_cv_path_mkdir=/usr/bin/mkdir +ac_cv_prog_GNATPROVE_FOUND=gnatprove ac_cv_prog_GPRBUILD_FOUND=gprbuild ac_cv_prog_GZIP_FOUND=gzip ac_cv_prog_MAKEINFO_FOUND=makeinfo @@ -167,13 +163,13 @@ ac_cv_target=riscv64-limine-elf ADAFLAGS='-g -O2 -pipe -gnaty -Wall -Wextra' ASFLAGS='-g -O2 -pipe -Wall' -BUILDDIR='/home/michael/capstoneProject/ironclad' -DEFS='-DPACKAGE_NAME=\"Ironclad\" -DPACKAGE_TARNAME=\"ironclad\" -DPACKAGE_VERSION=\"g0a370c9\" -DPACKAGE_STRING=\"Ironclad\ g0a370c9\" -DPACKAGE_BUGREPORT=\"https://ironclad.nongnu.org/usersupport.html\" -DPACKAGE_URL=\"\"' +BUILDDIR='/home/sean/capstone/ICK-RISCV-Context' +DEFS='-DPACKAGE_NAME=\"Ironclad\" -DPACKAGE_TARNAME=\"ironclad\" -DPACKAGE_VERSION=\"g2867970\" -DPACKAGE_STRING=\"Ironclad\ g2867970\" -DPACKAGE_BUGREPORT=\"https://ironclad.nongnu.org/usersupport.html\" -DPACKAGE_URL=\"\"' ECHO_C='' ECHO_N='-n' ECHO_T='' GNATPROVE='gnatprove' -GNATPROVE_FOUND='' +GNATPROVE_FOUND='gnatprove' GPRBUILD='gprbuild' GPRBUILD_FOUND='gprbuild' GZIP='gzip' @@ -193,16 +189,16 @@ OBJDUMP='objdump' OBJDUMP_FOUND='objdump' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_NAME='Ironclad' -PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_STRING='Ironclad g2867970' PACKAGE_TARNAME='ironclad' PACKAGE_URL='' -PACKAGE_VERSION='g0a370c9' +PACKAGE_VERSION='g2867970' PATH_SEPARATOR=':' PERL='perl' PERL_FOUND='perl' SHELL='/bin/bash' -SOURCE_DATE_EPOCH='1731253613' -SRCDIR='/home/michael/capstoneProject/ironclad' +SOURCE_DATE_EPOCH='1739144561' +SRCDIR='/home/sean/capstone/ICK-RISCV-Context' STRIP='strip' STRIP_FOUND='strip' TEXI2DVI='texi2dvi' @@ -255,8 +251,8 @@ target_vendor='limine' /* confdefs.h */ #define PACKAGE_NAME "Ironclad" #define PACKAGE_TARNAME "ironclad" -#define PACKAGE_VERSION "g0a370c9" -#define PACKAGE_STRING "Ironclad g0a370c9" +#define PACKAGE_VERSION "g2867970" +#define PACKAGE_STRING "Ironclad g2867970" #define PACKAGE_BUGREPORT "https://ironclad.nongnu.org/usersupport.html" #define PACKAGE_URL "" diff --git a/config.status b/config.status index 5a1cf01..5b7a726 100755 --- a/config.status +++ b/config.status @@ -373,7 +373,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g0a370c9, which was +This file was extended by Ironclad $as_me g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -412,7 +412,7 @@ Report bugs to ." ac_cs_config='--target=riscv64-limine-elf target_alias=riscv64-limine-elf' ac_cs_version="\ -Ironclad config.status g0a370c9 +Ironclad config.status g2867970 configured by ./configure, generated by GNU Autoconf 2.71, with options \"$ac_cs_config\" @@ -420,7 +420,7 @@ Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -ac_pwd='/home/michael/capstoneProject/ironclad' +ac_pwd='/home/sean/capstone/ICK-RISCV-Context' srcdir='.' INSTALL='/usr/bin/install -c' MKDIR_P='/usr/bin/mkdir -p' @@ -592,7 +592,7 @@ S["build_os"]="linux-gnu" S["build_vendor"]="pc" S["build_cpu"]="x86_64" S["build"]="x86_64-pc-linux-gnu" -S["GNATPROVE_FOUND"]="" +S["GNATPROVE_FOUND"]="gnatprove" S["GNATPROVE"]="gnatprove" S["GPRBUILD_FOUND"]="gprbuild" S["GPRBUILD"]="gprbuild" @@ -614,13 +614,13 @@ S["INSTALL_DATA"]="${INSTALL} -m 644" S["INSTALL_SCRIPT"]="${INSTALL}" S["INSTALL_PROGRAM"]="${INSTALL}" S["MKDIR_P"]="/usr/bin/mkdir -p" -S["SOURCE_DATE_EPOCH"]="1731253613" +S["SOURCE_DATE_EPOCH"]="1739144561" S["LDFLAGS"]="-g -O2 -pipe -Wall" S["ASFLAGS"]="-g -O2 -pipe -Wall" S["ADAFLAGS"]="-g -O2 -pipe -gnaty -Wall -Wextra" S["MEMORY_ALLOCONLY"]="False" -S["BUILDDIR"]="/home/michael/capstoneProject/ironclad" -S["SRCDIR"]="/home/michael/capstoneProject/ironclad" +S["BUILDDIR"]="/home/sean/capstone/ICK-RISCV-Context" +S["SRCDIR"]="/home/sean/capstone/ICK-RISCV-Context" S["target_alias"]="riscv64-limine-elf" S["host_alias"]="" S["build_alias"]="" @@ -628,7 +628,7 @@ S["LIBS"]="" S["ECHO_T"]="" S["ECHO_N"]="-n" S["ECHO_C"]="" -S["DEFS"]="-DPACKAGE_NAME=\\\"Ironclad\\\" -DPACKAGE_TARNAME=\\\"ironclad\\\" -DPACKAGE_VERSION=\\\"g0a370c9\\\" -DPACKAGE_STRING=\\\"Ironclad\\ g0a370c9\\\" -DPACKAGE_BUGREPOR"\ +S["DEFS"]="-DPACKAGE_NAME=\\\"Ironclad\\\" -DPACKAGE_TARNAME=\\\"ironclad\\\" -DPACKAGE_VERSION=\\\"g2867970\\\" -DPACKAGE_STRING=\\\"Ironclad\\ g2867970\\\" -DPACKAGE_BUGREPOR"\ "T=\\\"https://ironclad.nongnu.org/usersupport.html\\\" -DPACKAGE_URL=\\\"\\\"" S["mandir"]="${datarootdir}/man" S["localedir"]="${datarootdir}/locale" @@ -655,8 +655,8 @@ S["prefix"]="/usr/local" S["exec_prefix"]="${prefix}" S["PACKAGE_URL"]="" S["PACKAGE_BUGREPORT"]="https://ironclad.nongnu.org/usersupport.html" -S["PACKAGE_STRING"]="Ironclad g0a370c9" -S["PACKAGE_VERSION"]="g0a370c9" +S["PACKAGE_STRING"]="Ironclad g2867970" +S["PACKAGE_VERSION"]="g2867970" S["PACKAGE_TARNAME"]="ironclad" S["PACKAGE_NAME"]="Ironclad" S["PATH_SEPARATOR"]=":" diff --git a/configure b/configure index 58ba0fa..71b55e5 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. +# Generated by GNU Autoconf 2.71 for Ironclad g2867970. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g0a370c9' -PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_VERSION='g2867970' +PACKAGE_STRING='Ironclad g2867970' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. +\`configure' configures Ironclad g2867970 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g0a370c9:";; + short | recursive ) echo "Configuration of Ironclad g2867970:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g0a370c9 +Ironclad configure g2867970 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g0a370c9, which was +It was created by Ironclad $as_me g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1731253613" +SOURCE_DATE_EPOCH="1739144561" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g0a370c9, which was +This file was extended by Ironclad $as_me g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g0a370c9 +Ironclad config.status g2867970 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure~ b/configure~ index 58ba0fa..71b55e5 100755 --- a/configure~ +++ b/configure~ @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. +# Generated by GNU Autoconf 2.71 for Ironclad g2867970. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g0a370c9' -PACKAGE_STRING='Ironclad g0a370c9' +PACKAGE_VERSION='g2867970' +PACKAGE_STRING='Ironclad g2867970' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. +\`configure' configures Ironclad g2867970 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g0a370c9:";; + short | recursive ) echo "Configuration of Ironclad g2867970:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g0a370c9 +Ironclad configure g2867970 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g0a370c9, which was +It was created by Ironclad $as_me g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1731253613" +SOURCE_DATE_EPOCH="1739144561" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g0a370c9, which was +This file was extended by Ironclad $as_me g2867970, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g0a370c9 +Ironclad config.status g2867970 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/ironclad.gpr b/ironclad.gpr index 611813e..e8d86d9 100644 --- a/ironclad.gpr +++ b/ironclad.gpr @@ -24,7 +24,18 @@ project Ironclad is Asm_Flags := "-g -O2 -pipe -Wall"; Linker_Flags := "-g -O2 -pipe -Wall"; - for Source_Dirs use ("source", "source/arch/riscv64-limine"); + for Source_Dirs use + ("/home/sean/capstone/ICK-RISCV-Context/source/arch/" & Arch, + "/home/sean/capstone/ICK-RISCV-Context/source/arch", + "/home/sean/capstone/ICK-RISCV-Context/source/cryptography", + "/home/sean/capstone/ICK-RISCV-Context/source/devices", + "/home/sean/capstone/ICK-RISCV-Context/source/ipc", + "/home/sean/capstone/ICK-RISCV-Context/source/lib", + "/home/sean/capstone/ICK-RISCV-Context/source/memory", + "/home/sean/capstone/ICK-RISCV-Context/source/networking", + "/home/sean/capstone/ICK-RISCV-Context/source/userland", + "/home/sean/capstone/ICK-RISCV-Context/source/vfs", + "/home/sean/capstone/ICK-RISCV-Context/source"); for Object_Dir use "obj"; for Exec_Dir use "."; for Main use ("main.adb"); @@ -40,13 +51,13 @@ project Ironclad is ("-fno-stack-protector", "-fno-stack-check", "-fdata-sections", "-ffunction-sections", "-gnateDIroncladName=""" & "Ironclad" & """", - "-gnateDVersion=""" & "g0a370c9" & """", + "-gnateDVersion=""" & "g2867970" & """", "-gnateDBugSite=""" & "https://ironclad.nongnu.org/usersupport.html" & """", "-gnateDArchName=""" & Arch & """", - "-ffile-prefix-map=" & "/home/michael/capstoneProject/ironclad" & "=.", + "-ffile-prefix-map=" & "/home/sean/capstone/ICK-RISCV-Context" & "=.", "-gnateDALLOCONLY=" & "False"); Base_Asm_Switches := Split (Asm_Flags, " ") & - ("-ffile-prefix-map=" & "/home/michael/capstoneProject/ironclad" & "=."); + ("-ffile-prefix-map=" & "/home/sean/capstone/ICK-RISCV-Context" & "=."); case Arch is when "riscv64-limine" => @@ -66,12 +77,12 @@ project Ironclad is ("-fno-pie", "-fno-pic", "-mno-red-zone", "-mcmodel=kernel"); end case; - for Local_Configuration_Pragmas use "/home/michael/capstoneProject/ironclad/source/pragmas.adc"; + for Local_Configuration_Pragmas use "/home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc"; end Compiler; package Linker is Base_Link_Switches := Split (Linker_Flags, " ") & - ("-T/home/michael/capstoneProject/ironclad/source/arch/" & Arch & "/linker.ld", "-nostdlib", + ("-T/home/sean/capstone/ICK-RISCV-Context/source/arch/" & Arch & "/linker.ld", "-nostdlib", "-Llibgnat-hack", "-Wl,-gc-sections"); case Arch is diff --git a/obj/gnatprove/691ca296.tmp b/obj/gnatprove/691ca296.tmp new file mode 100644 index 0000000..8e85af1 --- /dev/null +++ b/obj/gnatprove/691ca296.tmp @@ -0,0 +1 @@ +{"global_gen_mode":true,"output_mode":"GPO_PRETTY_COLOR","exclude_line":"","debug_exec_rac":false,"debug":false,"flow_advanced_debug":false,"flow_generate_contracts":true,"file_specific":{"Ada":{"check_counterexamples":true,"no_loop_unrolling":false,"no_inlining":false,"info_messages":false,"gp_mode":"GPM_PROVE"}}} diff --git a/obj/gnatprove/data_representation/main.adb.stderr b/obj/gnatprove/data_representation/main.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/main.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/main.adb.stdout b/obj/gnatprove/data_representation/main.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation_generation.log b/obj/gnatprove/data_representation_generation.log new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation_generation.log @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/phase1/arch-clocks.adb.stderr b/obj/gnatprove/phase1/arch-clocks.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-clocks.adb.stdout b/obj/gnatprove/phase1/arch-clocks.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-clocks.ali b/obj/gnatprove/phase1/arch-clocks.ali new file mode 100644 index 0000000..0001eb8 --- /dev/null +++ b/obj/gnatprove/phase1/arch-clocks.ali @@ -0,0 +1,168 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.clocks%b arch-clocks.adb 0689561d OO PK +W arch%s arch.ads arch.ali + +U arch.clocks%s arch-clocks.ads 19a2d574 OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-clocks.adb 20250222165738 f1e25636 arch.clocks%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 2|19r9 45r5 3|17r14 77r5 +X 2 arch-clocks.ads +19K14*Clocks 1|20k9 2|45l10 45e16 3|17b19 77l10 77t16 +20@23*Monotonic_Clock_State 24r34 28r33 32r33 3|24r8 +20@46*RT_Clock_State 24r57 36r33 40r33 44r33 3|19r8 +23U14*Initialize_Sources 3|41b14 44l8 44t26 +27U14*Get_Monotonic_Resolution 27<40 27<49 3|46b14 51l8 51t32 +27m40 Seconds{4|84M9} 3|46b40 49m7 +27m49 Nanoseconds{4|84M9} 3|46b49 50m7 +31U14*Get_Monotonic_Time 31<34 31<43 3|53b14 57l8 57t26 +31m34 Seconds{4|84M9} 3|53b34 55m7 +31m43 Nanoseconds{4|84M9} 3|53b43 56m7 +35U14*Get_Real_Time_Resolution 35<40 35<49 3|59b14 64l8 64t32 +35m40 Seconds{4|84M9} 3|59b40 62m7 +35m49 Nanoseconds{4|84M9} 3|59b49 63m7 +39U14*Get_Real_Time 39<29 39<38 3|66b14 71l8 71t21 +39m29 Seconds{4|84M9} 3|66b29 69m7 +39m38 Nanoseconds{4|84M9} 3|66b38 70m7 +43U14*Set_Real_Time 43>29 43>38 3|73b14 76l8 76t21 +43m29 Seconds{4|84M9} 3|73b29 +43m38 Nanoseconds{4|84M9} 3|73b38 +X 3 arch-clocks.adb +30m4 RT_Timestamp_Seconds{4|84M9} 20r11 +31m4 RT_Timestamp_Nanoseconds{4|84M9} 21r11 +32m4 RT_Stored_Seconds{4|84M9} 22r11 +33m4 RT_Stored_Nanoseconds{4|84M9} 23r11 +37N4 MS_Per_Sec +38N4 Nanos_Per_MS 39r35 +39m4 Mono_TSC_Freq{4|84M9} 24r34 +X 4 interfac.ads +38K9*Interfaces 2|17w6 17r22 4|233e15 +84M9*Unsigned_64 2|27r67 31r61 35r67 39r56 43r52 3|30r31 31r31 32r31 33r31 +. 39r20 46r67 53r61 59r67 66r56 73r52 + +QQ SPARKVERSION 0.0w +GG EK_STATE_MAP ada___arch__clocks__monotonic_clock_state 1 ada___arch__clocks__mono_tsc_freq +GG EK_STATE_MAP ada___arch__clocks__rt_clock_state 4 ada___arch__clocks__rt_timestamp_seconds ada___arch__clocks__rt_timestamp_nanoseconds ada___arch__clocks__rt_stored_seconds ada___arch__clocks__rt_stored_nanoseconds +GG EK_DIRECT_CALLS ada___arch__clocks__initialize_sources 0 +GG EK_PROOF_DEPENDENCIES ada___arch__clocks__initialize_sources 0 +GG EK_GLOBALS ada___arch__clocks__initialize_sources local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 0 proper_output 2 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 0 refined_output 5 ada___arch__clocks__rt_timestamp_seconds ada___arch__clocks__rt_timestamp_nanoseconds ada___arch__clocks__rt_stored_seconds ada___arch__clocks__rt_stored_nanoseconds ada___arch__clocks__mono_tsc_freq calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__clocks__get_monotonic_resolution 0 +GG EK_PROOF_DEPENDENCIES ada___arch__clocks__get_monotonic_resolution 0 +GG EK_GLOBALS ada___arch__clocks__get_monotonic_resolution local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 1 ada___arch__clocks__monotonic_clock_state proper_output 1 ada___arch__clocks__monotonic_clock_state refined_proof_in 0 refined_input 1 ada___arch__clocks__mono_tsc_freq refined_output 1 ada___arch__clocks__mono_tsc_freq calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__clocks__get_monotonic_time 0 +GG EK_PROOF_DEPENDENCIES ada___arch__clocks__get_monotonic_time 0 +GG EK_GLOBALS ada___arch__clocks__get_monotonic_time local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 1 ada___arch__clocks__monotonic_clock_state proper_output 1 ada___arch__clocks__monotonic_clock_state refined_proof_in 0 refined_input 1 ada___arch__clocks__mono_tsc_freq refined_output 1 ada___arch__clocks__mono_tsc_freq calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__clocks__get_real_time_resolution 0 +GG EK_PROOF_DEPENDENCIES ada___arch__clocks__get_real_time_resolution 0 +GG EK_GLOBALS ada___arch__clocks__get_real_time_resolution local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__clocks__get_real_time 0 +GG EK_PROOF_DEPENDENCIES ada___arch__clocks__get_real_time 0 +GG EK_GLOBALS ada___arch__clocks__get_real_time local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__clocks__set_real_time 0 +GG EK_PROOF_DEPENDENCIES ada___arch__clocks__set_real_time 0 +GG EK_GLOBALS ada___arch__clocks__set_real_time local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__clocks 0 +GG EK_PROOF_DEPENDENCIES ada___arch__clocks 0 +GG EK_GLOBALS ada___arch__clocks local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___arch__clocks__monotonic_clock_state refined_initializes 1 ada___arch__clocks__mono_tsc_freq calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 5 ada___arch__clocks__rt_timestamp_seconds ada___arch__clocks__rt_timestamp_nanoseconds ada___arch__clocks__rt_stored_seconds ada___arch__clocks__rt_stored_nanoseconds ada___arch__clocks__mono_tsc_freq TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-clocks.cswi b/obj/gnatprove/phase1/arch-clocks.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/arch-clocks.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch-context.adb.stderr b/obj/gnatprove/phase1/arch-context.adb.stderr new file mode 100644 index 0000000..ab1c07e --- /dev/null +++ b/obj/gnatprove/phase1/arch-context.adb.stderr @@ -0,0 +1,32 @@ + +arch-context.adb:88:40: error: prefix for "Range" attribute must be array + 88 | pragma Assert ((for all Index in GP_Context'Range => Ctx.To_Element (Index) = 0) and + | ^~~~~~~~~~ + +arch-context.adb:88:63: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 + 88 | pragma Assert ((for all Index in GP_Context'Range => Ctx.To_Element (Index) = 0) and + | ~~~^~~~~~~~~~~ + +arch-context.adb:89:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 + 89 | Ctx.To_Element (1) = Unsigned_32 (To_Integer (Stack) and 16#FFFFFFFF#) and + | ~~~^~~~~~~~~~~ + +arch-context.adb:90:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 + 90 | Ctx.To_Element (2) = Unsigned_32 (To_Integer (Start_Addr) and 16#FFFFFFFF#)); + | ~~~^~~~~~~~~~~ + +arch-context.adb:99:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 + 99 | pragma Assume (Ctx.To_Element (2) /= 0); + | ~~~^~~~~~~~~~~ + +arch-context.adb:126:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 + 126 | pragma Assume (Ctx.To_Element (2) /= 0); + | ~~~^~~~~~~~~~~ + +arch-context.adb:133:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 + 133 | pragma Assert (Ctx.To_Element (2) = 0 and Ctx.To_Element (4) = 0); + | ~~~^~~~~~~~~~~ + +arch-context.adb:133:52: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 + 133 | pragma Assert (Ctx.To_Element (2) = 0 and Ctx.To_Element (4) = 0); + | ~~~^~~~~~~~~~~ diff --git a/obj/gnatprove/phase1/arch-context.adb.stdout b/obj/gnatprove/phase1/arch-context.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-cpu.adb.stderr b/obj/gnatprove/phase1/arch-cpu.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-cpu.adb.stdout b/obj/gnatprove/phase1/arch-cpu.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-cpu.ali b/obj/gnatprove/phase1/arch-cpu.ali new file mode 100644 index 0000000..e400bb0 --- /dev/null +++ b/obj/gnatprove/phase1/arch-cpu.ali @@ -0,0 +1,618 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.cpu%b arch-cpu.adb e1f2eb60 OO PK +W arch%s arch.ads arch.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W system%s system.ads system.ali + +U arch.cpu%s arch-cpu.ads eb2b3570 OO PK +W arch%s arch.ads arch.ali +W arch.limine%s arch-limine.adb arch-limine.ali +W interfaces%s interfac.ads interfac.ali +W scheduler%s scheduler.adb scheduler.ali +W userland%s userland.ads userland.ali +W userland.process%s userland-process.adb userland-process.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-cpu.ads 20250222165738 4e264e50 arch.cpu%s +D arch-cpu.adb 20250222165738 330249e0 arch.cpu%b +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-limine.ads 20250222165738 8eb8e49c arch.limine%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 4 arch.ads +20K9*Arch 52e9 7|20r6 22r9 58r5 8|21r14 87r5 +X 7 arch-cpu.ads +22K14*CPU 4|20k9 7|58l10 58e13 8|21b19 87l10 87t13 +24R9*Core_Local 25r38 26c9 36e14 37r8 44r64 +25P9*Core_Local_Acc(24R9) 28r25 +26R9*Core_Local +28p7*Self{25P9} 38r7 8|79m11 +29m7*Kernel_Stack{14|84M9} 39r7 8|80m11 +30m7*User_Stack{14|84M9} 40r7 8|81m11 +32i7*Number{positive} 8|82m11 +33m7*Hart_ID{14|84M9} 8|83m11 +34i7*Current_Thread{25|27I9} 8|84m11 +35i7*Current_Process{32|33I9} 8|85m11 +44A9*Core_Local_Arr(26R9) 45r38 8|47r26 +45P9*Core_Local_Arr_Acc(44A9) 47r18 +46i4*Core_Count{positive} 8|43m7 47r47 51r10 +47p4*Core_Locals{45P9} 8|47m7 78r7 79r30 +50U14*Init_Cores 8|30b14 65l8 65t18 +54U14 Core_Bootstrap 54^30 8|59r36 67b14 74l8 74t22 +54p30 Info(10|184R9) 8|67b30 71r27 73r29 73r46 +57U14 Init_Common 57>27 57>51 8|48s7 73s7 76b14 86l8 86t19 +57i27 Core_Number{positive} 8|76b27 78r20 79r43 82r30 +57m51 Hart_ID{14|84M9} 8|76b51 83r30 +X 8 arch-cpu.adb +22r4 SMP_Request{10|155R9} 35r34 38r10 +31m7 BSP_Hart_ID{14|84M9} 44m7 48r23 57r34 +32i7 Idx{natural} 58r49 60m19 60r36 +34r7 SMPPonse{10|168R9} 43r31 44r22 53r58 54r40 +53a13 SMP_CPUs{10|201A9} 56r24 57r19 58r19 59r19 +56p17 CPU=56:24{10|199P9} +68a7 Stp{20|55A12} 71m43 72r51 +69i7 Stp_Len{natural} 71m48 +X 10 arch-limine.ads +20K14*Limine 7|20w11 54r44 8|22r18 24r23 34r18 53r24 67r44 10|293e16 +41A9*Request_ID(14|84M9) +43a7*ID{41A9} 8|24m11 +44m7*Revision{14|84M9} 8|25m11 +45m7*Response{26|67M9} 8|26m11 35r51 38r27 +155R9*SMP_Request 8|22r25 10|158e14 +156r7*Base{42R9} 8|23m8 35r46 38r22 +157m7*Flags{14|84M9} 8|27m8 +168R9*RISCV64_SMP_Response 8|34r25 10|174e15 +171m7*BSP_Hart_ID{14|84M9} 8|44r31 +172m7*CPU_Count{14|84M9} 8|43r40 53r67 +173m7*CPUs{26|67M9} 8|54r49 +184R9*RISCV64_SMP_CPU_Info 7|54r51 8|67r51 10|190e15 +186m7*Hart_ID{14|84M9} 8|57r23 73r51 +188m7*Addr{26|67M9} 8|59m23 +189m7*Extra_Arg{14|84M9} 8|58m23 71r32 73r34 +199P9*RISCV64_CPU_Info_Acc(184R9) +201A9*RISCV64_CPU_Info_Arr(199P9)<14|84M9> 8|53r31 +242a4*SMP_ID{41A9} 8|24r30 +X 14 interfac.ads +38K9*Interfaces 7|17w6 17r22 14|233e15 +84M9*Unsigned_64 7|29r25 30r25 33r25 57r61 8|31r21 58r36 76r61 +X 19 lib.ads +19K9*Lib 8|18r6 19r6 39r10 68r17 71r7 72r7 19|35e8 +X 20 lib-messages.ads +21K13*Messages 8|18w10 68r21 71r11 72r11 20|103e17 +41U14*Put_Line 8|72s20 +55A12*Translated_String{string} 8|68r30 +74U14*Image 8|71s20 +X 21 lib-panic.ads +21K13*Panic 8|19w10 39r14 21|39e14 +32U14*Hard_Panic 8|39s20 +X 25 scheduler.ads +25K9*Scheduler 7|19w6 34r25 8|84r30 25|183e14 +27I9*TID 7|34r35 +29i4*Error_TID{27I9} 8|84r40 +X 26 system.ads +37K9*System 8|17w6 17r18 26r23 38r38 26|155e11 +67M9*Address +69m4*Null_Address{67M9} 8|26r30 38r45 +81V14*"="{boolean} 8|38r36 +X 29 userland.ads +17K9*Userland 7|18r6 35r25 8|85r30 29|23e13 +X 32 userland-process.ads +28K18*Process 7|18w15 35r34 8|85r39 32|677e21 +33I9*PID 7|35r42 +34i4*Error_PID{33I9} 8|85r47 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__cpu__init_cores 0 +GG EK_PROOF_DEPENDENCIES ada___arch__cpu__init_cores 0 +GG EK_GLOBALS ada___arch__cpu__init_cores local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__cpu arch proper_proof_in 0 proper_input 4 ada___arch__cpu__smp_request ada___arch__cpu__core_count ada___arch__cpu__core_locals __HEAP proper_output 3 ada___arch__cpu__core_count ada___arch__cpu__core_locals __HEAP refined_proof_in 0 refined_input 4 ada___arch__cpu__smp_request ada___arch__cpu__core_count ada___arch__cpu__core_locals __HEAP refined_output 3 ada___arch__cpu__core_count ada___arch__cpu__core_locals __HEAP calls_proof 0 calls 0 calls_conditional 1 ada___lib__panic__hard_panic FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__cpu__smp_request ada___arch__cpu__core_count ada___arch__cpu__core_locals LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__cpu__core_bootstrap 0 +GG EK_PROOF_DEPENDENCIES ada___arch__cpu__core_bootstrap 0 +GG EK_GLOBALS ada___arch__cpu__core_bootstrap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__cpu arch proper_proof_in 0 proper_input 2 ada___arch__cpu__core_locals __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 ada___arch__cpu__core_locals __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__messages__put_line ada___lib__messages__image__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__cpu__init_common 0 +GG EK_PROOF_DEPENDENCIES ada___arch__cpu__init_common 0 +GG EK_GLOBALS ada___arch__cpu__init_common local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__cpu arch proper_proof_in 0 proper_input 2 ada___arch__cpu__core_locals __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 ada___arch__cpu__core_locals __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__cpu__core_locals LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__cpu 0 +GG EK_PROOF_DEPENDENCIES ada___arch__cpu 0 +GG EK_GLOBALS ada___arch__cpu local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___arch__cpu__core_locals refined_initializes 1 ada___arch__cpu__core_locals calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___arch__cpu__core_count ada___arch__cpu__core_locals TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__limine TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__limine__get_physical_address FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___arch__limine__translate_proto FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__cpu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__cpu__init_cores FALSE FALSE FALSE FALSE TRUE ada___arch__cpu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__cpu__core_bootstrap FALSE FALSE FALSE FALSE TRUE ada___arch__cpu PRIVATE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__cpu__init_common FALSE FALSE FALSE FALSE TRUE ada___arch__cpu PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-cpu.cswi b/obj/gnatprove/phase1/arch-cpu.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/arch-cpu.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch-debug.adb.stderr b/obj/gnatprove/phase1/arch-debug.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-debug.adb.stdout b/obj/gnatprove/phase1/arch-debug.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-debug.ali b/obj/gnatprove/phase1/arch-debug.ali new file mode 100644 index 0000000..2f679f9 --- /dev/null +++ b/obj/gnatprove/phase1/arch-debug.ali @@ -0,0 +1,210 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.debug%b arch-debug.adb 8b8a9c51 OO PK +W arch%s arch.ads arch.ali +W devices%s devices.adb devices.ali +W devices.uart%s devices-uart.adb devices-uart.ali +Z system%s system.ads system.ali + +U arch.debug%s arch-debug.ads f201567a OO PK +W arch%s arch.ads arch.ali +W devices%s devices.adb devices.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-debug.ads 20250222165738 7987b5ed arch.debug%s +D arch-debug.adb 20250222165738 e7be1437 arch.debug%b +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-uart.ads 20250222165738 15b33d8b devices.uart%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 2|19r9 49r5 3|19r14 40r5 +X 2 arch-debug.ads +19K14*Debug 1|20k9 2|49l10 49e15 3|19b19 40l10 40t15 +24b4*Supports_Read{boolean} 45c7 +28U14*Read 28<20 3|20b14 23l8 23t12 +28a20 Message{5|29A9} 3|20b20 +32U14*Print 32>21 3|25b14 28l8 28t13 +32e21 Message{character} 3|25b21 27r33 +36U14*Print 36>21 3|30b14 33l8 33t13 +36a21 Message{string} 3|30b21 32r33 +40U14*Print 40>21 3|35b14 39l8 39t13 +40a21 Message{5|29A9} 3|35b21 36r24 36r64 +X 3 arch-debug.adb +36a7 S{string} 38r33 +X 5 devices.ads +22K9*Devices 2|17w6 28r34 40r31 3|17r6 20r34 27r7 32r7 35r31 38r7 5|279e12 +29A9*Operation_Data(7|70M9) 2|28r42 40r39 3|20r42 35r39 +X 6 devices-uart.ads +21K17*UART 3|17w14 27r15 32r15 38r15 6|37e17 +26U14*Write_UART0 3|27s20 +29U14*Write_UART0 3|32s20 38s20 +X 7 interfac.ads +70M9*Unsigned_8 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__debug__read 0 +GG EK_PROOF_DEPENDENCIES ada___arch__debug__read 0 +GG EK_GLOBALS ada___arch__debug__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__debug arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__debug__print 0 +GG EK_PROOF_DEPENDENCIES ada___arch__debug__print 0 +GG EK_GLOBALS ada___arch__debug__print local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__debug arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___devices__uart__write_uart0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__debug__print__2 0 +GG EK_PROOF_DEPENDENCIES ada___arch__debug__print__2 0 +GG EK_GLOBALS ada___arch__debug__print__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__debug arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___devices__uart__write_uart0__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__debug__print__3 0 +GG EK_PROOF_DEPENDENCIES ada___arch__debug__print__3 0 +GG EK_GLOBALS ada___arch__debug__print__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__debug arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___devices__uart__write_uart0__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__debug 0 +GG EK_PROOF_DEPENDENCIES ada___arch__debug 0 +GG EK_GLOBALS ada___arch__debug local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___devices__uart__init_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___devices__uart__write_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__read FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart__write_uart0__2 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__print FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__print__2 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__print__3 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-debug.cswi b/obj/gnatprove/phase1/arch-debug.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/arch-debug.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch-dtb.adb.stderr b/obj/gnatprove/phase1/arch-dtb.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-dtb.adb.stdout b/obj/gnatprove/phase1/arch-dtb.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-dtb.ali b/obj/gnatprove/phase1/arch-dtb.ali new file mode 100644 index 0000000..dc79746 --- /dev/null +++ b/obj/gnatprove/phase1/arch-dtb.ali @@ -0,0 +1,160 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.dtb%b arch-dtb.adb ca6eaf03 OO PK +W arch%s arch.ads arch.ali +W system%s system.ads system.ali + +U arch.dtb%s arch-dtb.ads 5baab04b OO PK +W arch%s arch.ads arch.ali +W arch.limine%s arch-limine.adb arch-limine.ali +W interfaces%s interfac.ads interfac.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-dtb.ads 20250222165738 3bdb8188 arch.dtb%s +D arch-dtb.adb 20250222165738 e59d4584 arch.dtb%b +D arch-limine.ads 20250222165738 8eb8e49c arch.limine%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 2|18r6 20r9 25r18 26r20 46r5 3|19r14 21r18 34r5 +X 2 arch-dtb.ads +20K14*DTB 1|20k9 2|46l10 46e13 3|19b19 34l10 34t13 +21V13*Init{boolean} 3|20b13 33l8 33t12 +25r4 DTB_Request{4|42R9} 3|22r34 24r10 +32N4 FDT_Magic 3|31r32 +34R9 FDT_Header 45e15 3|29r19 +35m7*Magic{5|81M9} 3|31r24 +36m7*Size{5|81M9} +37m7*Offset_DT_Struct{5|81M9} +38m7*Offset_DT_Strings{5|81M9} +39m7*Offset_Reserved_Flag{5|81M9} +40m7*Version{5|81M9} +41m7*Last_Compatible_Vers{5|81M9} +42m7*Boot_CPU_Physical_ID{5|81M9} +43m7*Size_DT_Stings{5|81M9} +44m7*Size_DT_Struct{5|81M9} +X 3 arch-dtb.adb +21r7 DTBPonse{4|216R9} 29r54 +29r10 Header{2|34R9} 31r17 +X 4 arch-limine.ads +20K14*Limine 2|18w11 25r23 26r25 3|21r23 4|293e16 +41A9*Request_ID(5|84M9) +42R9*Request 2|25r30 4|46e15 +43a7*ID{41A9} 2|26m8 +44m7*Revision{5|84M9} 2|27m8 +45m7*Response{6|67M9} 2|28m8 3|22r46 24r22 +216R9*DTB_Response 3|21r30 4|219e15 +218m7*DTB_Addr{6|67M9} 3|29r63 +250a4*DTB_ID{41A9} 2|26r32 +X 5 interfac.ads +38K9*Interfaces 2|17w6 17r22 5|233e15 +81M9*Unsigned_32 2|35r30 36r30 37r30 38r30 39r30 40r30 41r30 42r30 43r30 +. 44r30 +84M9*Unsigned_64 +X 6 system.ads +37K9*System 2|28r20 3|17w6 17r18 24r33 6|155e11 +67M9*Address +69m4*Null_Address{67M9} 2|28r27 3|24r40 +81V14*"="{boolean} 3|24r31 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__dtb__init 0 +GG EK_PROOF_DEPENDENCIES ada___arch__dtb__init 0 +GG EK_GLOBALS ada___arch__dtb__init local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__dtb arch proper_proof_in 0 proper_input 1 ada___arch__dtb__dtb_request proper_output 0 refined_proof_in 0 refined_input 1 ada___arch__dtb__dtb_request refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__dtb__dtb_request LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__dtb 0 +GG EK_PROOF_DEPENDENCIES ada___arch__dtb 0 +GG EK_GLOBALS ada___arch__dtb local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__limine__translate_proto FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___arch__dtb TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__dtb__init FALSE FALSE FALSE FALSE TRUE ada___arch__dtb VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__limine TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__limine__get_physical_address FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_VOLATILES AR 0 AW 1 ada___arch__dtb__dtb_request ER 0 EW 0 +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-dtb.cswi b/obj/gnatprove/phase1/arch-dtb.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/arch-dtb.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch-entrypoint.adb.stderr b/obj/gnatprove/phase1/arch-entrypoint.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-entrypoint.adb.stdout b/obj/gnatprove/phase1/arch-entrypoint.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-entrypoint.ali b/obj/gnatprove/phase1/arch-entrypoint.ali new file mode 100644 index 0000000..2923cb4 --- /dev/null +++ b/obj/gnatprove/phase1/arch-entrypoint.ali @@ -0,0 +1,659 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RV NO_ENUMERATION_MAPS +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.entrypoint%b arch-entrypoint.adb cd7f7975 OO PK +W arch%s arch.ads arch.ali +W arch.cpu%s arch-cpu.adb arch-cpu.ali +W arch.dtb%s arch-dtb.adb arch-dtb.ali +W arch.limine%s arch-limine.adb arch-limine.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W devices%s devices.adb devices.ali +W devices.uart%s devices-uart.adb devices-uart.ali +W interfaces%s interfac.ads interfac.ali +W kernel_main%s kernel_main.adb kernel_main.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W memory%s memory.ads memory.ali +W memory.physical%s memory-physical.adb memory-physical.ali + +U arch.entrypoint%s arch-entrypoint.ads 418a8118 OO PK +W arch%s arch.ads arch.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-cpu.ads 20250222165738 4e264e50 arch.cpu%s +D arch-dtb.ads 20250222165738 3bdb8188 arch.dtb%s +D arch-entrypoint.ads 20250222165738 3e52ad86 arch.entrypoint%s +D arch-entrypoint.adb 20250222165738 1772cf08 arch.entrypoint%b +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-limine.ads 20250222165738 8eb8e49c arch.limine%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D devices-uart.ads 20250222165738 15b33d8b devices.uart%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D i-c.ads 20240507065137 aac316ce interfaces.c%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D kernel_main.ads 20250222165738 fba3ee83 kernel_main%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-parame.ads 20240507065137 3597fc11 system.parameters%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 4 arch.ads +20K9*Arch 52e9 9|17r9 20r5 10|20r6 23r6 25r6 26r6 28r14 41r14 57r14 62r7 +. 67r5 +22E9*Boot_Memory_Type 27e24 10|51r13 +30m7*Start{32|67M9} 10|48r44 +31i7*Length{34|53I12} 10|49r32 +32e7*MemType{22E9} 10|51r39 +34A9*Boot_Memory_Map(29R9) +44R9*Boot_Information 51e14 10|30r18 +45a7*Cmdline{string} 10|65r36 +46i7*Cmdline_Len{integer} 10|65r55 +47a7*Memmap{34A9} 10|47r21 56r44 57r34 +48i7*Memmap_Len{integer} 10|47r39 56r62 57r52 +X 7 arch-cpu.ads +22K14*CPU 58e13 10|26w11 62r12 +50U14*Init_Cores 10|62s16 +X 8 arch-dtb.ads +20K14*DTB 46e13 10|25w11 41r19 +21V13*Init{boolean} 10|41s23 +X 9 arch-entrypoint.ads +17K14*Entrypoint 4|20k9 9|20l10 20e20 10|28b19 67l10 67t20 +18U14*Bootstrap_Main 10|29b14 66l8 66t22 +X 10 arch-entrypoint.adb +30r7 Info=30:50{4|44R9} +31a7 St1{25|55A12} 48m53 50r33 +31a12 St2{25|55A12} 49m41 50r47 +32i7 Stp_Len{natural} 48m58 49m46 +47r11 E{4|29R9} +X 12 arch-limine.ads +20K14*Limine 10|20w11 30r43 38r7 12|293e16 +22r4*Global_Info{4|44R9} 10|30r50 47r16 47r34 48r42 49r30 51r37 56r39 56r57 +. 57r29 57r47 65r31 65r50 +36U14*Translate_Proto 10|38s14 +X 13 arch-mmu.ads +22K14*MMU 10|23w11 57r19 13|250e13 +63V13*Init{boolean} 10|57s23 +X 14 devices.ads +22K9*Devices 10|19r6 35r7 14|279e12 +X 16 devices-uart.ads +21K17*UART 10|19w14 35r15 16|37e17 +23U14*Init_UART0 10|35s20 +X 17 interfac.ads +38K9*Interfaces 10|17w6 17r22 17|233e15 +84M9*Unsigned_64 10|48r17 49r17 +X 23 kernel_main.ads +17K9*Kernel_Main 10|18w6 65r7 23|26e16 +25U14*Entrypoint 10|65s19 +X 24 lib.ads +19K9*Lib 10|21r6 21r24 24r6 31r18 42r10 46r7 50r10 55r7 58r10 24|35e8 +X 25 lib-messages.ads +21K13*Messages 10|21w10 21r28 31r22 46r11 50r14 55r11 25|103e17 +41U14*Put_Line 10|46s20 50s23 55s20 +55A12*Translated_String{string} 10|31r31 +74U14*Image 10|48s10 49s10 +X 26 lib-panic.ads +21K13*Panic 10|24w10 42r14 58r14 26|39e14 +32U14*Hard_Panic 10|42s20 58s20 +X 28 memory.ads +19K9*Memory 10|22r6 56r7 28|36e11 +X 29 memory-physical.ads +20K16*Physical 10|22w13 56r14 29|60e20 +23U14*Init_Allocator 10|56s23 +X 32 system.ads +67M9*Address +X 34 s-stoele.ads +51I9*Storage_Offset +53I12*Storage_Count{51I9} +82M9*Integer_Address +87V13*To_Integer{82M9} 10|48s30 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__entrypoint__bootstrap_main 0 +GG EK_PROOF_DEPENDENCIES ada___arch__entrypoint__bootstrap_main 0 +GG EK_GLOBALS ada___arch__entrypoint__bootstrap_main local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__entrypoint arch proper_proof_in 0 proper_input 1 ada___arch__limine__global_info proper_output 0 refined_proof_in 0 refined_input 1 ada___arch__limine__global_info refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_integer kernel_main__entrypoint ada___arch__mmu__init ada___devices__uart__init_uart0 ada___arch__limine__translate_proto ada___lib__messages__put_line ada___lib__messages__image__2 ada___memory__physical__init_allocator ada___lib__panic__hard_panic ada___arch__dtb__init ada___arch__cpu__init_cores FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__limine__global_info LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__entrypoint 0 +GG EK_PROOF_DEPENDENCIES ada___arch__entrypoint 0 +GG EK_GLOBALS ada___arch__entrypoint local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__cpu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__limine TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__limine__get_physical_address FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__limine__translate_proto FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__cpu__init_cores FALSE FALSE FALSE FALSE TRUE ada___arch__cpu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__cpu__core_bootstrap FALSE FALSE FALSE FALSE TRUE ada___arch__cpu PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__cpu__init_common FALSE FALSE FALSE FALSE TRUE ada___arch__cpu PRIVATE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE kernel_main TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE kernel_main__entrypoint FALSE FALSE FALSE FALSE TRUE kernel_main VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__entrypoint TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__entrypoint__bootstrap_main FALSE FALSE FALSE FALSE TRUE ada___arch__entrypoint VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart__init_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart__write_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart__write_uart0__2 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__dtb TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__dtb__init FALSE FALSE FALSE FALSE TRUE ada___arch__dtb VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-entrypoint.cswi b/obj/gnatprove/phase1/arch-entrypoint.cswi new file mode 100644 index 0000000..dd2c5c1 --- /dev/null +++ b/obj/gnatprove/phase1/arch-entrypoint.cswi @@ -0,0 +1,28 @@ +20250222171635 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch-hooks.adb.stderr b/obj/gnatprove/phase1/arch-hooks.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-hooks.adb.stdout b/obj/gnatprove/phase1/arch-hooks.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-hooks.ali b/obj/gnatprove/phase1/arch-hooks.ali new file mode 100644 index 0000000..6a3c2c6 --- /dev/null +++ b/obj/gnatprove/phase1/arch-hooks.ali @@ -0,0 +1,114 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.hooks%b arch-hooks.adb 94b1c044 OO PK +W arch%s arch.ads arch.ali + +U arch.hooks%s arch-hooks.ads 540907cb OO PK +W arch%s arch.ads arch.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s +D arch-hooks.adb 20250222165738 bf60eb11 arch.hooks%b +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 2|17r9 33r5 3|17r14 44r5 +X 2 arch-hooks.ads +17K14*Hooks 1|20k9 2|33l10 33e15 3|17b19 44l10 44t15 +19V13*Devices_Hook{boolean} 3|18b13 21l8 21t20 +22V13*PRCTL_Hook{boolean} 22>25 22>41 3|23b13 28l8 28t18 +22i25 Code{natural} 3|23b25 24r28 +22m41 Arg{4|67M9} 3|23b41 25r28 +26U14*Panic_SMP_Hook 3|30b14 33l8 33t22 +29V13*Get_Active_Core_Count{positive} 3|35b13 38l8 38t29 +32U14*Register_RAM_Files 3|40b14 43l8 43t26 +X 4 system.ads +37K9*System 2|22r47 3|23r47 4|155e11 +67M9*Address 2|22r54 3|23r54 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__hooks__devices_hook 0 +GG EK_PROOF_DEPENDENCIES ada___arch__hooks__devices_hook 0 +GG EK_GLOBALS ada___arch__hooks__devices_hook local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__hooks__prctl_hook 0 +GG EK_PROOF_DEPENDENCIES ada___arch__hooks__prctl_hook 0 +GG EK_GLOBALS ada___arch__hooks__prctl_hook local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__hooks__panic_smp_hook 0 +GG EK_PROOF_DEPENDENCIES ada___arch__hooks__panic_smp_hook 0 +GG EK_GLOBALS ada___arch__hooks__panic_smp_hook local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__hooks__get_active_core_count 0 +GG EK_PROOF_DEPENDENCIES ada___arch__hooks__get_active_core_count 0 +GG EK_GLOBALS ada___arch__hooks__get_active_core_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__hooks__register_ram_files 0 +GG EK_PROOF_DEPENDENCIES ada___arch__hooks__register_ram_files 0 +GG EK_GLOBALS ada___arch__hooks__register_ram_files local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__hooks 0 +GG EK_PROOF_DEPENDENCIES ada___arch__hooks 0 +GG EK_GLOBALS ada___arch__hooks local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-hooks.cswi b/obj/gnatprove/phase1/arch-hooks.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/arch-hooks.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch-limine.adb.stderr b/obj/gnatprove/phase1/arch-limine.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-limine.adb.stdout b/obj/gnatprove/phase1/arch-limine.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-limine.ali b/obj/gnatprove/phase1/arch-limine.ali new file mode 100644 index 0000000..dcc68a2 --- /dev/null +++ b/obj/gnatprove/phase1/arch-limine.ali @@ -0,0 +1,393 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ACCESS_SUBPROGRAMS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.limine%b arch-limine.adb c074d595 OO PK +W arch%s arch.ads arch.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W system%s system.ads system.ali + +U arch.limine%s arch-limine.ads 74595acc OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali +W system%s system.ads system.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-limine.ads 20250222165738 8eb8e49c arch.limine%s +D arch-limine.adb 20250222165738 95f35688 arch.limine%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 3|20r9 293r5 4|21r14 123r5 +22E9*Boot_Memory_Type 27e24 4|55r20 +23n8*Memory_Free{22E9} 4|88r30 111r46 +24n8*Memory_Reserved{22E9} 4|91r30 100r30 +25n8*Memory_Kernel{22E9} 4|97r30 +26n8*Memory_ACPI_Reclaimable{22E9} 4|93r30 +27n8*Memory_ACPI_NVS{22E9} 4|95r30 +30m7*Start{9|67M9} 4|105m14 112r48 115r55 116m36 +31i7*Length{10|53I12} 4|106m14 113r36 118m36 119r39 +32e7*MemType{22E9} 4|107m14 111r36 +34A9*Boot_Memory_Map(29R9) +38m7*Start{9|67M9} 4|78m20 +39i7*Length{10|53I12} 4|79m20 +41A9*Boot_RAM_Files(37R9) +44R9*Boot_Information 51e14 3|22r18 +45a7*Cmdline{string} 4|63m19 +46i7*Cmdline_Len{integer} 4|64m19 +47a7*Memmap{34A9} 4|104m22 111r25 112r37 113r25 115r44 116m25 117r28 118m25 +. 119r28 +48i7*Memmap_Len{integer} 4|103m22 103r48 104r42 110r33 +49a7*RAM_Files{41A9} 4|77m28 +50i7*RAM_Files_Len{integer} 4|67m19 76m28 76r57 77r51 +X 3 arch-limine.ads +20K14*Limine 1|20k9 3|293l10 293e16 4|21b19 22r19 123l10 123t16 +22r4*Global_Info{1|44R9} 4|63m7 64m7 67m7 76m16 76r45 77m16 77r39 103m10 +. 103r36 104m10 104r30 110r21 111r13 112r25 113r13 115r32 116m13 117r16 118m13 +. 119r16 +28N4*Max_Sub_1MiB_Size 4|113r45 117r47 119r48 +29m4*Sub_1MiB_Region{9|67M9} 4|115m13 +32V13*Get_Physical_Address{9|67M9} 4|28b13 33l8 33t28 +36U14*Translate_Proto 4|35b14 122l8 122t23 +38N4*Limine_Common_Magic_1 223r8 227r8 231r8 235r8 239r8 243r8 247r8 251r8 +39N4*Limine_Common_Magic_2 223r31 227r31 231r31 235r31 239r31 243r31 247r31 +. 251r31 +41A9*Request_ID(5|84M9) 43r18 222r30 226r25 230r30 234r33 238r34 +. 242r22 246r26 250r22 +42R9*Request 46e15 156r15 260r30 267r26 274r21 281r22 288r22 +43a7*ID{41A9} 261m8 268m8 275m8 282m8 289m8 +44m7*Revision{5|84M9} 262m8 269m8 276m8 283m8 290m8 +45m7*Response{9|67M9} 263m8 270m8 277m8 284m8 291m8 4|30r50 37r54 43r58 52r49 +. 68r26 71r56 +48R9*Response 50e15 97r22 103r17 115r21 120r17 144r14 149r19 161r22 169r22 +. 205r22 211r19 217r18 +49m7*Revision{5|84M9} +52R9*Base_Revision 56e15 4|22r26 +53m7*ID_1{5|84M9} 4|23m8 +54m7*ID_2{5|84M9} 4|24m8 +55m7*Revision{5|84M9} 4|25m8 59r23 +58R9*Video_Mode 70e15 71r55 +59m7*Pitch{5|84M9} +60m7*Width{5|84M9} +61m7*Height{5|84M9} +62m7*BPP{5|73M9} +63m7*Memory_Model{5|70M9} +64m7*Red_Mask_Size{5|70M9} +65m7*Red_Mask_Shift{5|70M9} +66m7*Green_Mask_Size{5|70M9} +67m7*Green_Mask_Shift{5|70M9} +68m7*Blue_Mask_Size{5|70M9} +69m7*Blue_Mask_Shift{5|70M9} +71A9*Video_Mode_Arr(58R9) +73A9*Framebuffer_Padding(5|70M9) 87r26 +74R9*Framebuffer 92e15 93r39 94r60 +75m7*Address{9|67M9} +76m7*Width{5|84M9} +77m7*Height{5|84M9} +78m7*Pitch{5|84M9} +79m7*BPP{5|73M9} +80m7*Memory_Model{5|70M9} +81m7*Red_Mask_Size{5|70M9} +82m7*Red_Mask_Shift{5|70M9} +83m7*Green_Mask_Size{5|70M9} +84m7*Green_Mask_Shift{5|70M9} +85m7*Blue_Mask_Size{5|70M9} +86m7*Blue_Mask_Shift{5|70M9} +87a7*Unused{73A9} +88m7*EDID_Size{5|84M9} +89m7*EDID{9|67M9} +90m7*Mode_Count{5|84M9} +91m7*Modes{9|67M9} +93P9*Framebuffer_Acc(74R9) +94A9*Framebuffer_Arr(74R9)<5|84M9> +96R9*Framebuffer_Response 100e15 +97r7*Base{48R9} +98m7*Count{5|84M9} +99m7*Framebuffers{9|67M9} +102R9*Limine_File 108e15 110r39 +103r7*Base{48R9} +104m7*Address{9|67M9} 4|78r35 +105m7*Size{5|84M9} 4|79r50 +106m7*Path{9|67M9} +107m7*Cmdline{9|67M9} 4|38r70 +110P9*Limine_File_Acc(102R9) 111r60 116r21 +111A9*Limine_File_Arr(110P9)<5|84M9> 4|72r35 +114R9*Kernel_File_Response 117e15 4|36r18 +115r7*Base{48R9} +116p7*Kernel_File{110P9} 4|38r58 +119R9*Memmap_Response 123e15 4|51r18 +120r7*Base{48R9} +121m7*Count{5|84M9} 4|53r61 +122m7*Entries{9|67M9} 4|54r43 +125N4*LIMINE_MEMMAP_USABLE 4|87r18 +126N4*LIMINE_MEMMAP_RESERVED 4|89r18 +127N4*LIMINE_MEMMAP_ACPI_RECLAIMABLE 4|92r18 +128N4*LIMINE_MEMMAP_ACPI_NVS 4|94r18 +129N4*LIMINE_MEMMAP_BAD_MEMORY 4|90r18 +130N4*LIMINE_MEMMAP_BOOTLOADER_RECL 4|90r45 +131N4*LIMINE_MEMMAP_KERNEL_AND_MODS 4|96r18 +132N4*LIMINE_MEMMAP_FRAMEBUFFER 4|89r45 +134R9*Memmap_Entry 138e15 140r40 +135m7*Base{5|84M9} 4|105r58 +136m7*Length{5|84M9} 4|106r44 +137m7*EntryType{5|84M9} 4|86r19 +140P9*Memmap_Entry_Acc(134R9) 141r61 +141A9*Memmap_Entry_Arr(140P9)<5|84M9> 4|53r29 +143R9*RSDP_Response 146e15 +144r7*Base{48R9} +145m7*Addr{9|67M9} +148R9*Kernel_Address_Response 152e15 4|29r19 +149r7*Base{48R9} +150m7*Phys_Addr{9|67M9} 4|32r24 +151m7*Virt_Addr{9|67M9} +154N4*SMP_ENABLE_X2APIC +155R9*SMP_Request 158e14 +156r7*Base{42R9} +157m7*Flags{5|84M9} +160R9*SMP_Response 166e15 +161r7*Base{48R9} +162m7*Flags{5|81M9} +163m7*BSP_LAPIC_ID{5|81M9} +164m7*CPU_Count{5|84M9} +165m7*CPUs{9|67M9} +168R9*RISCV64_SMP_Response 174e15 +169r7*Base{48R9} +170m7*Flags{5|84M9} +171m7*BSP_Hart_ID{5|84M9} +172m7*CPU_Count{5|84M9} +173m7*CPUs{9|67M9} +176R9*SMP_CPU_Info 182e15 193r42 197r36 +177m7*Processor_ID{5|81M9} +178m7*LAPIC_ID{5|81M9} +179m7*Reserved{5|84M9} +180m7*Addr{9|67M9} +181m7*Extra_Arg{5|84M9} +184R9*RISCV64_SMP_CPU_Info 190e15 195r42 200r21 +185m7*Processor_ID{5|84M9} +186m7*Hart_ID{5|84M9} +187m7*Reserved{5|84M9} +188m7*Addr{9|67M9} +189m7*Extra_Arg{5|84M9} +192P9*Limine_SMP_Entrypoint 193^28 +193p28 Info(176R9) +194P9*Limine_RISCV64_SMP_Entrypoint 195^28 +195p28 Info(184R9) +197P9*CPU_Info_Acc(176R9) 198r57 +198A9*CPU_Info_Arr(197P9)<5|84M9> +199P9*RISCV64_CPU_Info_Acc(184R9) 202r42 +201A9*RISCV64_CPU_Info_Arr(199P9)<5|84M9> +204R9*Bootloader_Info_Response 208e15 4|42r19 +205r7*Base{48R9} +206m7*Name_Addr{9|67M9} 4|44r56 +207m7*Version_Addr{9|67M9} 4|47r56 +210R9*Modules_Response 214e15 4|70r24 +211r7*Base{48R9} +212m7*Mod_Count{5|84M9} 4|72r66 +213m7*Modules{9|67M9} 4|73r49 +216R9*DTB_Response 219e15 +217r7*Base{48R9} +218m7*DTB_Addr{9|67M9} +222a4*Framebuffer_ID{41A9} +226a4*Memmap_ID{41A9} 275r20 +230a4*Kernel_File_ID{41A9} 268r20 +234a4*Kernel_Address_ID{41A9} 282r20 +238a4*Bootloader_Info_ID{41A9} 261r20 +242a4*SMP_ID{41A9} +246a4*Modules_ID{41A9} 289r20 +250a4*DTB_ID{41A9} +260r4 Bootloader_Info_Request{42R9} 4|43r34 +267r4 Kernel_File_Request{42R9} 4|37r34 +274r4 Memmap_Request{42R9} 4|52r34 +281r4 Address_Request{42R9} 4|30r34 +288r4 Modules_Request{42R9} 4|68r10 71r40 +X 4 arch-limine.adb +22r4 Base_Request{3|52R9} 59r10 +29r7 PhysPonse{3|148R9} 32r14 +36r7 CmdPonse{3|114R9} 38r49 +38m7 Cmdline_Addr{9|67M9} 39r63 40r67 +39i7 Cmdline_Len{natural} 40r30 63r33 64r34 +40a7 Cmdline{string} 63r49 +42r7 InfoPonse{3|204R9} 44r46 47r46 +44m7 Name_Addr{9|67M9} 45r67 46r66 +45i7 Name_Len{natural} 46r32 +46a7 Boot_Name{string} 57r45 +47m7 Vers_Addr{9|67M9} 48r67 49r66 +48i7 Vers_Len{natural} 49r32 +49a7 Boot_Vers{string} 57r63 +51r7 MemPonse{3|119R9} 53r52 54r34 +53a7 Inner_MMap{3|141A9} 85r18 86r15 105r54 106r40 +55e7 Type_Entry{1|22E9} 88m16 91m16 93m16 95m16 97m16 100m16 107r25 +70r13 ModPonse{3|210R9} 72r57 73r40 +72a13 Inner_Mods{3|111A9} 75r24 78r31 79r46 +75p17 Ent=75:24{3|110P9} +85p11 Ent=85:18{3|140P9} +110i11 I{integer} 111r33 112r45 113r33 115r52 116r33 117r36 118r33 119r36 +X 5 interfac.ads +38K9*Interfaces 3|18w6 18r22 5|233e15 +70M9*Unsigned_8 3|63r26 64r26 65r26 66r26 67r26 68r26 69r26 73r50 80r26 81r26 +. 82r26 83r26 84r26 85r26 86r26 +73M9*Unsigned_16 3|62r26 79r26 +81M9*Unsigned_32 3|162r22 163r22 177r22 178r22 +84M9*Unsigned_64 3|41r41 44r18 49r18 53r18 54r18 55r18 59r26 60r26 61r26 +. 76r26 77r26 78r26 88r26 90r26 94r35 98r22 105r17 111r35 121r17 135r19 136r19 +. 137r19 141r36 157r15 164r22 170r22 171r22 172r22 179r22 181r22 185r22 186r22 +. 187r22 189r22 198r32 202r17 212r19 +X 6 lib.ads +19K9*Lib 4|18w6 19r6 39r42 45r46 48r46 57r7 60r10 99r16 6|35e8 +23V13*C_String_Length{natural} 4|39s46 45s50 48s50 +X 7 lib-messages.ads +21K13*Messages 4|19w10 57r11 60r14 99r20 7|103e17 +41U14*Put_Line 4|57s20 60s23 99s29 +X 9 system.ads +37K9*System 3|17w6 29r22 32r41 45r18 75r26 89r26 91r26 99r22 104r17 106r17 +. 107r17 122r17 145r14 150r19 151r19 165r22 173r22 180r22 188r22 206r22 207r22 +. 213r19 218r18 263r20 270r20 277r20 284r20 291r20 4|17w6 17r18 28r41 38r31 +. 44r28 47r28 68r38 9|155e11 +67M9*Address 3|29r29 32r48 45r25 75r33 89r33 91r33 99r29 104r24 106r24 107r24 +. 122r24 145r21 150r26 151r26 165r29 173r29 180r29 188r29 206r29 207r29 213r26 +. 218r25 4|28r48 38r38 44r35 47r35 +69m4*Null_Address{67M9} 3|263r27 270r27 277r27 284r27 291r27 4|68r45 +81V14*"="{boolean} 4|68r35 +X 10 s-stoele.ads +51I9*Storage_Offset +53I12*Storage_Count{51I9} 4|79r31 106r25 +67V14*"+"{9|67M9} 4|117r45 +82M9*Integer_Address 4|105r37 +84V13*To_Address{9|67M9} 4|105s25 +87V13*To_Integer{82M9} 4|112s13 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__limine__get_physical_address 0 +GG EK_PROOF_DEPENDENCIES ada___arch__limine__get_physical_address 0 +GG EK_GLOBALS ada___arch__limine__get_physical_address local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__limine arch proper_proof_in 0 proper_input 1 ada___arch__limine__address_request proper_output 0 refined_proof_in 0 refined_input 1 ada___arch__limine__address_request refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__limine__address_request LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__limine__translate_proto 0 +GG EK_PROOF_DEPENDENCIES ada___arch__limine__translate_proto 0 +GG EK_GLOBALS ada___arch__limine__translate_proto local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__limine arch proper_proof_in 0 proper_input 8 ada___arch__limine__base_request ada___arch__limine__global_info ada___arch__limine__sub_1mib_region ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__modules_request __HEAP proper_output 2 ada___arch__limine__global_info ada___arch__limine__sub_1mib_region refined_proof_in 0 refined_input 8 ada___arch__limine__base_request ada___arch__limine__global_info ada___arch__limine__sub_1mib_region ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__modules_request __HEAP refined_output 2 ada___arch__limine__global_info ada___arch__limine__sub_1mib_region calls_proof 0 calls 0 calls_conditional 4 ada___system__storage_elements__to_address ada___system__storage_elements__to_integer lib__c_string_length ada___lib__messages__put_line FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 7 ada___arch__limine__base_request ada___arch__limine__global_info ada___arch__limine__sub_1mib_region ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__modules_request LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__limine 0 +GG EK_PROOF_DEPENDENCIES ada___arch__limine 0 +GG EK_GLOBALS ada___arch__limine local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 6 ada___arch__limine__base_request ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__address_request ada___arch__limine__modules_request refined_initializes 6 ada___arch__limine__base_request ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__address_request ada___arch__limine__modules_request calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 8 ada___arch__limine__base_request ada___arch__limine__global_info ada___arch__limine__sub_1mib_region ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__address_request ada___arch__limine__modules_request TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__limine__get_physical_address FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__limine__translate_proto FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__limine TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_VOLATILES AR 0 AW 6 ada___arch__limine__base_request ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__address_request ada___arch__limine__modules_request ER 0 EW 0 +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-limine.cswi b/obj/gnatprove/phase1/arch-limine.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/arch-limine.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch-local.adb.stderr b/obj/gnatprove/phase1/arch-local.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-local.adb.stdout b/obj/gnatprove/phase1/arch-local.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-local.ali b/obj/gnatprove/phase1/arch-local.ali new file mode 100644 index 0000000..aac7687 --- /dev/null +++ b/obj/gnatprove/phase1/arch-local.ali @@ -0,0 +1,557 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.local%b arch-local.adb cd96d2d5 OO PK +W arch%s arch.ads arch.ali + +U arch.local%s arch-local.ads 24ce8638 OO PK +W arch%s arch.ads arch.ali +W arch.context%s arch-context.adb arch-context.ali +W scheduler%s scheduler.adb scheduler.ali +W userland%s userland.ads userland.ali +W userland.process%s userland-process.adb userland-process.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-local.ads 20250222165738 e5953d14 arch.local%s +D arch-local.adb 20250222165738 2803efc1 arch.local%b +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 4|19r6 21r9 40r5 5|17r14 66r5 +X 2 arch-context.ads +20K14*Context 70e17 4|19w11 32r15 5|39r15 +24M15*Core_Context{9|84M9} 4|32r23 5|39r23 +X 4 arch-local.ads +21K14*Local 1|20k9 4|40l10 40e15 5|17b19 66l10 66t15 +23U14*Reschedule_In 23>29 5|18b14 21l8 21t21 +23i29 Microseconds{natural} 5|18b29 +24U14*Reschedule_ASAP 5|23b14 26l8 26t23 +27V13*Fetch_TCB{19|67M9} 5|28b13 31l8 31t17 +28U14*Load_TCB 28>24 5|33b14 36l8 36t16 +28m24 TCB{19|67M9} 5|33b24 +31U14*Set_Stacks 32>8 33>8 5|38b14 44l8 44t18 +32m8 Core{2|24M15} 5|39b8 +33m8 Kernel_Stack{19|67M9} 5|40b8 +36V13*Get_Current_Thread{18|27I9} 5|47b13 50l8 50t26 +37V13*Get_Current_Process{25|33I9} 5|52b13 55l8 55t27 +38U14*Set_Current_Thread 38>34 5|57b14 60l8 60t26 +38i34 Thread{18|27I9} 5|57b34 +39U14*Set_Current_Process 39>35 5|62b14 65l8 65t27 +39i35 Proc{25|33I9} 5|62b35 +X 9 interfac.ads +84M9*Unsigned_64 +X 18 scheduler.ads +25K9*Scheduler 4|17w6 17r21 36r39 38r43 5|47r39 49r14 57r43 18|183e14 +27I9*TID 4|36r49 38r53 5|47r49 57r53 +29i4*Error_TID{27I9} 5|49r24 +X 19 system.ads +37K9*System 4|27r30 28r30 33r23 5|28r30 30r14 33r30 40r23 19|155e11 +67M9*Address 4|27r37 28r37 33r30 5|28r37 33r37 40r30 +69m4*Null_Address{67M9} 5|30r21 +X 22 userland.ads +17K9*Userland 4|18r6 37r40 39r42 5|52r40 54r14 62r42 22|23e13 +X 25 userland-process.ads +28K18*Process 4|18w15 37r49 39r51 5|52r49 54r23 62r51 25|677e21 +33I9*PID 4|37r57 39r59 5|52r57 62r59 +34i4*Error_PID{33I9} 5|54r31 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__local__reschedule_in 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local__reschedule_in 0 +GG EK_GLOBALS ada___arch__local__reschedule_in local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__local__reschedule_asap 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local__reschedule_asap 0 +GG EK_GLOBALS ada___arch__local__reschedule_asap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__local__fetch_tcb 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local__fetch_tcb 0 +GG EK_GLOBALS ada___arch__local__fetch_tcb local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__local__load_tcb 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local__load_tcb 0 +GG EK_GLOBALS ada___arch__local__load_tcb local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__local__set_stacks 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local__set_stacks 0 +GG EK_GLOBALS ada___arch__local__set_stacks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__local__get_current_thread 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local__get_current_thread 0 +GG EK_GLOBALS ada___arch__local__get_current_thread local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__local__get_current_process 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local__get_current_process 0 +GG EK_GLOBALS ada___arch__local__get_current_process local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__local__set_current_thread 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local__set_current_thread 0 +GG EK_GLOBALS ada___arch__local__set_current_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__local__set_current_process 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local__set_current_process 0 +GG EK_GLOBALS ada___arch__local__set_current_process local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__local 0 +GG EK_PROOF_DEPENDENCIES ada___arch__local 0 +GG EK_GLOBALS ada___arch__local local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-local.cswi b/obj/gnatprove/phase1/arch-local.cswi new file mode 100644 index 0000000..1286ce7 --- /dev/null +++ b/obj/gnatprove/phase1/arch-local.cswi @@ -0,0 +1,28 @@ +20250222171637 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch-mmu.adb.stderr b/obj/gnatprove/phase1/arch-mmu.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-mmu.adb.stdout b/obj/gnatprove/phase1/arch-mmu.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-mmu.ali b/obj/gnatprove/phase1/arch-mmu.ali new file mode 100644 index 0000000..b373aa3 --- /dev/null +++ b/obj/gnatprove/phase1/arch-mmu.ali @@ -0,0 +1,276 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.mmu%b arch-mmu.adb 13f79c7a OO PK +W arch%s arch.ads arch.ali + +U arch.mmu%s arch-mmu.ads 4f7708d3 OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D arch-mmu.adb 20250222165738 093ed671 arch.mmu%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 2|22r9 63r28 250r5 3|17r14 18r28 136r5 +34A9*Boot_Memory_Map(29R9) 2|63r33 3|18r33 +X 2 arch-mmu.ads +22K14*MMU 1|20k9 2|250l10 250e13 3|17b19 136l10 136t13 +26R9*Page_Permissions 32e14 122r25 144r25 163r24 3|69r25 86r25 103r24 +27b7*Is_User_Accesible{boolean} +28b7*Can_Read{boolean} +29b7*Can_Write{boolean} 129r27 151r27 169r27 +30b7*Can_Execute{boolean} 129r53 151r53 169r53 +31b7*Is_Global{boolean} +35E9*Caching_Model 39e20 123r25 146r25 164r24 3|70r25 88r25 104r24 +36n8*Write_Back{35E9} 123r42 146r42 164r41 3|70r42 88r42 104r41 +37n8*Write_Through{35E9} +38n8*Write_Combining{35E9} +39n8*Uncacheable{35E9} +42R9*Page_Table 43r34 205c12 208e17 +43P9*Page_Table_Acc(42R9) 58r19 70r31 70r54 75r42 81r32 97r29 118r25 140r25 +. 160r24 176r24 187r41 3|24r31 24r54 30r42 35r32 42r29 65r25 82r25 100r24 +. 115r24 126r41 +49N7*Page_Size 108r23 109r23 126r30 127r30 128r30 149r30 150r30 152r38 167r30 +. 168r30 181r30 182r30 +58p4*Kernel_Table{43P9} 64r41 +63V13*Init{boolean} 63>19 64r25 3|18b13 22l8 22t12 +63a19 Memmap{1|34A9} 3|18b19 19r28 +70V13*Fork_Table{43P9} 70>25 3|24b13 28l8 28t18 +70p25 Map{43P9} 71r19 3|24b25 25r28 +75U14*Destroy_Table 75=29 3|30b14 33l8 33t21 +75p29 Map{43P9} 76r19 76r40 3|30b29 32m7 +81V13*Make_Active{boolean} 81>26 3|35b13 39l8 39t19 +81p26 Map{43P9} 82r19 3|35b26 36r28 +96U14*Translate_Address 97>8 98>8 99>8 100<8 101<8 102<8 103<8 104<8 105<8 +. 3|41b14 62l8 62t25 +97p8 Map{43P9} 107r11 3|42b8 52r28 +98m8 Virtual{8|67M9} 108r11 3|43b8 53r28 +99i8 Length{9|53I12} 109r11 3|44b8 54r28 +100m8 Physical{8|67M9} 3|45b8 56m7 +101b8 Is_Mapped{boolean} 3|46b8 57m7 +102b8 Is_User_Accessible{boolean} 3|47b8 58m7 +103b8 Is_Readable{boolean} 3|48b8 59m7 +104b8 Is_Writeable{boolean} 3|49b8 60m7 +105b8 Is_Executable{boolean} 3|50b8 61m7 +117V13*Map_Range{boolean} 118>8 119>8 120>8 121>8 122>8 123>8 3|64b13 79l8 +. 79t17 +118p8 Map{43P9} 125r11 3|65b8 72r28 +119m8 Physical_Start{8|67M9} 126r11 3|66b8 73r28 +120m8 Virtual_Start{8|67M9} 127r11 3|67b8 74r28 +121i8 Length{9|53I12} 128r11 3|68b8 75r28 +122r8 Permissions{26R9} 129r15 129r41 3|69b8 76r28 +123e8 Caching{35E9} 3|70b8 +139U14*Map_Allocated_Range 140>8 141<8 142>8 143>8 144>8 145<8 146>8 3|81b14 +. 97l8 97t27 +140p8 Map{43P9} 148r11 3|82b8 90r28 +141m8 Physical_Start{8|67M9} 152r19 3|83b8 95m7 +142m8 Virtual_Start{8|67M9} 149r11 3|84b8 91r28 +143i8 Length{9|53I12} 150r11 3|85b8 92r28 +144r8 Permissions{26R9} 151r15 151r41 3|86b8 93r28 +145b8 Success{boolean} 3|87b8 96m7 +146e8 Caching{35E9} 3|88b8 +159V13*Remap_Range{boolean} 160>8 161>8 162>8 163>8 164>8 3|99b13 112l8 112t19 +160p8 Map{43P9} 166r11 3|100b8 106r28 +161m8 Virtual_Start{8|67M9} 167r11 3|101b8 107r28 +162i8 Length{9|53I12} 168r11 3|102b8 108r28 +163r8 Permissions{26R9} 169r15 169r41 3|103b8 109r28 +164e8 Caching{35E9} 3|104b8 +175V13*Unmap_Range{boolean} 176>8 177>8 178>8 3|114b13 124l8 124t19 +176p8 Map{43P9} 180r11 3|115b8 119r28 +177m8 Virtual_Start{8|67M9} 181r11 3|116b8 120r28 +178i8 Length{9|53I12} 182r11 3|117b8 121r28 +187V13*Get_User_Mapped_Size{4|84M9} 187>35 3|126b13 130l8 130t28 +187p35 Map{43P9} 188r19 3|126b35 127r28 +191R9*Virtual_Statistics 195e14 198r42 3|132r42 +192m7*Kernel_Usage{7|20M9} +193m7*Table_Usage{7|20M9} +194m7*Poison_Usage{7|20M9} +198U14*Get_Statistics 198<30 3|132b14 135l8 135t22 +198r30 Stats{191R9} 3|132b30 134m7 +203A12 Page_Level(4|84M9) 204r37 206r18 207r18 +204P12 Page_Level_Acc(203A12) +206a10*TTBR0{203A12} +207a10*TTBR1{203A12} +X 4 interfac.ads +38K9*Interfaces 2|17w6 17r22 4|233e15 +84M9*Unsigned_64 2|187r64 203r46 3|126r64 +X 5 lib.ads +19K9*Lib 2|20r6 5|35e8 +X 6 lib-synchronization.ads +20K13*Synchronization 2|20w10 6|66e24 +X 7 memory.ads +19K9*Memory 2|19w6 19r22 192r22 193r22 194r22 7|36e11 +20M9*Size 2|192r29 193r29 194r29 +X 8 system.ads +37K9*System 2|18w6 18r22 98r29 100r33 119r25 120r25 141r29 142r25 161r24 +. 177r24 3|43r29 45r33 56r20 66r25 67r25 83r29 84r25 95r25 101r24 116r24 +. 8|155e11 +67M9*Address 2|98r36 100r40 119r32 120r32 141r36 142r32 161r31 177r31 3|43r36 +. 45r40 66r32 67r32 83r36 84r32 101r31 116r31 +69m4*Null_Address{67M9} 3|56r27 95r32 +X 9 s-stoele.ads +51I9*Storage_Offset +53I12*Storage_Count{51I9} 2|99r29 121r25 143r25 162r24 178r24 3|44r29 68r25 +. 85r25 102r24 117r24 +75V14*"mod"{51I9} 2|108r19 126r26 127r26 149r26 152r34 167r26 181r26 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__mmu__init 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__init 0 +GG EK_GLOBALS ada___arch__mmu__init local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 1 ada___arch__mmu__kernel_table proper_input 0 proper_output 0 refined_proof_in 1 ada___arch__mmu__kernel_table refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__mmu__kernel_table LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__fork_table 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__fork_table 0 +GG EK_GLOBALS ada___arch__mmu__fork_table local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__destroy_table 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__destroy_table 0 +GG EK_GLOBALS ada___arch__mmu__destroy_table local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__make_active 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__make_active 0 +GG EK_GLOBALS ada___arch__mmu__make_active local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__translate_address 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__translate_address 0 +GG EK_GLOBALS ada___arch__mmu__translate_address local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__map_range 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__map_range 0 +GG EK_GLOBALS ada___arch__mmu__map_range local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__map_allocated_range 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__map_allocated_range 0 +GG EK_GLOBALS ada___arch__mmu__map_allocated_range local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__remap_range 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__remap_range 0 +GG EK_GLOBALS ada___arch__mmu__remap_range local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__unmap_range 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__unmap_range 0 +GG EK_GLOBALS ada___arch__mmu__unmap_range local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__get_user_mapped_size 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__get_user_mapped_size 0 +GG EK_GLOBALS ada___arch__mmu__get_user_mapped_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu__get_statistics 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu__get_statistics 0 +GG EK_GLOBALS ada___arch__mmu__get_statistics local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__mmu 0 +GG EK_PROOF_DEPENDENCIES ada___arch__mmu 0 +GG EK_GLOBALS ada___arch__mmu local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___arch__mmu__kernel_table refined_initializes 1 ada___arch__mmu__kernel_table calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 ada___arch__mmu__kernel_table TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-mmu.cswi b/obj/gnatprove/phase1/arch-mmu.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/arch-mmu.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch-snippets.adb.stderr b/obj/gnatprove/phase1/arch-snippets.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-snippets.adb.stdout b/obj/gnatprove/phase1/arch-snippets.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-snippets.ali b/obj/gnatprove/phase1/arch-snippets.ali new file mode 100644 index 0000000..d4e436b --- /dev/null +++ b/obj/gnatprove/phase1/arch-snippets.ali @@ -0,0 +1,175 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.snippets%b arch-snippets.adb a0738c2c OO PK +W arch%s arch.ads arch.ali +W system%s system.ads system.ali +W system.machine_code%s s-maccod.ads s-maccod.ali + +U arch.snippets%s arch-snippets.ads eb8c33bc OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali +W memory%s memory.ads memory.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-snippets.ads 20250222165738 3613a65c arch.snippets%s +D arch-snippets.adb 20250222165738 5baa226e arch.snippets%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-maccod.ads 20240507065137 cdca081e system.machine_code%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 2|20r9 81r5 3|19r14 65r5 +X 2 arch-snippets.ads +20K14*Snippets 1|20k9 2|81l10 81e18 3|19b19 65l10 65t18 +26U14*HCF 3|20b14 26l8 26t11 +29U14*Enable_Interrupts 3|28b14 31l8 31t25 +30U14*Disable_Interrupts 3|23s10 33b14 36l8 36t26 +33U14*Wait_For_Interrupt 3|24s10 38b14 41l8 41t26 +37U14*Pause 3|43b14 46l8 46t13 +46V16*Read_SStatus{4|84M9} 3|30s22 35s22 48b13 56l8 56t20 +47U17*Write_SStatus 47>32 3|30s7 35s7 58b14 64l8 64t21 +47m32 Value{4|84M9} 3|58b29 61r52 +X 3 arch-snippets.adb +49m7 Value{4|84M9} 52m54 52r54 55r14 +X 4 interfac.ads +38K9*Interfaces 2|17w6 17r22 4|233e15 +84M9*Unsigned_64 2|46r36 47r40 3|48r33 49r15 52r24 58r37 61r24 +X 5 memory.ads +19K9*Memory 2|18w6 18r22 5|36e11 +X 6 system.ads +37K9*System 3|17r6 17r31 6|155e11 +X 7 s-maccod.ads +36K16*Machine_Code 3|17w13 17r38 7|133e24 +85U14*Asm 3|40s7 51s7 60s7 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__snippets__hcf 2 ada___arch__snippets__disable_interrupts ada___arch__snippets__wait_for_interrupt +GG EK_PROOF_DEPENDENCIES ada___arch__snippets__hcf 0 +GG EK_GLOBALS ada___arch__snippets__hcf local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__snippets__enable_interrupts 2 ada___arch__snippets__read_sstatus ada___arch__snippets__write_sstatus +GG EK_PROOF_DEPENDENCIES ada___arch__snippets__enable_interrupts 0 +GG EK_GLOBALS ada___arch__snippets__enable_interrupts local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__snippets__disable_interrupts 2 ada___arch__snippets__read_sstatus ada___arch__snippets__write_sstatus +GG EK_PROOF_DEPENDENCIES ada___arch__snippets__disable_interrupts 0 +GG EK_GLOBALS ada___arch__snippets__disable_interrupts local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__snippets__wait_for_interrupt 0 +GG EK_PROOF_DEPENDENCIES ada___arch__snippets__wait_for_interrupt 0 +GG EK_GLOBALS ada___arch__snippets__wait_for_interrupt local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__snippets__pause 0 +GG EK_PROOF_DEPENDENCIES ada___arch__snippets__pause 0 +GG EK_GLOBALS ada___arch__snippets__pause local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__snippets__read_sstatus 0 +GG EK_PROOF_DEPENDENCIES ada___arch__snippets__read_sstatus 0 +GG EK_GLOBALS ada___arch__snippets__read_sstatus local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__snippets__write_sstatus 0 +GG EK_PROOF_DEPENDENCIES ada___arch__snippets__write_sstatus 0 +GG EK_GLOBALS ada___arch__snippets__write_sstatus local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__snippets 0 +GG EK_PROOF_DEPENDENCIES ada___arch__snippets 0 +GG EK_GLOBALS ada___arch__snippets local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__disable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__machine_code__asm__7 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__pause FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__machine_code__asm__3 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__read_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__machine_code__asm__8 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__write_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__machine_code TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__machine_code__asm__4 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__machine_code__asm__5 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__machine_code__asm FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__machine_code__asm__6 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__hcf FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__enable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__machine_code__asm__2 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-snippets.cswi b/obj/gnatprove/phase1/arch-snippets.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/arch-snippets.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/arch.ads.stderr b/obj/gnatprove/phase1/arch.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch.ads.stdout b/obj/gnatprove/phase1/arch.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch.ali b/obj/gnatprove/phase1/arch.ali new file mode 100644 index 0000000..90728bf --- /dev/null +++ b/obj/gnatprove/phase1/arch.ali @@ -0,0 +1,105 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch%s arch.ads a72e9379 OO PK +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52l5 52e9 +22E9*Boot_Memory_Type 27e24 32r17 +23n8*Memory_Free{22E9} +24n8*Memory_Reserved{22E9} +25n8*Memory_Kernel{22E9} +26n8*Memory_ACPI_Reclaimable{22E9} +27n8*Memory_ACPI_NVS{22E9} +29R9*Boot_Memory_Region 33e14 34r56 +30m7*Start{2|67M9} +31i7*Length{3|53I12} +32e7*MemType{22E9} +34A9*Boot_Memory_Map(29R9) 47r23 +37R9*Boot_RAM_File 40e14 41r55 +38m7*Start{2|67M9} +39i7*Length{3|53I12} +41A9*Boot_RAM_Files(37R9) 49r23 +44R9*Boot_Information 51e14 +45a7*Cmdline{string} +46i7*Cmdline_Len{integer} +47a7*Memmap{34A9} +48i7*Memmap_Len{integer} +49a7*RAM_Files{41A9} +50i7*RAM_Files_Len{integer} +X 2 system.ads +37K9*System 1|17w6 18r6 18r35 30r17 38r16 2|155e11 +67M9*Address 1|30r24 38r23 +X 3 s-stoele.ads +40K16*Storage_Elements 1|18w13 18r42 3|90e28 +51I9*Storage_Offset +53I12*Storage_Count{51I9} 1|31r17 39r16 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS arch 0 +GG EK_PROOF_DEPENDENCIES arch 0 +GG EK_GLOBALS arch local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch.cswi b/obj/gnatprove/phase1/arch.cswi new file mode 100644 index 0000000..dd2c5c1 --- /dev/null +++ b/obj/gnatprove/phase1/arch.cswi @@ -0,0 +1,28 @@ +20250222171635 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/config.ads.stderr b/obj/gnatprove/phase1/config.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/config.ads.stdout b/obj/gnatprove/phase1/config.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/config.ali b/obj/gnatprove/phase1/config.ali new file mode 100644 index 0000000..1541b70 --- /dev/null +++ b/obj/gnatprove/phase1/config.ali @@ -0,0 +1,64 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U config%s config.ads 5d21f3bf OO PK + +D config.ads 20250222165738 5d21f3bf config%s +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 config.ads +17K9*Config 29l5 29e11 +22a4*Name{string} +23a4*Version{string} +24a4*Arch_Name{string} +25a4*Bug_Site{string} +28b4*Support_Alloc_Only{boolean} + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS config 0 +GG EK_PROOF_DEPENDENCIES config 0 +GG EK_GLOBALS config local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE config TRUE FALSE FALSE FALSE FALSE __standard +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/config.cswi b/obj/gnatprove/phase1/config.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/config.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/devices-console.adb.stderr b/obj/gnatprove/phase1/devices-console.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-console.adb.stdout b/obj/gnatprove/phase1/devices-console.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-console.ali b/obj/gnatprove/phase1/devices-console.ali new file mode 100644 index 0000000..0b9fed3 --- /dev/null +++ b/obj/gnatprove/phase1/devices-console.ali @@ -0,0 +1,235 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.console%b devices-console.adb d3e70226 OO PK +W arch%s arch.ads arch.ali +W arch.debug%s arch-debug.adb arch-debug.ali +W devices%s devices.adb devices.ali + +U devices.console%s devices-console.ads c390c2b6 OO PK +W devices%s devices.adb devices.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-debug.ads 20250222165738 7987b5ed arch.debug%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-console.ads 20250222165738 37ce0dbf devices.console%s +D devices-console.adb 20250222165738 9daeba74 devices.console%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 6|17r6 51r10 52r10 73r7 +X 2 arch-debug.ads +19K14*Debug 49e15 6|17w11 51r15 52r15 73r12 +24b4*Supports_Read{boolean} 6|51r21 +28U14*Read 6|52s21 +40U14*Print 6|73s18 +X 4 devices.ads +22K9*Devices 279e12 5|17r9 39r5 6|19r14 77r5 +29A9*Operation_Data(7|70M9) 5|27r26 35r22 6|42r26 64r22 +34A9*UUID(7|70M9) +39R9*Resource 80e14 6|21r16 +40m7*Data{11|67M9} 6|24m11 +41a7*ID{34A9} 6|25m11 +42b7*Is_Block{boolean} 6|26m11 +43i7*Block_Size{natural} 6|27m11 +44m7*Block_Count{7|84M9} 6|28m11 +46p7*Read 6|29m11 +53p7*Write 6|30m11 +60p7*Sync(boolean) 6|31m11 +61p7*Sync_Range(boolean) 6|32m11 +65p7*IO_Control(boolean) 6|33m11 +69p7*Mmap(boolean) 6|34m11 +75p7*Poll 6|35m11 +98U14*Register 6|36s7 +145V13*Is_Initialized{boolean} 5|20s19 +X 5 devices-console.ads +17K17*Console 4|22k9 5|39l13 39e20 6|19b22 77l13 77t20 +19U14*Init 19<20 6|20b14 37l8 37t12 +19b20 Success{boolean} 6|20b20 36m36 +24U14 Read 25>8 26>8 27<8 28<8 29<8 30>8 6|29r26 39b14 59l8 59t12 +25m8 Key{11|67M9} 6|40b8 47r28 +26m8 Offset{7|84M9} 6|41b8 48r28 +27a8 Data{4|29A9} 6|42b8 52m27 53r23 +28i8 Ret_Count{natural} 6|43b8 53m10 56m10 +29b8 Success{boolean} 6|44b8 54m10 57m10 +30b8 Is_Blocking{boolean} 6|45b8 49r28 +32U14 Write 33>8 34>8 35>8 36<8 37<8 38>8 6|30r26 61b14 76l8 76t13 +33m8 Key{11|67M9} 6|62b8 69r28 +34m8 Offset{7|84M9} 6|63b8 70r28 +35a8 Data{4|29A9} 6|64b8 73r25 74r20 +36i8 Ret_Count{natural} 6|65b8 74m7 +37b8 Success{boolean} 6|66b8 75m7 +38b8 Is_Blocking{boolean} 6|67b8 71r28 +X 6 devices-console.adb +21r7 Device{4|39R9} 23m7 36r17 +X 7 interfac.ads +70M9*Unsigned_8 +84M9*Unsigned_64 5|26r22 34r22 6|41r22 63r22 +X 11 system.ads +37K9*System 5|25r22 33r22 6|24r26 40r22 62r22 11|155e11 +67M9*Address 5|25r29 33r29 6|40r29 62r29 +69m4*Null_Address{67M9} 6|24r33 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___devices__console__init 2 devices__register devices__is_initialized +GG EK_PROOF_DEPENDENCIES ada___devices__console__init 2 ada___devices__console__read ada___devices__console__write +GG EK_GLOBALS ada___devices__console__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__console devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 1 devices__is_initialized calls 1 devices__register calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__console__read 0 +GG EK_PROOF_DEPENDENCIES ada___devices__console__read 0 +GG EK_GLOBALS ada___devices__console__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__console devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__console__write 1 ada___arch__debug__print__3 +GG EK_PROOF_DEPENDENCIES ada___devices__console__write 0 +GG EK_GLOBALS ada___devices__console__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__console devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___arch__debug__print__3 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__console 0 +GG EK_PROOF_DEPENDENCIES ada___devices__console 0 +GG EK_GLOBALS ada___devices__console local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__console TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__console__init FALSE FALSE FALSE FALSE TRUE ada___devices__console VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__read FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___devices__console__read FALSE FALSE FALSE FALSE TRUE ada___devices__console PRIVATE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__print FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__print__2 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__print__3 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__console__write FALSE FALSE FALSE FALSE TRUE ada___devices__console PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-console.cswi b/obj/gnatprove/phase1/devices-console.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/devices-console.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/devices-loopback.adb.stderr b/obj/gnatprove/phase1/devices-loopback.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-loopback.adb.stdout b/obj/gnatprove/phase1/devices-loopback.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-loopback.ali b/obj/gnatprove/phase1/devices-loopback.ali new file mode 100644 index 0000000..85154f5 --- /dev/null +++ b/obj/gnatprove/phase1/devices-loopback.ali @@ -0,0 +1,391 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.loopback%b devices-loopback.adb e9e38411 OO PK +W devices%s devices.adb devices.ali +W devices.netinter%s devices-netinter.ads devices-netinter.ali +W networking%s networking.adb networking.ali +W networking.interfaces%s networking-interfaces.adb networking-interfaces.ali +W scheduler%s scheduler.adb scheduler.ali +Z system%s system.ads system.ali + +U devices.loopback%s devices-loopback.ads cd6acf4d OO PK +W devices%s devices.adb devices.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-loopback.ads 20250222165738 39340044 devices.loopback%s +D devices-loopback.adb 20250222165738 8c05de28 devices.loopback%b +D devices-netinter.ads 20250222165738 a12468cd devices.netinter%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D networking-arp.ads 20250222165738 eec21925 networking.arp%s +D networking-interfaces.ads 20250222165738 9c034257 networking.interfaces%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 5 devices.ads +22K9*Devices 279e12 6|17r9 52r5 7|19r6 21r14 133r5 +29A9*Operation_Data(9|70M9) 6|24r31 35r26 43r22 7|59r26 89r22 +34A9*UUID(9|70M9) +39R9*Resource 80e14 7|23r16 +40m7*Data{17|67M9} 7|30m11 +41a7*ID{34A9} 7|31m11 +42b7*Is_Block{boolean} 7|32m11 +43i7*Block_Size{natural} 7|33m11 +44m7*Block_Count{9|84M9} 7|34m11 +46p7*Read 7|35m11 +53p7*Write 7|36m11 +60p7*Sync(boolean) 7|37m11 +61p7*Sync_Range(boolean) 7|38m11 +65p7*IO_Control(boolean) 7|39m11 +69p7*Mmap(boolean) 7|40m11 +75p7*Poll 7|41m11 +83I9*Device_Handle 7|24r16 +98U14*Register 7|42s7 +105V13*Fetch{83I9} 7|44s17 +145V13*Is_Initialized{boolean} 6|20s19 +X 6 devices-loopback.ads +17K17*Loopback 5|22k9 6|52l13 52e21 7|21b22 133l13 133t21 +19U14*Init 19<20 7|22b14 54l8 54t12 +19b20 Success{boolean} 7|22b20 42m37 43r10 51m29 52m51 +24A12 Loopback_Buffer{5|29A9} 25r39 7|26r23 +25P9 Loopback_Buffer_Acc(24A12) 27r14 +26R9 Loopback_Data 29e14 30r37 7|25r50 66r13 96r13 +27p7*Data{25P9} 7|26m11 74r17 78r22 102r29 103r14 +28i7*Len{natural} 7|27m11 68r17 72r28 73r47 74r32 75r27 76m14 80m14 80r25 +. 98r17 104m14 +30P9 Loopback_Data_Acc(26R9) 7|25r25 +32U14 Read 33>8 34>8 35<8 36<8 37<8 38>8 7|35r26 56b14 84l8 84t12 +33m8 Key{17|67M9} 7|57b8 66r51 +34m8 Offset{9|84M9} 7|58b8 64r28 +35a8 Data{5|29A9} 7|59b8 72r10 73m10 73r16 73r30 78m10 78r33 79r23 80r31 +36i8 Ret_Count{natural} 7|60b8 75m10 79m10 +37b8 Success{boolean} 7|61b8 83m7 +38b8 Is_Blocking{boolean} 7|62b8 65r28 +40U14 Write 41>8 42>8 43>8 44<8 45<8 46>8 7|36r26 86b14 111l8 111t13 +41m8 Key{17|67M9} 7|87b8 96r51 +42m8 Offset{9|84M9} 7|88b8 94r28 +43a8 Data{5|29A9} 7|89b8 102r10 103r25 103r41 104r21 105r23 +44i8 Ret_Count{natural} 7|90b8 105m10 108m10 +45b8 Success{boolean} 7|91b8 106m10 109m10 +46b8 Is_Blocking{boolean} 7|92b8 95r28 +48V13 IO_Control{boolean} 49>8 50>8 51>8 7|39r26 113b13 132l8 132t18 +49m8 Data{17|67M9} 7|114b8 118r28 +50m8 Request{9|84M9} 7|115b8 120r12 +51m8 Argument{17|67M9} 7|116b8 123r70 +X 7 devices-loopback.adb +23r7 Device{5|39R9} 29m7 42r17 +24i7 Dev{5|83I9} 44m10 46r29 52r39 +25p7 Data{6|30P9} 30r26 +66r7 Dev{6|26R9} 68r13 72r24 73r43 74r13 74r28 75r23 76m10 78r18 80m10 80r21 +96r7 Dev{6|26R9} 98r13 102r25 103m10 103r10 104m10 +123a16 Addr{13|22A9} 125m16 +X 8 devices-netinter.ads +17K17*NetInter 7|19w14 121r15 8|20e21 +19N4*NET_GETMAC 7|121r24 +X 9 interfac.ads +70M9*Unsigned_8 +84M9*Unsigned_64 6|34r22 42r22 50r19 7|58r22 88r22 115r19 +X 13 networking.ads +20K9*Networking 7|17r6 45r10 52r10 123r23 13|55e15 +22A9*MAC_Address(9|70M9) 7|123r34 +X 15 networking-interfaces.ads +20K20*Interfaces 7|17w17 45r21 52r21 15|107e26 +33U14*Register_Interface 7|45s32 +56U14*Block 7|52s32 +X 16 scheduler.ads +25K9*Scheduler 7|18w6 69r10 99r10 16|183e14 +74U14*Yield_If_Able 7|69s20 99s20 +X 17 system.ads +37K9*System 6|33r22 41r22 49r19 51r19 7|57r22 87r22 114r19 116r19 17|155e11 +67M9*Address 6|33r29 41r29 49r26 51r26 7|57r29 87r29 114r26 116r26 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___devices__loopback__init 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES ada___devices__loopback__init 1 devices__is_initialized +GG EK_GLOBALS ada___devices__loopback__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__loopback devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 5 devices__register devices__fetch devices__is_initialized ada___networking__interfaces__register_interface ada___networking__interfaces__block FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__loopback__read 1 scheduler__yield_if_able +GG EK_PROOF_DEPENDENCIES ada___devices__loopback__read 0 +GG EK_GLOBALS ada___devices__loopback__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__loopback devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__loopback__write 1 scheduler__yield_if_able +GG EK_PROOF_DEPENDENCIES ada___devices__loopback__write 0 +GG EK_GLOBALS ada___devices__loopback__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__loopback devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__loopback__io_control 0 +GG EK_PROOF_DEPENDENCIES ada___devices__loopback__io_control 0 +GG EK_GLOBALS ada___devices__loopback__io_control local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__loopback devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__loopback 0 +GG EK_PROOF_DEPENDENCIES ada___devices__loopback 0 +GG EK_GLOBALS ada___devices__loopback local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__register_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__netinter TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__loopback TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___devices__loopback__init FALSE FALSE FALSE FALSE TRUE ada___devices__loopback VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__block FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__loopback__read FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__loopback__write FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__loopback__io_control FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-loopback.cswi b/obj/gnatprove/phase1/devices-loopback.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/devices-loopback.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/devices-streams.adb.stderr b/obj/gnatprove/phase1/devices-streams.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-streams.adb.stdout b/obj/gnatprove/phase1/devices-streams.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-streams.ali b/obj/gnatprove/phase1/devices-streams.ali new file mode 100644 index 0000000..269d4ca --- /dev/null +++ b/obj/gnatprove/phase1/devices-streams.ali @@ -0,0 +1,294 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.streams%b devices-streams.adb 65916951 OO PK +W cryptography%s cryptography.ads cryptography.ali +W cryptography.random%s cryptography-random.adb cryptography-random.ali +W devices%s devices.adb devices.ali + +U devices.streams%s devices-streams.ads 4aac97e4 OO PK +W devices%s devices.adb devices.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D cryptography.ads 20250222165738 8132c7fc cryptography%s +D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-streams.ads 20250222165738 bef258ed devices.streams%s +D devices-streams.adb 20250222165738 24022e1a devices.streams%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 3 cryptography.ads +17K9*Cryptography 18e17 7|17r6 159r7 159r38 177r10 +X 4 cryptography-random.ads +19K22*Random 40e24 7|17w19 159r20 159r51 177r23 +21A9*Crypto_Data(8|70M9) 7|159r58 +22U14*Fill_Data 7|159s27 +25U14*Feed_Entropy 7|177s30 +X 5 devices.ads +22K9*Devices 279e12 6|17r9 71r5 7|19r14 186r5 +29A9*Operation_Data(8|70M9) 6|27r26 35r22 43r26 51r22 59r26 67r22 +. 7|83r26 101r22 117r26 134r22 150r26 167r22 +34A9*UUID(8|70M9) +40m7*Data{12|67M9} 7|26m12 39m12 52m12 65m12 +41a7*ID{34A9} 7|27m12 40m12 53m12 66m12 +42b7*Is_Block{boolean} 7|28m12 41m12 54m12 67m12 +43i7*Block_Size{natural} 7|29m12 42m12 55m12 68m12 +44m7*Block_Count{8|84M9} 7|30m12 43m12 56m12 69m12 +46p7*Read 7|31m12 44m12 57m12 70m12 +53p7*Write 7|32m12 45m12 58m12 71m12 +60p7*Sync(boolean) 7|33m12 46m12 59m12 72m12 +61p7*Sync_Range(boolean) 7|34m12 47m12 60m12 73m12 +65p7*IO_Control(boolean) 7|35m12 48m12 61m12 74m12 +69p7*Mmap(boolean) 7|36m12 49m12 62m12 75m12 +75p7*Poll 7|37m12 50m12 63m12 76m12 +98U14*Register 7|25s7 38s7 51s7 64s7 +145V13*Is_Initialized{boolean} 6|20s19 +X 6 devices-streams.ads +17K17*Streams 5|22k9 6|71l13 71e20 7|19b22 186l13 186t20 +19U14*Init 19<20 7|22b14 78l8 78t12 +19b20 Success{boolean} 7|22b20 77m7 +24U14 Null_Read 25>8 26>8 27<8 28<8 29<8 30>8 7|31r27 80b14 96l8 96t17 +25m8 Key{12|67M9} 7|81b8 88r28 +26m8 Offset{8|84M9} 7|82b8 89r28 +27a8 Data{5|29A9} 7|83b8 90r28 93m7 +28i8 Ret_Count{natural} 7|84b8 94m7 +29b8 Success{boolean} 7|85b8 95m7 +30b8 Is_Blocking{boolean} 7|86b8 91r28 +32U14 Null_Write 33>8 34>8 35>8 36<8 37<8 38>8 7|32r27 98b14 112l8 112t18 +33m8 Key{12|67M9} 7|99b8 106r28 +34m8 Offset{8|84M9} 7|100b8 107r28 +35a8 Data{5|29A9} 7|101b8 110r20 +36i8 Ret_Count{natural} 7|102b8 110m7 +37b8 Success{boolean} 7|103b8 111m7 +38b8 Is_Blocking{boolean} 7|104b8 108r28 +40U14 Zero_Read 41>8 42>8 43<8 44<8 45<8 46>8 7|44r27 114b14 129l8 129t17 +41m8 Key{12|67M9} 7|115b8 122r28 +42m8 Offset{8|84M9} 7|116b8 123r28 +43a8 Data{5|29A9} 7|117b8 126m7 127r20 +44i8 Ret_Count{natural} 7|118b8 127m7 +45b8 Success{boolean} 7|119b8 128m7 +46b8 Is_Blocking{boolean} 7|120b8 124r28 +48U14 Zero_Write 49>8 50>8 51>8 52<8 53<8 54>8 7|45r27 131b14 145l8 145t18 +49m8 Key{12|67M9} 7|132b8 139r28 +50m8 Offset{8|84M9} 7|133b8 140r28 +51a8 Data{5|29A9} 7|134b8 143r20 +52i8 Ret_Count{natural} 7|135b8 143m7 +53b8 Success{boolean} 7|136b8 144m7 +54b8 Is_Blocking{boolean} 7|137b8 141r28 +56U14 Random_Read 57>8 58>8 59<8 60<8 61<8 62>8 7|57r27 70r27 147b14 162l8 +. 162t19 +57m8 Key{12|67M9} 7|148b8 155r28 +58m8 Offset{8|84M9} 7|149b8 156r28 +59a8 Data{5|29A9} 7|150b8 159m71 159r71 160r20 +60i8 Ret_Count{natural} 7|151b8 160m7 +61b8 Success{boolean} 7|152b8 161m7 +62b8 Is_Blocking{boolean} 7|153b8 157r28 +64U14 Random_Write 65>8 66>8 67>8 68<8 69<8 70>8 7|58r27 71r27 164b14 185l8 +. 185t20 +65m8 Key{12|67M9} 7|165b8 172r28 +66m8 Offset{8|84M9} 7|166b8 173r28 +67a8 Data{5|29A9} 7|167b8 176r10 178r39 178r45 179r39 179r45 180r39 180r45 +. 181r39 181r45 183r20 +68i8 Ret_Count{natural} 7|168b8 183m7 +69b8 Success{boolean} 7|169b8 184m7 +70b8 Is_Blocking{boolean} 7|170b8 174r28 +X 7 devices-streams.adb +23b7 Success_1{boolean} 37m42 77r18 +23b18 Success_2{boolean} 50m42 77r32 +23b29 Success_3{boolean} 63m44 77r46 +23b40 Success_4{boolean} 76m45 77r60 +X 8 interfac.ads +70M9*Unsigned_8 +81M9*Unsigned_32 7|178r26 179r26 180r26 181r26 +84M9*Unsigned_64 6|26r22 34r22 42r22 50r22 58r22 66r22 7|82r22 100r22 116r22 +. 133r22 149r22 166r22 +141V13*Shift_Left{81M9} 7|178s14 179s14 180s14 181s14 +X 12 system.ads +37K9*System 6|25r22 33r22 41r22 49r22 57r22 65r22 7|26r27 39r27 52r27 65r27 +. 81r22 99r22 115r22 132r22 148r22 165r22 12|155e11 +67M9*Address 6|25r29 33r29 41r29 49r29 57r29 65r29 7|81r29 99r29 115r29 132r29 +. 148r29 165r29 +69m4*Null_Address{67M9} 7|26r34 39r34 52r34 65r34 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___devices__streams__init 2 devices__register devices__is_initialized +GG EK_PROOF_DEPENDENCIES ada___devices__streams__init 6 ada___devices__streams__null_read ada___devices__streams__null_write ada___devices__streams__zero_read ada___devices__streams__zero_write ada___devices__streams__random_read ada___devices__streams__random_write +GG EK_GLOBALS ada___devices__streams__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 1 devices__is_initialized calls 1 devices__register calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__streams__null_read 0 +GG EK_PROOF_DEPENDENCIES ada___devices__streams__null_read 0 +GG EK_GLOBALS ada___devices__streams__null_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__streams__null_write 0 +GG EK_PROOF_DEPENDENCIES ada___devices__streams__null_write 0 +GG EK_GLOBALS ada___devices__streams__null_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__streams__zero_read 0 +GG EK_PROOF_DEPENDENCIES ada___devices__streams__zero_read 0 +GG EK_GLOBALS ada___devices__streams__zero_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__streams__zero_write 0 +GG EK_PROOF_DEPENDENCIES ada___devices__streams__zero_write 0 +GG EK_GLOBALS ada___devices__streams__zero_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__streams__random_read 1 ada___cryptography__random__fill_data +GG EK_PROOF_DEPENDENCIES ada___devices__streams__random_read 0 +GG EK_GLOBALS ada___devices__streams__random_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___cryptography__random__fill_data calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__streams__random_write 2 interfaces__shift_left__3 ada___cryptography__random__feed_entropy +GG EK_PROOF_DEPENDENCIES ada___devices__streams__random_write 0 +GG EK_GLOBALS ada___devices__streams__random_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__streams 0 +GG EK_PROOF_DEPENDENCIES ada___devices__streams 0 +GG EK_GLOBALS ada___devices__streams local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__null_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__null_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__zero_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__zero_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___devices__streams__random_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__random_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART +GG EK_FLOW_SCOPE ada___devices__streams__init FALSE FALSE FALSE FALSE TRUE ada___devices__streams VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-streams.cswi b/obj/gnatprove/phase1/devices-streams.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/devices-streams.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/devices-uart.adb.stderr b/obj/gnatprove/phase1/devices-uart.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-uart.adb.stdout b/obj/gnatprove/phase1/devices-uart.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-uart.ali b/obj/gnatprove/phase1/devices-uart.ali new file mode 100644 index 0000000..ac8c4a1 --- /dev/null +++ b/obj/gnatprove/phase1/devices-uart.ali @@ -0,0 +1,203 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.uart%b devices-uart.adb 882298b2 OO PK +W devices%s devices.adb devices.ali +Z system%s system.ads system.ali + +U devices.uart%s devices-uart.ads 0a4d0dda OO PK +W devices%s devices.adb devices.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-uart.ads 20250222165738 15b33d8b devices.uart%s +D devices-uart.adb 20250222165738 9d91a539 devices.uart%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 3 devices.ads +22K9*Devices 279e12 4|21r9 37r5 5|17r14 35r5 +X 4 devices-uart.ads +21K17*UART 3|22k9 4|37l13 37e17 5|17b22 35l13 35t17 +23U14*Init_UART0 5|18b14 21l8 21t18 +26U14*Write_UART0 26>27 5|23b14 27l8 27t19 32s10 +26e27 Message{character} 5|23b27 24r49 +29U14*Write_UART0 29>27 5|29b14 34l8 34t19 +29a27 Message{string} 5|29b27 31r16 +33N4 UART_Base 36r46 +35m4 UART0_TX{6|70M9} 5|26m7 +X 5 devices-uart.adb +24m7 Data{6|70M9} 26r19 +31e11 C=31:16{character} +X 6 interfac.ads +70M9*Unsigned_8 4|35r15 5|24r14 +X 9 memory.ads +19K9*Memory 4|19w6 19r18 9|36e11 +29N4*Memory_Offset 4|36r30 +X 10 system.ads +37K9*System 4|17r6 17r35 18w6 10|155e11 +67M9*Address +X 11 s-stoele.ads +40K16*Storage_Elements 4|17w13 17r42 11|90e28 +84V13*To_Address{10|67M9} 4|36s18 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___devices__uart__init_uart0 0 +GG EK_PROOF_DEPENDENCIES ada___devices__uart__init_uart0 0 +GG EK_GLOBALS ada___devices__uart__init_uart0 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__uart devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__uart__write_uart0 0 +GG EK_PROOF_DEPENDENCIES ada___devices__uart__write_uart0 0 +GG EK_GLOBALS ada___devices__uart__write_uart0 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__uart devices proper_proof_in 0 proper_input 1 ada___devices__uart__uart0_tx proper_output 1 ada___devices__uart__uart0_tx refined_proof_in 0 refined_input 1 ada___devices__uart__uart0_tx refined_output 1 ada___devices__uart__uart0_tx calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___devices__uart__uart0_tx LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__uart__write_uart0__2 0 +GG EK_PROOF_DEPENDENCIES ada___devices__uart__write_uart0__2 0 +GG EK_GLOBALS ada___devices__uart__write_uart0__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__uart devices proper_proof_in 0 proper_input 1 ada___devices__uart__uart0_tx proper_output 1 ada___devices__uart__uart0_tx refined_proof_in 0 refined_input 1 ada___devices__uart__uart0_tx refined_output 1 ada___devices__uart__uart0_tx calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__uart 0 +GG EK_PROOF_DEPENDENCIES ada___devices__uart 0 +GG EK_GLOBALS ada___devices__uart local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart__init_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart__write_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__uart__write_uart0__2 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_VOLATILES AR 1 ada___devices__uart__uart0_tx AW 1 ada___devices__uart__uart0_tx ER 1 ada___devices__uart__uart0_tx EW 1 ada___devices__uart__uart0_tx +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-uart.cswi b/obj/gnatprove/phase1/devices-uart.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/devices-uart.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/devices.adb.stderr b/obj/gnatprove/phase1/devices.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices.adb.stdout b/obj/gnatprove/phase1/devices.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices.ali b/obj/gnatprove/phase1/devices.ali new file mode 100644 index 0000000..f341cb1 --- /dev/null +++ b/obj/gnatprove/phase1/devices.ali @@ -0,0 +1,528 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ACCESS_SUBPROGRAMS +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices%b devices.adb ec24ada9 OO PK +W arch%s arch.ads arch.ali +W arch.hooks%s arch-hooks.adb arch-hooks.ali +W devices%s devices.adb devices.ali +W devices.console%s devices-console.adb devices-console.ali +W devices.loopback%s devices-loopback.adb devices-loopback.ali +W devices.streams%s devices-streams.adb devices-streams.ali +W lib%s lib.adb lib.ali +W lib.panic%s lib-panic.adb lib-panic.ali + +U devices%s devices.ads 58f85773 OO PK +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W interfaces%s interfac.ads interfac.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices.adb 20250222165738 49df614b devices%b +D devices-console.ads 20250222165738 37ce0dbf devices.console%s +D devices-loopback.ads 20250222165738 39340044 devices.loopback%s +D devices-streams.ads 20250222165738 bef258ed devices.streams%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 4 arch.ads +20K9*Arch 52e9 8|20r6 71r21 74r21 238r18 241r18 9|21r6 42r34 304r18 307r18 +X 6 arch-hooks.ads +17K14*Hooks 33e15 9|21w11 42r39 +19V13*Devices_Hook{boolean} 9|42s45 +X 7 arch-mmu.ads +22K14*MMU 250e13 8|20w11 71r26 74r26 238r23 241r23 9|304r23 307r23 +26R9*Page_Permissions 32e14 8|74r30 241r27 9|307r27 +43P9*Page_Table_Acc(42R9) 8|71r30 238r27 9|304r27 +X 8 devices.ads +22K9*Devices 279l5 279e12 9|17r6 18r6 19r6 23b14 383l5 383t12 +28I12*Operation_Count{natural} 29r38 +29A9*Operation_Data(13|70M9) 30r38 49r29 56r25 196r26 213r22 9|244r26 +. 268r22 +30P9*Operation_Data_Acc(29A9) +34A9*UUID(13|70M9) 36r25 41r21 111r25 123r48 9|87r25 102r18 146r48 +35A12*UUID_String{string} 117r30 9|101r30 +36a4*Zero_UUID{34A9} 9|89r16 102r26 +39R9*Resource 80e14 98r30 265r20 9|52r30 +40m7*Data{19|67M9} 9|219r45 233r45 236r45 252r58 276r58 296r45 312r45 327r45 +41a7*ID{34A9} 9|92r42 148r42 +42b7*Is_Block{boolean} 9|185r45 +43i7*Block_Size{natural} 9|195r45 +44m7*Block_Count{13|84M9} 9|190r45 +46p7*Read 9|250r41 251r41 +47m11 Key{19|67M9} +48m11 Offset{13|84M9} +49a11 Data{29A9} +50i11 Ret_Count{natural} +51b11 Success{boolean} +52b11 Is_Blocking{boolean} +53p7*Write 9|211r45 274r41 275r41 +54m11 Key{19|67M9} +55m11 Offset{13|84M9} +56a11 Data{29A9} +57i11 Ret_Count{natural} +58b11 Success{boolean} +59b11 Is_Blocking{boolean} +60p7*Sync(boolean) 9|217r41 218r52 234r44 235r52 +60m31 Key{19|67M9} +61p7*Sync_Range(boolean) 9|231r41 232r52 +62m11 Key{19|67M9} +63m11 Offset{13|84M9} +64m11 Count{13|84M9} +65p7*IO_Control(boolean) 9|294r41 295r48 +66m11 Key{19|67M9} +67m11 Request{13|84M9} +68m11 Argument{19|67M9} +69p7*Mmap(boolean) 9|310r41 311r48 +70m11 Key{19|67M9} +71p11 Map{7|43P9} +72m11 Address{18|35M12} +73m11 Length{13|84M9} +74r11 Flags{7|26R9} +75p7*Poll 9|325r41 326r41 +76m11 Handle{19|67M9} +77b11 Can_Read{boolean} +78b11 Can_Write{boolean} +79b11 Is_Error{boolean} +83I9*Device_Handle 84r54 85r28 105r42 111r38 117r50 123r26 131r17 +. 150r39 152r39 154r39 156r36 161r37 165r50 171r35 180r17 194r22 211r22 225r19 +. 237r18 250r20 258c9 259r31 267r34 9|75r42 87r38 101r50 103r18 146r26 152r17 +. 183r39 188r39 193r38 198r37 204r50 206r14 209r36 214r35 225r17 242r22 266r22 +. 289r19 303r18 319r20 +84A9*Device_List(83I9) 141r33 9|161r33 +85i4*Error_Handle{83I9} 134r60 151r59 153r59 155r59 157r59 162r59 172r59 +. 183r59 200r59 217r59 228r59 242r59 254r59 259c4 9|84r14 98r14 114r26 121r26 +. 133r22 165r28 179r43 +88i4*Max_Name_Length{natural} 99r63 106r63 135r36 136r47 260c4 263r33 264r39 +92U14*Init 9|27b14 50l8 50t12 +98U14*Register 98>24 98>40 98<55 9|52b14 73l8 73t16 +98r24 Dev{39R9} 9|52b24 68r57 +98a40 Name{string} 99r48 9|52b40 57r62 66r41 66r57 67r57 +98b55 Success{boolean} 9|52b55 55m7 69m13 +105V13*Fetch{83I9} 105>20 9|75b13 85l8 85t13 +105a20 Name{string} 106r48 9|75b20 79r70 +111V13*Fetch{83I9} 111>20 9|87b13 99l8 99t13 132s19 143s14 +111a20 ID{34A9} 9|87b20 89r10 92r47 +117V13*Fetch_UUID{83I9} 117>25 9|101b13 144l8 144t18 +117a25 ID{35A12} 9|101b25 110r16 113r19 117r24 118r24 119r24 127r53 128r53 +. 129r53 130r53 131r54 138r53 139r53 140r53 141r53 142r54 +123V13*Fetch{34A9} 123>20 9|146b13 149l8 149t13 +123i20 Dev{83I9} 9|146b20 148r28 +130U14*Fetch_Name 131>8 132<8 133<8 9|151b14 159l8 159t18 +131i8 Handle{83I9} 134r50 9|152b8 157r31 158r31 +132a8 Name{string} 135r22 9|153b8 157m7 +133i8 Length{natural} 136r21 136r37 9|154b8 158m7 +141U14*List 141<20 141<46 9|161b14 181l8 181t12 +141a20 Buffer{84A9} 9|161b20 165m7 171r29 172m16 172r24 178r29 179m10 179r18 +141i46 Total{natural} 9|161b46 164m7 168r33 170m13 170r22 178r16 +145V13*Is_Initialized{boolean} 92s32 99s21 100s20 106s21 112s19 118s20 124s19 +. 134s22 142s19 151s21 153s21 155s21 157s21 162s21 166s20 172s21 183s21 200s21 +. 217s21 228s21 242s21 254s21 272b13 +150V13*Is_Block_Device{boolean} 150>30 9|183b13 186l8 186t23 +150i30 Handle{83I9} 151r49 9|183b30 185r28 +152V13*Get_Block_Count{13|84M9} 152>30 9|188b13 191l8 191t23 +152i30 Handle{83I9} 153r49 9|188b30 190r28 +154V13*Get_Block_Size{natural} 154>30 9|193b13 196l8 196t22 +154i30 Handle{83I9} 155r49 9|193b29 195r28 +156V13*Is_Read_Only{boolean} 156>27 9|209b13 212l8 212t20 +156i27 Handle{83I9} 157r49 9|209b27 211r28 +161V13*Get_Unique_ID{natural} 161>28 9|198b13 202l8 202t21 +161i28 Handle{83I9} 162r49 9|198b28 201r23 +165V13*From_Unique_ID{83I9} 165>29 9|204b13 207l8 207t22 +165i29 ID{natural} 9|204b29 206r29 +171V13*Synchronize{boolean} 171>26 9|214b13 222l8 222t19 +171i26 Handle{83I9} 172r49 9|214b26 217r24 218r35 219r28 +179V13*Synchronize{boolean} 180>8 181>8 182>8 9|224b13 239l8 239t19 +180i8 Handle{83I9} 183r49 9|225b8 231r24 232r35 233r28 234r27 235r35 236r28 +181m8 Offset{13|84M9} 9|226b8 233r51 +182m8 Count{13|84M9} 9|227b8 233r59 +193U14*Read 194>8 195>8 196<8 197<8 198<8 199>8 9|241b14 263l8 263t12 +194i8 Handle{83I9} 200r49 9|242b8 250r24 251r24 252r41 +195m8 Offset{13|84M9} 9|243b8 253r27 +196a8 Data{29A9} 9|244b8 254m27 259m10 +197i8 Ret_Count{natural} 9|245b8 255m27 260m10 +198b8 Success{boolean} 9|246b8 256m27 261m10 +199b8 Is_Blocking{boolean} 9|247b8 257r29 +210U14*Write 211>8 212>8 213>8 214<8 215<8 216>8 9|265b14 286l8 286t13 +211i8 Handle{83I9} 217r49 9|266b8 274r24 275r24 276r41 +212m8 Offset{13|84M9} 9|267b8 277r27 +213a8 Data{29A9} 9|268b8 278r27 +214i8 Ret_Count{natural} 9|269b8 279m27 283m10 +215b8 Success{boolean} 9|270b8 280m27 284m10 +216b8 Is_Blocking{boolean} 9|271b8 281r29 +224V13*IO_Control{boolean} 225>8 226>8 227>8 9|288b13 300l8 300t18 +225i8 Handle{83I9} 228r49 9|289b8 294r24 295r31 296r28 +226m8 Request{13|84M9} 9|290b8 296r51 +227m8 Argument{19|67M9} 9|291b8 296r60 +236V13*Mmap{boolean} 237>8 238>8 239>8 240>8 241>8 9|302b13 316l8 316t12 +237i8 Handle{83I9} 242r49 9|303b8 310r24 311r31 312r28 +238p8 Map{7|43P9} 9|304b8 312r51 +239m8 Address{18|35M12} 9|305b8 312r56 +240m8 Length{13|84M9} 9|306b8 312r65 +241r8 Flags{7|26R9} 9|307b8 312r73 +249U14*Poll 250>8 251<8 252<8 253<8 9|318b14 334l8 334t12 +250i8 Handle{83I9} 254r49 9|319b8 325r24 326r24 327r28 +251b8 Can_Read{boolean} 9|320b8 327m51 330m10 +252b8 Can_Write{boolean} 9|321b8 327m61 331m10 +253b8 Is_Error{boolean} 9|322b8 328m14 332m10 +261R9 Device 266e14 267r66 +262b7*Is_Present{boolean} 9|33m14 57r15 64r34 65m30 78r30 91r33 169r30 +263a7*Name{string} 9|57r37 66m30 79r30 157r39 +264i7*Name_Len{integer} 9|57r50 67m30 79r58 158r39 +265r7*Contents{39R9} 9|68m30 92r33 148r33 185r36 190r36 195r36 211r36 217r32 +. 218r43 219r36 231r32 232r43 233r36 234r35 235r43 236r36 250r32 251r32 252r49 +. 274r32 275r32 276r49 294r32 295r39 296r36 310r32 311r39 312r36 325r32 326r32 +. 327r36 +267A9 Device_Arr(261R9)<83I9> 268r34 9|31r27 +268P9 Device_Arr_Acc(267A9) 270r19 +270p4 Devices_Data{268P9} 272r47 9|31m7 32r18 56r16 63r16 64r17 65r13 66r13 +. 67r13 68r13 77r16 78r13 79r13 79r41 90r19 91r16 92r16 148r14 157r17 158r17 +. 167r16 168r42 169r13 185r14 190r14 195r14 211r14 217r10 218r21 219r14 231r10 +. 232r21 233r14 234r13 235r21 236r14 250r10 251r10 252r27 274r10 275r10 276r27 +. 294r10 295r17 296r14 310r10 311r17 312r14 325r10 326r10 327r14 +274A9 UUID_Fragment(13|70M9) 277r37 278r37 9|127r19 128r19 129r19 +. 130r19 131r19 138r19 139r19 140r19 141r19 142r19 349r37 367r37 +276V13 To_Integer{13|70M9} 276>25 9|336b13 347l8 347t18 355s17 373s17 +276e25 C{character} 9|336b25 339r10 340r35 341r13 342r35 344r35 +277U14 Convert_LE 277<26 277>52 9|127s7 128s7 129s7 349b14 365l8 365t18 +277a26 Frag{274A9} 9|349b26 353m7 358m13 358r19 360m13 360r19 360r40 360r46 +277a52 Val{string} 9|349b52 354r24 355r29 357r18 +278U14 Convert_BE 278<26 278>52 9|130s7 131s7 138s7 139s7 140s7 141s7 142s7 +. 367b14 382l8 382t18 +278a26 Frag{274A9} 9|367b26 371m7 376m13 376r19 376r40 376r46 379m13 379r19 +278a52 Val{string} 9|367b52 372r16 373r29 375r18 +X 9 devices.adb +29b7 Success{boolean} 37m21 38r14 39m22 40r14 41m21 42r14 +32r11 Dev{8|261R9} +48L6 Panic_Error 38r32 40r32 43r15 +56r11 E{8|261R9} +63i11 I 64r31 65r27 66r27 67r27 68r27 +77i11 I 78r27 79r27 79r55 81r20 +90i14 I 91r30 92r30 94r23 +102a7 Result{8|34A9} 127m34 127r34 128m34 128r34 129m34 129r34 130m34 130r34 +. 131m34 131r34 132r26 138m34 138r34 139m34 139r34 140m34 140r34 141m34 141r34 +. 142m34 142r34 143r21 +103i7 Returned{8|83I9} 132m7 133r10 134r17 +110i11 I{integer} 111r15 113r23 117r28 118r28 119r28 +162i7 Curr_Index{natural} 171r16 172r39 173m16 173r30 +167i11 I 169r27 172r55 +178i11 I{integer} 179r33 +215b7 Success{boolean} 218m10 221r14 +229b7 Success{boolean} 232m10 235m10 238r14 +337i7 Result{natural} 340m10 342m10 344m10 346r26 +350m7 Res{13|70M9} 355m10 358r40 361r52 +351i7 Idx{natural} 358r32 360r32 360r59 362m13 362r20 +354i11 I{integer} 355r34 357r14 +368m7 Res{13|70M9} 373m10 376r67 379r52 +369i7 Idx{natural} 376r32 376r59 377m13 377r20 379r32 +372i11 I{integer} 373r34 375r14 +X 10 devices-console.ads +17K17*Console 9|17w14 37r7 10|39e20 +19U14*Init 9|37s15 +X 11 devices-loopback.ads +17K17*Loopback 9|18w14 39r7 11|52e21 +19U14*Init 9|39s16 +X 12 devices-streams.ads +17K17*Streams 9|19w14 41r7 12|71e20 +19U14*Init 9|41s15 +X 13 interfac.ads +38K9*Interfaces 8|18w6 18r22 13|233e15 +70M9*Unsigned_8 8|29r67 34r36 274r54 276r47 9|336r47 346r14 350r13 368r13 +84M9*Unsigned_64 8|44r21 48r25 55r25 63r20 64r20 67r22 73r21 152r61 181r17 +. 182r17 195r22 212r22 226r19 240r18 9|188r61 226r17 227r17 243r22 267r22 +. 290r19 306r18 +91V13*Shift_Left{70M9} 9|361s40 379s40 +X 14 lib.ads +19K9*Lib 9|20r6 49r7 14|35e8 +X 16 lib-panic.ads +21K13*Panic 9|20w10 49r11 16|39e14 +32U14*Hard_Panic 9|49s17 +X 18 memory.ads +19K9*Memory 8|19w6 72r21 239r18 9|305r18 18|36e11 +35M12*Virtual_Address{20|82M9} 8|72r28 239r25 9|305r25 +X 19 system.ads +37K9*System 8|17w6 40r21 47r25 54r25 60r37 62r20 66r22 68r22 70r21 76r23 +. 227r19 9|291r19 19|155e11 +67M9*Address 8|40r28 47r32 54r32 60r44 62r27 66r29 68r29 70r28 76r30 227r26 +. 9|291r26 +X 20 s-stoele.ads +82M9*Integer_Address + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS devices__init 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__init 1 devices__is_initialized +GG EK_GLOBALS devices__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 2 devices__devices_data __HEAP proper_output 2 devices__devices_data __HEAP refined_proof_in 0 refined_input 2 devices__devices_data __HEAP refined_output 2 devices__devices_data __HEAP calls_proof 0 calls 0 calls_conditional 5 ada___devices__console__init ada___devices__loopback__init ada___devices__streams__init ada___lib__panic__hard_panic ada___arch__hooks__devices_hook FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__register 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__register 0 +GG EK_GLOBALS devices__register local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 1 devices__devices_data refined_proof_in 0 refined_input 1 devices__devices_data refined_output 1 devices__devices_data calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__fetch 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__fetch 0 +GG EK_GLOBALS devices__fetch local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__fetch__2 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__fetch__2 0 +GG EK_GLOBALS devices__fetch__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__fetch_uuid 4 devices__fetch__2 devices__is_initialized devices__convert_le devices__convert_be +GG EK_PROOF_DEPENDENCIES devices__fetch_uuid 0 +GG EK_GLOBALS devices__fetch_uuid local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS devices__fetch__3 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__fetch__3 0 +GG EK_GLOBALS devices__fetch__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__fetch_name 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__fetch_name 0 +GG EK_GLOBALS devices__fetch_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__list 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__list 0 +GG EK_GLOBALS devices__list local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__is_initialized 0 +GG EK_PROOF_DEPENDENCIES devices__is_initialized 0 +GG EK_GLOBALS devices__is_initialized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__is_block_device 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__is_block_device 0 +GG EK_GLOBALS devices__is_block_device local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__get_block_count 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__get_block_count 0 +GG EK_GLOBALS devices__get_block_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__get_block_size 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__get_block_size 0 +GG EK_GLOBALS devices__get_block_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__is_read_only 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__is_read_only 0 +GG EK_GLOBALS devices__is_read_only local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__get_unique_id 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__get_unique_id 0 +GG EK_GLOBALS devices__get_unique_id local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 1 devices__devices_data proper_input 0 proper_output 0 refined_proof_in 1 devices__devices_data refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS devices__from_unique_id 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__from_unique_id 0 +GG EK_GLOBALS devices__from_unique_id local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 1 devices__devices_data proper_input 0 proper_output 0 refined_proof_in 1 devices__devices_data refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS devices__synchronize 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__synchronize 0 +GG EK_GLOBALS devices__synchronize local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__synchronize__2 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__synchronize__2 0 +GG EK_GLOBALS devices__synchronize__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__read 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__read 0 +GG EK_GLOBALS devices__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__write 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__write 0 +GG EK_GLOBALS devices__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__io_control 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__io_control 0 +GG EK_GLOBALS devices__io_control local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__mmap 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__mmap 0 +GG EK_GLOBALS devices__mmap local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__poll 1 devices__is_initialized +GG EK_PROOF_DEPENDENCIES devices__poll 0 +GG EK_GLOBALS devices__poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 +GG EK_DIRECT_CALLS devices__to_integer 0 +GG EK_PROOF_DEPENDENCIES devices__to_integer 0 +GG EK_GLOBALS devices__to_integer local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS devices__convert_le 2 devices__to_integer interfaces__shift_left +GG EK_PROOF_DEPENDENCIES devices__convert_le 0 +GG EK_GLOBALS devices__convert_le local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS devices__convert_be 2 devices__to_integer interfaces__shift_left +GG EK_PROOF_DEPENDENCIES devices__convert_be 0 +GG EK_GLOBALS devices__convert_be local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS devices 0 +GG EK_PROOF_DEPENDENCIES devices 0 +GG EK_GLOBALS devices local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 devices__devices_data refined_initializes 1 devices__devices_data calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 devices__devices_data TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___devices__loopback__io_control FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__console__write FALSE FALSE FALSE FALSE TRUE ada___devices__console PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__zero_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__random_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__random_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__loopback TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___devices__loopback__init FALSE FALSE FALSE FALSE TRUE ada___devices__loopback VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__init FALSE FALSE FALSE FALSE TRUE ada___devices__streams VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__null_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__loopback__read FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__null_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE ada___devices__console TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___devices__console__init FALSE FALSE FALSE FALSE TRUE ada___devices__console VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__loopback__write FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__console__read FALSE FALSE FALSE FALSE TRUE ada___devices__console PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__streams__zero_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices.cswi b/obj/gnatprove/phase1/devices.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/devices.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/kernel_main.adb.stderr b/obj/gnatprove/phase1/kernel_main.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/kernel_main.adb.stdout b/obj/gnatprove/phase1/kernel_main.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/kernel_main.ali b/obj/gnatprove/phase1/kernel_main.ali new file mode 100644 index 0000000..c32489e --- /dev/null +++ b/obj/gnatprove/phase1/kernel_main.ali @@ -0,0 +1,733 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U kernel_main%b kernel_main.adb cdc15f55 OO PK +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W arch.hooks%s arch-hooks.adb arch-hooks.ali +W config%s config.ads config.ali +W devices%s devices.adb devices.ali +W lib%s lib.adb lib.ali +W lib.cmdline%s lib-cmdline.adb lib-cmdline.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W lib.runtime%s lib-runtime.adb lib-runtime.ali +W networking%s networking.adb networking.ali +W networking.arp%s networking-arp.adb networking-arp.ali +W scheduler%s scheduler.adb scheduler.ali +W userland%s userland.ads userland.ali +W userland.loader%s userland-loader.adb userland-loader.ali +W userland.process%s userland-process.adb userland-process.ali +W vfs%s vfs.adb vfs.ali + +U kernel_main%s kernel_main.ads fba3ee83 OO PK + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D config.ads 20250222165738 5d21f3bf config%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D i-c.ads 20240507065137 aac316ce interfaces.c%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D kernel_main.ads 20250222165738 fba3ee83 kernel_main%s +D kernel_main.adb 20250222165738 3470b9b8 kernel_main%b +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-cmdline.ads 20250222165738 711caa36 lib.cmdline%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-runtime.ads 20250222165738 e2d5964f lib.runtime%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D networking-arp.ads 20250222165738 eec21925 networking.arp%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-parame.ads 20240507065137 3597fc11 system.parameters%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-loader.ads 20250222165738 4d432fbc userland.loader%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 4 arch.ads +20K9*Arch 52e9 20|17w6 18r6 19r6 51r7 69r7 +X 5 arch-clocks.ads +19K14*Clocks 45e16 20|18w11 51r12 +23U14*Initialize_Sources 20|51s19 +X 7 arch-hooks.ads +17K14*Hooks 33e15 20|19w11 69r12 +32U14*Register_RAM_Files 20|69s18 +X 10 config.ads +17K9*Config 29e11 20|32w6 58r30 58r50 59r57 +22a4*Name{string} 20|58r37 +23a4*Version{string} 20|58r57 +25a4*Bug_Site{string} 20|59r64 +X 11 devices.ads +22K9*Devices 279e12 20|20w6 20r19 39r34 42r21 65r7 90r32 92r22 93r25 94r13 +35A12*UUID_String{string} 20|90r40 +83I9*Device_Handle 20|42r29 +85i4*Error_Handle{83I9} 20|93r33 +88i4*Max_Name_Length{natural} 20|39r42 +92U14*Init 20|65s15 +117V13*Fetch_UUID{83I9} 20|92s30 +130U14*Fetch_Name 20|94s21 +X 13 interfac.ads +84M9*Unsigned_64 +X 19 kernel_main.ads +17K9*Kernel_Main 26l5 26e16 20|34b14 224l5 224t16 +25U14*Entrypoint 25>26 20|35b14 223l8 223t18 +25a26 Cmdline{string} 20|35b26 77r38 81r38 89r11 100r14 112r11 121r11 179r11 +X 20 kernel_main.adb +36p7 Init_Path{35|19P9} 114m10 138r30 165r33 167r55 +37p7 Init_Args{35|22P9} 137m13 138r13 156r16 167m10 168r52 181r10 194r17 +. 194r59 198r30 +38a7 Init_Env{35|21A9} 195r17 +39a7 Value{string} 89m47 91r53 92r42 94m43 96r56 100m45 103r52 104r21 106r54 +. 112m42 114r35 121m46 130r22 131r19 141r30 142r19 143r31 149r22 150r22 157r31 +. 165r55 179m42 181r39 184r28 +40i7 Value_Len{natural} 89m61 90r20 91r65 92r54 94m50 96r68 100m59 102r20 +. 103r64 104r33 106r66 112m56 113r20 114r47 121m60 122r20 130r34 141r42 142r31 +. 143r43 149r34 165r67 179m56 180r20 181r51 184r40 +41b7 Found{boolean} 89m54 90r10 100m52 102r10 104m64 105r17 112m49 113r10 +. 121m53 122r10 172m61 173r14 179m49 180r10 +42i7 Init_Dev{11|83I9} 92m10 93r13 94r33 +43i7 Init_FS{40|74I9} 185m28 194r40 202m34 209r52 213r20 +44m7 Init_Ino{40|28M9} 186m28 194r49 203m34 209r61 213r29 +45i7 Init_PID{39|33I9} 193m13 196r16 198r20 209r42 +46e7 Success{40|234E9} 187m28 192r13 204m34 +47a7 Init_Stdin{string} 195r27 +48a7 Init_Stdout{string} 195r39 195r52 +124i13 Arg_Count{natural} 132m19 132r32 135m13 135r26 137r66 +125i13 First_Idx{natural} 140m13 143r19 148r28 157r38 159m16 +126i13 Last_Idx{natural} 141m13 142r50 148m16 149r53 150r29 153m19 153r31 +. 157r51 159r29 +127i13 Arg_Len{natural} 147m16 152m19 152r31 +128i13 List_Idx{natural} 139m13 156r27 158m16 158r29 +130e17 C{character} +161L12 END_PARSE 144r24 +X 21 lib.ads +19K9*Lib 20|22r6 23r6 24r6 30r6 54r7 58r7 59r7 73r10 77r10 77r47 78r10 81r10 +. 81r47 83r10 88r7 89r20 91r10 96r13 99r10 100r23 103r10 106r13 111r7 112r20 +. 116r10 120r7 121r20 164r10 168r10 174r10 178r7 179r20 211r16 215r13 218r10 +. 21|35e8 +X 22 lib-cmdline.ads +17K13*Cmdline 20|22w10 77r14 77r51 81r14 81r51 88r11 89r24 99r14 100r27 111r11 +. 112r24 120r11 121r24 178r11 179r24 22|54e16 +23a4*Root_Key{string} 20|100r35 +24a4*Root_UUID_Key{string} 20|89r32 +25a4*Init_Key{string} 20|112r32 179r32 +26a4*Init_Arg_Key{string} 20|121r32 +27a4*No_Program_ASLR{string} 20|77r59 +28a4*No_Location_ASLR{string} 20|81r59 +34U14*Get_Key_Value 20|88s19 99s22 111s19 120s19 178s19 +45V13*Is_Key_Present{boolean} 20|77s22 81s22 +X 23 lib-messages.ads +21K13*Messages 20|23w10 54r11 58r11 59r11 78r14 83r14 91r14 96r17 103r14 +. 106r17 164r14 168r14 23|103e17 +31U14*Enable_Logging 20|54s20 +41U14*Put_Line 20|58s20 59s20 78s23 83s23 91s23 96s26 103s23 106s26 164s23 +. 168s23 +X 24 lib-panic.ads +21K13*Panic 20|24w10 73r14 116r14 174r14 211r20 215r17 218r14 24|39e14 +32U14*Hard_Panic 20|73s20 116s20 174s20 211s26 215s23 218s20 +X 25 lib-runtime.ads +23K13*Runtime 20|30w10 31r26 25|45e16 +X 28 networking.ads +20K9*Networking 20|29r6 64r7 28|55e15 +X 29 networking-arp.ads +17K20*ARP 20|29w17 64r18 29|86e19 +25U14*Initialize 20|64s22 +X 30 scheduler.ads +25K9*Scheduler 20|28w6 72r14 222r7 30|183e14 +33V13*Init{boolean} 20|72s24 +37U14*Idle_Core 20|222s17 +X 35 userland.ads +17K9*Userland 20|25r6 26r6 26r28 27w6 36r21 37r21 38r21 63r7 79r10 84r10 +. 137r34 167r27 193r25 197r16 209r16 35|23e13 +19P9*String_Acc(string) 20|36r30 +20A9*Argument_Arr(19P9) 20|137r43 167r36 +21A9*Environment_Arr(19P9) 20|38r30 +22P9*Argument_Arr_Acc(20A9) 20|37r30 +X 37 userland-loader.ads +20K18*Loader 20|25w15 79r19 193r34 37|65e20 +23U14*Disable_ASLR 20|79s26 +29V13*Start_Program{39|33I9} 20|193s41 +X 39 userland-process.ads +28K18*Process 20|26w15 26r37 63r16 84r19 197r25 209r25 39|677e21 +33I9*PID 20|45r21 +34i4*Error_PID{33I9} 20|196r28 +146U14*Init 20|63s24 +149U14*Disable_ASLR 20|84s27 +418U14*Set_CWD 20|209s33 +443U14*Set_Identifier 20|197s33 +X 40 vfs.ads +24K9*VFS 20|21w6 21r15 43r21 44r21 46r21 66r7 104r10 172r7 172r35 192r23 +. 40|674e8 +28M9*File_Inode_Number<13|84M9> 20|44r25 +73n23*FS_DEV{73E9} 20|172r39 +74I9*FS_Handle 20|43r25 +79U14*Init 20|66s11 +87U14*Mount 20|104s14 +104U14*Mount 20|172s11 +234E9*FS_Status 20|46r25 40|242e16 +235n8*FS_Success{234E9} 20|192r27 +359U14*Close 20|213s13 +593U14*Open 20|183s10 200s16 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS kernel_main__entrypoint 24 ada___arch__clocks__initialize_sources ada___arch__hooks__register_ram_files devices__init devices__fetch_uuid devices__fetch_name vfs__init vfs__mount vfs__mount__2 vfs__close vfs__open__2 ada___lib__cmdline__get_key_value ada___lib__cmdline__is_key_present ada___lib__messages__enable_logging ada___lib__messages__put_line ada___lib__panic__hard_panic ada___userland__loader__disable_aslr ada___userland__loader__start_program ada___userland__process__init ada___userland__process__disable_aslr ada___userland__process__set_cwd ada___userland__process__set_identifier scheduler__init scheduler__idle_core ada___networking__arp__initialize +GG EK_PROOF_DEPENDENCIES kernel_main__entrypoint 0 +GG EK_GLOBALS kernel_main__entrypoint local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 kernel_main proper_proof_in 0 proper_input 2 ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 2 ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 5 ada___arch__hooks__register_ram_files devices__init vfs__init ada___userland__process__init ada___networking__arp__initialize calls_conditional 15 devices__fetch_uuid devices__fetch_name vfs__mount vfs__mount__2 vfs__close vfs__open__2 ada___lib__cmdline__get_key_value ada___lib__cmdline__is_key_present ada___userland__loader__disable_aslr ada___userland__loader__start_program ada___userland__process__disable_aslr ada___userland__process__set_cwd ada___userland__process__set_identifier scheduler__init scheduler__idle_core FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 +GG EK_DIRECT_CALLS kernel_main 0 +GG EK_PROOF_DEPENDENCIES kernel_main 0 +GG EK_GLOBALS kernel_main local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__runtime__last_chance_handler FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime__memcmp FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___userland__loader__start_program FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime__memcpy FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_program__2 FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_elf FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime__memmove FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__cmdline TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_shebang FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime__memset FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__cmdline__get_key_value FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__cmdline__is_key_present FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__cmdline__find_key FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE config TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE kernel_main TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE kernel_main__entrypoint FALSE FALSE FALSE FALSE TRUE kernel_main VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_REMOTE_STATES 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/kernel_main.cswi b/obj/gnatprove/phase1/kernel_main.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/kernel_main.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/lib-alignment.adb.stderr b/obj/gnatprove/phase1/lib-alignment.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-alignment.adb.stdout b/obj/gnatprove/phase1/lib-alignment.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-alignment.ali b/obj/gnatprove/phase1/lib-alignment.ali new file mode 100644 index 0000000..fa33dc3 --- /dev/null +++ b/obj/gnatprove/phase1/lib-alignment.ali @@ -0,0 +1,88 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.alignment%b lib-alignment.adb 07806a02 OO PK GE +W lib%s lib.adb lib.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali + +U lib.alignment%s lib-alignment.ads e57d5fee BN OO PU PK GE +W lib%s lib.adb lib.ali + +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s +D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 lib.ads +19K9*Lib 35e8 2|19r9 43r5 3|19r14 41r5 +X 2 lib-alignment.ads +18M9 T 27r42 27r52 35r44 35r54 40r50 40r60 41r49 3|23r42 23r52 27r14 30r44 +. 30r54 34r14 37r50 37r60 +19k13*Alignment 1|19k9 2|18z9 43l9 43e18 3|19b18 41l9 41t18 +27V13*Align_Up{18M9} 27>23 27>30 29r20 3|23b13 28l8 28t16 +27*23 Value{18M9} 3|23b23 24r61 +27*30 Alignment{18M9} 28r20 28r40 28r55 29r40 3|23b30 25r61 +35V13*Align_Down{18M9} 35>25 35>32 37r20 3|30b13 35l8 35t18 +35*25 Value{18M9} 3|30b25 31r61 +35*32 Alignment{18M9} 36r20 36r40 36r55 37r42 3|30b32 32r61 +40V13*Divide_Round_Up{18M9} 40>30 40>40 42r20 3|37b13 40l8 40t23 +40*30 Dividend{18M9} 41r21 3|37b30 39r15 +40*40 Divisor{18M9} 41r33 41r62 42r47 3|37b40 39r27 39r43 +X 3 lib-alignment.adb +24m7 Value2{5|82M9} 27r18 +25m7 Align2{5|82M9} 27r27 27r48 +31m7 Value2{5|82M9} 34r17 +32m7 Align2{5|82M9} 34r33 +X 4 system.ads +37K9*System 3|17r6 17r35 4|155e11 +X 5 s-stoele.ads +40K16*Storage_Elements 3|17w13 17r42 5|90e28 +82M9*Integer_Address 3|24r25 24r44 25r25 25r44 31r25 31r44 32r25 32r44 + +QQ SPARKVERSION 0.0w +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-alignment.cswi b/obj/gnatprove/phase1/lib-alignment.cswi new file mode 100644 index 0000000..1286ce7 --- /dev/null +++ b/obj/gnatprove/phase1/lib-alignment.cswi @@ -0,0 +1,28 @@ +20250222171637 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/lib-cmdline.adb.stderr b/obj/gnatprove/phase1/lib-cmdline.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-cmdline.adb.stdout b/obj/gnatprove/phase1/lib-cmdline.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-cmdline.ali b/obj/gnatprove/phase1/lib-cmdline.ali new file mode 100644 index 0000000..910abf6 --- /dev/null +++ b/obj/gnatprove/phase1/lib-cmdline.ali @@ -0,0 +1,123 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.cmdline%b lib-cmdline.adb 5d6c1fd0 OO PK +W lib%s lib.adb lib.ali + +U lib.cmdline%s lib-cmdline.ads fc895ccf OO PK +W lib%s lib.adb lib.ali + +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-cmdline.ads 20250222165738 711caa36 lib.cmdline%s +D lib-cmdline.adb 20250222165738 2c70b5e6 lib.cmdline%b +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 lib.ads +19K9*Lib 35e8 2|17r9 54r5 3|17r14 115r5 +X 2 lib-cmdline.ads +17K13*Cmdline 1|19k9 2|54l9 54e16 3|17b18 115l9 115t16 +23a4*Root_Key{string} +24a4*Root_UUID_Key{string} +25a4*Init_Key{string} +26a4*Init_Arg_Key{string} +27a4*No_Program_ASLR{string} +28a4*No_Location_ASLR{string} +34U14*Get_Key_Value 35>8 35>17 36<8 37<8 38<8 3|21b14 86l8 86t21 +35a8 Cmdline{string} 3|22b8 33r17 39r10 39r44 44r10 45r29 55r13 60r13 64r16 +. 70r37 +35a17 Key{string} 39r19 3|22b17 33r26 +36a8 Returned{string} 39r39 3|23b8 29r36 31m7 56r13 70m10 +37b8 Found{boolean} 3|24b8 33m31 34r14 79m7 84m7 +38i8 Length{natural} 3|25b8 53m7 72m10 72r26 80m7 85m7 +45V13*Is_Key_Present{boolean} 45>29 45>38 3|88b13 94l8 94t22 +45a29 Cmdline{string} 46r19 3|88b29 92r17 +45a38 Key{string} 46r43 3|88b38 92r26 +50U14 Find_Key 51>8 51>17 52<8 53<8 3|33s7 92s7 96b14 114l8 114t16 +51a8 Cmdline{string} 3|97b8 103r21 104r24 105r19 +51a17 Key{string} 3|97b17 103r38 105r13 105r56 107r40 +52b8 Found{boolean} 3|98b8 106m13 112m7 +53i8 End_Index{natural} 3|99b8 107m13 113m7 +X 3 lib-cmdline.adb +27i7 Last_Index{integer} 33m38 38m7 38r21 39r25 39r53 43m7 43r21 44r25 45r38 +. 47m13 47r27 55r29 60r22 64r25 70r46 73m10 73r26 +28b7 Do_Until_Quotes{boolean} 45m10 46r13 50m10 61r20 65r16 +29i7 Returned_Idx{natural} 56r29 70r20 71m10 71r26 +78L6 Not_Found 35r15 +83L6 Found_But_No_Value 40r15 57r18 +89b7 Found{boolean} 92m31 93r14 +90i7 Discard{natural} 92m38 +101i7 Curr_Index{integer} 104m10 105r28 105r42 107r26 +103i11 I{integer} 104r41 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___lib__cmdline__get_key_value 1 ada___lib__cmdline__find_key +GG EK_PROOF_DEPENDENCIES ada___lib__cmdline__get_key_value 0 +GG EK_GLOBALS ada___lib__cmdline__get_key_value local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__cmdline lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__cmdline__is_key_present 1 ada___lib__cmdline__find_key +GG EK_PROOF_DEPENDENCIES ada___lib__cmdline__is_key_present 0 +GG EK_GLOBALS ada___lib__cmdline__is_key_present local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__cmdline lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__cmdline__find_key 0 +GG EK_PROOF_DEPENDENCIES ada___lib__cmdline__find_key 0 +GG EK_GLOBALS ada___lib__cmdline__find_key local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__cmdline lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__cmdline 0 +GG EK_PROOF_DEPENDENCIES ada___lib__cmdline 0 +GG EK_GLOBALS ada___lib__cmdline local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__cmdline__get_key_value FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__cmdline__find_key FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline PRIVATE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__cmdline TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___lib__cmdline__is_key_present FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-cmdline.cswi b/obj/gnatprove/phase1/lib-cmdline.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/lib-cmdline.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/lib-messages.adb.stderr b/obj/gnatprove/phase1/lib-messages.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-messages.adb.stdout b/obj/gnatprove/phase1/lib-messages.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-messages.ali b/obj/gnatprove/phase1/lib-messages.ali new file mode 100644 index 0000000..089521d --- /dev/null +++ b/obj/gnatprove/phase1/lib-messages.ali @@ -0,0 +1,308 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.messages%b lib-messages.adb 2ef0876c OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W arch%s arch.ads arch.ali +W arch.debug%s arch-debug.adb arch-debug.ali +W lib%s lib.adb lib.ali + +U lib.messages%s lib-messages.ads 35644953 OO PK +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-debug.ads 20250222165738 7987b5ed arch.debug%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-messages.adb 20250222165738 f522e680 lib.messages%b +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 12|17r6 57r25 58r25 +X 2 a-charac.ads +16K13*Characters 18e19 12|17r10 57r29 58r29 +X 3 a-chlat1.ads +16K24*Latin_1 294e27 12|17w21 57r40 58r40 +33e4*LF{character} 12|58r48 +36e4*CR{character} 12|57r48 +X 4 arch.ads +20K9*Arch 52e9 11|18r6 44r10 100r33 12|18r6 56r7 57r7 58r7 127r7 +X 5 arch-clocks.ads +19K14*Clocks 45e16 11|18w11 44r15 100r38 12|127r12 +20@23*Monotonic_Clock_State 11|44r22 100r45 +31U14*Get_Monotonic_Time 12|127s19 +X 6 arch-debug.ads +19K14*Debug 49e15 12|18w11 56r12 57r12 58r12 +32U14*Print 12|57s18 58s18 +36U14*Print 12|56s18 +X 9 interfac.ads +38K9*Interfaces 233e15 11|17w6 17r22 +81M9*Unsigned_32 11|64r18 12|92r18 +84M9*Unsigned_64 11|75r18 12|98r14 102r18 108r29 109r29 125r19 +X 10 lib.ads +19K9*Lib 35e8 11|19r6 19r31 21r9 103r5 12|20r14 29r7 32r7 46r7 65r7 71r7 +. 88r7 131r5 +X 11 lib-messages.ads +21K13*Messages 10|19k9 11|103l9 103e17 12|20b18 131l9 131t17 +22@22*Message_State 23r22 34r33 45r10 52r34 90r23 92r23 94r23 96r23 12|21r22 +26N4*Max_Line 42r37 86r68 12|37r32 76r42 78r54 83r61 85r23 +31U14*Enable_Logging 12|27b14 33l8 33t22 +37a4*Warning_String{string} +41U14*Put_Line 41>24 12|35b14 66l8 66t16 +41a24 Message{string} 42r19 12|35b24 44r20 44r44 +50U14*Dump_Logs 50<25 50<46 12|68b14 89l8 89t17 +50a25 Buffer{string} 51r41 12|68b25 73r16 74m10 78r10 78r36 83m10 83r18 83r40 +50i46 Length{natural} 12|68b46 76m7 78r26 +55A12*Translated_String{string} 65r22 76r22 12|93r22 103r22 123r17 +56I12*Translated_Length{natural} 66r22 77r22 12|94r22 104r22 +63U14*Image 64>8 65<8 66<8 67>8 12|91b14 99l8 99t13 +64m8 Value{9|81M9} 12|92b8 98r27 +65a8 Buffer{55A12} 12|93b8 98m35 +66i8 Length{56I12} 12|94b8 98m43 +67b8 Use_Hex{boolean} 12|95b8 98r51 +74U14*Image 75>8 76<8 77<8 78>8 12|98s7 101b14 120l8 120t13 128s7 +75m8 Value{9|84M9} 12|102b8 108r44 +76a8 Buffer{55A12} 12|103b8 110r44 112m7 113r44 114r44 115m10 119r17 +77i8 Length{56I12} 12|104b8 119m7 +78b8 Use_Hex{boolean} 12|105b8 109r48 +81V13*Is_Initialized{boolean} 32s26 33s22 51s22 102b13 +86A9 Message_Buffer(string) 87r38 93r23 12|30r30 +87P9 Message_Buffer_Acc(86A9) 95r23 +89r4 Messages_Mutex{13|22R9} 12|22r8 29m34 29r34 32m36 32r36 46m34 46r34 +. 65m36 65r36 71m34 71r34 88m36 88r36 +91i4 Curr_Entry{natural} 12|22r24 50r27 53r28 60m7 60r21 61r10 62m10 +93a4 Small_Log_Buffer{86A9} 12|22r36 31r29 31r57 52r22 53m10 +95p4 Log_Ring_Buffer{87P9} 102r47 12|22r54 30m7 31r7 48r10 49r22 50r10 76r17 +. 82r19 +98A12 Timestamp_Str{string} 99r45 12|122r45 +99U14 Get_Timestamp 99<29 12|40s7 122b14 130l8 130t21 +99a29 Timestamp{98A12} 12|122b29 129m7 +X 12 lib-messages.adb +36a7 Timestamp{string} 40m22 42r26 +37a7 Final{string} 41m7 42m7 43m7 44m7 50r42 53r43 56r25 +38i7 Last_Idx{natural} 49m10 52m10 61r23 +69i7 Idx{natural} 83r33 83r55 85m10 85r17 +73e11 C=73:16{character} +82a11 Line{string} +107a7 Conversion{string} 115r30 +108m7 To_Convert{9|84M9} 113r13 115r51 116m10 116r30 +109m7 Base{9|84M9} 115r66 116r43 +110i7 Current{natural} 113r33 114r33 115r18 117m10 117r30 119r33 +123a7 Stp{11|55A12} 128m19 129r20 129r31 +124i7 Stp_Len{natural} 128m24 +125m7 Sec{9|84M9} 127m39 128r14 +125m12 NSec{9|84M9} 127m44 +X 13 lib-synchronization.ads +20K13*Synchronization 11|19w10 19r35 12|29r11 32r11 46r11 65r11 71r11 88r11 +. 13|66e24 +22R9*Binary_Semaphore 11|89r31 13|57e14 +23r4*Unlocked_Semaphore{22R9} 11|89r51 +27U14*Seize 12|29s27 46s27 71s27 +31U14*Release 12|32s27 65s27 88s27 + +QQ SPARKVERSION 0.0w +GG EK_STATE_MAP ada___lib__messages__message_state 4 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer +GG EK_DIRECT_CALLS ada___lib__messages__enable_logging 3 ada___lib__messages__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___lib__messages__enable_logging 0 +GG EK_GLOBALS ada___lib__messages__enable_logging local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 1 ada___lib__messages__message_state proper_output 1 ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___lib__messages__messages_mutex ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer refined_output 2 ada___lib__messages__messages_mutex ada___lib__messages__log_ring_buffer calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___lib__messages__messages_mutex ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__messages__put_line 5 ada___lib__messages__get_timestamp ada___lib__synchronization__seize ada___lib__synchronization__release ada___arch__debug__print ada___arch__debug__print__2 +GG EK_PROOF_DEPENDENCIES ada___lib__messages__put_line 0 +GG EK_GLOBALS ada___lib__messages__put_line local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 5 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer ada___arch__clocks__monotonic_clock_state refined_output 5 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer ada___arch__clocks__monotonic_clock_state calls_proof 0 calls 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___arch__debug__print ada___arch__debug__print__2 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 5 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer ada___arch__clocks__monotonic_clock_state LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__messages__dump_logs 3 ada___lib__messages__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___lib__messages__dump_logs 0 +GG EK_GLOBALS ada___lib__messages__dump_logs local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 1 ada___lib__messages__message_state proper_output 1 ada___lib__messages__message_state refined_proof_in 0 refined_input 2 ada___lib__messages__messages_mutex ada___lib__messages__log_ring_buffer refined_output 1 ada___lib__messages__messages_mutex calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___lib__messages__messages_mutex ada___lib__messages__log_ring_buffer LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__messages__image 1 ada___lib__messages__image__2 +GG EK_PROOF_DEPENDENCIES ada___lib__messages__image 0 +GG EK_GLOBALS ada___lib__messages__image local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__messages__image__2 0 +GG EK_PROOF_DEPENDENCIES ada___lib__messages__image__2 0 +GG EK_GLOBALS ada___lib__messages__image__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__messages__is_initialized 0 +GG EK_PROOF_DEPENDENCIES ada___lib__messages__is_initialized 0 +GG EK_GLOBALS ada___lib__messages__is_initialized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 1 ada___lib__messages__message_state proper_output 0 refined_proof_in 0 refined_input 1 ada___lib__messages__log_ring_buffer refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___lib__messages__log_ring_buffer LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__messages__get_timestamp 2 ada___lib__messages__image__2 ada___arch__clocks__get_monotonic_time +GG EK_PROOF_DEPENDENCIES ada___lib__messages__get_timestamp 0 +GG EK_GLOBALS ada___lib__messages__get_timestamp local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 1 ada___arch__clocks__monotonic_clock_state proper_output 1 ada___arch__clocks__monotonic_clock_state refined_proof_in 0 refined_input 1 ada___arch__clocks__monotonic_clock_state refined_output 1 ada___arch__clocks__monotonic_clock_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__clocks__monotonic_clock_state LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__messages 0 +GG EK_PROOF_DEPENDENCIES ada___lib__messages 0 +GG EK_GLOBALS ada___lib__messages local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___lib__messages__message_state refined_initializes 4 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 4 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__read FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__print FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__print__2 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__debug__print__3 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_REMOTE_STATES 1 ada___arch__clocks__monotonic_clock_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-messages.cswi b/obj/gnatprove/phase1/lib-messages.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/lib-messages.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/lib-panic.adb.stderr b/obj/gnatprove/phase1/lib-panic.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-panic.adb.stdout b/obj/gnatprove/phase1/lib-panic.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-panic.ali b/obj/gnatprove/phase1/lib-panic.ali new file mode 100644 index 0000000..99b1bbb --- /dev/null +++ b/obj/gnatprove/phase1/lib-panic.ali @@ -0,0 +1,221 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.panic%b lib-panic.adb 4d5d208b OO PK +W arch%s arch.ads arch.ali +W arch.hooks%s arch-hooks.adb arch-hooks.ali +W arch.snippets%s arch-snippets.adb arch-snippets.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali + +U lib.panic%s lib-panic.ads 12d75f7b OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s +D arch-snippets.ads 20250222165738 3613a65c arch.snippets%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-panic.adb 20250222165738 06ea6c1d lib.panic%b +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 11|19r6 26r38 27r38 +X 2 a-charac.ads +16K13*Characters 18e19 11|19r10 26r42 27r42 +X 3 a-chlat1.ads +16K24*Latin_1 294e27 11|19w21 26r53 27r53 +51e4*ESC{character} 11|26r61 27r61 +X 4 arch.ads +20K9*Arch 52e9 11|18r6 36r35 12|17r6 18r6 33r7 46r7 +X 5 arch-clocks.ads +19K14*Clocks 45e16 11|18w11 36r40 +20@23*Monotonic_Clock_State 11|36r47 +X 6 arch-hooks.ads +17K14*Hooks 33e15 12|17w11 33r12 +26U14*Panic_SMP_Hook 12|33s18 +X 7 arch-snippets.ads +20K14*Snippets 81e18 12|18w11 46r12 +26U14*HCF 12|46s21 +X 9 lib.ads +19K9*Lib 35e8 11|17r6 21r9 39r5 12|19r6 21r14 48r5 +X 10 lib-messages.ads +21K13*Messages 103e17 11|17w10 34r28 37r22 12|36r7 37r7 38r7 39r7 40r7 41r7 +. 42r7 43r7 44r7 45r7 +22@22*Message_State 11|37r31 +26N4*Max_Line 11|34r37 +41U14*Put_Line 12|36s16 37s16 38s16 39s16 40s16 41s16 42s16 43s16 44s16 45s16 +X 11 lib-panic.ads +21K13*Panic 9|19k9 11|39l9 39e14 12|21b18 48l9 48t14 +22@22*Panic_State 23r22 36r22 12|22r22 +26a4*HP{string} 28r38 12|36r26 37r26 38r26 39r26 40r26 41r26 42r26 43r26 +. 44r26 +27a4*RC{string} 34r70 12|36r76 37r76 38r76 39r76 40r76 41r76 42r76 43r76 +. 44r76 45r51 +28a4*Panic_Header{string} 34r48 12|45r26 +32U14*Hard_Panic 32>26 12|27b14 47l8 47t18 +32a26 Message{string} 34r10 12|27b26 45r41 +X 12 lib-panic.adb +24r4 Panic_Mutex{13|22R9} 22r37 30m30 30r30 +X 13 lib-synchronization.ads +20K13*Synchronization 12|19w10 24r26 25r7 30r7 13|66e24 +22R9*Binary_Semaphore 12|24r42 13|57e14 +23r4*Unlocked_Semaphore{22R9} 12|25r23 +27U14*Seize 12|30s23 + +QQ SPARKVERSION 0.0w +GG EK_STATE_MAP ada___lib__panic__panic_state 1 ada___lib__panic__panic_mutex +GG EK_DIRECT_CALLS ada___lib__panic__hard_panic 4 ada___lib__messages__put_line ada___lib__synchronization__seize ada___arch__hooks__panic_smp_hook ada___arch__snippets__hcf +GG EK_PROOF_DEPENDENCIES ada___lib__panic__hard_panic 0 +GG EK_GLOBALS ada___lib__panic__hard_panic local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__panic lib proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___lib__panic__panic_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 3 ada___lib__panic__panic_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___lib__panic__panic_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__panic 0 +GG EK_PROOF_DEPENDENCIES ada___lib__panic 0 +GG EK_GLOBALS ada___lib__panic local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___lib__panic__panic_state refined_initializes 1 ada___lib__panic__panic_mutex calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 ada___lib__panic__panic_mutex TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___arch__snippets TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__hcf FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__enable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__disable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__pause FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__read_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__write_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_REMOTE_STATES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-panic.cswi b/obj/gnatprove/phase1/lib-panic.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/lib-panic.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/lib-runtime.adb.stderr b/obj/gnatprove/phase1/lib-runtime.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-runtime.adb.stdout b/obj/gnatprove/phase1/lib-runtime.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-runtime.ali b/obj/gnatprove/phase1/lib-runtime.ali new file mode 100644 index 0000000..e5f795b --- /dev/null +++ b/obj/gnatprove/phase1/lib-runtime.ali @@ -0,0 +1,280 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.runtime%b lib-runtime.adb 1eea1dc3 OO PK +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali + +U lib.runtime%s lib-runtime.ads d1ab1d77 OO PK +W interfaces%s interfac.ads interfac.ali +W interfaces.c%s i-c.adb i-c.ali +W lib%s lib.adb lib.ali +W system%s system.ads system.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D i-c.ads 20240507065137 aac316ce interfaces.c%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-runtime.ads 20250222165738 e2d5964f lib.runtime%s +D lib-runtime.adb 20250222165738 290e217a lib.runtime%b +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D system.ads 20240507065137 14286b0f system%s +D s-parame.ads 20240507065137 3597fc11 system.parameters%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 6 interfac.ads +38K9*Interfaces 233e15 11|18r6 18r24 12|20w6 20r35 +70M9*Unsigned_8 12|39r35 40r35 58r34 59r34 71r34 72r34 93r22 93r36 94r34 +81M9*Unsigned_32 12|32r23 +X 7 i-c.ads +30K20*C 598e17 11|18w17 18r35 +59I9*int 11|30r68 12|38r68 +89M9*size_t 11|30r53 34r24 38r24 43r16 12|38r53 56r24 69r24 91r16 +X 8 lib.ads +19K9*Lib 35e8 11|23r9 45r5 12|17r6 18r6 22r14 29r34 33r7 101r5 +23V13*C_String_Length{natural} 12|29s38 +X 9 lib-messages.ads +21K13*Messages 103e17 12|17w10 28r21 32r7 +55A12*Translated_String{string} 12|28r30 +63U14*Image 12|32s16 +X 10 lib-panic.ads +21K13*Panic 39e14 12|18w10 33r11 +32U14*Hard_Panic 12|33s17 +X 11 lib-runtime.ads +23K13*Runtime 8|19k9 11|45l9 45e16 12|22b18 101l9 101t16 +25U14*Last_Chance_Handler 25>35 25>58 12|26b14 36l8 36t27 +25m35 File{14|67M9} 12|26b35 29r55 30r26 +25i58 Line{integer} 12|26b58 32r36 +30V13*MemCmp{7|59I9} 30>21 30>25 30>46 12|38b13 52l8 52t14 +30m21 S1{14|67M9} 12|38b21 39r62 +30m25 S2{14|67M9} 12|38b25 40r62 +30m46 Size{7|89M9} 12|38b46 39r26 40r26 42r21 +32V13*MemCpy{14|67M9} 33>8 33>15 34>8 12|54b13 65l8 65t14 +33m8 Desto{14|67M9} 12|55b8 58r61 64r14 +33m15 Source{14|67M9} 12|55b15 59r61 +34m8 Size{7|89M9} 12|56b8 58r25 59r25 61r21 +36V13*MemMove{14|67M9} 37>8 37>15 38>8 12|67b13 86l8 86t15 +37m8 Desto{14|67M9} 12|68b8 71r61 73r60 85r14 +37m15 Source{14|67M9} 12|68b15 72r61 74r60 +38m8 Size{7|89M9} 12|69b8 71r25 72r25 +40V13*MemSet{14|67M9} 41>8 42>8 43>8 12|88b13 100l8 100t14 +41m8 Desto{14|67M9} 12|89b8 94r61 99r14 +42i8 Value{integer} 12|90b8 93r48 +43m8 Size{7|89M9} 12|91b8 94r25 +X 12 lib-runtime.adb +27i7 Line_Len{natural} 32m56 35r43 +28a7 Line_Buffer{9|55A12} 32m43 35r11 35r24 35r59 +29a7 File_String{string} 34r43 +39a7 Str1(6|70M9) 43r13 44r16 +40a7 Str2(6|70M9) 43r25 44r27 +42m11 I{7|89M9} 43r19 43r31 44r22 44r33 +58a7 Dst(6|70M9) 62m10 +59a7 Src(6|70M9) 62r21 +61m11 I{7|89M9} 62r15 62r26 +71a7 Dst(6|70M9) 77r19 78m13 81r27 82m13 +72a7 Src(6|70M9) 78r24 82r24 +73m7 Desto_Int{16|82M9} 76r23 80r26 +74m7 Source_Int{16|82M9} 76r10 80r13 +77m14 I{7|89M9} 78r18 78r29 +81m14 I{7|89M9} 82r18 82r29 +93m7 Val{6|70M9} 97r15 +94a7 Dst(6|70M9) 96r16 97m10 +96m11 C=96:16{6|70M9} +X 14 system.ads +37K9*System 11|17w6 25r42 30r30 33r24 34r39 37r24 38r39 41r16 43r31 12|19r6 +. 19r35 26r42 38r30 55r24 56r39 68r24 69r39 89r16 91r31 14|155e11 +67M9*Address 11|25r49 30r37 33r31 34r46 37r31 38r46 41r23 43r38 12|26r49 +. 38r37 55r31 56r46 68r31 69r46 89r23 91r38 +X 16 s-stoele.ads +40K16*Storage_Elements 12|19w13 19r42 16|90e28 +82M9*Integer_Address 12|73r29 74r29 +87V13*To_Integer{82M9} 12|73s48 74s48 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___lib__runtime__last_chance_handler 0 +GG EK_PROOF_DEPENDENCIES ada___lib__runtime__last_chance_handler 0 +GG EK_GLOBALS ada___lib__runtime__last_chance_handler local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 lib__c_string_length ada___lib__messages__image ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__runtime__memcmp 0 +GG EK_PROOF_DEPENDENCIES ada___lib__runtime__memcmp 0 +GG EK_GLOBALS ada___lib__runtime__memcmp local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__runtime__memcpy 0 +GG EK_PROOF_DEPENDENCIES ada___lib__runtime__memcpy 0 +GG EK_GLOBALS ada___lib__runtime__memcpy local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__runtime__memmove 0 +GG EK_PROOF_DEPENDENCIES ada___lib__runtime__memmove 0 +GG EK_GLOBALS ada___lib__runtime__memmove local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__storage_elements__to_integer TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__runtime__memset 0 +GG EK_PROOF_DEPENDENCIES ada___lib__runtime__memset 0 +GG EK_GLOBALS ada___lib__runtime__memset local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__runtime 0 +GG EK_PROOF_DEPENDENCIES ada___lib__runtime 0 +GG EK_GLOBALS ada___lib__runtime local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime__memset FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces +GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime__last_chance_handler FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime__memcmp FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime__memcpy FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__runtime__memmove FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-runtime.cswi b/obj/gnatprove/phase1/lib-runtime.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/lib-runtime.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/lib-synchronization.adb.stderr b/obj/gnatprove/phase1/lib-synchronization.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-synchronization.adb.stdout b/obj/gnatprove/phase1/lib-synchronization.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-synchronization.ali b/obj/gnatprove/phase1/lib-synchronization.ali new file mode 100644 index 0000000..e3254d3 --- /dev/null +++ b/obj/gnatprove/phase1/lib-synchronization.ali @@ -0,0 +1,205 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.synchronization%b lib-synchronization.adb f95ab937 OO PK +W arch%s arch.ads arch.ali +W arch.snippets%s arch-snippets.adb arch-snippets.ali +W lib%s lib.adb lib.ali +W lib.atomic%s lib-atomic.ads lib-atomic.ali +Z system%s system.ads system.ali + +U lib.synchronization%s lib-synchronization.ads 94a5d800 OO PK +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W system%s system.ads system.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-snippets.ads 20250222165738 3613a65c arch.snippets%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-atomic.ads 20250222165738 4d435862 lib.atomic%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D lib-synchronization.adb 20250222165738 61dbd7a0 lib.synchronization%b +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 7|18w6 19r6 44r10 49r10 61r10 68r10 +X 2 arch-snippets.ads +20K14*Snippets 81e18 7|19w11 44r15 49r15 61r15 68r15 +29U14*Enable_Interrupts 7|49s24 61s24 +30U14*Disable_Interrupts 7|44s24 +37U14*Pause 7|68s24 +X 3 interfac.ads +38K9*Interfaces 233e15 6|17w6 17r22 +70M9*Unsigned_8 6|56r19 61r19 +X 4 lib.ads +19K9*Lib 35e8 6|20r9 66r5 7|17r6 17r22 21r14 71r5 +X 5 lib-atomic.ads +20K13*Atomic 68e15 7|17w10 17r26 +22N4*Mem_Relaxed 7|67r37 +24N4*Mem_Acquire 7|28r67 45r62 +25N4*Mem_Release 7|38r50 59r45 +38V13*Atomic_Load_8[33]{3|70M9} 7|67s13 +59V13*Atomic_Test_And_Set{boolean} 7|28s17 45s17 +64U14*Atomic_Clear 7|38s7 59s7 +X 6 lib-synchronization.ads +20K13*Synchronization 4|19k9 6|66l9 66e24 7|21b18 71l9 71t24 +22R9*Binary_Semaphore 23r34 27r48 31r50 55c9 57e14 58r34 7|25r48 36r50 +23r4*Unlocked_Semaphore{22R9} 58c4 +27U14*Seize 27=21 7|25b14 34l8 34t13 +27r21 Semaphore{22R9} 7|25b21 28m38 28r38 32m27 32r27 +31U14*Release 31=23 7|36b14 39l8 39t15 +31r23 Semaphore{22R9} 7|36b23 38m21 38r21 +38R9*Critical_Lock 39r33 44r43 50r36 60c9 62e14 63r33 7|41r43 55r36 +39r4*Unlocked_Critical{38R9} 63c4 +44U14*Seize 44=21 7|41b14 52l8 52t13 +44r21 Lock{38R9} 7|41b21 45m38 45r38 50m27 50r27 +49U14*Release 50=7 51>7 7|54b14 63l8 63t15 +50r7 Lock{38R9} 7|55b7 59m21 59r21 +51b7 Do_Not_Lift{boolean} 7|56b7 60r14 +56m7*Is_Locked{3|70M9} 7|28m48 32m37 38m31 +61m7*Is_Locked{3|70M9} 7|45m43 50m32 59m26 +65U14 Poll_Until_Zero 65>31 7|32s10 50s10 65b14 70l8 70t23 +65m31 Address{9|67M9} 7|65b31 67r28 +X 9 system.ads +37K9*System 6|18w6 65r41 7|65r41 9|155e11 +67M9*Address 6|65r48 7|65r48 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___lib__synchronization__seize 0 +GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__seize 0 +GG EK_GLOBALS ada___lib__synchronization__seize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__atomic__atomic_test_and_set ada___arch__snippets__pause ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__synchronization__release 0 +GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__release 0 +GG EK_GLOBALS ada___lib__synchronization__release local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___lib__atomic__atomic_clear FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__synchronization__seize__2 0 +GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__seize__2 0 +GG EK_GLOBALS ada___lib__synchronization__seize__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___lib__atomic__atomic_test_and_set ada___arch__snippets__enable_interrupts ada___arch__snippets__disable_interrupts ada___arch__snippets__pause ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__synchronization__release__2 0 +GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__release__2 0 +GG EK_GLOBALS ada___lib__synchronization__release__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___lib__atomic__atomic_clear ada___arch__snippets__enable_interrupts FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__synchronization__poll_until_zero 0 +GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__poll_until_zero 0 +GG EK_GLOBALS ada___lib__synchronization__poll_until_zero local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___arch__snippets__pause ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__synchronization 0 +GG EK_PROOF_DEPENDENCIES ada___lib__synchronization 0 +GG EK_GLOBALS ada___lib__synchronization local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_32GP1698 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_64 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_64GP1759 VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_8GP1577 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_16 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_16GP1637 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__snippets TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__snippets__hcf FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__enable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_64GP1759 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__disable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_test_and_set FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_16GP1637 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_fetch_add FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_32 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_32GP1698 VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__pause FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__read_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_clear FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_8GP1577 VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__write_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_fetch_sub FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-synchronization.cswi b/obj/gnatprove/phase1/lib-synchronization.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/lib-synchronization.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/lib-time.adb.stderr b/obj/gnatprove/phase1/lib-time.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-time.adb.stdout b/obj/gnatprove/phase1/lib-time.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-time.ali b/obj/gnatprove/phase1/lib-time.ali new file mode 100644 index 0000000..391c4b2 --- /dev/null +++ b/obj/gnatprove/phase1/lib-time.ali @@ -0,0 +1,160 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.time%b lib-time.adb 4f0bb3f3 OO PK +W lib%s lib.adb lib.ali + +U lib.time%s lib-time.ads 2c8194dd OO PK +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +N A29:7 gnatprove false_positive "postcondition might fail" "Impossible with the mod in the body, idk why it doesn't catch it" + +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-time.ads 20250222165738 30059be5 lib.time%s +D lib-time.adb 20250222165738 7f0e2816 lib.time%b +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 interfac.ads +38K9*Interfaces 233e15 3|17w6 17r22 +84M9*Unsigned_64 3|27r55 38r40 39r33 49r40 50r33 63r50 67r33 75r33 4|21r55 +. 22r37 24r21 27r21 33r40 34r33 37r21 38r22 47r40 48r33 59r50 +X 2 lib.ads +19K9*Lib 35e8 3|19r9 77r5 4|17r14 63r5 +X 3 lib-time.ads +19K13*Time 2|19k9 3|77l9 77e13 4|17b18 63l9 63t13 +27U14*Normalize 27=25 27=34 4|21b14 30l8 30t17 43s7 +27m25 Seconds{1|84M9} 4|21b25 24r10 25m10 25r21 27m10 +27m34 Nanoseconds{1|84M9} 28r35 4|21b34 22r52 29m7 29r22 +37U14*Increment 38=8 38=18 39>8 39>18 4|32b14 44l8 44t17 +38m8 Seconds1{1|84M9} 4|33b8 37r10 38m10 40m10 40r22 43m18 +38m18 Nanoseconds1{1|84M9} 40r35 4|33b18 42m7 42r23 43m28 +39m8 Seconds2{1|84M9} 4|34b8 37r40 40r33 +39m18 Nanoseconds2{1|84M9} 4|34b18 42r38 +48U14*Substract 49=8 49=18 50>8 50>18 4|46b14 57l8 57t17 +49m8 Seconds1{1|84M9} 54r28 4|47b8 51m7 51r19 53m10 53r22 +49m18 Nanoseconds1{1|84M9} 52r25 54r38 55r35 4|47b18 52r10 54m10 54r41 56m7 +. 56r23 +50m8 Seconds2{1|84M9} 54r52 4|48b8 51r30 +50m18 Nanoseconds2{1|84M9} 53r25 54r62 4|48b18 52r25 56r38 +63V13*Is_Greater_Equal{boolean} 54s10 63>31 63>35 63>40 63>44 4|59b13 62l8 +. 62t24 +63m31 S1{1|84M9} 4|59b31 61r15 61r29 +63m35 NS1{1|84M9} 64r34 4|59b35 61r43 +63m40 S2{1|84M9} 4|59b40 61r20 61r34 +63m44 NS2{1|84M9} 64r58 4|59b44 61r50 +67V13*Is_Normalized{boolean} 28s20 40s20 52s10 53s10 55s20 64s19 64s43 67>28 +. 75b13 +67m28 NS{1|84M9} 76r8 +71N4 MSec_Per_Sec 73r48 +72N4 USec_Per_MSec 73r32 +73N4 USec_Per_Sec 76r13 4|22r66 29r38 54r26 +X 4 lib-time.adb +22m7 Nanosecond_Seconds{1|84M9} 24r40 25r31 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___lib__time__normalize 1 ada___lib__time__is_normalized +GG EK_PROOF_DEPENDENCIES ada___lib__time__normalize 0 +GG EK_GLOBALS ada___lib__time__normalize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__time__increment 2 ada___lib__time__normalize ada___lib__time__is_normalized +GG EK_PROOF_DEPENDENCIES ada___lib__time__increment 0 +GG EK_GLOBALS ada___lib__time__increment local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__time__substract 2 ada___lib__time__is_greater_equal ada___lib__time__is_normalized +GG EK_PROOF_DEPENDENCIES ada___lib__time__substract 0 +GG EK_GLOBALS ada___lib__time__substract local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__time__is_greater_equal 1 ada___lib__time__is_normalized +GG EK_PROOF_DEPENDENCIES ada___lib__time__is_greater_equal 0 +GG EK_GLOBALS ada___lib__time__is_greater_equal local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__time__is_normalized 0 +GG EK_PROOF_DEPENDENCIES ada___lib__time__is_normalized 0 +GG EK_GLOBALS ada___lib__time__is_normalized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__time 0 +GG EK_PROOF_DEPENDENCIES ada___lib__time 0 +GG EK_GLOBALS ada___lib__time local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-time.cswi b/obj/gnatprove/phase1/lib-time.cswi new file mode 100644 index 0000000..1286ce7 --- /dev/null +++ b/obj/gnatprove/phase1/lib-time.cswi @@ -0,0 +1,28 @@ +20250222171637 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/lib.adb.stderr b/obj/gnatprove/phase1/lib.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib.adb.stdout b/obj/gnatprove/phase1/lib.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib.ali b/obj/gnatprove/phase1/lib.ali new file mode 100644 index 0000000..2b03869 --- /dev/null +++ b/obj/gnatprove/phase1/lib.ali @@ -0,0 +1,133 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib%b lib.adb b1d79efc OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali + +U lib%s lib.ads 99bd9df6 OO PU PK +W system%s system.ads system.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib.adb 20250222165738 104b929b lib%b +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 5|17r6 38r27 +X 2 a-charac.ads +16K13*Characters 18e19 5|17r10 38r31 +X 3 a-chlat1.ads +16K24*Latin_1 294e27 5|17w21 38r42 +23e4*NUL{character} 5|38r50 +X 4 lib.ads +19K9*Lib 35l5 35e8 5|20b14 65l5 65t8 +23V13*C_String_Length{natural} 23>30 5|30b13 43l8 43t23 +23m30 Addr{6|67M9} 24r19 5|30b30 36r32 +27V13*Least_Common_Multiple{integer} 27>36 27>42 5|45b13 51l8 51t29 +27i36 Val1{integer} 28r21 28r34 5|45b36 47r10 50r20 50r61 +27i42 Val2{integer} 29r21 29r34 5|45b42 47r22 50r27 50r67 +32V13*Greatest_Common_Divisor{integer} 32>38 32>44 34r20 5|50s36 53b13 64l8 +. 64t31 +32i38 Val1{integer} 33r20 5|53b38 54r22 +32i44 Val2{integer} 33r33 5|53b44 55r22 +X 5 lib.adb +31i7 Length{natural} 36r55 38r57 39m13 39r23 42r14 +35e13 C{character} 38r23 +54i7 M{integer} 59r15 60m10 63r14 +55i7 N{integer} 58r13 60r15 61m10 61r21 +56i7 T{integer} 59m10 61r15 +X 6 system.ads +37K9*System 4|17w6 17r18 24r27 5|18r6 18r35 6|155e11 +67M9*Address 4|23r37 5|30r37 +69m4*Null_Address{67M9} 4|24r34 +81V14*"="{boolean} 4|24r24 +X 7 s-stoele.ads +40K16*Storage_Elements 5|18w13 18r42 7|90e28 +51I9*Storage_Offset 5|36r39 +67V14*"+"{6|67M9} 5|36r37 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS lib__c_string_length 0 +GG EK_PROOF_DEPENDENCIES lib__c_string_length 0 +GG EK_GLOBALS lib__c_string_length local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS lib__least_common_multiple 1 lib__greatest_common_divisor +GG EK_PROOF_DEPENDENCIES lib__least_common_multiple 0 +GG EK_GLOBALS lib__least_common_multiple local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS lib__greatest_common_divisor 0 +GG EK_PROOF_DEPENDENCIES lib__greatest_common_divisor 0 +GG EK_GLOBALS lib__greatest_common_divisor local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS lib 0 +GG EK_PROOF_DEPENDENCIES lib 0 +GG EK_GLOBALS lib local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib.cswi b/obj/gnatprove/phase1/lib.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/lib.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/main.adb.stderr b/obj/gnatprove/phase1/main.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/main.adb.stdout b/obj/gnatprove/phase1/main.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/main.ali b/obj/gnatprove/phase1/main.ali new file mode 100644 index 0000000..dfc5faf --- /dev/null +++ b/obj/gnatprove/phase1/main.ali @@ -0,0 +1,94 @@ +V "GNAT Lib v14" +M P W=b +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U main%b main.adb 5d198ec1 OO SU +W arch%s arch.ads arch.ali +W arch.entrypoint%s arch-entrypoint.adb arch-entrypoint.ali +W kernel_main%s kernel_main.adb kernel_main.ali +Z system%s system.ads system.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-entrypoint.ads 20250222165738 3e52ad86 arch.entrypoint%s +D kernel_main.ads 20250222165738 fba3ee83 kernel_main%s +D main.adb 20250222165738 98e8cdc4 main%b +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 4|22r6 +X 2 arch-entrypoint.ads +17K14*Entrypoint 20e20 4|22w11 23r27 +X 3 kernel_main.ads +17K9*Kernel_Main 26e16 4|24w6 28r4 +25U14*Entrypoint 4|28s16 +X 4 main.adb +26U11*Main 26b11 29l5 29t9 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS main 1 kernel_main__entrypoint +GG EK_PROOF_DEPENDENCIES main 0 +GG EK_GLOBALS main local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 kernel_main__entrypoint calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___arch__entrypoint TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___arch__entrypoint__bootstrap_main FALSE FALSE FALSE FALSE TRUE ada___arch__entrypoint VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE main FALSE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE kernel_main TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE kernel_main__entrypoint FALSE FALSE FALSE FALSE TRUE kernel_main VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/main.cswi b/obj/gnatprove/phase1/main.cswi new file mode 100644 index 0000000..dd2c5c1 --- /dev/null +++ b/obj/gnatprove/phase1/main.cswi @@ -0,0 +1,28 @@ +20250222171635 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/memory-physical.adb.stderr b/obj/gnatprove/phase1/memory-physical.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/memory-physical.adb.stdout b/obj/gnatprove/phase1/memory-physical.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/memory-physical.ali b/obj/gnatprove/phase1/memory-physical.ali new file mode 100644 index 0000000..f8ce324 --- /dev/null +++ b/obj/gnatprove/phase1/memory-physical.ali @@ -0,0 +1,454 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U memory.physical%b memory-physical.adb 1a585658 OO PK +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W config%s config.ads config.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali +Z system.storage_elements%s s-stoele.ads s-stoele.ali +Z system.unsigned_types%s s-unstyp.ads s-unstyp.ali +W userland%s userland.ads userland.ali +W userland.oom_failure%s userland-oom_failure.adb userland-oom_failure.ali + +U memory.physical%s memory-physical.ads 1461ad4d OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali +W interfaces.c%s i-c.adb i-c.ali +W memory%s memory.ads memory.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D config.ads 20250222165738 5d21f3bf config%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D i-c.ads 20240507065137 aac316ce interfaces.c%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s +D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s +D memory-physical.adb 20250222165738 d87b6a63 memory.physical%b +D system.ads 20240507065137 14286b0f system%s +D s-parame.ads 20240507065137 3597fc11 system.parameters%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-oom_failure.ads 20250222165738 8ec1521c userland.oom_failure%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 4 arch.ads +20K9*Arch 52e9 17|17w6 17r16 23r39 18|21r6 28r37 52r39 57r25 73r25 99r28 +23n8*Memory_Free{22E9} 18|57r30 73r30 99r33 +30m7*Start{19|67M9} 18|62r72 75r46 105r18 109r59 +31i7*Length{21|53I12} 18|58r50 63r60 73r54 76r34 110r47 +32e7*MemType{22E9} 18|57r15 73r15 99r18 +34A9*Boot_Memory_Map(29R9) 17|23r44 18|52r44 +X 6 arch-mmu.ads +22K14*MMU 250e13 18|21w11 28r42 +49N7*Page_Size 18|28r46 +X 7 config.ads +17K9*Config 29e11 18|24w6 144r14 211r13 229r30 +28b4*Support_Alloc_Only{boolean} 18|144r21 211r20 229r37 +X 8 interfac.ads +38K9*Interfaces 233e15 17|18r6 34r25 40r30 18|17w6 17r22 121r25 134r30 222r30 +70M9*Unsigned_8 18|204r65 +84M9*Unsigned_64 18|31r26 35r36 38r36 70r24 90r18 92r38 106r32 107r32 109r32 +. 110r32 128r28 129r28 190r43 224r22 244r28 247r42 +X 9 i-c.ads +30K20*C 598e17 17|18w17 34r36 40r41 18|121r36 134r41 222r41 +89M9*size_t 17|34r38 40r43 18|121r38 134r43 222r43 +X 10 lib.ads +19K9*Lib 35e8 18|18r6 19r6 19r31 20r6 23r6 83r10 122r28 135r10 149r7 176r10 +. 178r10 180r10 182r10 196r7 241r10 250r13 253r10 259r7 264r7 +X 11 lib-alignment.ads +19k13*Alignment 43e18 18|20w10 122r32 +X 13 lib-messages.ads +21K13*Messages 103e17 18|23w10 178r14 250r17 +41U14*Put_Line 18|178s23 250s26 +X 14 lib-panic.ads +21K13*Panic 39e14 18|18w10 83r14 135r14 176r14 +32U14*Hard_Panic 18|83s20 135s20 176s20 +X 15 lib-synchronization.ads +20K13*Synchronization 66e24 18|19w10 19r35 149r11 180r14 182r14 196r11 241r14 +. 253r14 259r11 264r11 +22R9*Binary_Semaphore 57e14 18|39r31 +23r4*Unlocked_Semaphore{22R9} 18|39r51 +27U14*Seize 18|149s27 182s30 241s30 259s27 +31U14*Release 18|180s30 196s27 253s30 264s27 +X 16 memory.ads +19K9*Memory 36e11 17|20r9 34r53 48r19 49r19 50r19 60r5 18|27r14 34r50 36r36 +. 122r43 130r28 130r43 131r28 134r17 161r37 266r5 +20M9*Size 17|48r26 49r26 50r26 59r42 59r55 18|34r57 36r43 43r21 44r21 47r42 +. 47r55 58r42 62r25 62r33 63r25 63r33 71r24 73r46 122r50 130r35 130r50 131r35 +. 134r24 161r44 +23N4*Null_Address 18|37r51 82r27 +29N4*Memory_Offset 18|75r55 105r55 202r64 231r28 232r41 244r49 +35M12*Virtual_Address{21|82M9} 17|34r60 18|37r32 121r53 201r25 202r13 223r22 +. 223r41 +X 17 memory-physical.ads +20K16*Physical 16|19k9 17|60l12 60e20 18|27b21 266l12 266t20 +23U14*Init_Allocator 23>30 18|52b14 119l8 119t22 +23a30 Memmap{4|34A9} 18|52b30 56r16 57r13 58r48 62r51 62r59 63r39 63r47 72r16 +. 73r13 73r52 75r44 76r32 77r32 98r19 99r16 105r16 109r57 110r45 +34V13*Alloc{16|35M12} 34>20 18|121b13 220l8 220t13 +34m20 Sz{9|89M9} 18|121b20 130r56 +40U14*Free 40>20 18|222b14 255l8 255t12 +40m20 Address{9|89M9} 18|222b20 223r58 +47R9*Statistics 51e14 55r42 18|257r42 +48m7*Total{16|20M9} 18|261m11 +49m7*Available{16|20M9} 18|262m11 +50m7*Free{16|20M9} 18|263m11 +55U14*Get_Statistics 55<30 18|257b14 265l8 265t22 +55r30 Stats{47R9} 18|257b30 260m7 +59V13 Calculate_Signature{16|20M9} 59>34 18|47b13 50l8 50t27 216s32 243s13 +59m34 Count{16|20M9} 18|47b34 49r14 +X 18 memory-physical.adb +28N4 Block_Size 70r53 114r53 115r33 142r51 143r36 195r63 202r50 204r50 217r26 +. 237r62 244r66 245r64 +29b4 Block_Free{boolean} 100r31 152r31 247r66 +30b4 Block_Used{boolean} 95r21 102r31 190r67 +31A9 Bitmap(boolean)<8|84M9> 88r24 124r21 225r22 +34m4 Total_Memory{16|20M9} 66m10 70r37 261r24 +34m18 Available_Memory{16|20M9} 65m10 262r24 +34m36 Free_Memory{16|20M9} 58m13 58r28 65r30 78m13 78r32 195m7 195r27 245m13 +. 245r28 263r24 +35m4 Block_Count{8|84M9} 70m7 71r30 88r37 124r34 151r40 225r35 +36m4 Bitmap_Length{16|20M9} 71m7 73r64 76r58 77r57 78r46 +37m4 Bitmap_Address{16|35M12} 75m13 82r10 89r50 105r38 125r47 226r38 +38m4 Bitmap_Last_Used{8|84M9} 151r16 169r10 170m10 194m7 +39r4 Alloc_Mutex{15|22R9} 149m34 149r34 180m39 180r39 182m37 182r37 196m36 +. 196r36 241m37 241r37 253m39 253r39 259m34 259r34 264m36 264r36 +42R9 Allocation_Header 45e14 203r19 239r19 +43m7*Block_Count{16|20M9} 215m17 243r41 245r50 246r34 +44m7*Signature{16|20M9} 216m17 243r63 +53i7 Adjusted_Length{21|53I12} 76m13 107r45 +54m7 Adjusted_Start{19|67M9} 77m13 106r57 +56r11 E=56:16{4|29R9} +62m10 Sta{16|20M9} 66r30 +63m10 Len{16|20M9} 66r36 +72r11 E=72:16{4|29R9} +88a10 Bitmap_Body{31A9} 89m14 89r14 94r22 95m13 114m16 +90m10 Index{8|84M9} 113r19 114r44 115m16 115r25 +91b10 Block_Value{boolean} 100m16 102m16 114r68 +92m10 Block_Start{8|84M9} 106m16 109m16 114r30 +92m23 Block_Length{8|84M9} 107m16 110m16 113r27 +94b14 Item=94:22{boolean} +98r14 E=98:19{4|29R9} +122K15 Align[11|19] 142r29 +124a7 Bitmap_Body{31A9} 125m11 125r11 152r13 169r30 170r30 190m10 +127b7 Did_OOM_Once{boolean} 175r10 179m10 +128m7 First_Found_Index{8|84M9} 153r16 153r46 155m16 183m10 190r23 194r27 +. 202r30 +129m7 Found_Count{8|84M9} 153r66 156m16 158m16 158r31 161r50 184m10 +130m7 Size{16|20M9} 134r10 136r13 137m10 142m7 142r45 143r29 +131m7 Blocks_To_Allocate{16|20M9} 143m7 145m10 145r32 161r16 189r21 195r42 +. 204r29 215r32 216r53 +150L6 Search_Blocks 171r15 185r15 +151m11 I{8|84M9} 152r26 153r41 155r37 +188L6 Fill_Bitmap 162r21 +189m11 I{16|20M9} 190r56 +201m10 Ret{16|35M12} 203r73 205r49 212r20 217r20 +203r10 Header{42R9} 214m13 +204a10 Data(8|70M9) 207r19 208m13 +207m14 V=207:19{8|70M9} +223m7 Real_Address{16|35M12} 229r10 231r13 232m10 232r26 237r47 +224m7 Real_Block{8|84M9} 244m13 247r29 +225a7 Bitmap_Body{31A9} 247m16 +237m10 IAddr{21|82M9} 238r59 244r41 +238m10 SAddr{19|67M9} 239r61 +239r10 Header{42R9} 243r34 243r56 245r43 246r27 +246m17 I{16|20M9} 247r55 +18M9 T{16|20M9} 27r42[122] 27r52[122] 35r44[122] 35r54[122] 40r50[122] 40r60[122] +. 41r49[122] 23r42[122] 23r52[122] 27r14[122] 30r44[122] 30r54[122] 34r14[122] +. 37r50[122] 37r60[122] +27V13 Align_Up{16|20M9} 142s35[122] 29r20[122] +27m23 Value{16|20M9} 24r61[122] +27m30 Alignment{16|20M9} 28r20[122] 28r40[122] 28r55[122] 29r40[122] 25r61[122] +35V13 Align_Down{16|20M9} 37r20[122] +35m25 Value{16|20M9} 31r61[122] +35m32 Alignment{16|20M9} 36r20[122] 36r40[122] 36r55[122] 37r42[122] 32r61[122] +40V13 Divide_Round_Up{16|20M9} 42r20[122] +40m30 Dividend{16|20M9} 41r21[122] 39r15[122] +40m40 Divisor{16|20M9} 41r33[122] 41r62[122] 42r47[122] 39r27[122] 39r43[122] +24m7 Value2{21|82M9} 27r18[122] +25m7 Align2{21|82M9} 27r27[122] 27r48[122] +31m7 Value2{21|82M9} 34r17[122] +32m7 Align2{21|82M9} 34r33[122] +X 19 system.ads +37K9*System 18|22w6 22r18 54r25 54r43 238r29 19|155e11 +67M9*Address 18|54r32 238r36 +69m4*Null_Address{67M9} 18|54r50 +81V14*"="{boolean} 18|105r24 +X 21 s-stoele.ads +51I9*Storage_Offset +53I12*Storage_Count{51I9} 18|53r25 76r43 77r42 +67V14*"+"{19|67M9} 18|77r40 +82M9*Integer_Address 18|237r28 +84V13*To_Address{19|67M9} 18|89s38 105s26 125s35 203s61 205s37 226s26 238s47 +87V13*To_Integer{82M9} 18|62s39 75s32 106s45 109s45 +X 23 userland.ads +17K9*Userland 18|25r6 181r10 23|23e13 +X 24 userland-oom_failure.ads +19K18*OOM_Failure 18|25w15 181r19 24|35e25 +29U14*Handle_Failure 18|181s31 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___memory__physical__init_allocator 3 ada___system__storage_elements__to_address ada___system__storage_elements__to_integer ada___lib__panic__hard_panic +GG EK_PROOF_DEPENDENCIES ada___memory__physical__init_allocator 0 +GG EK_GLOBALS ada___memory__physical__init_allocator local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 5 ada___memory__physical__free_memory ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 9 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 5 ada___memory__physical__free_memory ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 9 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 9 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 +GG EK_DIRECT_CALLS ada___memory__physical__alloc__align__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc__align__align_up 0 +GG EK_GLOBALS ada___memory__physical__alloc__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___memory__physical__alloc__align ada___memory__physical__alloc ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___memory__physical__alloc__align__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc__align__align_down 0 +GG EK_GLOBALS ada___memory__physical__alloc__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___memory__physical__alloc__align ada___memory__physical__alloc ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___memory__physical__alloc__align__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc__align__divide_round_up 0 +GG EK_GLOBALS ada___memory__physical__alloc__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___memory__physical__alloc__align ada___memory__physical__alloc ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___memory__physical__alloc__align 0 +GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc__align 0 +GG EK_GLOBALS ada___memory__physical__alloc__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___memory__physical__alloc ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___memory__physical__alloc 0 +GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc 0 +GG EK_GLOBALS ada___memory__physical__alloc local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 5 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex proper_output 3 ada___memory__physical__free_memory ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex refined_proof_in 0 refined_input 5 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex refined_output 3 ada___memory__physical__free_memory ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___lib__panic__hard_panic ada___lib__messages__put_line ada___lib__synchronization__seize ada___lib__synchronization__release ada___userland__oom_failure__handle_failure TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 5 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex LOCKS 0 +GG EK_DIRECT_CALLS ada___memory__physical__free 5 ada___memory__physical__calculate_signature ada___system__storage_elements__to_address ada___lib__messages__put_line ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___memory__physical__free 0 +GG EK_GLOBALS ada___memory__physical__free local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 6 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 4 ada___memory__physical__free_memory ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 6 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 4 ada___memory__physical__free_memory ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 6 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 +GG EK_DIRECT_CALLS ada___memory__physical__get_statistics 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___memory__physical__get_statistics 0 +GG EK_GLOBALS ada___memory__physical__get_statistics local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 4 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__alloc_mutex proper_output 1 ada___memory__physical__alloc_mutex refined_proof_in 0 refined_input 4 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__alloc_mutex refined_output 1 ada___memory__physical__alloc_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 4 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__alloc_mutex LOCKS 0 +GG EK_DIRECT_CALLS ada___memory__physical__calculate_signature 0 +GG EK_PROOF_DEPENDENCIES ada___memory__physical__calculate_signature 0 +GG EK_GLOBALS ada___memory__physical__calculate_signature local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___memory__physical 0 +GG EK_PROOF_DEPENDENCIES ada___memory__physical 0 +GG EK_GLOBALS ada___memory__physical local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 5 ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex refined_initializes 5 ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 8 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces +GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___memory__physical__alloc__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___memory__physical__alloc BODY_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure__get_killing_config FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure__configure_killing FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__alloc__align__align_up FALSE FALSE FALSE FALSE TRUE ada___memory__physical__alloc__align VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__alloc__align__align_down FALSE FALSE FALSE FALSE TRUE ada___memory__physical__alloc__align VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE config TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___memory__physical__alloc__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___memory__physical__alloc__align VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_REMOTE_STATES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/memory-physical.cswi b/obj/gnatprove/phase1/memory-physical.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/memory-physical.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/memory.ads.stderr b/obj/gnatprove/phase1/memory.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/memory.ads.stdout b/obj/gnatprove/phase1/memory.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/memory.ali b/obj/gnatprove/phase1/memory.ali new file mode 100644 index 0000000..6cb6517 --- /dev/null +++ b/obj/gnatprove/phase1/memory.ali @@ -0,0 +1,89 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U memory%s memory.ads ff889457 OO PK +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali + +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 memory.ads +19K9*Memory 36l5 36e11 +20M9*Size 28r32 +23N4*Null_Address +28N4*Kernel_Offset 33r31 +29N4*Memory_Offset 33r47 +33N4*Physical_Max 34r59 +34M12*Physical_Address{3|82M9} +35M12*Virtual_Address{3|82M9} +X 2 system.ads +37K9*System 1|17r6 17r35 2|155e11 +X 3 s-stoele.ads +40K16*Storage_Elements 1|17w13 17r42 3|90e28 +82M9*Integer_Address 1|34r32 35r32 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS memory 0 +GG EK_PROOF_DEPENDENCIES memory 0 +GG EK_GLOBALS memory local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/memory.cswi b/obj/gnatprove/phase1/memory.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/memory.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/networking-arp.adb.stderr b/obj/gnatprove/phase1/networking-arp.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking-arp.adb.stdout b/obj/gnatprove/phase1/networking-arp.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking-arp.ali b/obj/gnatprove/phase1/networking-arp.ali new file mode 100644 index 0000000..a51d3b7 --- /dev/null +++ b/obj/gnatprove/phase1/networking-arp.ali @@ -0,0 +1,212 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U networking.arp%b networking-arp.adb 0844581d OO PK +W networking%s networking.adb networking.ali + +U networking.arp%s networking-arp.ads 9e287770 OO PK +W networking%s networking.adb networking.ali + +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D networking.ads 20250222165738 70ea6e55 networking%s +D networking-arp.ads 20250222165738 eec21925 networking.arp%s +D networking-arp.adb 20250222165738 e6864138 networking.arp%b +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 interfac.ads +70M9*Unsigned_8 +X 4 networking.ads +20K9*Networking 55e15 5|17r9 86r5 6|17r14 127r5 +22A9*MAC_Address(1|70M9) 5|33r21 41r21 47r21 53r28 57r28 61r51 65r51 +. 74r20 6|31r21 47r21 62r21 76r28 90r28 104r51 116r51 +23A9*IPv4_Address(1|70M9) 5|34r21 35r21 42r21 43r21 53r58 61r27 +. 75r20 76r20 6|32r21 33r21 48r21 49r21 76r58 104r27 +24A9*IPv6_Address(1|70M9) 5|36r21 37r21 48r21 49r21 57r58 65r27 +. 77r20 78r20 6|34r21 35r21 63r21 64r21 90r58 116r27 +X 5 networking-arp.ads +17K20*ARP 4|20k9 5|86l16 86e19 6|17b25 127l16 127t19 +25U14*Initialize 6|20b14 28l8 28t18 +32U14*Add_Static 33>8 34>8 35>8 36>8 37>8 6|30b14 44l8 44t18 +33a8 MAC{4|22A9} 6|31b8 40r19 +34a8 IP4{4|23A9} 6|32b8 40r24 +35a8 IP4_Subnet{4|23A9} 6|33b8 40r29 +36a8 IP6{4|24A9} 6|34b8 40r41 +37a8 IP6_Subnet{4|24A9} 6|35b8 40r46 +40U14*Modify_Static 41>8 42>8 43>8 6|46b14 59l8 59t21 +41a8 MAC{4|22A9} 6|47b8 53r21 +42a8 IP4{4|23A9} 6|48b8 54r22 +43a8 IP4_Subnet{4|23A9} 6|49b8 55r29 +46U14*Modify_Static 47>8 48>8 49>8 6|61b14 74l8 74t21 +47a8 MAC{4|22A9} 6|62b8 68r21 +48a8 IP6{4|24A9} 6|63b8 69r22 +49a8 IP6_Subnet{4|24A9} 6|64b8 70r29 +53U14*Lookup 53>22 53<41 53<45 6|76b14 88l8 88t14 +53a22 MAC{4|22A9} 6|76b22 79r21 +53a41 IP{4|23A9} 6|76b41 80m13 86m7 +53a45 Subnet{4|23A9} 6|76b45 81m13 87m7 +57U14*Lookup 57>22 57<41 57<45 6|90b14 102l8 102t14 +57a22 MAC{4|22A9} 6|90b22 93r21 +57a41 IP{4|24A9} 6|90b41 94m13 100m7 +57a45 Subnet{4|24A9} 6|90b45 95m13 101m7 +61U14*Lookup 61>22 61<41 6|104b14 114l8 114t14 +61a22 IP{4|23A9} 6|104b22 107r21 +61a41 MAC{4|22A9} 6|104b41 108m13 113m7 +65U14*Lookup 65>22 65<41 6|116b14 126l8 126t14 +65a22 IP{4|24A9} 6|116b22 119r21 +65a41 MAC{4|22A9} 6|116b41 120m13 125m7 +69V13*Is_Initialized{boolean} 26s24 27s20 38s19 44s19 50s19 54s19 58s19 62s19 +. 66s19 85b13 +73R9 ARP_Entry 79e14 80r43 +74a7*MAC{4|22A9} 6|23m11 39r15 53r15 68r15 79r15 93r15 108r22 120r22 +75a7*IP4{4|23A9} 6|24m11 54m15 80r25 107r15 +76a7*IP4_Subnet{4|23A9} 6|25m11 55m15 81r25 +77a7*IP6{4|24A9} 6|26m11 69m15 94r25 119r15 +78a7*IP6_Subnet{4|24A9} 6|27m11 70m15 95r25 +80A9 ARP_Entries(73R9) 81r35 6|22r32 +81P9 ARP_Entries_Acc(80A9) 83r24 +83p4 Interface_Entries{81P9} 85r47 6|22m7 38r16 52r16 67r16 78r16 92r16 106r16 +. 118r16 +X 6 networking-arp.adb +38r11 E{5|73R9} +52r11 E{5|73R9} +67r11 E{5|73R9} +78r11 E{5|73R9} +92r11 E{5|73R9} +106r11 E{5|73R9} +118r11 E{5|73R9} + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___networking__arp__initialize 1 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__arp__initialize 0 +GG EK_GLOBALS ada___networking__arp__initialize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 1 ada___networking__arp__interface_entries refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__arp__add_static 1 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__arp__add_static 0 +GG EK_GLOBALS ada___networking__arp__add_static local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 1 ada___networking__arp__interface_entries refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__arp__modify_static 1 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__arp__modify_static 0 +GG EK_GLOBALS ada___networking__arp__modify_static local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 1 ada___networking__arp__interface_entries refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__arp__modify_static__2 1 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__arp__modify_static__2 0 +GG EK_GLOBALS ada___networking__arp__modify_static__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 1 ada___networking__arp__interface_entries refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__arp__lookup 1 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__arp__lookup 0 +GG EK_GLOBALS ada___networking__arp__lookup local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__arp__lookup__2 1 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__arp__lookup__2 0 +GG EK_GLOBALS ada___networking__arp__lookup__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__arp__lookup__3 1 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__arp__lookup__3 0 +GG EK_GLOBALS ada___networking__arp__lookup__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__arp__lookup__4 1 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__arp__lookup__4 0 +GG EK_GLOBALS ada___networking__arp__lookup__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__arp__is_initialized 0 +GG EK_PROOF_DEPENDENCIES ada___networking__arp__is_initialized 0 +GG EK_GLOBALS ada___networking__arp__is_initialized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__arp 0 +GG EK_PROOF_DEPENDENCIES ada___networking__arp 0 +GG EK_GLOBALS ada___networking__arp local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___networking__arp__interface_entries refined_initializes 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 ada___networking__arp__interface_entries TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking-arp.cswi b/obj/gnatprove/phase1/networking-arp.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/networking-arp.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/networking.adb.stderr b/obj/gnatprove/phase1/networking.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking.adb.stdout b/obj/gnatprove/phase1/networking.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking.ali b/obj/gnatprove/phase1/networking.ali new file mode 100644 index 0000000..c4cf943 --- /dev/null +++ b/obj/gnatprove/phase1/networking.ali @@ -0,0 +1,165 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U networking%b networking.adb ed5f0138 OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali + +U networking%s networking.ads 7df22ba3 OO PK +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D networking.ads 20250222165738 70ea6e55 networking%s +D networking.adb 20250222165738 7d62411b networking%b +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 8|17r6 24r26 +X 2 a-charac.ads +16K13*Characters 18e19 8|17r10 24r30 +X 3 a-chlat1.ads +16K24*Latin_1 294e27 8|17w21 24r41 +23e4*NUL{character} 8|24r49 +X 4 interfac.ads +38K9*Interfaces 233e15 7|17w6 17r22 +70M9*Unsigned_8 7|22r44 23r44 24r44 +73M9*Unsigned_16 7|25r26 26r26 +X 5 lib.ads +19K9*Lib 35e8 7|18r6 18r31 +X 6 lib-synchronization.ads +20K13*Synchronization 66e24 7|18w10 18r35 +22R9*Binary_Semaphore 57e14 7|51r30 +23r4*Unlocked_Semaphore{22R9} 7|51r50 +27U14*Seize 8|32s7 44s7 +31U14*Release 8|34s7 47s7 +X 7 networking.ads +20K9*Networking 55l5 55e15 8|19b14 50l5 50t15 +22A9*MAC_Address(4|70M9) +23A9*IPv4_Address(4|70M9) 29r32 +24A9*IPv6_Address(4|70M9) 30r32 +25M9*IPv4_Port<4|73M9> +26M9*IPv6_Port<4|73M9> +29a4*IPv4_8_Submask{23A9} +30a4*IPv6_128_Submask{24A9} +33i4*Hostname_Max_Len{natural} 40r47 49c4 52r41 53r28 +38U14*Get_Hostname 38<28 38<47 8|22b14 35l8 35t20 +38a28 Name{string} 39r19 40r19 8|22b28 24m7 26r10 27r20 33m7 33r13 33r27 +38i47 Length{natural} 8|22b47 27m10 29m10 33r40 33r70 +45U14*Set_Hostname 45>28 45<43 8|37b14 49l8 49t20 +45a28 Name{string} 8|37b28 39r10 39r29 45r26 46r22 46r38 +45b43 Success{boolean} 8|37b43 40m10 48m7 +51r4 Hostname_Lock{6|22R9} 8|32m14 32r14 34m16 34r16 44m14 44r14 47m16 47r16 +52i4 Hostname_Length{natural} 8|26r24 29r20 45m7 +53a4 Hostname{string} 8|33r55 39r43 46m7 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS networking__get_hostname 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES networking__get_hostname 0 +GG EK_GLOBALS networking__get_hostname local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 3 networking__hostname_lock networking__hostname_length networking__hostname proper_output 1 networking__hostname_lock refined_proof_in 0 refined_input 3 networking__hostname_lock networking__hostname_length networking__hostname refined_output 1 networking__hostname_lock calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 networking__hostname_lock networking__hostname_length networking__hostname LOCKS 0 +GG EK_DIRECT_CALLS networking__set_hostname 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES networking__set_hostname 0 +GG EK_GLOBALS networking__set_hostname local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 3 networking__hostname_lock networking__hostname_length networking__hostname proper_output 3 networking__hostname_lock networking__hostname_length networking__hostname refined_proof_in 0 refined_input 3 networking__hostname_lock networking__hostname_length networking__hostname refined_output 3 networking__hostname_lock networking__hostname_length networking__hostname calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 networking__hostname_lock networking__hostname_length networking__hostname LOCKS 0 +GG EK_DIRECT_CALLS networking 0 +GG EK_PROOF_DEPENDENCIES networking 0 +GG EK_GLOBALS networking local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 3 networking__hostname_lock networking__hostname_length networking__hostname refined_initializes 3 networking__hostname_lock networking__hostname_length networking__hostname calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 3 networking__hostname_lock networking__hostname_length networking__hostname TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking.cswi b/obj/gnatprove/phase1/networking.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/networking.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/scheduler.adb.stderr b/obj/gnatprove/phase1/scheduler.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/scheduler.adb.stdout b/obj/gnatprove/phase1/scheduler.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/scheduler.ali b/obj/gnatprove/phase1/scheduler.ali new file mode 100644 index 0000000..e224652 --- /dev/null +++ b/obj/gnatprove/phase1/scheduler.ali @@ -0,0 +1,1072 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U scheduler%b scheduler.adb c2e4a723 OO PK +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W arch.local%s arch-local.adb arch-local.ali +W arch.snippets%s arch-snippets.adb arch-snippets.ali +W lib%s lib.adb lib.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W lib.time%s lib-time.adb lib-time.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali +W userland%s userland.ads userland.ali +W userland.process%s userland-process.adb userland-process.ali + +U scheduler%s scheduler.ads e1b67c79 OO PK +W arch%s arch.ads arch.ali +W arch.context%s arch-context.adb arch-context.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W interfaces%s interfac.ads interfac.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali +W userland%s userland.ads userland.ali +W userland.elf%s userland-elf.adb userland-elf.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-local.ads 20250222165738 e5953d14 arch.local%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D arch-snippets.ads 20250222165738 3613a65c arch.snippets%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D lib-time.ads 20250222165738 30059be5 lib.time%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D scheduler.adb 20250222165738 6fbe4959 scheduler%b +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 4 arch.ads +20K9*Arch 52e9 25|22r6 23r6 45r21 54r21 62r19 63r19 64r19 129r37 26|22w6 +. 23r6 24r6 25r6 56r25 58r25 59r25 60r25 128r10 130r7 138r21 144r36 153r19 +. 154r19 162r7 242r10 246r10 263r21 270r18 271r18 273r7 277r7 289r19 290r19 +. 291r19 339r7 356r34 362r10 369r32 376r7 399r7 418r7 582r37 583r37 585r21 +. 591r7 698r7 707r54 709r13 710r13 712r13 718r7 731r7 734r14 737r7 738r7 +. 740r7 743r7 744r7 747r7 796r7 797r12 +X 5 arch-clocks.ads +19K14*Clocks 45e16 26|24w11 399r12 418r12 591r12 718r12 +31U14*Get_Monotonic_Time 26|399s19 418s19 591s19 718s19 +X 6 arch-context.ads +20K14*Context 70e17 25|23w11 62r24 63r24 129r42 26|58r30 59r30 60r30 153r24 +. 154r24 242r15 246r15 270r23 271r23 273r12 277r12 289r24 290r24 339r12 582r42 +. 585r26 709r18 710r18 712r18 744r12 747r12 +22R15*GP_Context{7|21R9} 25|62r32 129r50 26|58r38 153r32 270r31 289r32 582r50 +. 585r34 +23A15*FP_Context(13|70M9) 25|63r32 26|59r38 154r32 271r31 290r32 +24M15*Core_Context{13|84M9} 26|60r38 +33U14*Init_GP_Context 26|242s23 273s20 +39U14*Load_GP_Context 26|747s20 +42U14*Save_Core_Context 26|709s26 +46U14*Success_Fork_Result 26|339s20 +49U14*Init_FP_Context 26|246s23 277s20 +50U14*Save_FP_Context 26|710s26 +51U14*Load_FP_Context 26|744s20 +52U14*Destroy_FP_Context 26|712s26 +X 8 arch-local.ads +21K14*Local 40e15 26|23w11 130r12 356r39 362r15 369r37 376r12 583r42 698r12 +. 707r59 731r12 737r12 738r12 740r12 743r12 +23U14*Reschedule_In 26|698s18 731s18 +24U14*Reschedule_ASAP 26|130s18 362s21 376s18 +27V13*Fetch_TCB{27|67M9} 26|707s65 +28U14*Load_TCB 26|743s18 +31U14*Set_Stacks 26|740s18 +36V13*Get_Current_Thread{25|27I9} 26|356s45 369s43 583s48 +38U14*Set_Current_Thread 26|738s18 +39U14*Set_Current_Process 26|737s18 +X 9 arch-mmu.ads +22K14*MMU 250e13 25|22w11 45r26 54r26 64r24 26|56r30 138r26 144r41 162r12 +. 263r26 291r24 734r19 +26R9*Page_Permissions 32e14 26|144r45 +27b7*Is_User_Accesible{boolean} 26|145m11 +28b7*Can_Read{boolean} 26|146m11 +29b7*Can_Write{boolean} 26|147m11 +30b7*Can_Execute{boolean} 26|148m11 +31b7*Is_Global{boolean} 26|149m11 +43P9*Page_Table_Acc(42R9) 25|45r30 54r30 64r28 26|56r34 138r30 263r30 291r28 +81V13*Make_Active{boolean} 26|734s23 +139U14*Map_Allocated_Range 26|162s16 +X 10 arch-snippets.ads +20K14*Snippets 81e18 26|25w11 128r15 796r12 797r17 +29U14*Enable_Interrupts 26|796s21 +33U14*Wait_For_Interrupt 26|797s26 +37U14*Pause 26|128s24 +X 13 interfac.ads +38K9*Interfaces 233e15 25|18w6 18r22 +70M9*Unsigned_8 26|31r57 33r64 +81M9*Unsigned_32 25|125r60 175r50 26|89r48 562r60 589r15 821r50 +84M9*Unsigned_64 25|48r21 55r21 56r21 82r49 83r49 26|32r57 42r26 43r26 63r25 +. 64r25 65r25 66r25 67r25 68r25 69r25 70r25 71r25 72r25 90r18 141r21 156r19 +. 223r46 232r46 244r55 264r21 265r21 382r49 383r49 395r17 415r29 588r29 801r15 +. 802r15 804r17 805r18 807r18 808r19 +X 18 lib.ads +19K9*Lib 35e8 26|18r6 19r6 26w6 27r6 62r33 82r30 118r7 298r7 337r7 342r7 +. 348r7 352r7 361r10 363r10 364r10 371r7 375r7 386r7 391r7 398r7 404r7 408r7 +. 411r7 417r7 426r10 431r10 435r7 445r7 449r7 457r7 470r7 477r7 493r7 500r7 +. 507r7 514r7 523r7 564r7 579r7 593r7 612r10 613r10 616r10 697r7 735r10 746r7 +. 756r7 768r7 777r7 791r7 +X 20 lib-panic.ads +21K13*Panic 39e14 26|19w10 735r14 +32U14*Hard_Panic 26|735s20 +X 21 lib-synchronization.ads +20K13*Synchronization 66e24 26|18w10 62r37 82r34 118r11 298r11 337r11 342r11 +. 348r11 352r11 361r14 363r14 364r14 371r11 375r11 386r11 391r11 398r11 411r11 +. 417r11 435r11 445r11 449r11 457r11 470r11 477r11 493r11 500r11 507r11 514r11 +. 523r11 564r11 579r11 593r11 612r14 697r11 746r11 756r11 768r11 777r11 791r11 +22R9*Binary_Semaphore 57e14 26|62r53 +27U14*Seize 26|361s30 363s30 +31U14*Release 26|337s27 364s30 612s30 +38R9*Critical_Lock 62e14 26|82r50 +44U14*Seize 26|298s27 348s27 371s27 386s27 398s27 417s27 445s27 457s27 477s27 +. 500s27 514s27 564s27 593s27 756s27 777s27 +49U14*Release 26|118s27 342s27 352s27 375s27 391s27 411s27 435s27 449s27 +. 470s27 493s27 507s27 523s27 579s27 697s27 746s27 768s27 791s27 +X 22 lib-time.ads +19K13*Time 77e13 26|27w10 404r11 408r11 426r14 431r14 613r14 616r14 +37U14*Increment 26|408s16 431s19 616s19 +48U14*Substract 26|404s16 426s19 613s19 +X 23 memory.ads +19K9*Memory 36e11 25|19w6 19r18 +35M12*Virtual_Address{28|82M9} 25|42r21 53r21 26|135r21 165r41 262r21 +X 25 scheduler.ads +25K9*Scheduler 183l5 183e14 26|29b14 828l5 828t14 +27I9*TID 29r26 49r37 58r37 67r42 70r38 81r17 87r44 88r43 108r54 +. 115r36 116r37 118r33 119r33 132r31 134r46 138r17 160c9 162r27 173r32 177r31 +. 179r46 180r29 180r59 26|74r39 74r54 142r37 152r19 267r37 269r18 294r42 +. 296r17 346r38 356r27 369r25 381r17 394r44 414r43 511r54 527r36 532r37 537r33 +. 551r33 583r30 584r30 815r32 +28I9*TCID 30r26 47r21 57r21 65r19 98r27 103r39 105r35 106r39 108r39 +. 133r30 135r46 139r17 145r22 161c9 163r26 171r37 173r41 178r30 181r46 182r29 +. 182r61 26|45r35 45r51 54r25 140r21 266r21 292r19 439r27 453r39 474r35 475r18 +. 497r39 511r39 587r36 800r37 815r41 +29i4*Error_TID{27I9} 162c4 180r44 26|152r26 296r24 358r22 584r37 610r25 675r28 +. 703r25 753r28 +30i4*Error_TCID{28I9} 163c4 182r45 26|491r19 587r44 630r31 640r31 753r39 +. 774r28 +33V13*Init{boolean} 26|93b13 120l8 120t12 +37U14*Idle_Core 26|122b14 132l8 132t17 +41V13*Create_User_Thread{27I9} 42>8 43>8 44>8 45>8 46>8 47>8 48>8 49>8 26|134b13 +. 259l8 259t26 +42m8 Address{23|35M12} 26|135b8 245r26 +43a8 Args{30|20A9} 26|136b8 191r29 194r30 202r35 230r29 231r35 237r31 +44a8 Env{30|21A9} 26|137b8 181r28 184r30 202r49 221r28 222r35 +45p8 Map{9|43P9} 26|138b8 163r29 251r27 +46r8 Vector{31|31R9} 26|139b8 207r35 209r35 211r35 213r35 +47i8 Cluster{28I9} 26|140b8 253r27 +48m8 Stack_Size{13|84M9} 26|141b8 161r58 166r45 174r48 +49i8 PID{natural} 26|142b8 151r73 252r27 +52V13*Create_User_Thread{27I9} 53>8 54>8 55>8 56>8 57>8 58>8 26|261b13 286l8 +. 286t26 +53m8 Address{23|35M12} 26|262b8 276r23 +54p8 Map{9|43P9} 26|263b8 281r23 +55m8 Stack_Addr{13|84M9} 26|264b8 275r40 +56m8 TLS_Addr{13|84M9} 26|265b8 284r52 +57i8 Cluster{28I9} 26|266b8 283r23 +58i8 PID{natural} 26|267b8 282r23 +61V13*Create_User_Thread{27I9} 62>8 63>8 64>8 65>8 66>8 67>8 26|248s21 278s18 +. 288b13 344l8 344t26 +62r8 GP_State{6|22R15} 26|289b8 323r41 +63a8 FP_State{6|23A15} 26|290b8 324r41 +64p8 Map{9|43P9} 26|291b8 321r40 +65i8 Cluster{28I9} 26|292b8 320r40 +66i8 PID{natural} 26|293b8 325r66 +67m8 TCB{27|67M9} 26|294b8 322r44 +70U14*Delete_Thread 70>29 26|346b14 353l8 353t21 +70i29 Thread{27I9} 26|346b29 349r23 350r23 +74U14*Yield_If_Able 26|355b14 366l8 366t21 +77U14*Bail 26|368b14 378l8 378t12 +80U14*Get_Runtime_Times 81>8 82<8 82<24 83<8 83<22 26|380b14 392l8 392t25 +81i8 Thread{27I9} 26|381b8 387r38 388r42 389r36 390r40 +82m8 System_Seconds{13|84M9} 26|382b8 387m7 +82m24 System_Nanoseconds{13|84M9} 26|382b24 388m7 +83m8 User_Seconds{13|84M9} 26|383b8 389m7 +83m22 User_Nanoseconds{13|84M9} 26|383b22 390m7 +87U14*Signal_Kernel_Entry 87>35 26|394b14 412l8 412t27 +87i35 Thread{27I9} 26|394b35 401r20 402r20 406r24 407r24 409r24 409r55 +88U14*Signal_Kernel_Exit 88>34 26|414b14 436l8 436t26 +88i34 Thread{27I9} 26|414b34 420r20 421r20 423r23 424r23 429r43 430r43 432r27 +. 432r60 +93E9*Cluster_Algorithm 95e28 99r27 146r22 26|38r26 440r27 +94n8*Cluster_RR{93E9} 26|110r61 482r37 654r18 774r40 +95n8*Cluster_Cooperative{93E9} 26|662r18 +97V13*Set_Scheduling_Algorithm{boolean} 98>8 99>8 100>8 101>8 26|438b13 451l8 +. 451t32 +98i8 Cluster{28I9} 26|439b8 446r21 447r21 448r21 +99e8 Algo{93E9} 26|440b8 446r50 +100i8 Quantum{natural} 26|441b8 447r50 +101b8 Is_Interruptible{boolean} 26|442b8 448r50 +103V13*Set_Time_Slice{boolean} 103>29 103>45 26|453b13 472l8 472t22 +103i29 Cluster{28I9} 26|453b29 459r50 464r24 465r24 +103i45 Per{natural} 26|453b45 464r48 465r47 +105V13*Create_Cluster{28I9} 26|474b13 495l8 495t22 +106V13*Delete_Cluster{boolean} 106>29 26|497b13 509l8 509t22 +106i29 Cluster{28I9} 26|497b29 501r24 502r24 +108V13*Switch_Cluster{boolean} 108>29 108>45 26|511b13 525l8 525t22 +108i29 Cluster{28I9} 26|511b29 515r24 518r42 +108i45 Thread{27I9} 26|511b45 516r23 518r23 +112I12*Niceness{integer} 113r32 115r48 116r49 26|53r25 527r48 532r49 +113i4*Default_Niceness{112I12} +115V13*Get_Niceness{112I12} 115>27 26|527b13 530l8 530t20 +115i27 Thread{27I9} 26|527b27 529r27 +116U14*Set_Niceness 116>28 116>42 26|532b14 535l8 535t20 +116i28 Thread{27I9} 26|532b28 534r20 +116i42 Nice{112I12} 26|532b42 534r36 +118U14*Get_Name 118>24 118<38 118<57 26|537b14 549l8 549t16 +118i24 Thread{27I9} 26|537b24 539r38 540r23 542r56 543r26 543r58 544r30 +118a38 Name{string} 26|537b38 539r10 542m10 542r16 542r30 546m10 +118i57 Len{natural} 26|537b57 544m10 547m10 +119U14*Set_Name 119>24 119>38 119<53 26|551b14 560l8 560t16 +119i24 Thread{27I9} 26|551b24 553r38 554r23 555r23 +119a38 Name{string} 26|551b38 553r10 554r42 554r58 555r58 +119b53 Success{boolean} 26|551b53 556m10 558m10 +125U14*Get_Load_Averages 125<33 125<40 125<47 26|562b14 580l8 580t25 +125m33 Avg_1{13|81M9} 26|562b33 565m7 +125m40 Avg_5{13|81M9} 26|562b40 567m7 569m10 569r19 571m7 571r16 +125m47 Avg_15{13|81M9} 26|562b47 573m7 575m10 575r20 577m7 577r17 +129U14*Scheduler_ISR 129>29 26|582b14 748l8 748t21 +129r29 State{6|22R15} 26|582b29 708r54 +132V13*Convert{natural} 132>22 177b13 +132i22 Thread{27I9} 177r64 +133V13*Convert{natural} 133>22 178b13 +133i22 Group{28I9} 178r64 +134V13*Convert{27I9} 134>22 179b13 +134i22 Value{natural} 180r12 180r64 +135V13*Convert{28I9} 135>22 181b13 +135i22 Value{natural} 182r12 182r67 +137R9*Thread_Listing 141e14 142r59 +138i7*Thread{27I9} +139i7*Cluster{28I9} +140i7*Proc{natural} +142A9*Thread_Listing_Arr(137R9) 155r35 26|750r35 +144R9*Cluster_Listing 149e14 150r60 +145i7*Cluster{28I9} +146e7*Cluster_Algo{93E9} +147b7*Cluster_Int{boolean} +148i7*Cluster_Quan{natural} +150A9*Cluster_Listing_Arr(144R9) 156r35 26|771r35 +155U14*List_All 155<24 155<55 26|750b14 769l8 769t16 +155a24 List{142A9} 26|750b24 753m7 761m16 761r22 +155i55 Total{natural} 26|750b55 754m7 759m13 759r22 +156U14*List_All 156<24 156<56 26|771b14 792l8 792t16 +156a24 List{150A9} 26|771b24 774m7 782m16 782r22 +156i56 Total{natural} 26|771b56 775m7 780m13 780r22 +165b4 Is_Initialized{boolean} 26|117m7 126r21 +169U14 Waiting_Spot 26|131s7 377s7 794b14 798l8 798t20 +171V13 Has_Available_Time{boolean} 171>33 26|620s13 625s19 632s22 800b13 +. 813l8 813t26 +171i33 C{28I9} 26|800b33 801r44 802r44 812r42 +173V13 Is_Switchable{boolean} 173>28 173>37 26|670s16 677s19 815b13 819l8 +. 819t21 +173i28 T{27I9} 26|815b28 816r45 +173i37 C{28I9} 26|815b37 818r67 +175U14 Add_Bucket_And_Shift 175>36 26|605s10 821b14 827l8 827t28 +175m36 Last_Bucket{13|81M9} 26|821b36 826r34 +X 26 scheduler.adb +30N4 Kernel_Stack_Size 33r42 +31A9 Thread_Stack(13|70M9) 175r19 +32A9 Thread_Stack_64(13|84M9) 176r19 +33A9 Kernel_Stack(13|70M9) 34r36 312r52 742r48 +34P9 Kernel_Stack_Acc(33A9) 57r25 +36R9 Thread_Cluster 44e14 45r65 +37b7*Is_Present{boolean} 103m13 109m41 459r30 464r33 479r34 481m17 501r33 +. 502m33 515r33 779r30 +38e7*Algorithm{25|93E9} 110m41 446m30 482m17 653r43 784r37 +39i7*RR_Quantum{natural} 112m41 447m30 484m17 656r47 657r49 786r37 +40b7*Is_Interruptible{boolean} 111m41 359r56 448m30 483m17 785r37 +41i7*Percentage{integer} 113m41 460r53 465m33 485m17 650r56 812r45 +42m7*Progress_Seconds{13|84M9} 104m13 114m41 617m42 642m21 801r47 +43m7*Progress_Nanos{13|84M9} 105m13 115m41 618m42 643m21 651r50 802r47 +45A9 Cluster_Arr(36R9)<25|28I9> 46r35 97r27 +46P9 Cluster_Arr_Acc(45A9) 83r22 +48R9 Thread_Info 73e14 74r67 816r12 +49b7*Is_Present{boolean} 99m13 302r33 315m29 349r31 350m31 372r31 373m31 +. 516r31 601r32 686r32 706r39 758r29 818r17 +50b7*Is_Running{boolean} 302r68 316m29 686r67 704m36 739m30 818r39 +51a7*Path{string} 317m29 543r34 553r46 554m31 +52i7*Path_Len{integer} 318m29 539r46 540r31 542r64 543r66 544r38 555m31 +53i7*Nice{25|112I12} 319m29 529r35 534m28 658r46 +54i7*Cluster{25|28I9} 320m29 359r47 518m31 611r52 689r48 762r39 818r57 +55m7*TCB_Pointer{27|67M9} 322m29 707m39 743r51 +56p7*PageMap{9|43P9} 321m29 734r59 +57p7*Kernel_Stack{34P9} 100m13 311r32 312m32 742r34 +58r7*GP_State{6|22R15} 323m29 339m63 708m39 745r44 +59a7*FP_State{6|23A15} 324m29 710m69 713m43 744r60 +60m7*C_State{6|24M15} 709m71 741r34 +61i7*Process{33|33I9} 325m29 737r62 763r62 +62r7*Yield_Mutex{21|22R9} 337m58 361m60 363m62 364m62 612m65 +63m7*Last_Sched_Sec{13|84M9} 326m29 614m40 719m34 725r36 +64m7*Last_Sched_NSec{13|84M9} 327m29 615m40 720m34 727r36 +65m7*System_Sec{13|84M9} 328m29 387r46 432m35 +66m7*System_NSec{13|84M9} 329m29 388r50 432m68 +67m7*User_Sec{13|84M9} 330m29 389r44 409m32 +68m7*User_NSec{13|84M9} 331m29 390r48 409m63 +69m7*System_Tmp_Sec{13|84M9} 332m29 401m28 423r31 429r51 +70m7*System_Tmp_NSec{13|84M9} 333m29 402m28 424r31 430r51 +71m7*User_Tmp_Sec{13|84M9} 334m29 406r32 420m28 721r33 724m33 +72m7*User_Tmp_NSec{13|84M9} 335m29 407r32 421m28 722r33 726m33 +74A9 Thread_Info_Arr(48R9)<25|27I9> 75r39 96r27 +75P9 Thread_Info_Arr_Acc(74A9) 84r22 +80N4 Total_Slice 650r14 812r14 +82r4 Scheduler_Mutex{21|38R9} 118m36 118r36 298m34 298r34 342m36 342r36 348m34 +. 348r34 352m36 352r36 371m34 371r34 375m36 375r36 386m34 386r34 391m36 391r36 +. 398m34 398r34 411m36 411r36 417m34 417r34 435m36 435r36 445m34 445r34 449m36 +. 449r36 457m34 457r34 470m36 470r36 477m34 477r34 493m36 493r36 500m34 500r34 +. 507m36 507r36 514m34 514r34 523m36 523r36 564m34 564r34 579m36 579r36 593m34 +. 593r34 697m36 697r36 746m36 746r36 756m34 756r34 768m36 768r36 777m34 777r34 +. 791m36 791r36 +83p4 Cluster_Pool{46P9} 97m7 102r17 102r31 102r57 109r7 109r21 110r7 110r21 +. 111r7 111r21 112r7 112r21 113r7 113r21 114r7 114r21 115r7 115r21 359r10 +. 446r7 447r7 448r7 458r16 459r13 460r36 464r10 465r10 478r16 479r17 480r13 +. 501r10 502r10 515r10 617r14 618r14 624r42 631r25 641r25 650r28 651r22 653r15 +. 656r19 657r21 778r16 779r13 784r20 785r20 786r20 801r30 802r30 812r28 +84p4 Thread_Pool{75P9} 96m7 98r17 301r16 302r17 302r52 311r10 312r10 315r7 +. 316r7 317r7 318r7 319r7 320r7 321r7 322r7 323r7 324r7 325r7 326r7 327r7 +. 328r7 329r7 330r7 331r7 332r7 333r7 334r7 335r7 337r36 339r41 349r10 350r10 +. 359r24 361r37 363r39 364r39 372r10 373r10 387r25 388r29 389r23 390r27 401r7 +. 402r7 406r11 407r11 409r11 409r42 420r7 421r7 423r10 424r10 429r30 430r30 +. 432r14 432r47 516r10 518r10 529r14 534r7 539r25 540r10 542r43 543r13 543r45 +. 544r17 553r25 554r10 555r10 600r19 600r40 601r16 611r26 612r39 614r14 615r14 +. 658r20 669r38 676r22 685r19 686r16 686r51 689r32 704r10 706r13 707r13 708r13 +. 709r45 710r43 713r17 719r11 720r11 721r10 722r10 724r10 725r13 726r10 727r13 +. 734r36 737r39 739r7 741r11 742r11 743r28 744r37 745r21 757r16 758r13 760r29 +. 762r23 763r46 781r29 816r32 +89A9 Stats_Bucket_Arr(13|81M9) 91r18 +90m4 Last_Bucket{13|84M9} 597r22 598m10 +91a4 Buckets{89A9} 565r16 565r25 568r18 568r27 568r44 569r28 574r18 575r30 +. 823r24 823r41 824m10 824r29 826m7 826r16 +98r11 Th{48R9} +102r11 Cl{36R9} +123b7 To_Test{boolean} 126m10 127r20 +144r7 Stack_Permissions{9|26R9} 167r29 +151i7 Proc{33|33I9} 160r53 161r40 +152i7 New_TID{25|27I9} 248m10 258r14 +153r7 GP_State{6|22R15} 243m14 249r26 +154a7 FP_State{6|23A15} 246m40 250r26 +155m7 Result{27|67M9} 164m29 175r66 176r73 +156m7 Stack_Top{13|84M9} 160m7 161r46 165r58 223r34 232r34 244r43 +157b7 Success{boolean} 168m29 169r14 +174i10 Sz{natural} 175r38 176r41 +175a10 Stk_8{31A9} 177r32 182m13 185m16 192m13 195m16 218r21 +176a10 Stk_64{32A9} 178r32 205m10 206m10 207m10 208m10 209m10 210m10 211m10 +. 212m10 213m10 214m10 219m10 223m13 228m10 232m13 237m10 +177i10 Index_8{natural} 182r20 183m13 183r24 185r23 186m16 186r27 192r20 +. 193m13 193r24 195r23 196m16 196r27 201r23 201r40 218m10 222m13 222r25 223r59 +. 231m13 231r25 232r59 +178i10 Index_64{natural} 201m10 202m10 202r22 205r18 206r18 207r18 208r18 +. 209r18 210r18 211r18 212r18 213r18 214r18 215m10 215r22 219r18 220m10 220r22 +. 223r21 224m13 224r25 228r18 229m10 229r22 232r21 233m13 233r25 237r18 238m10 +. 238r22 241m10 241r22 244r68 +181p14 En=181:28{30|19P9} +184e17 C{character} +191p14 Arg=191:29{30|19P9} +194e17 C{character} +221p14 En=221:28{30|19P9} +230p14 Arg=230:29{30|19P9} +257L6 Cleanup 170r15 +269i7 New_TID{25|27I9} 278m7 285r14 +270r7 GP_State{6|22R15} 274m11 279r23 +271a7 FP_State{6|23A15} 277m37 280r23 +296i7 New_TID{25|27I9} 304m13 311r23 312r23 315r20 316r20 317r20 318r20 319r20 +. 320r20 321r20 322r20 323r20 324r20 325r20 326r20 327r20 328r20 329r20 330r20 +. 331r20 332r20 333r20 334r20 335r20 337r49 339r54 343r14 +301i11 I 302r30 302r65 304r24 +310L6 Found_TID 305r18 +341L6 End_Return 308r12 +356i7 Curr_TID{25|27I9} 358r10 359r37 361r50 363r52 364r52 +369i7 Thread{25|27I9} 372r23 373r23 +395m7 T1{13|84M9} 399m39 401r46 405m11 405r11 410r11 +395m11 T2{13|84M9} 399m43 402r47 405m15 405r15 410r15 +396b7 Discard{boolean} +415m7 Temp_Sec{13|84M9} 418m39 420r44 427m30 427r30 433r14 +415m17 Temp_NSec{13|84M9} 418m49 421r45 428m30 428r30 433r24 +454i7 Consumed{natural} 460m13 460r25 464r62 +455b7 Success{boolean} 466m10 468m10 471r14 +458i11 I 459r27 459r45 460r50 +475i7 Returned{25|28I9} 487m13 491m7 494r14 +478i11 I 479r31 480r27 487r25 +492L6 Cleanup 488r18 +498b7 Success{boolean} 503m10 505m10 508r14 +512b7 Success{boolean} 519m10 521m10 524r14 +568m11 Val{13|81M9} +574m11 Val=574:18{13|81M9} +583i7 Current_TID{25|27I9} 610r10 611r39 612r52 614r27 615r27 658r33 669r19 +. 675r13 676r43 703r10 704r23 706r26 707r26 708r26 709r58 710r56 713r30 +584i7 Next_TID{25|27I9} 671m16 678m19 688m16 719r24 720r24 721r23 722r23 +. 724r23 725r26 726r23 727r26 734r49 737r52 738r38 739r20 741r24 742r24 743r41 +. 744r50 745r34 +585r7 Next_State{6|22R15} 745m7 747r37 +586i7 Timeout{natural} 655m16 659r19 660m19 663m16 684m10 698r33 731r33 +586i16 Max_Next_Timeout{natural} 649m10 659r29 660r30 663r27 +587i7 Curr_Cluster{25|28I9} 611m10 617r28 618r28 620r33 621r29 624r22 631r47 +. 645r32 650r42 651r36 +587i21 Next_Cluster{25|28I9} 621m13 626m19 630r16 633m22 640r16 645m16 653r29 +. 656r33 657r35 670r34 677r37 689m16 +588m7 Curr_Sec{13|84M9} 591m39 597r10 598r25 615r57 618r58 +588m17 Curr_NSec{13|84M9} 591m49 615r67 618r68 +589m7 Count{13|81M9} 599m10 602m16 602r25 605r32 +600i14 I 601r29 +624i17 I 625r39 626r35 +631i20 I 632r42 633r38 +641r20 C{36R9} +669i14 I 670r31 671r28 +676i17 I 677r34 678r31 +685i14 I 686r29 686r64 688r28 689r45 +701L6 Found_TID_TCID_Combo 672r21 679r24 690r21 +751i7 Curr_Index{natural} 760r16 761r35 764m16 764r30 +757i11 I 758r26 762r20 762r36 763r59 +772i7 Curr_Index{natural} 781r16 782r35 787m16 787r30 +778i11 I 779r27 783r20 784r34 785r34 786r34 +801m7 Secs{13|84M9} 804r10 805m10 811r23 +802m7 Nanos{13|84M9} 807r10 808m10 811r40 +816r7 Th{48R9} +823i11 I{integer} 824r19 824r38 +X 27 system.ads +37K9*System 25|17w6 67r19 26|17w6 20r6 20r35 55r25 155r19 254r27 294r19 27|155e11 +67M9*Address 25|67r26 26|55r32 155r26 294r26 +69m4*Null_Address{67M9} 26|254r34 +X 28 s-stoele.ads +40K16*Storage_Elements 26|20w13 20r42 28|90e28 +51I9*Storage_Offset 26|166r29 +82M9*Integer_Address 26|244r26 275r23 284r35 +84V13*To_Address{27|67M9} 26|165s29 244s14 245s14 275s11 276s11 284s23 +X 30 userland.ads +17K9*Userland 25|20w6 21r6 43r21 44r21 46r21 26|21r6 61r25 136r21 137r21 +. 139r21 151r23 151r47 160r20 161r7 206r35 208r35 210r35 212r35 214r35 325r40 +. 763r20 30|23e13 +19P9*String_Acc(string) +20A9*Argument_Arr(19P9) 25|43r30 26|136r30 +21A9*Environment_Arr(19P9) 25|44r30 26|137r30 +X 31 userland-elf.ads +22K18*ELF 25|21w15 46r30 26|139r30 206r44 208r44 210r44 212r44 214r44 31|142e17 +26N4*Auxval_Null 26|206r48 +27N4*Auxval_Program_Headers 26|210r48 +28N4*Auxval_Header_Size 26|214r48 +29N4*Auxval_Header_Count 26|212r48 +30N4*Auxval_Entrypoint 26|208r48 +31R9*Auxval 25|46r34 26|139r34 31|36e14 +32m7*Entrypoint{13|84M9} 26|207r42 +33m7*Program_Headers{13|84M9} 26|209r42 +34m7*Program_Header_Count{13|84M9} 26|211r42 +35m7*Program_Header_Size{13|84M9} 26|213r42 +X 33 userland-process.ads +28K18*Process 26|21w15 61r34 151r32 151r56 160r29 161r16 325r49 763r29 33|677e21 +33I9*PID 26|61r42 151r40 +350V13*Get_Stack_Base{13|84M9} 26|160s37 +356U14*Set_Stack_Base 26|161s24 +573V13*Convert{natural} 26|763s37 +579V13*Convert{33I9} 26|151s64 325s57 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS scheduler__init 0 +GG EK_PROOF_DEPENDENCIES scheduler__init 0 +GG EK_GLOBALS scheduler__init local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 5 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__is_initialized __HEAP proper_output 5 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__is_initialized __HEAP refined_proof_in 0 refined_input 5 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__is_initialized __HEAP refined_output 5 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__is_initialized __HEAP calls_proof 0 calls 0 calls_conditional 1 ada___lib__synchronization__release__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__idle_core 3 scheduler__waiting_spot ada___arch__local__reschedule_asap ada___arch__snippets__pause +GG EK_PROOF_DEPENDENCIES scheduler__idle_core 0 +GG EK_GLOBALS scheduler__idle_core local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 1 scheduler__is_initialized proper_output 1 scheduler__is_initialized refined_proof_in 0 refined_input 1 scheduler__is_initialized refined_output 1 scheduler__is_initialized calls_proof 0 calls 3 ada___arch__local__reschedule_asap ada___arch__snippets__enable_interrupts ada___arch__snippets__wait_for_interrupt calls_conditional 1 ada___arch__snippets__pause FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS scheduler__create_user_thread 0 +GG EK_PROOF_DEPENDENCIES scheduler__create_user_thread 0 +GG EK_GLOBALS scheduler__create_user_thread local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__map_allocated_range ada___lib__synchronization__release ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__context__init_gp_context ada___arch__context__success_fork_result ada___arch__context__init_fp_context ada___userland__process__get_stack_base ada___userland__process__set_stack_base ada___userland__process__convert__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS scheduler__create_user_thread__2 0 +GG EK_PROOF_DEPENDENCIES scheduler__create_user_thread__2 0 +GG EK_GLOBALS scheduler__create_user_thread__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___lib__synchronization__release ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__context__init_gp_context ada___arch__context__success_fork_result ada___arch__context__init_fp_context ada___userland__process__convert__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS scheduler__create_user_thread__3 0 +GG EK_PROOF_DEPENDENCIES scheduler__create_user_thread__3 0 +GG EK_GLOBALS scheduler__create_user_thread__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 5 ada___lib__synchronization__release ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__context__success_fork_result ada___userland__process__convert__2 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__delete_thread 0 +GG EK_PROOF_DEPENDENCIES scheduler__delete_thread 0 +GG EK_GLOBALS scheduler__delete_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__yield_if_able 0 +GG EK_PROOF_DEPENDENCIES scheduler__yield_if_able 0 +GG EK_GLOBALS scheduler__yield_if_able local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__cluster_pool scheduler__thread_pool __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 3 scheduler__cluster_pool scheduler__thread_pool __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___arch__local__reschedule_asap ada___arch__local__get_current_thread FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__cluster_pool scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__bail 0 +GG EK_PROOF_DEPENDENCIES scheduler__bail 0 +GG EK_GLOBALS scheduler__bail local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 6 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__local__reschedule_asap ada___arch__local__get_current_thread ada___arch__snippets__enable_interrupts ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__get_runtime_times 0 +GG EK_PROOF_DEPENDENCIES scheduler__get_runtime_times 0 +GG EK_GLOBALS scheduler__get_runtime_times local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 1 scheduler__scheduler_mutex refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 1 scheduler__scheduler_mutex calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__signal_kernel_entry 0 +GG EK_PROOF_DEPENDENCIES scheduler__signal_kernel_entry 0 +GG EK_GLOBALS scheduler__signal_kernel_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 5 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__clocks__get_monotonic_time ada___lib__time__increment ada___lib__time__substract FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__signal_kernel_exit 0 +GG EK_PROOF_DEPENDENCIES scheduler__signal_kernel_exit 0 +GG EK_GLOBALS scheduler__signal_kernel_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 5 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__clocks__get_monotonic_time ada___lib__time__increment ada___lib__time__substract FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__set_scheduling_algorithm 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 +GG EK_PROOF_DEPENDENCIES scheduler__set_scheduling_algorithm 0 +GG EK_GLOBALS scheduler__set_scheduling_algorithm local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 2 scheduler__scheduler_mutex scheduler__cluster_pool calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__set_time_slice 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 +GG EK_PROOF_DEPENDENCIES scheduler__set_time_slice 0 +GG EK_GLOBALS scheduler__set_time_slice local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 2 scheduler__scheduler_mutex scheduler__cluster_pool calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__create_cluster 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 +GG EK_PROOF_DEPENDENCIES scheduler__create_cluster 0 +GG EK_GLOBALS scheduler__create_cluster local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 2 scheduler__scheduler_mutex scheduler__cluster_pool calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__delete_cluster 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 +GG EK_PROOF_DEPENDENCIES scheduler__delete_cluster 0 +GG EK_GLOBALS scheduler__delete_cluster local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 2 scheduler__scheduler_mutex scheduler__cluster_pool calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__switch_cluster 0 +GG EK_PROOF_DEPENDENCIES scheduler__switch_cluster 0 +GG EK_GLOBALS scheduler__switch_cluster local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 4 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 4 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__get_niceness 0 +GG EK_PROOF_DEPENDENCIES scheduler__get_niceness 0 +GG EK_GLOBALS scheduler__get_niceness local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 0 refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__set_niceness 0 +GG EK_PROOF_DEPENDENCIES scheduler__set_niceness 0 +GG EK_GLOBALS scheduler__set_niceness local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__get_name 0 +GG EK_PROOF_DEPENDENCIES scheduler__get_name 0 +GG EK_GLOBALS scheduler__get_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 0 refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__set_name 0 +GG EK_PROOF_DEPENDENCIES scheduler__set_name 0 +GG EK_GLOBALS scheduler__set_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__get_load_averages 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 +GG EK_PROOF_DEPENDENCIES scheduler__get_load_averages 0 +GG EK_GLOBALS scheduler__get_load_averages local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__buckets proper_output 1 scheduler__scheduler_mutex refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__buckets refined_output 1 scheduler__scheduler_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__buckets LOCKS 0 +GG EK_DIRECT_CALLS scheduler__scheduler_isr 0 +GG EK_PROOF_DEPENDENCIES scheduler__scheduler_isr 0 +GG EK_GLOBALS scheduler__scheduler_isr local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 6 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__last_bucket scheduler__buckets __HEAP proper_output 4 scheduler__scheduler_mutex scheduler__last_bucket scheduler__buckets __HEAP refined_proof_in 0 refined_input 6 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__last_bucket scheduler__buckets __HEAP refined_output 4 scheduler__scheduler_mutex scheduler__last_bucket scheduler__buckets __HEAP calls_proof 0 calls 0 calls_conditional 20 ada___arch__mmu__make_active ada___lib__synchronization__release ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__context__load_gp_context ada___arch__context__save_core_context ada___arch__context__save_fp_context ada___arch__context__load_fp_context ada___arch__context__destroy_fp_context ada___lib__panic__hard_panic ada___arch__clocks__get_monotonic_time ada___arch__local__reschedule_in ada___arch__local__fetch_tcb ada___arch__local__load_tcb ada___arch__local__set_stacks ada___arch__local__get_current_thread ada___arch__local__set_current_thread ada___arch__local__set_current_process ada___lib__time__increment ada___lib__time__substract FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 4 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__last_bucket LOCKS 0 +GG EK_DIRECT_CALLS scheduler__convert 0 +GG EK_PROOF_DEPENDENCIES scheduler__convert 0 +GG EK_GLOBALS scheduler__convert local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS scheduler__convert__2 0 +GG EK_PROOF_DEPENDENCIES scheduler__convert__2 0 +GG EK_GLOBALS scheduler__convert__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS scheduler__convert__3 0 +GG EK_PROOF_DEPENDENCIES scheduler__convert__3 0 +GG EK_GLOBALS scheduler__convert__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS scheduler__convert__4 0 +GG EK_PROOF_DEPENDENCIES scheduler__convert__4 0 +GG EK_GLOBALS scheduler__convert__4 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS scheduler__list_all 0 +GG EK_PROOF_DEPENDENCIES scheduler__list_all 0 +GG EK_GLOBALS scheduler__list_all local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 1 scheduler__scheduler_mutex refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 1 scheduler__scheduler_mutex calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___userland__process__convert FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__list_all__2 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 +GG EK_PROOF_DEPENDENCIES scheduler__list_all__2 0 +GG EK_GLOBALS scheduler__list_all__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 1 scheduler__scheduler_mutex refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 1 scheduler__scheduler_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__waiting_spot 2 ada___arch__snippets__enable_interrupts ada___arch__snippets__wait_for_interrupt +GG EK_PROOF_DEPENDENCIES scheduler__waiting_spot 0 +GG EK_GLOBALS scheduler__waiting_spot local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___arch__snippets__enable_interrupts ada___arch__snippets__wait_for_interrupt calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS scheduler__has_available_time 0 +GG EK_PROOF_DEPENDENCIES scheduler__has_available_time 0 +GG EK_GLOBALS scheduler__has_available_time local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 1 scheduler__cluster_pool proper_output 0 refined_proof_in 0 refined_input 1 scheduler__cluster_pool refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__cluster_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__is_switchable 0 +GG EK_PROOF_DEPENDENCIES scheduler__is_switchable 0 +GG EK_GLOBALS scheduler__is_switchable local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 0 refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 +GG EK_DIRECT_CALLS scheduler__add_bucket_and_shift 0 +GG EK_PROOF_DEPENDENCIES scheduler__add_bucket_and_shift 0 +GG EK_GLOBALS scheduler__add_bucket_and_shift local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 1 scheduler__buckets proper_output 1 scheduler__buckets refined_proof_in 0 refined_input 1 scheduler__buckets refined_output 1 scheduler__buckets calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__buckets LOCKS 0 +GG EK_DIRECT_CALLS scheduler 0 +GG EK_PROOF_DEPENDENCIES scheduler 0 +GG EK_GLOBALS scheduler local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 scheduler__is_initialized refined_initializes 1 scheduler__is_initialized calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 scheduler__is_initialized TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___arch__snippets__hcf FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__enable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___arch__snippets__disable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__pause FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__snippets__read_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__snippets__write_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_VOLATILES AR 1 scheduler__is_initialized AW 1 scheduler__is_initialized ER 1 scheduler__is_initialized EW 1 scheduler__is_initialized +GG EK_SYNCHRONIZED 1 scheduler__is_initialized +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/scheduler.cswi b/obj/gnatprove/phase1/scheduler.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/scheduler.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/userland-loader.adb.stderr b/obj/gnatprove/phase1/userland-loader.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-loader.adb.stdout b/obj/gnatprove/phase1/userland-loader.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-loader.ali b/obj/gnatprove/phase1/userland-loader.ali new file mode 100644 index 0000000..56825ab --- /dev/null +++ b/obj/gnatprove/phase1/userland-loader.ali @@ -0,0 +1,791 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.loader%b userland-loader.adb 7b36b6b2 OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W cryptography%s cryptography.ads cryptography.ali +W cryptography.random%s cryptography-random.adb cryptography-random.ali +W devices%s devices.adb devices.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W memory%s memory.ads memory.ali +W scheduler%s scheduler.adb scheduler.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali +W userland%s userland.ads userland.ali +W userland.elf%s userland-elf.adb userland-elf.ali +W userland.mac%s userland-mac.adb userland-mac.ali +W userland.memory_locations%s userland-memory_locations.ads userland-memory_locations.ali + +U userland.loader%s userland-loader.ads 9c0fe15c OO PK +W userland%s userland.ads userland.ali +W userland.process%s userland-process.adb userland-process.ali +W vfs%s vfs.adb vfs.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D cryptography.ads 20250222165738 8132c7fc cryptography%s +D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s +D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-loader.ads 20250222165738 4d432fbc userland.loader%s +D userland-loader.adb 20250222165738 01a71cce userland.loader%b +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-memory_locations.ads 20250222165738 d86e3770 userland.memory_locations%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 31|17r6 18r6 251r29 298r18 309r18 +X 2 a-charac.ads +16K13*Characters 18e19 31|17r10 298r22 309r22 +X 3 a-chlat1.ads +16K24*Latin_1 294e27 31|17w21 298r33 309r33 +33e4*LF{character} 31|298r41 309r41 +X 4 a-uncdea.ads +20u15*Unchecked_Deallocation 31|18w10 251r33 +X 5 arch.ads +20K9*Arch 52e9 31|22r6 62r11 62r32 201r49 +X 8 arch-mmu.ads +22K14*MMU 250e13 31|22w11 62r16 62r37 201r54 +43P9*Page_Table_Acc(42R9) +49N7*Page_Size 31|201r58 +58p4*Kernel_Table{43P9} 31|62r41 +70V13*Fork_Table{43P9} 31|62s20 +X 9 cryptography.ads +17K9*Cryptography 18e17 31|28r6 197r13 +X 10 cryptography-random.ads +19K22*Random 40e24 31|28w19 197r26 +32U14*Get_Integer 31|197s33 +X 11 devices.ads +22K9*Devices 279e12 31|29w6 257r19 261r19 +29A9*Operation_Data(13|70M9) 31|257r27 261r27 +X 13 interfac.ads +38K9*Interfaces 233e15 31|19w6 19r22 +70M9*Unsigned_8 +84M9*Unsigned_64 31|168r41 172r18 224r28 255r19 276r20 292r23 304r23 +X 18 lib.ads +19K9*Lib 35e8 31|27r6 168r26 +X 19 lib-alignment.ads +19k13*Alignment 43e18 31|27w10 168r30 +X 22 memory.ads +19K9*Memory 36e11 31|23w6 23r18 +35M12*Virtual_Address{26|82M9} 31|171r22 +X 24 scheduler.ads +25K9*Scheduler 183e14 31|25w6 25r21 217r34 217r51 223r28 233r13 +27I9*TID 31|217r44 +28I9*TCID +29i4*Error_TID{27I9} 31|227r28 +41V13*Create_User_Thread{27I9} 31|217s61 +70U14*Delete_Thread 31|233s23 +135V13*Convert{28I9} 31|223s38 +X 25 system.ads +37K9*System 155e11 31|20w6 21r6 21r35 +67M9*Address +X 26 s-stoele.ads +40K16*Storage_Elements 90e28 31|21w13 21r42 +82M9*Integer_Address +87V13*To_Integer{82M9} 31|207s24 213s24 +X 28 userland.ads +17K9*Userland 23e13 30|17r6 17r28 20r9 65r5 31|24r6 24r24 26r6 30r6 30r24 +. 32r14 346r5 +19P9*String_Acc(string) 31|251r65 268r20 269r20 +20A9*Argument_Arr(19P9) 30|33r22 45r22 53r22 62r22 31|44r22 152r22 +. 164r22 247r22 +21A9*Environment_Arr(19P9) 30|34r22 46r22 54r22 63r22 31|45r22 153r22 +. 165r22 248r22 +X 29 userland-elf.ads +22K18*ELF 142e17 31|24w15 24r33 170r28 180r21 205r20 +23P9*String_Acc(string) +38R9*Parsed_ELF 44e14 31|170r32 +39b7*Was_Loaded{boolean} 31|182r25 208r24 +40m7*Entrypoint{25|67M9} 31|207r43 213r47 +41p7*Linker_Path{23P9} 31|186r21 189r35 190r24 190r53 191r45 +42r7*Vector{31R9} 31|222r39 +48V13*Load_ELF{38R9} 31|180s25 205s24 +X 30 userland-loader.ads +20K18*Loader 28|17k9 30|65l14 65e20 31|32b23 346l14 346t20 +23U14*Disable_ASLR 31|35b14 38l8 38t20 +29V13*Start_Program{34|33I9} 30>8 31>8 32>8 33>8 34>8 35>8 36>8 37>8 31|40b13 +. 146l8 146t21 +30a8 Exec_Path{string} 31|41b8 63r29 +31i8 FS{35|74I9} 31|42b8 63r40 +32m8 Ino{35|28M9} 31|43b8 63r44 +33a8 Arguments{28|20A9} 31|44b8 63r49 +34a8 Environment{28|21A9} 31|45b8 63r60 +35a8 StdIn_Path{string} 31|46b8 101r35 +36a8 StdOut_Path{string} 31|47b8 112r35 +37a8 StdErr_Path{string} 31|48b8 123r35 +41V13*Start_Program{boolean} 42>8 43>8 44>8 45>8 46>8 47>8 31|63s14 148b13 +. 159l8 159t21 325s22 333s22 +42a8 Exec_Path{string} 31|149b8 158r29 +43i8 FS{35|74I9} 31|150b8 157r29 158r40 +44m8 Ino{35|28M9} 31|151b8 157r33 158r44 +45a8 Arguments{28|20A9} 31|152b8 157r38 158r49 +46a8 Environment{28|21A9} 31|153b8 157r49 158r60 +47i8 Proc{34|33I9} 31|154b8 157r62 158r73 +50V13*Start_ELF{boolean} 51>8 52>8 53>8 54>8 55>8 31|157s14 161b13 241l8 +. 241t17 +51i8 FS{35|74I9} 31|162b8 180r35 +52m8 Ino{35|28M9} 31|163b8 180r39 +53a8 Arguments{28|20A9} 31|164b8 219r28 +54a8 Environment{28|21A9} 31|165b8 220r28 +55i8 Proc{34|33I9} 31|166b8 180r68 205r73 221r52 224r52 225r45 231r30 +58V13*Start_Shebang{boolean} 59>8 60>8 61>8 62>8 63>8 64>8 31|158s14 243b13 +. 345l8 345t21 +59a8 Exec_Path{string} 31|244b8 326r29 334r29 +60i8 FS{35|74I9} 31|245b8 271r13 281r16 291r16 303r16 +61m8 Ino{35|28M9} 31|246b8 271r17 281r20 291r20 303r20 +62a8 Arguments{28|20A9} 31|247b8 329r51 337r42 +63a8 Environment{28|21A9} 31|248b8 330r29 338r29 +64i8 Proc{34|33I9} 31|249b8 331r29 339r29 +X 31 userland-loader.adb +33b4 Do_ASLR{boolean} 37m7 196r13 +50i7 Returned_PID{34|33I9} 56m42 57r10 61r11 64r29 134r25 135r25 136r25 139r17 +. 143r31 +51i7 Discard{natural} 134m52 135m52 136m52 +52e7 Success{35|234E9} 104m25 108r10 115m25 119r10 126m25 130r10 +53b7 Success1{boolean} 134m61 138r10 +53b17 Success2{boolean} 135m61 138r23 +53b27 Success3{boolean} 136m61 138r36 +54p7 User_Stdin{34|57P9} 69m7 102r25 103r25 134r39 +54p19 User_StdOut{34|57P9} 79m7 113r25 114r25 135r39 +54p32 User_StdErr{34|57P9} 89m7 124r25 125r25 136r39 +142L6 Error_Process 66r15 +144L6 Error 58r15 +168K15 Aln[19|19] 201r25 +170r7 Loaded_ELF{29|38R9} 180m7 182r14 186r10 189r24 190r13 190r42 191r34 +. 213r36 222r28 +170r19 LD_ELF{29|38R9} 205m10 207r36 208r17 +171m7 Entrypoint{22|35M12} 207m10 213m10 218r28 +172m7 LD_Slide{13|84M9} 200m17 201m13 201r39 203m13 206r34 +173a7 LD_Path{string} 189m10 191r16 +174i7 LD_FS{35|74I9} 191m70 205r34 211r17 +175m7 LD_Ino{35|28M9} 192m16 205r41 211r24 +176e7 Success{35|234E9} 192m24 193r13 +177b7 Success2{boolean} 231m50 232r17 +217i10 Returned_TID{24|27I9} 227r13 231r36 233r38 +239L6 Error 183r15 194r18 209r18 228r18 234r18 +251U17 Free[4|20] +251U17 Free[4|20] 342s7 343s7 +253i7 Path_Len{natural} 271m45 272r39 276r33 279m7 299m28 299r40 299r60 315r24 +. 321r42 +254i7 Arg_Len{natural} 310m28 310r39 310r57 322r42 324r10 +255m7 Pos{13|84M9} 276m7 276r14 281r25 286m28 286r35 291r25 292m10 292r17 +. 303r25 304m10 304r17 +256a7 Path{string} 258m34 258r34 272r56 299m54 315r13 321r31 +257a7 Path_Data{11|29A9} 271m25 271r25 +259a7 Arg{string} 310m52 322r31 +260e7 Char{character} 262m34 262r34 285r15 296r15 299r73 308r15 310r69 +261a7 Char_Data{11|29A9} 281m30 291m30 303m30 +263i7 Char_Len{natural} 281m41 282r42 291m41 292r36 293r42 303m41 304r36 +. 305r42 +264e7 Success{35|234E9} 271m61 272r10 281m57 282r13 291m57 293r13 303m57 +. 305r13 315m58 317r10 +265b7 Returned{boolean} 325m10 333m10 344r14 +266i7 Banged_FS{35|74I9} 315m35 327r29 335r29 +267m7 Banged_Ino{35|28M9} 315m46 328r29 336r29 +268p7 Path_Acc{28|19P9} 321m7 329r30 337r30 342m13 342r13 +269p7 Arg_Acc{28|19P9} 322m7 329r40 343m13 343r13 +314L6 Return_Shebang 298r52 +18P9 Name{28|19P9} 20r50[251] +20p39 X{28|19P9} 21r15[251] 22r23[251] 23r11[251] +18M9 T{13|84M9} 27r42[168] 27r52[168] 35r44[168] 35r54[168] 40r50[168] 40r60[168] +. 41r49[168] 23r42[168] 23r52[168] 27r14[168] 30r44[168] 30r54[168] 34r14[168] +. 37r50[168] 37r60[168] +27V13 Align_Up{13|84M9} 201s29[168] 29r20[168] +27m23 Value{13|84M9} 24r61[168] +27m30 Alignment{13|84M9} 28r20[168] 28r40[168] 28r55[168] 29r40[168] 25r61[168] +35V13 Align_Down{13|84M9} 37r20[168] +35m25 Value{13|84M9} 31r61[168] +35m32 Alignment{13|84M9} 36r20[168] 36r40[168] 36r55[168] 37r42[168] 32r61[168] +40V13 Divide_Round_Up{13|84M9} 42r20[168] +40m30 Dividend{13|84M9} 41r21[168] 39r15[168] +40m40 Divisor{13|84M9} 41r33[168] 41r62[168] 42r47[168] 39r27[168] 39r43[168] +24m7 Value2{26|82M9} 27r18[168] +25m7 Align2{26|82M9} 27r27[168] 27r48[168] +31m7 Value2{26|82M9} 34r17[168] +32m7 Align2{26|82M9} 34r33[168] +X 32 userland-mac.ads +20K18*MAC 31|30w15 30r33 32|180e17 +58M9*Limit_Value<13|84M9> +64n8*Stack_Size_Limit{59E9} 31|224r58 +X 33 userland-memory_locations.ads +17K18*Memory_Locations 31|26w15 181r10 198r17 199r17 203r25 33|30e30 +20N4*Program_Offset 31|181r27 +24N4*LD_Offset_Min 31|198r34 203r42 +25N4*LD_Offset_Max 31|199r34 +X 34 userland-process.ads +28K18*Process 30|17w15 17r37 31|56r7 60r7 134r7 135r7 136r7 143r7 180r44 +. 205r49 221r28 225r28 231r10 34|677e21 +33I9*PID 30|37r37 47r22 55r22 64r22 31|48r37 50r22 154r22 166r22 +. 249r22 +34i4*Error_PID{33I9} 31|56r31 57r25 109r17 120r17 131r17 145r14 +54n8*Description_Inode{49E9} 31|71r32 81r32 91r32 +56R9*File_Description 31|69r25 79r26 89r26 34|80e14 +57P9*File_Description_Acc(56R9) 31|54r46 +58e27*Description{49E9} 31|71m11 81m11 91m11 +59i7*Children_Count{natural} 31|70m11 80m11 90m11 +70b13*Inner_Is_Locked{boolean} 31|72m11 82m11 92m11 +71b13*Inner_Is_Blocking{boolean} 31|73m11 83m11 93m11 +72b13*Inner_Ino_Read{boolean} 31|74m11 84m11 94m11 +73b13*Inner_Ino_Write{boolean} 31|75m11 85m11 95m11 +74m13*Inner_Ino_Pos{13|84M9} 31|76m11 86m11 96m11 +75i13*Inner_Ino_FS{35|74I9} 31|77m11 87m11 97m11 102m36 113m37 124m37 +76m13*Inner_Ino{35|28M9} 31|78m11 88m11 98m11 103m36 114m37 125m37 +181U14*Create_Process 31|56s15 +185U14*Delete_Process 31|143s15 +203U14*Add_Thread 31|231s18 +252U14*Add_File 31|134s15 135s15 136s15 +338U14*Set_Common_Map 31|60s15 +344V13*Get_Common_Map{8|43P9} 31|180s52 205s57 221s36 +573V13*Convert{natural} 31|225s36 +604V13*Get_Limit{32|58M9} 31|224s41 +X 35 vfs.ads +24K9*VFS 30|18w6 18r28 31|52r22 77r32 87r32 97r32 100r7 111r7 122r7 193r24 +. 264r19 272r21 282r24 293r24 305r24 35|674e8 +28M9*File_Inode_Number<13|84M9> 30|32r22 44r22 52r22 61r22 31|43r22 151r22 +. 163r22 175r18 246r22 267r20 +74I9*FS_Handle 30|31r22 43r22 51r22 60r22 31|42r22 150r22 162r22 +. 174r18 245r22 266r20 +75i4*Error_Handle{74I9} 31|77r36 87r36 97r36 +234E9*FS_Status 31|52r26 176r18 264r23 35|242e16 +235n8*FS_Success{234E9} 31|108r21 119r21 130r21 193r28 272r25 282r28 293r28 +. 305r28 317r21 +359U14*Close 31|211s10 +400U14*Read 31|271s7 281s10 291s10 303s10 +593U14*Open 31|100s11 111s11 122s11 191s10 315s7 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___userland__loader__disable_aslr 0 +GG EK_PROOF_DEPENDENCIES ada___userland__loader__disable_aslr 0 +GG EK_GLOBALS ada___userland__loader__disable_aslr local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 1 ada___userland__loader__do_aslr refined_proof_in 0 refined_input 0 refined_output 1 ada___userland__loader__do_aslr calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__loader__do_aslr LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader__start_program 0 +GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_program 0 +GG EK_GLOBALS ada___userland__loader__start_program local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 3 ada___userland__loader__do_aslr ada___arch__mmu__kernel_table __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 3 ada___userland__loader__do_aslr ada___arch__mmu__kernel_table __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 18 ada___userland__process__create_process ada___userland__process__delete_process ada___userland__process__add_thread ada___userland__process__add_file ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__get_limit vfs__close vfs__read vfs__open__2 ada___system__storage_elements__to_integer ada___arch__mmu__fork_table scheduler__create_user_thread scheduler__delete_thread scheduler__convert__4 ada___userland__elf__load_elf ada___cryptography__random__get_integer__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__mmu__kernel_table LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader__start_program__2 2 ada___userland__loader__start_elf ada___userland__loader__start_shebang +GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_program__2 0 +GG EK_GLOBALS ada___userland__loader__start_program__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 2 ada___userland__loader__do_aslr __HEAP proper_output 0 refined_proof_in 0 refined_input 2 ada___userland__loader__do_aslr __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 13 ada___userland__process__add_thread ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__get_limit vfs__close vfs__read vfs__open__2 ada___system__storage_elements__to_integer scheduler__create_user_thread scheduler__delete_thread scheduler__convert__4 ada___userland__elf__load_elf ada___cryptography__random__get_integer__2 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader__start_elf__aln__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf__aln__align_up 0 +GG EK_GLOBALS ada___userland__loader__start_elf__aln__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__loader__start_elf__aln ada___userland__loader__start_elf ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader__start_elf__aln__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf__aln__align_down 0 +GG EK_GLOBALS ada___userland__loader__start_elf__aln__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__loader__start_elf__aln ada___userland__loader__start_elf ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader__start_elf__aln__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf__aln__divide_round_up 0 +GG EK_GLOBALS ada___userland__loader__start_elf__aln__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__loader__start_elf__aln ada___userland__loader__start_elf ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader__start_elf__aln 0 +GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf__aln 0 +GG EK_GLOBALS ada___userland__loader__start_elf__aln local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__loader__start_elf ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader__start_elf 0 +GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf 0 +GG EK_GLOBALS ada___userland__loader__start_elf local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 2 ada___userland__loader__do_aslr __HEAP proper_output 0 refined_proof_in 0 refined_input 2 ada___userland__loader__do_aslr __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 12 ada___userland__process__add_thread ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__get_limit vfs__close vfs__open__2 ada___system__storage_elements__to_integer scheduler__create_user_thread scheduler__delete_thread scheduler__convert__4 ada___userland__elf__load_elf ada___cryptography__random__get_integer__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__loader__do_aslr LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader__start_shebang__free 0 +GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_shebang__free 0 +GG EK_GLOBALS ada___userland__loader__start_shebang__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 3 ada___userland__loader__start_shebang ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader__start_shebang 4 ada___userland__loader__start_program__2 vfs__read vfs__open__2 ada___userland__loader__start_shebang__free +GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_shebang 0 +GG EK_GLOBALS ada___userland__loader__start_shebang local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 2 ada___userland__loader__do_aslr __HEAP proper_output 0 refined_proof_in 0 refined_input 2 ada___userland__loader__do_aslr __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 13 ada___userland__process__add_thread ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__get_limit vfs__close vfs__read vfs__open__2 ada___system__storage_elements__to_integer scheduler__create_user_thread scheduler__delete_thread scheduler__convert__4 ada___userland__elf__load_elf ada___cryptography__random__get_integer__2 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__loader 0 +GG EK_PROOF_DEPENDENCIES ada___userland__loader 0 +GG EK_GLOBALS ada___userland__loader local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___userland__loader__do_aslr refined_initializes 1 ada___userland__loader__do_aslr calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 ada___userland__loader__do_aslr TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__memory_locations TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_shebang__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__loader__start_shebang__freeGP8479 VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_shebang__freeGP8479 TRUE FALSE FALSE FALSE TRUE ada___userland__loader__start_shebang BODY_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_elf__aln TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__loader__start_elf BODY_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_elf__aln__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__loader__start_elf__aln VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_elf__aln__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__loader__start_elf__aln VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_elf__aln__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__loader__start_elf__aln VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_program FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___userland__loader__start_program__2 FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_elf FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_shebang FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-loader.cswi b/obj/gnatprove/phase1/userland-loader.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/userland-loader.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/userland-oom_failure.adb.stderr b/obj/gnatprove/phase1/userland-oom_failure.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-oom_failure.adb.stdout b/obj/gnatprove/phase1/userland-oom_failure.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-oom_failure.ali b/obj/gnatprove/phase1/userland-oom_failure.ali new file mode 100644 index 0000000..d4244c5 --- /dev/null +++ b/obj/gnatprove/phase1/userland-oom_failure.ali @@ -0,0 +1,700 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DEFAULT_INITIALIZATION +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.oom_failure%b userland-oom_failure.adb 41be506a OO PK +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W userland%s userland.ads userland.ali +W userland.process%s userland-process.adb userland-process.ali +W userland.syscall%s userland-syscall.adb userland-syscall.ali + +U userland.oom_failure%s userland-oom_failure.ads 04b92c92 OO PK +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W userland%s userland.ads userland.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-oom_failure.ads 20250222165738 8ec1521c userland.oom_failure%s +D userland-oom_failure.adb 20250222165738 1128c0e8 userland.oom_failure%b +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D userland-syscall.ads 20250222165738 b384b127 userland.syscall%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 26|18r6 18r28 41r21 61r24 +X 5 arch-mmu.ads +22K14*MMU 250e13 26|18w11 18r33 41r26 61r29 +43P9*Page_Table_Acc(42R9) 26|41r30 +187V13*Get_User_Mapped_Size{8|84M9} 26|61s33 +X 8 interfac.ads +38K9*Interfaces 233e15 26|17w6 17r28 +84M9*Unsigned_64 26|43r21 44r21 73r17 +X 13 lib.ads +19K9*Lib 35e8 25|17r6 17r31 26|21r6 45r21 72r13 74r13 +X 14 lib-messages.ads +21K13*Messages 103e17 26|21w10 45r25 72r17 74r17 +41U14*Put_Line 26|74s26 +55A12*Translated_String{string} 26|45r34 +74U14*Image 26|72s26 +X 15 lib-synchronization.ads +20K13*Synchronization 66e24 25|17w10 17r35 +22R9*Binary_Semaphore 57e14 25|33r33 +23r4*Unlocked_Semaphore{22R9} 25|33r53 +27U14*Seize 26|26s7 33s7 +31U14*Release 26|28s7 35s7 +X 22 userland.ads +17K9*Userland 23e13 25|19r9 35r5 26|19r6 19r28 20r6 23r14 85r5 +X 25 userland-oom_failure.ads +19K18*OOM_Failure 22|17k9 25|35l14 35e25 26|23b23 85l14 85t25 +22U14*Get_Killing_Config 22<34 26|24b14 29l8 29t26 +22b34 Enabled{boolean} 26|24b34 27m7 +26U14*Configure_Killing 26>33 26|31b14 36l8 36t25 +26b33 Enabled{boolean} 26|31b33 34r29 +29U14*Handle_Failure 26|38b14 84l8 84t22 +33r4 Config_Mutex{15|22R9} 26|26m14 26r14 28m16 28r16 33m14 33r14 35m16 35r16 +34b4 Is_Killing_Allowed{boolean} 26|27r18 34m7 48r10 +X 26 userland-oom_failure.adb +39i7 Count{natural} 50m35 51r13 52m13 58r34 73m70 76r33 +40a7 Items{27|171A9} 50m28 51r21 52r22 58r19 59r44 70r34 73r39 78r17 78r49 +. 81r30 +41p7 Map{5|43P9} 59m13 60r16 61r55 +42i7 Guilty{natural} 56m10 63m19 70r13 70r41 73r46 78r24 78r56 81r37 +43m7 Guilty_Size{8|84M9} 57m10 62r26 64m19 +44m7 Size{8|84M9} 61m16 62r19 64r34 +45a7 Str{14|55A12} 73m65 76r17 76r22 76r46 +58i14 I{integer} 59r51 63r34 +X 27 userland-process.ads +28K18*Process 26|19w15 19r37 40r21 50r10 59r20 70r60 27|677e21 +33I9*PID +34i4*Error_PID{33I9} 26|70r68 +163a7*Identifier{string} 26|78r32 +164i7*Identifier_Len{natural} 26|78r64 +165i7*Process{33I9} 26|59r54 70r49 73r54 81r45 +171A9*Process_Info_Arr(162R9) 26|40r29 +176U14*List_All 26|50s18 +344V13*Get_Common_Map{5|43P9} 26|59s28 +573V13*Convert{natural} 26|73s30 +X 28 userland-syscall.ads +33K18*Syscall 26|20w15 81r13 28|1356e21 +1249U14*Do_Exit 26|81s21 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___userland__oom_failure__get_killing_config 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__oom_failure__get_killing_config 0 +GG EK_GLOBALS ada___userland__oom_failure__get_killing_config local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__oom_failure userland proper_proof_in 0 proper_input 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed proper_output 1 ada___userland__oom_failure__config_mutex refined_proof_in 0 refined_input 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed refined_output 1 ada___userland__oom_failure__config_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__oom_failure__configure_killing 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__oom_failure__configure_killing 0 +GG EK_GLOBALS ada___userland__oom_failure__configure_killing local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__oom_failure userland proper_proof_in 0 proper_input 1 ada___userland__oom_failure__config_mutex proper_output 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed refined_proof_in 0 refined_input 1 ada___userland__oom_failure__config_mutex refined_output 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__oom_failure__handle_failure 7 ada___arch__mmu__get_user_mapped_size ada___userland__process__list_all ada___userland__process__get_common_map ada___userland__process__convert ada___userland__syscall__do_exit ada___lib__messages__put_line ada___lib__messages__image__2 +GG EK_PROOF_DEPENDENCIES ada___userland__oom_failure__handle_failure 0 +GG EK_GLOBALS ada___userland__oom_failure__handle_failure local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__oom_failure userland proper_proof_in 0 proper_input 3 ada___userland__oom_failure__is_killing_allowed ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___userland__oom_failure__is_killing_allowed ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 6 ada___arch__mmu__get_user_mapped_size ada___userland__process__list_all ada___userland__process__get_common_map ada___userland__process__convert ada___userland__syscall__do_exit ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___userland__oom_failure__is_killing_allowed ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__oom_failure 0 +GG EK_PROOF_DEPENDENCIES ada___userland__oom_failure 0 +GG EK_GLOBALS ada___userland__oom_failure local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed refined_initializes 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__reboot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fchown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sys_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__arch_prctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__umount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pwrite FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__readlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__open FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_sock_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmdt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__close FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_peer_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__read FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmget FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__write FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shutdown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__seek FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__getsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__futex FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__setsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__getdents FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__clock FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__makenode FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__munmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__clock_nanosleep FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__unlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_pid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__get_ppid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__truncate FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__exec FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__failure_policy FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_rusage FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__do_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__syscall__recvfrom FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__do_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__clone FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pre_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__post_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sendto FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_mappability FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__do_remote_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__common_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__bind FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__wait FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__symlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__config_netinterface FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__connect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__3 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__socket FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sysconf FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__utimes FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__open_pty FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__4 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_hostname FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fsync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__spawn FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__create_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__link FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__switch_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_tid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__syscall__to_string FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_mmap_prot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ptrace FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__manage_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__execute_mac_failure FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pty_ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__listen FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sys_accept FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mac_syscall_to_kernel FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigaction FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_add_file FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___userland__oom_failure TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure__get_killing_config FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__send_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure__configure_killing FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__syscall__fcntl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__resolve_at_directive FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__exit_thread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__faccess FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_random FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fstat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mprotect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_egid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__chdir FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_gids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sched_yield FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ppoll FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__delete_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__tty_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pipe FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_euid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_uids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__rename FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fchmod FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fadvise FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__add_mac_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__umask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_REMOTE_STATES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-oom_failure.cswi b/obj/gnatprove/phase1/userland-oom_failure.cswi new file mode 100644 index 0000000..1286ce7 --- /dev/null +++ b/obj/gnatprove/phase1/userland-oom_failure.cswi @@ -0,0 +1,28 @@ +20250222171637 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/userland-process.adb.stderr b/obj/gnatprove/phase1/userland-process.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-process.adb.stdout b/obj/gnatprove/phase1/userland-process.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-process.ali b/obj/gnatprove/phase1/userland-process.ali new file mode 100644 index 0000000..9ad7b8b --- /dev/null +++ b/obj/gnatprove/phase1/userland-process.ali @@ -0,0 +1,1474 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.process%b userland-process.adb 2a89e1b0 OO PK +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W arch%s arch.ads arch.ali +W arch.local%s arch-local.adb arch-local.ali +W cryptography%s cryptography.ads cryptography.ali +W cryptography.random%s cryptography-random.adb cryptography-random.ali +W ipc%s ipc.ads ipc.ali +W ipc.filelock%s ipc-filelock.adb ipc-filelock.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.time%s lib-time.adb lib-time.ali +W system%s system.ads system.ali +Z system.storage_elements%s s-stoele.ads s-stoele.ali +W userland%s userland.ads userland.ali +W userland.memory_locations%s userland-memory_locations.ads userland-memory_locations.ali + +U userland.process%s userland-process.ads 00700395 OO PK +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali +W ipc.fifo%s ipc-fifo.adb ipc-fifo.ali +W ipc.pty%s ipc-pty.adb ipc-pty.ali +W ipc.socket%s ipc-socket.adb ipc-socket.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W scheduler%s scheduler.adb scheduler.ali +W system%s system.ads system.ali +Z system.unsigned_types%s s-unstyp.ads s-unstyp.ali +W userland%s userland.ads userland.ali +W userland.mac%s userland-mac.adb userland-mac.ali +W vfs%s vfs.adb vfs.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-local.ads 20250222165738 e5953d14 arch.local%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D cryptography.ads 20250222165738 8132c7fc cryptography%s +D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-filelock.ads 20250222165738 69934e3c ipc.filelock%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s +D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D lib-time.ads 20250222165738 30059be5 lib.time%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-memory_locations.ads 20250222165738 d86e3770 userland.memory_locations%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D userland-process.adb 20250222165738 fccee4aa userland.process%b +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 36|20r6 27r26 446r29 +X 2 a-uncdea.ads +20u15*Unchecked_Deallocation 36|20w10 27r30 446r33 +X 3 arch.ads +20K9*Arch 52e9 35|19r6 338r48 344r48 658r25 36|21r6 282r40 324r48 325r48 +. 561r48 568r48 569r16 +X 7 arch-local.ads +21K14*Local 40e15 36|21w11 282r45 +36V13*Get_Current_Thread{27|27I9} 36|282s51 +X 8 arch-mmu.ads +22K14*MMU 250e13 35|19w11 338r53 344r53 658r30 36|324r53 325r53 561r53 568r53 +. 569r21 +43P9*Page_Table_Acc(42R9) 35|338r57 344r57 658r34 36|561r57 568r57 569r25 +49N7*Page_Size 36|324r57 325r57 +X 9 cryptography.ads +17K9*Cryptography 18e17 36|22r6 315r10 319r10 +X 10 cryptography-random.ads +19K22*Random 40e24 36|22w19 315r23 319r23 +32U14*Get_Integer 36|315s30 319s30 +X 13 interfac.ads +38K9*Interfaces 233e15 35|22w6 22r22 +70M9*Unsigned_8 35|390r48 409r25 665r25 36|617r48 638r25 +81M9*Unsigned_32 35|167r25 459r45 464r41 469r56 474r52 479r45 484r41 489r56 +. 494r52 497r62 643r25 644r25 645r25 646r25 36|733r45 740r41 747r56 754r52 +. 761r45 768r41 775r56 782r52 +84M9*Unsigned_64 35|74r33 190r49 191r49 196r49 197r49 243r48 296r18 305r24 +. 316r24 350r51 356r52 363r48 363r68 659r25 660r25 666r25 667r25 668r25 669r25 +. 36|181r49 182r49 184r36 211r49 212r49 256r36 283r24 311r41 312r30 358r48 +. 362r16 475r18 480r16 491r24 498r16 510r24 517r16 577r51 578r16 586r52 675r48 +. 675r68 677r16 +X 14 ipc.ads +17K9*IPC 18e8 35|24r6 24r22 25r6 25r22 26r6 26r22 62r33 64r33 66r33 68r35 +. 78r28 36|24r6 458r19 +X 15 ipc-fifo.ads +21K13*FIFO 156e13 35|24w10 24r26 62r37 64r37 +39P9*Inner_Acc(38R9) 35|62r42 64r42 +82U14*Close_Reader 36|452s45 +84U14*Close_Writer 36|453s45 +X 16 ipc-filelock.ads +21K13*FileLock 111e17 36|24w10 458r23 +80U14*Release_Lock 36|458s32 +X 17 ipc-pty.ads +21K13*PTY 203e12 35|25w10 25r26 66r37 68r39 +37P9*Inner_Acc(36R9) 35|66r41 68r43 +47U14*Close 36|454s45 455s47 +X 18 ipc-socket.ads +21K13*Socket 573e15 35|26w10 26r26 78r32 +37P9*Socket_Acc(36R9) 35|78r39 +75U14*Close 36|464s40 +X 19 lib.ads +19K9*Lib 35e8 35|20r6 637r33 675r29 36|17r6 18r6 19r6 35r7 52r7 63r7 80r7 +. 85r16 95r16 99r7 107r7 111r36 143r16 159r16 168r7 173r7 174r7 176r7 191r7 +. 203r7 204r7 206r7 215r7 220r7 229r7 239r7 245r7 251r7 258r7 266r16 270r16 +. 278r7 285r7 293r16 296r16 307r7 311r26 331r7 334r7 340r7 342r7 348r7 355r7 +. 361r7 367r7 379r7 391r7 397r7 403r7 429r7 430r7 441r7 442r7 460r22 479r7 +. 485r7 497r7 505r7 516r7 521r7 526r7 532r7 537r7 545r7 550r7 558r7 563r7 +. 565r7 571r7 573r7 580r7 582r7 588r7 590r7 599r7 602r7 611r7 614r7 619r7 +. 623r7 628r7 632r7 643r7 648r7 657r7 660r7 669r7 672r7 679r7 682r7 689r7 +. 691r7 704r7 708r7 726r7 730r7 735r7 737r7 742r7 744r7 749r7 751r7 756r7 +. 758r7 763r7 765r7 770r7 772r7 777r7 779r7 784r7 786r7 795r7 803r7 812r7 +. 820r7 825r7 827r7 832r7 834r7 839r7 841r7 846r7 848r7 853r7 861r7 866r7 +. 870r7 879r7 881r7 890r7 894r7 910r7 926r7 +X 20 lib-alignment.ads +19k13*Alignment 43e18 36|18w10 311r30 +X 22 lib-messages.ads +21K13*Messages 103e17 36|19w10 460r26 +41U14*Put_Line 36|460s35 +X 23 lib-synchronization.ads +20K13*Synchronization 66e24 35|20w10 637r37 675r33 36|35r11 52r11 63r11 80r11 +. 85r20 95r20 99r11 107r11 111r40 143r20 159r20 168r11 173r11 174r11 176r11 +. 191r11 206r11 215r11 220r11 229r11 239r11 245r11 251r11 258r11 278r11 285r11 +. 307r11 331r11 334r11 340r11 342r11 348r11 355r11 361r11 367r11 379r11 391r11 +. 397r11 403r11 429r11 430r11 441r11 442r11 479r11 485r11 497r11 505r11 516r11 +. 521r11 526r11 532r11 537r11 545r11 550r11 558r11 563r11 565r11 571r11 573r11 +. 580r11 582r11 588r11 590r11 599r11 602r11 611r11 614r11 619r11 623r11 628r11 +. 632r11 643r11 648r11 657r11 660r11 669r11 672r11 679r11 682r11 689r11 691r11 +. 704r11 708r11 726r11 730r11 735r11 737r11 742r11 744r11 749r11 751r11 756r11 +. 758r11 763r11 765r11 770r11 772r11 777r11 779r11 784r11 786r11 795r11 803r11 +. 812r11 820r11 825r11 827r11 832r11 834r11 839r11 841r11 846r11 848r11 853r11 +. 861r11 866r11 870r11 879r11 881r11 890r11 894r11 910r11 926r11 +22R9*Binary_Semaphore 57e14 35|637r53 675r49 +23r4*Unlocked_Semaphore{22R9} 36|111r56 +27U14*Seize 36|52s27 80s27 85s36 107s27 143s36 173s27 174s27 191s27 215s27 +. 229s27 245s27 258s27 285s27 331s27 340s27 348s27 361s27 379s27 397s27 429s27 +. 430s27 479s27 497s27 516s27 526s27 537s27 550s27 563s27 571s27 580s27 588s27 +. 599s27 611s27 619s27 628s27 643s27 657s27 669s27 679s27 689s27 704s27 726s27 +. 735s27 742s27 749s27 756s27 763s27 770s27 777s27 784s27 795s27 812s27 825s27 +. 832s27 839s27 846s27 853s27 866s27 879s27 890s27 910s27 +31U14*Release 36|35s27 63s27 95s36 99s27 159s36 168s27 176s27 206s27 220s27 +. 239s27 251s27 278s27 307s27 334s27 342s27 355s27 367s27 391s27 403s27 441s27 +. 442s27 485s27 505s27 521s27 532s27 545s27 558s27 565s27 573s27 582s27 590s27 +. 602s27 614s27 623s27 632s27 648s27 660s27 672s27 682s27 691s27 708s27 730s27 +. 737s27 744s27 751s27 758s27 765s27 772s27 779s27 786s27 803s27 820s27 827s27 +. 834s27 841s27 848s27 861s27 870s27 881s27 894s27 926s27 +X 24 lib-time.ads +19K13*Time 77e13 36|17w10 203r11 204r11 266r20 270r20 293r20 296r20 +27U14*Normalize 36|203s16 204s16 +37U14*Increment 36|266s25 270s25 293s25 296s25 +X 27 scheduler.ads +25K9*Scheduler 183e14 35|21w6 21r21 205r18 218r50 232r49 236r50 633r58 641r25 +. 36|115r36 195r13 225r18 234r13 255r50 262r13 291r16 302r16 337r49 338r16 +. 346r50 352r13 +27I9*TID 35|205r28 218r60 633r68 36|225r28 255r60 282r33 +29i4*Error_TID{27I9} 36|130r47 194r19 232r47 247r51 261r48 287r23 305r20 +. 351r23 +70U14*Delete_Thread 36|302s26 +80U14*Get_Runtime_Times 36|195s23 262s23 291s26 +112I12*Niceness{integer} 35|232r59 236r60 641r35 36|337r59 338r26 346r60 +113i4*Default_Niceness{112I12} 36|115r46 +116U14*Set_Niceness 36|234s23 352s23 +X 28 system.ads +37K9*System 155e11 35|17w6 545r19 554r15 565r21 635r58 36|114r47 876r19 887r15 +. 900r21 906r17 +67M9*Address 35|545r26 554r22 565r28 635r65 36|876r26 887r22 900r28 +69m4*Null_Address{67M9} 36|114r54 906r24 +X 29 s-stoele.ads +82M9*Integer_Address +X 31 userland.ads +17K9*Userland 23e13 35|23r6 28r9 677r5 36|23r6 26r14 1002r5 +X 33 userland-mac.ads +20K18*MAC 180e17 35|23w15 586r49 587r49 589r50 590r51 595r45 601r17 602r21 +. 606r19 606r42 610r20 611r20 661r25 36|135r36 945r49 947r14 950r49 952r7 +. 955r50 957r14 960r51 962r7 968r45 971r14 978r17 979r21 982r7 987r19 987r42 +. 990r14 995r20 996r20 1000r7 +23R9*Capabilities 39e14 35|589r54 590r55 36|955r54 960r55 +42R9*Permissions 49e14 35|595r49 601r21 36|968r49 978r21 +52E9*Enforcement 55e13 35|586r53 587r53 36|945r53 950r53 +58M9*Limit_Value<13|84M9> 35|606r46 611r24 36|987r46 996r24 +59E9*Limit_Type 65e26 35|606r23 610r24 36|987r23 995r24 +68R9*Context 157e14 35|661r29 +69r4*Default_Context{68R9} 36|135r40 +74V13*Get_Enforcement{52E9} 36|947s18 +79U14*Set_Enforcement 36|952s11 +84V13*Get_Capabilities{23R9} 36|957s18 +89U14*Set_Capabilities 36|962s11 +98V13*Check_Permissions{42R9} 36|971s18 +104E9*Addition_Status 104e63 35|602r25 36|979r25 +112U14*Add_Entity 36|982s11 +124V13*Get_Limit{58M9} 36|990s18 +133U14*Set_Limit 36|1000s11 +X 34 userland-memory_locations.ads +17K18*Memory_Locations 30e30 36|23w15 316r14 317r14 320r14 321r14 327r23 +. 328r23 +26N4*Mmap_Anon_Min 36|316r31 327r40 +27N4*Mmap_Anon_Max 36|317r31 +28N4*Stack_Jump_Min 36|320r31 328r40 +29N4*Stack_Jump_Max 36|321r31 +X 35 userland-process.ads +28K18*Process 31|17k9 35|677l14 677e21 36|26b23 1002l14 1002t21 +33I9*PID 34r33 155r53 157r15 165r25 166r25 181r39 181r59 185r40 +. 189r15 195r15 204r18 212r41 218r36 223r36 228r52 232r37 236r38 243r38 253r18 +. 263r39 278r18 279r18 295r18 304r24 315r24 324r37 329r37 333r42 338r37 344r36 +. 350r39 356r40 363r34 371r20 381r20 390r36 397r36 407r21 419r15 429r15 437r32 +. 437r44 443r37 451r15 459r30 464r30 469r40 474r40 479r30 484r30 489r40 494r40 +. 500r17 505r18 509r49 514r32 519r32 525r41 531r41 536r35 543r15 552r15 563r17 +. 573r29 579r45 586r37 587r38 589r38 590r39 593r15 598r17 605r19 609r20 616c9 +. 617r33 651r25 672r35 672r50 36|44r15 102r39 102r59 103r11 161r44 164r25 +. 171r40 180r15 210r15 224r18 242r41 255r36 281r36 310r52 337r37 346r38 358r38 +. 372r18 394r39 422r18 423r18 474r18 490r24 509r24 524r37 535r37 548r42 561r37 +. 568r36 577r39 586r40 594r20 606r20 617r36 626r36 636r21 652r15 664r15 675r34 +. 686r32 686r44 687r16 695r37 712r15 733r30 740r30 747r40 754r40 761r30 768r30 +. 775r40 782r40 790r17 807r18 823r49 830r32 837r32 844r41 851r41 864r35 874r15 +. 885r15 898r17 929r29 934r45 937r20 939r17 945r37 950r38 955r38 960r39 966r15 +. 975r17 986r19 994r20 +34i4*Error_PID{33I9} 185r68 207r27 213r30 219r27 223r61 229r30 233r30 237r30 +. 244r30 258r30 264r30 281r31 282r30 297r30 308r30 319r30 325r30 329r65 333r70 +. 339r27 345r27 351r30 357r30 364r24 374r30 384r30 391r30 398r30 412r30 422r27 +. 432r27 438r27 444r27 454r27 573r69 617c4 36|50r25 73r33 105r19 142r26 263r42 +. 288r42 941r17 +35i4*Max_Process_Count{natural} 618c4 36|936r37 +39i4*Max_CWD_Length{natural} 620c4 +40i4*Max_Name_Length{natural} 621c4 649r38 650r44 36|698r24 699r20 +41i4*Max_Thread_Count{natural} 622c4 633r35 +42i4*Max_File_Count{natural} 280r29 284r29 623c4 634r35 653r44 36|424r29 +46m4*Default_Umask{37|32M12} 625c4 36|116r36 +49E9*File_Description_Type 55e27 58r41 +50n8*Description_Reader_FIFO{49E9} 61r15 36|452r18 +51n8*Description_Writer_FIFO{49E9} 63r15 36|453r18 +52n8*Description_Primary_PTY{49E9} 65r15 36|454r18 +53n8*Description_Secondary_PTY{49E9} 67r15 36|455r18 +54n8*Description_Inode{49E9} 69r15 36|456r18 +55n8*Description_Socket{49E9} 77r15 36|464r18 +56R9*File_Description 57r40 58c9 58d27 80e14 36|447r11 +57P9*File_Description_Acc(56R9) 254r18 270r17 271r21 288r32 296r38 630r23 +. 36|373r18 408r17 409r21 445r32 447r29 475r38 477r13 +58e27*Description{49E9} 60r12 36|451r17 +59i7*Children_Count{natural} 36|413r12 414m12 414r32 450r12 468m12 468r32 +62p13*Inner_Reader_FIFO{15|39P9} 36|452m61 +64p13*Inner_Writer_FIFO{15|39P9} 36|453m61 +66p13*Inner_Primary_PTY{17|37P9} 36|454m54 +68p13*Inner_Secondary_PTY{17|37P9} 36|455m56 +70b13*Inner_Is_Locked{boolean} 36|457r21 +71b13*Inner_Is_Blocking{boolean} +72b13*Inner_Ino_Read{boolean} +73b13*Inner_Ino_Write{boolean} +74m13*Inner_Ino_Pos{13|84M9} +75i13*Inner_Ino_FS{37|74I9} 36|458r48 463r29 +76m13*Inner_Ino{37|28M9} 36|458r64 463r45 +78p13*Inner_Socket{18|37P9} 36|464m49 +82E9*Signal 110e34 114r8 143r33 397r47 411r25 536r46 544r15 553r15 564r21 +. 635r30 663r25 36|626r47 640r25 864r46 875r15 886r15 899r21 +83n8*Signal_Abort{82E9} 115r8 +84n8*Signal_Alarm{82E9} 116r8 +85n8*Signal_Bad_Memory{82E9} 117r8 +86n8*Signal_Child{82E9} 118r8 36|920r29 +87n8*Signal_Continue{82E9} 119r8 +88n8*Signal_FP_Exception{82E9} 120r8 36|905r17 +89n8*Signal_Hang_Up{82E9} 121r8 +90n8*Signal_Illegal_Instruction{82E9} 122r8 +91n8*Signal_Interrupted{82E9} 123r8 +92n8*Signal_Kill{82E9} 124r8 36|137r36 857r39 891r17 +93n8*Signal_Broken_Pipe{82E9} 125r8 +94n8*Signal_Quit{82E9} 126r8 +95n8*Signal_Segmentation_Fault{82E9} 127r8 +96n8*Signal_Stop{82E9} 128r8 36|858r39 +97n8*Signal_Terminated{82E9} 129r8 +98n8*Signal_Terminal_Stop{82E9} 130r8 +99n8*Signal_Terminal_In{82E9} 131r8 +100n8*Signal_Terminal_Out{82E9} 132r8 +101n8*Signal_User_1{82E9} 133r8 +102n8*Signal_User_2{82E9} 134r8 +103n8*Signal_Pollable{82E9} 135r8 +104n8*Signal_Profiling_Timer{82E9} 136r8 +105n8*Signal_Bad_Syscall{82E9} 137r8 +106n8*Signal_Tracepoint{82E9} 138r8 36|859r39 +107n8*Signal_Urgent{82E9} 139r8 36|920r51 +108n8*Signal_Virtual_Timer{82E9} 140r8 +109n8*Signal_CPU_Exceeded{82E9} 141r8 +110n8*Signal_File_Size_Exceeded{82E9} 142r8 +143A9*Signal_Bitmap(boolean)<82E9> 525r56 531r52 638r25 639r25 36|844r56 +. 851r52 +146U14*Init 36|32b14 36l8 36t12 +149U14*Disable_ASLR 36|38b14 41l8 41t20 +155A9*Children_Arr(33I9) 158r19 36|45r19 +156U14*Get_Children 157>8 158<8 159<8 36|43b14 64l8 64t20 +157i8 Proc{33I9} 36|44b8 54r65 +158a8 Buf{155A9} 36|45b8 50m7 57r24 58m16 58r21 +159i8 Len{natural} 36|46b8 51m7 56m13 56r20 +162R9*Process_Info 170e14 171r57 +163a7*Identifier{string} 36|71m14 87m20 +164i7*Identifier_Len{natural} 36|72m14 88m20 +165i7*Process{33I9} 36|73m14 89m20 +166i7*Parent{33I9} 36|74m14 90m20 +167m7*User{13|81M9} 36|75m14 91m20 +168b7*Is_Being_Traced{boolean} 36|76m14 92m20 +169b7*Has_Exited{boolean} 36|77m14 93m20 +171A9*Process_Info_Arr(162R9) 176r35 36|66r35 +176U14*List_All 176<24 176<53 36|66b14 100l8 100t16 +176a24 List{171A9} 36|66b24 69m7 84r29 86m16 86r22 +176i53 Total{natural} 36|66b53 78m7 83m13 83r22 +181U14*Create_Process 181>30 181<44 36|102b14 169l8 169t22 +181i30 Parent{33I9} 36|102b30 103r23 142r16 143r53 144r58 145r58 146r48 147r58 +. 148r58 149r58 150r58 151r58 152r58 153r58 154r58 155r58 156r58 157r58 158r58 +. 159r55 +181i44 Returned{33I9} 36|102b44 105m7 164m13 +185U14*Delete_Process 185>30 36|171b14 177l8 177t22 +185i30 Process{33I9} 185r57 36|171b30 173r44 175r23 +188U14*Get_Runtime_Times 189>8 190<8 190<24 191<8 191<22 36|179b14 207l8 +. 207t25 +189i8 Proc{33I9} 36|180b8 191r44 193r27 206r46 +190m8 System_Seconds{13|84M9} 36|181b8 186m7 196m13 196r31 203m27 +190m24 System_Nanoseconds{13|84M9} 36|181b24 187m7 197m13 197r35 203m43 +191m8 User_Seconds{13|84M9} 36|182b8 188m7 198m13 198r29 204m27 +191m22 User_Nanoseconds{13|84M9} 36|182b22 189m7 199m13 199r33 204m41 +194U14*Get_Children_Runtimes 195>8 196<8 196<24 197<8 197<22 36|209b14 221l8 +. 221t29 +195i8 Proc{33I9} 36|210b8 215r44 216r35 217r39 218r33 219r37 220r46 +196m8 System_Seconds{13|84M9} 36|211b8 216m7 +196m24 System_Nanoseconds{13|84M9} 36|211b24 217m7 +197m8 User_Seconds{13|84M9} 36|212b8 218m7 +197m22 User_Nanoseconds{13|84M9} 36|212b22 219m7 +203U14*Add_Thread 204>8 205>8 206<8 36|223b14 240l8 240t18 +204i8 Proc{33I9} 207r19 36|224b8 229r44 231r26 232r23 233r23 234r55 239r46 +205i8 Thread{27|27I9} 36|225b8 233r48 234r37 +206b8 Success{boolean} 36|226b8 230m7 235m13 +212V13*Get_Thread_Count{natural} 212>31 36|242b13 253l8 253t24 +212i31 Process{33I9} 213r19 36|242b31 245r44 246r26 247r23 251r46 +218U14*Remove_Thread 218>29 218>41 36|255b14 279l8 279t21 +218i29 Proc{33I9} 219r19 36|255b29 258r44 259r26 260r23 261r23 263r26 264r36 +. 267r40 268r40 271r40 272r40 278r46 +218i41 Thread{27|27I9} 36|255b41 260r47 262r42 +223U14*Flush_Threads 223>29 36|281b14 308l8 308t21 +223i29 Proc{33I9} 223r53 36|281b29 285r44 286r31 288r26 289r36 294r40 295r40 +. 297r40 298r40 307r46 +228U14*Reassign_Process_Addresses 228>42 36|161s16 310b14 335l8 335t34 +228i42 Process{33I9} 229r19 36|310b42 331r44 332r17 333r17 334r46 +232V13*Get_Niceness{27|112I12} 232>27 36|337b13 344l8 344t20 +232i27 Process{33I9} 233r19 36|337b27 340r44 341r27 342r46 +236U14*Set_Niceness 236>28 236>43 36|346b14 356l8 356t20 +236i28 Process{33I9} 237r19 36|346b28 348r44 349r17 350r31 355r46 +236i43 Nice{27|112I12} 36|346b43 349r38 352r45 +243V13*Is_Valid_File{boolean} 243>28 243>43 36|358b13 369l8 369t21 +243i28 Process{33I9} 244r19 36|358b28 361r44 363r25 367r46 +243m43 FD{13|84M9} 36|358b43 362r10 363r55 +252U14*Add_File 253>8 254>8 255<8 256<8 257>8 36|371b14 392l8 392t16 +253i8 Process{33I9} 258r19 36|372b8 379r44 380r35 381r23 382r23 391r46 +254p8 File{57P9} 36|373b8 382r62 +255i8 FD{natural} 36|374b8 383m13 388m7 +256b8 Success{boolean} 36|375b8 384m13 389m7 +257i8 Start{natural} 36|376b8 380r16 +263V13*Get_File_Count{natural} 263>29 36|394b13 405l8 405t22 +263i29 Process{33I9} 264r19 36|394b29 397r44 398r28 403r46 +269U14*Duplicate 270>8 271<8 36|407b14 419l8 419t17 436s16 +270p8 F{57P9} 36|408b8 413r10 414r10 414r30 415r20 +271p8 Result{57P9} 36|409b8 415m10 417m10 +277U14*Duplicate_FD_Table 278>8 279>8 280>8 36|421b14 443l8 443t26 +278i8 Process{33I9} 281r20 36|422b8 426r40 429r44 442r46 +279i8 Target{33I9} 282r20 36|423b8 427r40 430r44 441r46 +280i8 Max_FD{natural} 283r19 284r19 36|424b8 432r21 +288U14*Close 288=21 36|445b14 471l8 471t13 528s10 540s13 553s13 +288p21 F{57P9} 36|445b21 450r10 451r15 452r59 453r59 454r52 455r54 457r19 +. 458r46 458r62 463r27 463r43 464r47 466m16 468r10 468r30 470m7 +294V13*Get_File{57P9} 295>8 296>8 36|473b13 487l8 487t16 +295i8 Process{33I9} 297r19 36|474b8 479r44 481r27 485r46 +296m8 FD{13|84M9} 36|475b8 480r10 481r57 +303U14*Get_FD_Flags 304>8 305>8 306<8 307<8 36|489b14 506l8 506t20 +304i8 Process{33I9} 308r19 36|490b8 495r42 497r44 505r46 +305m8 FD{13|84M9} 36|491b8 498r10 499r43 500r43 +306b8 Close_On_Exec{boolean} 36|492b8 499m10 502m10 +307b8 Close_On_Fork{boolean} 36|493b8 500m10 503m10 +314U14*Set_FD_Flags 315>8 316>8 317>8 318>8 36|508b14 522l8 522t20 +315i8 Process{33I9} 319r19 36|509b8 514r42 516r44 521r46 +316m8 FD{13|84M9} 36|510b8 517r10 518r26 519r26 +317b8 Close_On_Exec{boolean} 36|511b8 518r48 +318b8 Close_On_Fork{boolean} 36|512b8 519r48 +324U14*Remove_File 324>27 324>42 36|524b14 533l8 533t19 +324i27 Process{33I9} 325r19 36|524b27 526r44 528r27 529r20 530r20 532r46 +324i42 FD{natural} 36|524b42 527r10 528r48 529r41 530r41 +329U14*Flush_Files 329>27 36|535b14 546l8 546t19 +329i27 Process{33I9} 329r54 36|535b27 537r44 538r26 545r46 +333U14*Flush_Exec_Files 333>32 36|548b14 559l8 559t24 +333i32 Process{33I9} 333r59 36|548b32 550r44 551r26 558r46 +338U14*Set_Common_Map 338>30 338>42 36|561b14 566l8 566t22 +338i30 Proc{33I9} 339r19 36|561b30 563r44 564r17 565r46 +338p42 Map{8|43P9} 36|561b42 564r37 +344V13*Get_Common_Map{8|43P9} 344>29 36|568b13 575l8 575t22 +344i29 Proc{33I9} 345r19 36|568b29 571r44 572r27 573r46 +350V13*Get_Stack_Base{13|84M9} 350>29 36|577b13 584l8 584t22 +350i29 Process{33I9} 351r19 36|577b29 580r44 581r27 582r46 +356U14*Set_Stack_Base 356>30 356>45 36|586b14 591l8 591t22 +356i30 Process{33I9} 357r19 36|586b30 588r44 589r17 590r46 +356m45 Base{13|84M9} 36|586b45 589r40 +363V13*Bump_Alloc_Base{13|84M9} 363>30 363>39 36|675b13 684l8 684t23 +363i30 P{33I9} 364r19 36|675b30 679r44 680r27 681r17 682r46 +363m39 Length{13|84M9} 36|675b39 681r43 +370U14*Get_Traced_Info 371>8 372<8 373<8 36|593b14 603l8 603t23 +371i8 Process{33I9} 374r19 36|594b8 599r44 600r30 601r30 602r46 +372b8 Is_Traced{boolean} 36|595b8 600m7 +373i8 FD{natural} 36|596b8 601m7 +380U14*Set_Traced_Info 381>8 382>8 383>8 36|605b14 615l8 615t23 +381i8 Process{33I9} 384r19 36|606b8 611r44 612r17 613r17 614r46 +382b8 Is_Traced{boolean} 36|607b8 612r39 +383i8 FD{natural} 36|608b8 613r39 +390U14*Issue_Exit 390>26 390>41 36|617b14 624l8 624t18 +390i26 Process{33I9} 391r19 36|617b26 619r44 620r17 621r17 622r17 623r46 +390m41 Code{13|70M9} 36|617b41 622r41 +397U14*Issue_Exit 397>26 397>41 36|626b14 633l8 633t18 +397i26 Process{33I9} 398r19 36|626b26 628r44 629r17 630r17 631r17 632r46 +397e41 Sig{82E9} 36|626b41 631r42 +406U14*Check_Exit 407>8 408<8 409<8 410<8 411<8 36|635b14 649l8 649t18 +407i8 Process{33I9} 412r19 36|636b8 643r44 644r31 645r31 646r31 647r31 648r46 +408b8 Did_Exit{boolean} 36|637b8 644m7 +409m8 Code{13|70M9} 36|638b8 645m7 +410b8 Was_Signal{boolean} 36|639b8 646m7 +411e8 Sig{82E9} 36|640b8 647m7 +418U14*Set_CWD 419>8 420>8 421>8 36|651b14 661l8 661t15 +419i8 Proc{33I9} 422r19 36|652b8 657r44 658r17 659r17 660r46 +420i8 FS{37|74I9} 36|653b8 658r42 +421m8 Ino{37|28M9} 36|654b8 659r42 +428U14*Get_CWD 429>8 430<8 431<8 36|663b14 673l8 673t15 +429i8 Proc{33I9} 432r19 36|664b8 669r44 670r24 671r24 672r46 +430i8 FS{37|74I9} 36|665b8 670m7 +431m8 Ino{37|28M9} 36|666b8 671m7 +437V13*Get_Parent{33I9} 437>25 36|686b13 693l8 693t18 +437i25 Proc{33I9} 438r19 36|686b25 689r44 690r27 691r46 +443U14*Set_Identifier 443>30 443>42 36|695b14 709l8 709t22 +443i30 Proc{33I9} 444r19 36|695b30 704r44 705r17 706r17 708r46 +443a42 Name{string} 36|695b42 698r10 701r20 707r10 707r16 707r30 +450U14*Get_Identifier 451>8 452<8 453<8 36|711b14 731l8 731t22 +451i8 Proc{33I9} 454r19 36|712b8 720r32 721r30 726r44 728r20 730r46 +452a8 ID{string} 36|713b8 718m7 720r10 723r20 727m7 727r11 727r23 +453i8 Len{natural} 36|714b8 729m7 +459U14*Get_UID 459>23 459<35 36|733b14 738l8 738t15 +459i23 Proc{33I9} 36|733b23 735r44 736r24 737r46 +459m35 UID{13|81M9} 36|733b35 736m7 +464U14*Set_UID 464>23 464>35 36|740b14 745l8 745t15 +464i23 Proc{33I9} 36|740b23 742r44 743r17 744r46 +464m35 UID{13|81M9} 36|740b35 743r31 +469U14*Get_Effective_UID 469>33 469<45 36|747b14 752l8 752t25 +469i33 Proc{33I9} 36|747b33 749r44 750r25 751r46 +469m45 EUID{13|81M9} 36|747b45 750m7 +474U14*Set_Effective_UID 474>33 474>45 36|754b14 759l8 759t25 +474i33 Proc{33I9} 36|754b33 756r44 757r17 758r46 +474m45 EUID{13|81M9} 36|754b45 757r41 +479U14*Get_GID 479>23 479<35 36|761b14 766l8 766t15 +479i23 Proc{33I9} 36|761b23 763r44 764r24 765r46 +479m35 GID{13|81M9} 36|761b35 764m7 +484U14*Set_GID 484>23 484>35 36|768b14 773l8 773t15 +484i23 Proc{33I9} 36|768b23 770r44 771r17 772r46 +484m35 GID{13|81M9} 36|768b35 771r32 +489U14*Get_Effective_GID 489>33 489<45 36|775b14 780l8 780t25 +489i33 Proc{33I9} 36|775b33 777r44 778r25 779r46 +489m45 EGID{13|81M9} 36|775b45 778m7 +494U14*Set_Effective_GID 494>33 494>45 36|782b14 787l8 787t25 +494i33 Proc{33I9} 36|782b33 784r44 785r17 786r46 +494m45 EGID{13|81M9} 36|782b45 785r42 +496N4*Max_Supplementary_Groups 648r53 36|796r27 799r49 813r26 +497A9*Supplementary_GID_Arr(13|81M9) 501r21 506r18 648r25 36|791r21 +. 808r18 +499U14*Get_Supplementary_Groups 500>8 501<8 502<8 36|789b14 804l8 804t32 +500i8 Proc{33I9} 36|790b8 795r44 797r30 800r26 802r27 803r46 +501a8 Groups{497A9} 36|791b8 796r10 797m10 797r50 799m10 799r18 799r34 +502i8 Length{natural} 36|792b8 802m7 +504U14*Set_Supplementary_Groups 505>8 506>8 507<8 36|806b14 821l8 821t32 +505i8 Proc{33I9} 36|807b8 812r44 816r20 817r20 820r46 +506a8 Groups{497A9} 36|808b8 813r10 816r40 816r58 817r42 +507b8 Success{boolean} 36|809b8 814m10 818m10 +509U14*Empty_Supplementary_Groups 509>42 36|823b14 828l8 828t34 +509i42 Proc{33I9} 36|823b42 825r44 826r17 827r46 +514U14*Get_Umask 514>25 514<37 36|830b14 835l8 835t17 +514i25 Proc{33I9} 36|830b25 832r44 833r26 834r46 +514m37 Umask{37|32M12} 36|830b37 833m7 +519U14*Set_Umask 519>25 519>37 36|837b14 842l8 842t17 +519i25 Proc{33I9} 36|837b25 839r44 840r17 841r46 +519m37 Umask{37|32M12} 36|837b37 840r32 +525U14*Get_Masked_Signals 525>34 525<46 36|844b14 849l8 849t26 +525i34 Proc{33I9} 36|844b34 846r44 847r24 848r46 +525a46 Sig{143A9} 36|844b46 847m7 +531U14*Set_Masked_Signals 531>34 531>46 36|851b14 862l8 862t26 +531i34 Proc{33I9} 36|851b34 853r44 856r17 857r17 858r17 859r17 861r46 +531a46 Sig{143A9} 36|851b46 856r61 +536U14*Raise_Signal 536>28 536>40 36|864b14 871l8 871t20 +536i28 Proc{33I9} 36|864b28 866r44 867r24 868r20 870r46 +536e40 Sig{82E9} 36|864b40 867r46 868r42 +542U14*Get_Signal_Handler 543>8 544>8 545<8 36|873b14 882l8 882t26 +543i8 Proc{33I9} 36|874b8 879r44 880r25 881r46 +544e8 Sig{82E9} 36|875b8 880r48 +545m8 Addr{28|67M9} 36|876b8 880m7 +551U14*Set_Signal_Handler 552>8 553>8 554>8 36|884b14 895l8 895t26 +552i8 Proc{33I9} 36|885b8 890r44 892r20 894r46 +553e8 Sig{82E9} 36|886b8 891r10 892r43 +554m8 Addr{28|67M9} 36|887b8 892r51 +562U14*Get_Raised_Signal_Actions 563>8 564<8 565<8 566<8 567<8 36|897b14 +. 927l8 927t33 +563i8 Proc{33I9} 36|898b8 910r44 911r26 912r23 914r33 922r23 926r46 +564e8 Sig{82E9} 36|899b8 905m7 913m13 920r23 920r45 +565m8 Addr{28|67M9} 36|900b8 906m7 914m13 +566b8 No_Sig{boolean} 36|901b8 907m7 915m13 +567b8 Ignore{boolean} 36|902b8 908m7 920m13 +573V13*Convert{natural} 573>22 36|929b13 932l8 932t15 +573i22 Proc{33I9} 573r61 36|929b22 931r23 +579V13*Convert{33I9} 579>22 36|934b13 943l8 943t15 +579i22 Proc{natural} 36|934b22 936r10 936r29 937r25 939r22 +586V13*Get_Enforcement{33|52E9} 586>30 36|945b13 948l8 948t23 +586i30 Proc{33I9} 36|945b30 947r45 +587U14*Set_Enforcement 587>31 587>43 36|950b14 953l8 953t23 +587i31 Proc{33I9} 36|950b31 952r38 +587e43 Act{33|52E9} 36|950b43 952r51 +589V13*Get_Capabilities{33|23R9} 589>31 36|955b13 958l8 958t24 +589i31 Proc{33I9} 36|955b31 957r46 +590U14*Set_Capabilities 590>32 590>44 36|960b14 963l8 963t24 +590i32 Proc{33I9} 36|960b32 962r39 +590r44 Caps{33|23R9} 36|960b44 962r52 +592V13*Check_Permissions{33|42R9} 593>8 594>8 595>8 36|965b13 972l8 972t25 +593i8 Proc{33I9} 36|966b8 971r47 +594i8 FS{37|74I9} 36|967b8 971r60 +595m8 Ino{37|28M9} 36|968b8 971r64 +597U14*Add_Entity 598>8 599>8 600>8 601>8 602<8 36|974b14 983l8 983t18 +598i8 Proc{33I9} 36|975b8 982r33 +599i8 FS{37|74I9} 36|976b8 982r46 +600m8 Ino{37|28M9} 36|977b8 982r50 +601r8 Perms{33|42R9} 36|978b8 982r55 +602e8 Status{33|104E9} 36|979b8 982m62 +604V13*Get_Limit{33|58M9} 605>8 606>8 36|985b13 991l8 991t17 +605i8 Proc{33I9} 36|986b8 990r39 +606e8 Resource{33|59E9} 36|987b8 990r52 +608U14*Set_Limit 609>8 610>8 611>8 612<8 36|993b14 1001l8 1001t17 +609i8 Proc{33I9} 36|994b8 1000r32 +610e8 Resource{33|59E9} 36|995b8 1000r45 +611m8 Limit{33|58M9} 36|996b8 1000r55 +612b8 Could_Set{boolean} 36|997b8 1000m62 +627R9 File_Descriptor 631e14 634r58 +628b7*Close_On_Exec{boolean} 36|499r48 518m31 529m45 542m12 552r46 554m15 +629b7*Close_On_Fork{boolean} 36|433r25 500r48 519m31 530m45 543m12 555m15 +630p7*Description{57P9} 36|363r60 381r47 382m47 399r17 435r24 436r35 436m56 +. 481r62 528m52 539r15 540m22 552r15 553m22 +633A9 Thread_Arr(27|27I9) 656r25 +634A9 File_Arr(627R9) 657r25 36|362r29 426r13 427r13 480r29 495r15 +. 498r29 514r15 517r29 527r16 +635A9 Handle_Arr(28|67M9)<82E9> 640r25 +636R9 Process_Data 670e14 671r36 36|28r8 110r33 +637r7*Data_Mutex{23|22R9} 36|85m56 95m58 111m17 143m56 159m58 173m53 191m50 +. 206m52 215m50 220m52 229m50 239m52 245m53 251m55 258m50 278m52 285m50 307m52 +. 331m53 334m55 340m53 342m55 348m53 355m55 361m53 367m55 379m53 391m55 397m53 +. 403m55 429m53 430m52 441m54 442m55 479m53 485m55 497m53 505m55 516m53 521m55 +. 526m53 532m55 537m53 545m55 550m53 558m55 563m50 565m52 571m50 573m52 580m53 +. 582m55 588m53 590m55 599m53 602m55 611m53 614m55 619m53 623m55 628m53 632m55 +. 643m53 648m55 657m50 660m52 669m50 672m52 679m47 682m49 689m50 691m52 704m50 +. 708m52 726m50 730m52 735m50 737m52 742m50 744m52 749m50 751m52 756m50 758m52 +. 763m50 765m52 770m50 772m52 777m50 779m52 784m50 786m52 795m50 803m52 812m50 +. 820m52 825m50 827m52 832m50 834m52 839m50 841m52 846m50 848m52 853m50 861m52 +. 866m50 870m52 879m50 881m52 890m50 894m52 910m50 926m52 +638a7*Masked_Signals{143A9} 36|112m17 145m29 145r61 847r30 856m23 857m23 +. 858m23 859m23 867r30 +639a7*Raised_Signals{143A9} 36|113m17 868m26 911r32 912r29 922m29 +640a7*Signal_Handlers{635A9} 36|114m17 880r31 892m26 914r39 +641i7*Niceness{27|112I12} 36|115m17 144m29 144r61 234r61 341r36 349m26 +642m7*Umask{37|32M12} 36|116m17 158m29 158r61 833r32 840m23 +643m7*User{13|81M9} 36|91r52 117m17 152m29 152r61 736r30 743m23 +644m7*Effective_User{13|81M9} 36|118m17 153m29 153r61 750r31 757m23 +645m7*Group{13|81M9} 36|119m17 154m29 154r61 764r30 771m23 +646m7*Effective_Group{13|81M9} 36|120m17 155m29 155r61 778r31 785m23 +647i7*SGroup_Count{natural} 36|121m17 156m29 156r61 802r33 817m26 826m23 +648a7*SGroups{497A9} 36|122m17 157m29 157r61 797r36 800r32 816m26 +649a7*Identifier{string} 36|87r52 123m17 706m23 728r26 +650i7*Identifier_Len{integer} 36|88r52 124m17 705m23 720r38 721r36 +651i7*Parent{33I9} 36|54r56 90r52 125m17 146m29 263r32 264r42 267r46 268r46 +. 271r46 272r46 288r32 289r42 294r46 295r46 297r46 298r46 690r33 +652b7*Is_Traced{boolean} 36|92r52 126m17 600r39 612m26 +653i7*Tracer_FD{integer} 36|127m17 601r39 613m26 +654i7*Current_Dir_FS{37|74I9} 36|128m17 149m29 149r61 658m23 670r30 +655m7*Current_Dir_Ino{37|28M9} 36|129m17 150m29 150r61 659m23 671r30 +656a7*Thread_List{633A9} 36|130m17 193r33 231r32 232r29 233m29 246r35 247r32 +. 259r32 260r29 261m29 286r37 350r40 +657a7*File_Table{634A9} 36|131m17 363r34 380r44 381r32 382m32 398r37 426m49 +. 427m48 481r36 495m51 514m51 528r36 529m29 530m29 538r35 551r35 +658p7*Common_Map{8|43P9} 36|132m17 564m23 572r33 +659m7*Stack_Base{13|84M9} 36|133m17 147m29 147r61 333m26 581r36 589m26 +660m7*Alloc_Base{13|84M9} 36|134m17 148m29 148r61 332m26 680r30 681m20 +661r7*Perms{33|68R9} 36|135m17 151m29 151r61 947r51 952m44 957r52 962m45 +. 971r53 982m39 990r45 1000m38 +662b7*Signal_Exit{boolean} 36|136m17 621m26 630m26 646r40 +663e7*Which_Signal{82E9} 36|137m17 631m26 647r40 +664b7*Did_Exit{boolean} 36|93r52 138m17 620m26 629m26 644r40 +665m7*Exit_Code{13|70M9} 36|139m17 622m26 645r40 +666m7*Children_SSec{13|84M9} 36|216r41 267m54 294m54 +667m7*Children_SNSec{13|84M9} 36|217r45 268m54 295m54 +668m7*Children_USec{13|84M9} 36|218r39 271m54 297m54 +669m7*Children_UNSec{13|84M9} 36|219r43 272m54 298m54 +671P9 Process_Data_Acc(636R9) 672r63 36|28r22 +672A9 Process_Arr(671P9)<33I9> 673r36 36|34r23 +673P9 Process_Arr_Acc(672A9) 676r21 +675r4 Registry_Mutex{23|22R9} 36|35m36 35r36 52m34 52r34 63m36 63r36 80m34 +. 80r34 99m36 99r36 107m34 107r34 168m36 168r36 174m34 174r34 176m36 176r36 +676p4 Registry{673P9} 36|34m7 53r16 54r13 54r43 81r16 82r13 85r43 87r39 88r39 +. 90r39 91r39 92r39 93r39 95r45 108r16 109r13 110r13 143r43 144r16 144r48 +. 145r16 145r48 146r16 147r16 147r48 148r16 148r48 149r16 149r48 150r16 150r48 +. 151r16 151r48 152r16 152r48 153r16 153r48 154r16 154r48 155r16 155r48 156r16 +. 156r48 157r16 157r48 158r16 158r48 159r45 173r34 175r13 191r34 193r17 206r36 +. 215r34 216r25 217r29 218r23 219r27 220r36 229r34 231r16 232r13 233r13 234r45 +. 239r36 245r34 246r16 247r13 251r36 258r34 259r16 260r13 261r13 263r16 264r16 +. 264r26 267r20 267r30 268r20 268r30 271r20 271r30 272r20 272r30 278r36 285r34 +. 286r21 288r16 289r16 289r26 294r20 294r30 295r20 295r30 297r20 297r30 298r20 +. 298r30 307r36 331r34 332r7 333r7 334r36 340r34 341r17 342r36 348r34 349r7 +. 350r21 355r36 361r34 363r15 367r36 379r34 380r25 381r13 382r13 391r36 397r34 +. 398r18 403r36 426r30 427r30 429r34 430r34 441r36 442r36 479r34 481r17 485r36 +. 495r32 497r34 505r36 514r32 516r34 521r36 526r34 528r17 529r10 530r10 532r36 +. 537r34 538r16 545r36 550r34 551r16 558r36 563r34 564r7 565r36 571r34 572r17 +. 573r36 580r34 581r17 582r36 588r34 589r7 590r36 599r34 600r20 601r20 602r36 +. 611r34 612r7 613r7 614r36 619r34 620r7 621r7 622r7 623r36 628r34 629r7 +. 630r7 631r7 632r36 643r34 644r21 645r21 646r21 647r21 648r36 657r34 658r7 +. 659r7 660r36 669r34 670r14 671r14 672r36 679r34 680r17 681r7 682r36 689r34 +. 690r17 691r36 704r34 705r7 706r7 708r36 720r22 721r20 726r34 728r10 730r36 +. 735r34 736r14 737r36 742r34 743r7 744r36 749r34 750r15 751r36 756r34 757r7 +. 758r36 763r34 764r14 765r36 770r34 771r7 772r36 777r34 778r15 779r36 784r34 +. 785r7 786r36 795r34 797r20 800r16 802r17 803r36 812r34 816r10 817r10 820r36 +. 825r34 826r7 827r36 832r34 833r16 834r36 839r34 840r7 841r36 846r34 847r14 +. 848r36 853r34 856r7 857r7 858r7 859r7 861r36 866r34 867r14 868r10 870r36 +. 879r34 880r15 881r36 890r34 892r10 894r36 910r34 911r16 912r13 914r23 922r13 +. 926r36 937r10 947r35 952r28 957r36 962r29 971r37 982r23 990r29 1000r22 +X 36 userland-process.adb +27U14 Free[2|20] +27U14*Free[2|20] 175s7 +30b4 Do_ASLR{boolean} 40m7 314r10 +48i7 Index{natural} 57r16 58r33 59m16 59r43 +53i11 I 54r23 54r53 58r43 +67i7 Curr_Index{natural} 84r16 86r35 94m16 94r30 +81i11 I 82r23 85r53 87r49 88r49 89r39 90r49 91r49 92r49 93r49 95r55 +103i7 P=103:23{35|33I9} +108i11 I 109r23 110r23 144r26 145r26 146r26 147r26 148r26 149r26 +. 150r26 151r26 152r26 153r26 154r26 155r26 156r26 157r26 158r26 161r49 164r30 +184m7 Temp1{13|84M9} 195m46 196r48 +184m14 Temp2{13|84M9} 195m53 197r56 +184m21 Temp3{13|84M9} 195m60 198r44 +184m28 Temp4{13|84M9} 195m67 199r52 +193i11 Th{27|27I9} +231i11 I{integer} 232r42 233r42 +243i7 Returned{natural} 248m13 248r25 252r14 +246i11 I{integer} 247r45 +256m7 Temp1{13|84M9} 262m50 269r20 +256m14 Temp2{13|84M9} 262m57 269r27 +256m21 Temp3{13|84M9} 262m64 273r20 +256m28 Temp4{13|84M9} 262m71 273r27 +259i11 I{integer} 260r42 261r42 +282i7 Current_Thread{27|27I9} 301r26 +283m7 T1{13|84M9} 291m53 295r70 +283m11 T2{13|84M9} 291m57 295r74 +283m15 T3{13|84M9} 291m61 298r70 +283m19 T4{13|84M9} 291m65 298r74 +286i11 Thread{27|27I9} +311K15 Aln[20|19] 324r23 325r23 +312m7 Rand_Addr{13|84M9} 318m14 324m10 324r37 327m10 332r40 333r40 +312m18 Rand_Jump{13|84M9} 322m14 325m10 325r37 328m10 333r52 +338i7 Result{27|112I12} 341m7 343r14 +350i11 Thread{27|27I9} +359b7 R{boolean} 363m10 365m10 368r14 +380i11 I{integer} 381r44 382r44 383r24 +390L6 Cleanup 385r18 +395i7 Count_Of_FDs{natural} 400m13 400r29 404r14 +398r11 Ent{35|627R9} +426a7 Src{35|634A9} +427a7 Tgt{35|634A9} +432i11 I{integer} 433r22 434r18 434r29 435r21 436r32 436r53 +446U17 Free[2|20] +446U17 Free[2|20] 466s10 +448b7 T{boolean} 458m75 459r26 +477p7 Res{35|57P9} 481m10 483m10 486r14 +495a7 Table{35|634A9} +514a7 Table{35|634A9} +538r11 F{35|627R9} +551r11 F{35|627R9} +569p7 Result{8|43P9} 572m7 574r14 +578m7 Result{13|84M9} 581m7 583r14 +677m7 Result{13|84M9} 680m7 681r34 683r14 +687i7 Result{35|33I9} 690m7 692r14 +696i7 Length{natural} 699m10 701m10 705r51 706r40 707r43 +716i7 Length{natural} 721m10 723m10 727r34 728r43 729r14 +911e11 I{35|82E9} 912r45 913r23 914r56 922r45 +18M9 T{13|84M9} 27r42[311] 27r52[311] 35r44[311] 35r54[311] 40r50[311] 40r60[311] +. 41r49[311] 23r42[311] 23r52[311] 27r14[311] 30r44[311] 30r54[311] 34r14[311] +. 37r50[311] 37r60[311] +27V13 Align_Up{13|84M9} 324s27[311] 325s27[311] 29r20[311] +27m23 Value{13|84M9} 24r61[311] +27m30 Alignment{13|84M9} 28r20[311] 28r40[311] 28r55[311] 29r40[311] 25r61[311] +35V13 Align_Down{13|84M9} 37r20[311] +35m25 Value{13|84M9} 31r61[311] +35m32 Alignment{13|84M9} 36r20[311] 36r40[311] 36r55[311] 37r42[311] 32r61[311] +40V13 Divide_Round_Up{13|84M9} 42r20[311] +40m30 Dividend{13|84M9} 41r21[311] 39r15[311] +40m40 Divisor{13|84M9} 41r33[311] 41r62[311] 42r47[311] 39r27[311] 39r43[311] +18P9*Name{35|671P9} 20r50[27] 20r50[446] +20p39 X{35|671P9} 21r15[27] 22r23[27] 23r11[27] 21r15[446] 22r23[446] 23r11[446] +24m7 Value2{29|82M9} 27r18[311] +25m7 Align2{29|82M9} 27r27[311] 27r48[311] +31m7 Value2{29|82M9} 34r17[311] +32m7 Align2{29|82M9} 34r33[311] +X 37 vfs.ads +24K9*VFS 35|18w6 46r29 75r33 76r33 420r15 421r15 430r19 431r19 514r49 519r45 +. 594r15 595r15 599r17 600r17 625r29 642r25 654r25 655r25 36|128r36 463r16 +. 653r15 654r15 665r19 666r19 830r49 837r45 967r15 968r15 976r17 977r17 37|674e8 +28M9*File_Inode_Number<13|84M9> 35|76r37 421r19 431r23 595r19 600r21 655r29 +. 36|654r19 666r23 968r19 977r21 +32M12*File_Mode{13|81M9} 35|46r33 514r53 519r49 625r33 642r29 36|830r53 837r49 +74I9*FS_Handle 35|75r37 420r19 430r23 594r19 599r21 654r29 36|653r19 +. 665r23 967r19 976r21 +75i4*Error_Handle{74I9} 36|128r40 +359U14*Close 36|463s20 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___userland__process__init 1 ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__init 0 +GG EK_GLOBALS ada___userland__process__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry_mutex proper_output 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry_mutex refined_output 2 ada___userland__process__registry_mutex ada___userland__process__registry calls_proof 0 calls 1 ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__disable_aslr 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__disable_aslr 0 +GG EK_GLOBALS ada___userland__process__disable_aslr local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 1 ada___userland__process__do_aslr refined_proof_in 0 refined_input 0 refined_output 1 ada___userland__process__do_aslr calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__do_aslr LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_children 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_children 0 +GG EK_GLOBALS ada___userland__process__get_children local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__registry_mutex ada___userland__process__registry proper_output 1 ada___userland__process__registry_mutex refined_proof_in 0 refined_input 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_output 1 ada___userland__process__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__list_all 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__list_all 0 +GG EK_GLOBALS ada___userland__process__list_all local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__registry_mutex ada___userland__process__registry proper_output 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_proof_in 0 refined_input 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_output 2 ada___userland__process__registry_mutex ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__create_process 3 ada___userland__process__reassign_process_addresses ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__create_process 0 +GG EK_GLOBALS ada___userland__process__create_process local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 3 ada___userland__process__do_aslr ada___userland__process__registry_mutex ada___userland__process__registry proper_output 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_proof_in 0 refined_input 3 ada___userland__process__do_aslr ada___userland__process__registry_mutex ada___userland__process__registry refined_output 2 ada___userland__process__registry_mutex ada___userland__process__registry calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__delete_process 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___userland__process__free +GG EK_PROOF_DEPENDENCIES ada___userland__process__delete_process 0 +GG EK_GLOBALS ada___userland__process__delete_process local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__registry_mutex ada___userland__process__registry proper_output 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_proof_in 0 refined_input 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_output 2 ada___userland__process__registry_mutex ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_runtime_times 4 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__get_runtime_times ada___lib__time__normalize +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_runtime_times 0 +GG EK_GLOBALS ada___userland__process__get_runtime_times local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___lib__time__normalize calls_conditional 1 scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_children_runtimes 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_children_runtimes 0 +GG EK_GLOBALS ada___userland__process__get_children_runtimes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__add_thread 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__set_niceness +GG EK_PROOF_DEPENDENCIES ada___userland__process__add_thread 0 +GG EK_GLOBALS ada___userland__process__add_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_thread_count 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_thread_count 0 +GG EK_GLOBALS ada___userland__process__get_thread_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__remove_thread 4 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__get_runtime_times ada___lib__time__increment +GG EK_PROOF_DEPENDENCIES ada___userland__process__remove_thread 0 +GG EK_GLOBALS ada___userland__process__remove_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 scheduler__get_runtime_times ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__flush_threads 6 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__delete_thread scheduler__get_runtime_times ada___lib__time__increment ada___arch__local__get_current_thread +GG EK_PROOF_DEPENDENCIES ada___userland__process__flush_threads 0 +GG EK_GLOBALS ada___userland__process__flush_threads local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 4 scheduler__delete_thread scheduler__get_runtime_times ada___lib__time__increment ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses__aln__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses__aln__align_up 0 +GG EK_GLOBALS ada___userland__process__reassign_process_addresses__aln__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__process__reassign_process_addresses__aln ada___userland__process__reassign_process_addresses ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses__aln__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses__aln__align_down 0 +GG EK_GLOBALS ada___userland__process__reassign_process_addresses__aln__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__process__reassign_process_addresses__aln ada___userland__process__reassign_process_addresses ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses__aln__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses__aln__divide_round_up 0 +GG EK_GLOBALS ada___userland__process__reassign_process_addresses__aln__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__process__reassign_process_addresses__aln ada___userland__process__reassign_process_addresses ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses__aln 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses__aln 0 +GG EK_GLOBALS ada___userland__process__reassign_process_addresses__aln local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__process__reassign_process_addresses ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses 5 ada___lib__synchronization__seize ada___lib__synchronization__release ada___cryptography__random__get_integer__2 ada___userland__process__reassign_process_addresses__aln ada___userland__process__reassign_process_addresses__aln__align_up +GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses 0 +GG EK_GLOBALS ada___userland__process__reassign_process_addresses local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__do_aslr ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 2 ada___userland__process__do_aslr ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__do_aslr ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_niceness 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_niceness 0 +GG EK_GLOBALS ada___userland__process__get_niceness local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_niceness 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__set_niceness +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_niceness 0 +GG EK_GLOBALS ada___userland__process__set_niceness local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__is_valid_file 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__is_valid_file 0 +GG EK_GLOBALS ada___userland__process__is_valid_file local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__add_file 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__add_file 0 +GG EK_GLOBALS ada___userland__process__add_file local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_file_count 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_file_count 0 +GG EK_GLOBALS ada___userland__process__get_file_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__duplicate 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__duplicate 0 +GG EK_GLOBALS ada___userland__process__duplicate local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__duplicate_fd_table 3 ada___userland__process__duplicate ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__duplicate_fd_table 0 +GG EK_GLOBALS ada___userland__process__duplicate_fd_table local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__registry __HEAP proper_output 2 ada___userland__process__registry __HEAP refined_proof_in 0 refined_input 2 ada___userland__process__registry __HEAP refined_output 2 ada___userland__process__registry __HEAP calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__close__free 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__close__free 0 +GG EK_GLOBALS ada___userland__process__close__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 3 ada___userland__process__close ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__close 8 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___lib__messages__put_line ada___ipc__filelock__release_lock__2 ada___userland__process__close__free +GG EK_PROOF_DEPENDENCIES ada___userland__process__close 0 +GG EK_GLOBALS ada___userland__process__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 6 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_file 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_file 0 +GG EK_GLOBALS ada___userland__process__get_file local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_fd_flags 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_fd_flags 0 +GG EK_GLOBALS ada___userland__process__get_fd_flags local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_fd_flags 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_fd_flags 0 +GG EK_GLOBALS ada___userland__process__set_fd_flags local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__remove_file 3 ada___userland__process__close ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__remove_file 0 +GG EK_GLOBALS ada___userland__process__remove_file local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 6 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__flush_files 3 ada___userland__process__close ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__flush_files 0 +GG EK_GLOBALS ada___userland__process__flush_files local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 6 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__flush_exec_files 3 ada___userland__process__close ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__flush_exec_files 0 +GG EK_GLOBALS ada___userland__process__flush_exec_files local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 6 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_common_map 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_common_map 0 +GG EK_GLOBALS ada___userland__process__set_common_map local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_common_map 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_common_map 0 +GG EK_GLOBALS ada___userland__process__get_common_map local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_stack_base 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_stack_base 0 +GG EK_GLOBALS ada___userland__process__get_stack_base local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_stack_base 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_stack_base 0 +GG EK_GLOBALS ada___userland__process__set_stack_base local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__bump_alloc_base 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__bump_alloc_base 0 +GG EK_GLOBALS ada___userland__process__bump_alloc_base local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_traced_info 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_traced_info 0 +GG EK_GLOBALS ada___userland__process__get_traced_info local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_traced_info 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_traced_info 0 +GG EK_GLOBALS ada___userland__process__set_traced_info local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__issue_exit 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__issue_exit 0 +GG EK_GLOBALS ada___userland__process__issue_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__issue_exit__2 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__issue_exit__2 0 +GG EK_GLOBALS ada___userland__process__issue_exit__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__check_exit 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__check_exit 0 +GG EK_GLOBALS ada___userland__process__check_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_cwd 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_cwd 0 +GG EK_GLOBALS ada___userland__process__set_cwd local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_cwd 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_cwd 0 +GG EK_GLOBALS ada___userland__process__get_cwd local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_parent 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_parent 0 +GG EK_GLOBALS ada___userland__process__get_parent local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_identifier 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_identifier 0 +GG EK_GLOBALS ada___userland__process__set_identifier local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_identifier 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_identifier 0 +GG EK_GLOBALS ada___userland__process__get_identifier local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_uid 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_uid 0 +GG EK_GLOBALS ada___userland__process__get_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_uid 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_uid 0 +GG EK_GLOBALS ada___userland__process__set_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_effective_uid 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_effective_uid 0 +GG EK_GLOBALS ada___userland__process__get_effective_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_effective_uid 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_effective_uid 0 +GG EK_GLOBALS ada___userland__process__set_effective_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_gid 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_gid 0 +GG EK_GLOBALS ada___userland__process__get_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_gid 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_gid 0 +GG EK_GLOBALS ada___userland__process__set_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_effective_gid 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_effective_gid 0 +GG EK_GLOBALS ada___userland__process__get_effective_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_effective_gid 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_effective_gid 0 +GG EK_GLOBALS ada___userland__process__set_effective_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_supplementary_groups 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_supplementary_groups 0 +GG EK_GLOBALS ada___userland__process__get_supplementary_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_supplementary_groups 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_supplementary_groups 0 +GG EK_GLOBALS ada___userland__process__set_supplementary_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__empty_supplementary_groups 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__empty_supplementary_groups 0 +GG EK_GLOBALS ada___userland__process__empty_supplementary_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_umask 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_umask 0 +GG EK_GLOBALS ada___userland__process__get_umask local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_umask 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_umask 0 +GG EK_GLOBALS ada___userland__process__set_umask local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_masked_signals 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_masked_signals 0 +GG EK_GLOBALS ada___userland__process__get_masked_signals local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_masked_signals 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_masked_signals 0 +GG EK_GLOBALS ada___userland__process__set_masked_signals local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__raise_signal 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__raise_signal 0 +GG EK_GLOBALS ada___userland__process__raise_signal local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_signal_handler 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_signal_handler 0 +GG EK_GLOBALS ada___userland__process__get_signal_handler local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_signal_handler 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_signal_handler 0 +GG EK_GLOBALS ada___userland__process__set_signal_handler local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_raised_signal_actions 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_raised_signal_actions 0 +GG EK_GLOBALS ada___userland__process__get_raised_signal_actions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__convert 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__convert 0 +GG EK_GLOBALS ada___userland__process__convert local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__convert__2 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__convert__2 0 +GG EK_GLOBALS ada___userland__process__convert__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_enforcement 1 ada___userland__mac__get_enforcement +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_enforcement 0 +GG EK_GLOBALS ada___userland__process__get_enforcement local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___userland__mac__get_enforcement TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_enforcement 1 ada___userland__mac__set_enforcement +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_enforcement 0 +GG EK_GLOBALS ada___userland__process__set_enforcement local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 1 ada___userland__mac__set_enforcement calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_capabilities 1 ada___userland__mac__get_capabilities +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_capabilities 0 +GG EK_GLOBALS ada___userland__process__get_capabilities local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___userland__mac__get_capabilities TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_capabilities 1 ada___userland__mac__set_capabilities +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_capabilities 0 +GG EK_GLOBALS ada___userland__process__set_capabilities local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 1 ada___userland__mac__set_capabilities calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__check_permissions 1 ada___userland__mac__check_permissions +GG EK_PROOF_DEPENDENCIES ada___userland__process__check_permissions 0 +GG EK_GLOBALS ada___userland__process__check_permissions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___userland__mac__check_permissions TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__add_entity 1 ada___userland__mac__add_entity +GG EK_PROOF_DEPENDENCIES ada___userland__process__add_entity 0 +GG EK_GLOBALS ada___userland__process__add_entity local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 1 ada___userland__mac__add_entity calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__get_limit 1 ada___userland__mac__get_limit +GG EK_PROOF_DEPENDENCIES ada___userland__process__get_limit 0 +GG EK_GLOBALS ada___userland__process__get_limit local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___userland__mac__get_limit TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__set_limit 1 ada___userland__mac__set_limit +GG EK_PROOF_DEPENDENCIES ada___userland__process__set_limit 0 +GG EK_GLOBALS ada___userland__process__set_limit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 1 ada___userland__mac__set_limit calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process__free 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process__free 0 +GG EK_GLOBALS ada___userland__process__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__process 0 +GG EK_PROOF_DEPENDENCIES ada___userland__process 0 +GG EK_GLOBALS ada___userland__process local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___userland__process__do_aslr ada___userland__process__registry refined_initializes 2 ada___userland__process__do_aslr ada___userland__process__registry calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 3 ada___userland__process__do_aslr ada___userland__process__registry_mutex ada___userland__process__registry TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses__aln TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__process__reassign_process_addresses BODY_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses__aln__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__process__reassign_process_addresses__aln VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses__aln__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__process__reassign_process_addresses__aln VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses__aln__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__process__reassign_process_addresses__aln VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__memory_locations TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__process__close__freeGP16612 VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close__freeGP16612 TRUE FALSE FALSE FALSE TRUE ada___userland__process__close BODY_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__process__freeGP988 VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___ipc__filelock TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__could_acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__freeGP988 TRUE FALSE FALSE FALSE TRUE ada___userland__process BODY_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__list_all FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__inner_could_acquire FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_REMOTE_STATES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-process.cswi b/obj/gnatprove/phase1/userland-process.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/userland-process.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/userland.ads.stderr b/obj/gnatprove/phase1/userland.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland.ads.stdout b/obj/gnatprove/phase1/userland.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland.ali b/obj/gnatprove/phase1/userland.ali new file mode 100644 index 0000000..c7b8ac0 --- /dev/null +++ b/obj/gnatprove/phase1/userland.ali @@ -0,0 +1,64 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland%s userland.ads 1671c2b9 OO PK + +D system.ads 20240507065137 14286b0f system%s +D userland.ads 20250222165738 1671c2b9 userland%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 2 userland.ads +17K9*Userland 23l5 23e13 +19P9*String_Acc(string) 20r58 21r58 +20A9*Argument_Arr(19P9) 22r36 +21A9*Environment_Arr(19P9) +22P9*Argument_Arr_Acc(20A9) + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS userland 0 +GG EK_PROOF_DEPENDENCIES userland 0 +GG EK_GLOBALS userland local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland.cswi b/obj/gnatprove/phase1/userland.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/userland.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/obj/gnatprove/phase1/vfs.adb.stderr b/obj/gnatprove/phase1/vfs.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/vfs.adb.stdout b/obj/gnatprove/phase1/vfs.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/vfs.ali b/obj/gnatprove/phase1/vfs.ali new file mode 100644 index 0000000..d48ca0c --- /dev/null +++ b/obj/gnatprove/phase1/vfs.ali @@ -0,0 +1,1046 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g2867970" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RV NO_RECURSION +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U vfs%b vfs.adb a6087a9d OO PK IU +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W vfs%s vfs.adb vfs.ali +W vfs.dev%s vfs-dev.adb vfs-dev.ali +W vfs.ext%s vfs-ext.adb vfs-ext.ali +W vfs.fat%s vfs-fat.adb vfs-fat.ali +N A194:7 gnatprove false_positive "range check might fail" "in List? how?" + +U vfs%s vfs.ads a745dd19 OO PK IU +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W devices%s devices.adb devices.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D vfs.ads 20250222165738 63b4365d vfs%s +D vfs.adb 20250222165738 50a9d4ff vfs%b +D vfs-dev.ads 20250222165738 f8e32356 vfs.dev%s +D vfs-ext.ads 20250222165738 f0d56b8d vfs.ext%s +D vfs-fat.ads 20250222165738 5e8b7c81 vfs.fat%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 13|17r6 346r30 347r30 +X 2 a-uncdea.ads +20u15*Unchecked_Deallocation 13|17w10 346r34 347r34 +X 3 arch.ads +20K9*Arch 52e9 12|21r6 478r18 482r18 13|884r18 888r18 +X 4 arch-mmu.ads +22K14*MMU 250e13 12|21w11 478r23 482r23 13|884r23 888r23 +26R9*Page_Permissions 32e14 12|482r27 13|888r27 +43P9*Page_Table_Acc(42R9) 12|478r27 13|884r27 +X 5 devices.ads +22K9*Devices 279e12 12|19w6 19r22 93r41 94r19 111r41 112r19 139r19 13|29r26 +. 66r46 78r15 101r41 145r39 155r42 175r39 204r39 1060r39 +29A9*Operation_Data(6|70M9) 12|404r26 422r22 13|760r26 799r22 +83I9*Device_Handle 12|156r57 649r21 13|66r29 225r57 +85i4*Error_Handle{83I9} 13|29r34 78r23 101r49 145r47 155r50 175r47 204r47 +. 1060r47 +88i4*Max_Name_Length{natural} 12|93r49 111r49 +105V13*Fetch{83I9} 13|66s54 +145V13*Is_Initialized{boolean} 12|94s27 112s27 139s27 +X 6 interfac.ads +38K9*Interfaces 233e15 12|17w6 17r22 +70M9*Unsigned_8 +81M9*Unsigned_32 12|32r25 45r27 46r27 262r21 282r19 299r19 300r19 318r26 +. 338r26 352r19 538r17 539r17 559r22 598r21 623r18 636r19 636r46 668r21 669r21 +. 13|339r21 601r19 619r19 620r19 640r26 661r26 679r19 965r17 966r17 986r22 +. 1035r21 1074r18 1093r21 1094r21 +84M9*Unsigned_64 12|28r34 36r32 37r32 48r27 50r27 58r22 185r58 192r61 198r52 +. 204r60 213r33 214r33 223r33 224r33 230r60 403r22 421r22 448r19 461r18 479r18 +. 481r18 574r29 575r29 576r29 577r29 13|257r58 266r61 275r52 284r60 295r33 +. 296r33 298r12 299r12 310r33 311r33 313r12 314r12 323r60 759r22 798r22 849r19 +. 864r18 885r18 887r18 1013r29 1014r29 1015r29 1016r29 +X 7 lib.ads +19K9*Lib 35e8 12|20r6 663r27 13|37r23 97r7 137r7 143r7 161r7 173r7 186r7 +. 202r7 212r7 1058r7 1066r7 +X 8 lib-synchronization.ads +20K13*Synchronization 66e24 12|20w10 663r31 13|37r27 97r11 137r11 143r11 +. 161r11 173r11 186r11 202r11 212r11 1058r11 1066r11 +22R9*Binary_Semaphore 57e14 12|663r47 +23r4*Unlocked_Semaphore{22R9} 13|37r43 +27U14*Seize 13|97s27 143s27 173s27 202s27 1058s27 +31U14*Release 13|137s27 161s27 186s27 212s27 1066s27 +X 9 memory.ads +19K9*Memory 36e11 12|22w6 480r18 13|886r18 +35M12*Virtual_Address{11|82M9} 12|480r25 13|886r25 +X 10 system.ads +37K9*System 155e11 12|18w6 18r22 150r58 462r18 651r21 13|31r26 68r20 121r21 +. 220r58 248r23 865r18 +67M9*Address 12|150r65 462r25 651r28 13|68r27 220r65 248r30 865r25 +69m4*Null_Address{67M9} 13|31r33 121r28 154r46 +81V14*"="{boolean} 13|121r18 154r44 +X 11 s-stoele.ads +82M9*Integer_Address +X 12 vfs.ads +24K9*VFS 674l5 674e8 13|18r6 19r6 20r6 22b14 67r46 171r17 444r10 502r22 552r7 +. 1123l5 1123t8 +28M9*File_Inode_Number<6|84M9> 42r27 257r21 260r25 278r19 296r19 314r26 316r26 +. 333r26 335r26 350r19 359r44 371r20 386r20 402r22 420r22 435r19 447r19 460r18 +. 477r18 494r20 513r20 524r17 537r17 554r22 573r29 596r25 655r21 656r21 13|70r20 +. 71r20 334r21 337r25 351r25 353r25 432r33 597r19 616r19 636r26 638r26 656r26 +. 658r26 677r19 691r44 702r20 739r20 758r22 797r22 831r19 848r19 863r18 883r18 +. 905r20 933r20 949r17 964r17 981r22 1012r29 1033r25 +32M12*File_Mode{6|81M9} 44r27 281r19 525r17 621r18 635r40 635r58 636r8 670r21 +. 13|600r19 950r17 1072r18 1095r21 +35R9*File_Timestamp 38e14 51r27 52r27 53r27 +36m7*Seconds_Since_Epoch{6|84M9} +37m7*Additional_Nanoseconds{6|84M9} +39E9*File_Type 40e64 43r27 61r22 280r19 620r18 13|599r19 1071r18 +39n23*File_Regular{39E9} +39n37*File_Directory{39E9} 13|476r45 495r18 +39n53*File_Symbolic_Link{39E9} 13|453r42 521r18 +40n23*File_Character_Device{39E9} +40n46*File_Block_Device{39E9} +41R9*File_Stat 54e14 436r23 13|357r25 832r23 989r18 +42m7*Unique_Identifier{28M9} +43e7*Type_Of_File{39E9} 13|453r27 476r30 494r26 +44m7*Mode{32M12} 13|514r45 559r36 999r34 +45m7*UID{6|81M9} 13|513r45 558r36 998r34 +46m7*GID{6|81M9} +47i7*Hard_Link_Count{positive} +48m7*Byte_Size{6|84M9} +49i7*IO_Block_Size{natural} +50m7*IO_Block_Count{6|84M9} +51r7*Creation_Time{35R9} +52r7*Modification_Time{35R9} +53r7*Access_Time{35R9} +57R9*Directory_Entity 62e14 63r63 +58m7*Inode_Number{6|84M9} 13|432r56 +59a7*Name_Buffer{string} 13|427r23 +60i7*Name_Len{natural} 13|427r45 +61e7*Type_Of_File{39E9} +63A9*Directory_Entities(57R9) 64r42 373r24 13|348r11 356r51 704r24 +64P9*Directory_Entities_Acc(63A9) 13|348r31 356r21 +70i4*Max_Symlink_Loop{natural} 644c4 +73E9*FS_Type 73e46 107r23 144r53 650r21 13|50r17 61r23 215r53 +73n23*FS_DEV{73E9} 13|51r19 111r15 149r21 251r15 260r15 269r15 278r15 287r15 +. 302r15 317r15 326r15 694r15 710r15 767r15 806r15 837r15 870r15 894r15 912r15 +. 925r15 938r15 +73n31*FS_EXT{73E9} 13|30r26 113r15 150r21 252r15 261r15 270r15 279r15 288r15 +. 303r15 318r15 327r15 606r15 625r15 645r15 666r15 684r15 695r15 718r15 746r15 +. 776r15 815r15 839r15 854r15 873r15 926r15 940r15 955r15 971r15 1021r15 +73n39*FS_FAT{73E9} 13|116r15 151r21 253r15 262r15 271r15 280r15 289r15 304r15 +. 319r15 328r15 696r15 726r15 784r15 841r15 927r15 +74I9*FS_Handle 75r34 129r21 133r55 144r35 150r40 156r39 163r17 175r23 +. 185r36 192r39 198r30 204r37 212r29 222r29 230r36 256r21 259r25 277r19 295r19 +. 313r26 332r26 349r19 359r27 370r20 385r20 401r22 419r22 434r19 446r19 459r18 +. 476r18 493r20 503r32 512r20 523r17 536r17 553r22 572r29 595r25 643c9 645r34 +. 654r21 659r38 13|67r33 69r20 167r21 215r35 220r40 225r39 231r17 243r23 +. 257r36 266r39 275r30 284r37 294r29 309r29 323r36 333r21 336r25 350r33 352r33 +. 596r19 615r19 635r26 655r26 676r19 691r27 701r20 738r20 757r22 796r22 830r19 +. 847r19 862r18 882r18 904r20 922r32 932r20 948r17 963r17 980r22 1011r29 +. 1032r25 +75i4*Error_Handle{74I9} 145r45 151r45 157r45 166r45 179r45 186r45 193r45 +. 199r45 205r45 215r45 225r45 231r45 266r45 284r45 302r45 320r45 340r45 354r45 +. 360r45 376r45 390r45 408r45 426r45 438r45 450r45 464r45 484r45 498r45 504r45 +. 515r45 527r45 541r45 561r45 579r45 604r28 645c4 13|34r26 67r50 69r33 171r21 +. 200r27 350r46 400r28 577r20 585r20 +76i4*Path_Buffer_Length{natural} 167r34 646c4 652r40 653r34 13|77r30 237r40 +79U14*Init 13|25b14 38l8 38t12 +87U14*Mount 88>8 89>8 90>8 91>8 92<8 13|40b14 56l8 56t13 +88a8 Device_Name{string} 93r19 13|41b8 48r29 +89a8 Mount_Path{string} 13|42b8 52r26 +90b8 Do_Read_Only{boolean} 13|43b8 52r42 +91b8 Do_Relatime{boolean} 13|44b8 52r56 +92b8 Success{boolean} 13|45b8 52m69 53r23 +104U14*Mount 105>8 106>8 107>8 108>8 109>8 110<8 13|52s13 58b14 138l8 138t13 +105a8 Device_Name{string} 111r19 13|59b8 66r61 +106a8 Mount_Path{string} 13|60b8 76r27 77r10 83r10 85r28 126r29 132r44 132r66 +107e8 FS{73E9} 13|61b8 110r12 124r29 +108b8 Do_Read_Only{boolean} 13|62b8 112r28 114r28 117r28 +109b8 Do_Relatime{boolean} 13|63b8 112r42 114r42 +110b8 Success{boolean} 13|64b8 74m7 93m13 133m10 +119U14*Unmount 119>23 119>38 119<55 13|140b14 162l8 162t15 +119a23 Path{string} 13|140b23 146r68 +119b38 Force{boolean} 13|140b38 154r16 +119b55 Success{boolean} 13|140b55 142m7 156m16 +126U14*Get_Mount 127>8 128<8 129<8 13|164b14 191l8 191t17 +127a8 Path{string} 13|165b8 176r13 178r13 180r13 180r19 180r33 +128i8 Match{natural} 13|166b8 170m7 177r13 183m13 188r10 189m10 189r19 +129i8 Handle{74I9} 13|167b8 171m7 182m13 +133A9*Mountpoint_Arr(74I9) 138r35 13|193r35 +138U14*List_All 138<24 138<51 13|193b14 213l8 213t16 +138a24 List{133A9} 13|193b24 200m7 205r29 206m16 206r22 +138i51 Total{natural} 13|193b51 199m7 209m13 209r22 +144V13*Get_Backing_FS{73E9} 144>29 13|215b13 218l8 218t22 +144i29 Key{74I9} 145r38 13|215b29 217r22 +150V13*Get_Backing_FS_Data{10|67M9} 150>34 13|220b13 223l8 223t27 +150i34 Key{74I9} 151r38 13|220b34 222r22 +156V13*Get_Backing_Device{5|83I9} 156>33 13|225b13 228l8 228t26 +156i33 Key{74I9} 157r38 13|225b33 227r22 +162U14*Get_Mount_Point 163>8 164<8 165<8 13|230b14 240l8 240t23 +163i8 Key{74I9} 166r38 13|231b8 238r18 239r25 +164a8 Name{string} 167r19 13|232b8 236m7 237m7 237r13 237r27 +165i8 Length{natural} 13|233b8 239m7 +174U14*Remount 175>8 176>8 177>8 178<8 13|242b14 255l8 255t15 +175i8 Key{74I9} 179r38 13|243b8 248r49 250r20 +176b8 Do_Read_Only{boolean} 13|244b8 251r44 252r44 253r44 +177b8 Do_Relatime{boolean} 13|245b8 251r58 252r58 253r58 +178b8 Success{boolean} 13|246b8 251m71 252m71 253m71 +185U14*Get_Block_Size 185>30 185<47 13|257b14 264l8 264t22 +185i30 Key{74I9} 186r38 13|257b30 259r20 260r53 261r53 262r61 +185m47 Size{6|84M9} 13|257b47 260m67 261m67 262m25 +192U14*Get_Fragment_Size 192>33 192<50 13|266b14 273l8 273t25 +192i33 Key{74I9} 193r38 13|266b33 268r20 269r56 270r56 271r64 +192m50 Size{6|84M9} 13|266b50 269m70 270m70 271m25 +198U14*Get_Size 198>24 198<41 13|275b14 282l8 282t16 +198i24 Key{74I9} 199r38 13|275b24 277r20 278r47 279r47 280r55 +198m41 Size{6|84M9} 13|275b41 278m61 279m61 280m25 +204U14*Get_Inode_Count 204>31 204<48 13|284b14 291l8 291t23 +204i31 Key{74I9} 205r38 13|284b31 286r20 287r54 288r54 289r63 +204m48 Count{6|84M9} 13|284b48 287m68 288m68 289m25 +211U14*Get_Free_Blocks 212>8 213<8 214<8 13|293b14 306l8 306t23 +212i8 Key{74I9} 215r38 13|294b8 301r20 302r54 303r54 304r54 +213m8 Free_Blocks{6|84M9} 13|295b8 298r32 +214m8 Free_Unpriviledged{6|84M9} 13|296b8 299r32 +221U14*Get_Free_Inodes 222>8 223<8 224<8 13|308b14 321l8 321t23 +222i8 Key{74I9} 225r38 13|309b8 316r20 317r54 318r54 319r54 +223m8 Free_Inodes{6|84M9} 13|310b8 313r32 +224m8 Free_Unpriviledged{6|84M9} 13|311b8 314r32 +230U14*Get_Max_Length 230>30 230<47 13|323b14 330l8 330t22 +230i30 Key{74I9} 231r38 13|323b30 325r20 326r63 327r63 328r63 +230m47 Length{6|84M9} 13|323b47 326m25 327m25 328m25 +234E9*FS_Status 242e16 261r25 283r23 301r23 319r30 339r30 353r23 375r24 389r24 +. 407r26 425r26 437r23 449r23 463r22 483r22 503r50 514r36 526r21 540r21 560r26 +. 578r33 597r25 622r22 13|72r20 338r25 602r23 621r23 641r30 662r30 680r23 +. 706r24 742r24 763r26 802r26 833r23 850r23 866r22 889r22 922r50 934r36 951r21 +. 967r21 987r26 1017r33 1034r25 1073r22 +235n8*FS_Success{234E9} 603r34 13|92r21 420r27 421r27 445r24 460r30 503r36 +. 528r30 553r21 571r20 992r20 1004r20 +236n8*FS_Invalid_Value{234E9} 13|579r20 +237n8*FS_Is_Directory{234E9} +238n8*FS_Not_Supported{234E9} 13|610r23 630r23 650r23 671r23 687r23 752r26 +. 825r26 857r23 877r23 899r23 927r32 943r20 958r23 975r23 1026r23 +239n8*FS_Not_Allowed{234E9} 13|587r20 1006r20 +240n8*FS_RO_Failure{234E9} +241n8*FS_IO_Failure{234E9} 13|1061r34 +242n8*FS_Loop{234E9} +255U14*Open 256>8 257>8 258>8 259<8 260<8 261<8 262>8 263>8 264>8 265>8 13|332b14 +. 464s16 532s16 593l8 593t12 1041s7 +256i8 Key{74I9} 266r38 13|333b8 352r46 +257m8 Relative{28M9} 13|334b8 353r46 +258a8 Path{string} 13|335b8 363r10 367r23 378r16 378r41 379r16 379r22 383r13 +. 383r37 390r16 390r42 391r16 391r22 398r13 398r19 398r44 401r16 401r22 401r47 +. 428r19 428r25 428r50 452r13 452r38 536r31 536r37 536r67 +259i8 Final_Key{74I9} 13|336b8 468m34 537m34 569m7 577m7 585m7 +260m8 Ino{28M9} 13|337b8 469m34 538m34 570m7 578m7 586m7 +261e8 Success{234E9} 13|338b8 419m30 420r17 421r16 444m56 445r13 459m33 460r19 +. 470m34 502m68 503r25 527m33 528r19 539m34 552m53 553r10 571m7 579m7 587m7 +262m8 User{6|81M9} 13|339b8 471r34 512r34 540r34 557r25 +263b8 Want_Read{boolean} 13|340b8 472r34 541r34 560r25 +264b8 Want_Write{boolean} 13|341b8 473r34 542r34 561r25 +265b8 Do_Follow{boolean} 13|342b8 453r65 474r34 543r34 +276U14*Create_Node 277>8 278>8 279>8 280>8 281>8 282>8 283<8 13|595b14 612l8 +. 612t19 1077s7 +277i8 Key{74I9} 284r38 13|596b8 605r20 608r25 +278m8 Relative{28M9} 13|597b8 608r39 +279a8 Path{string} 13|598b8 608r49 +280e8 Typ{39E9} 13|599b8 608r55 +281m8 Mode{32M12} 13|600b8 608r60 +282m8 User{6|81M9} 13|601b8 608r66 +283e8 Status{234E9} 13|602b8 608m72 610m13 +294U14*Create_Symbolic_Link 295>8 296>8 297>8 298>8 299>8 300>8 301<8 13|614b14 +. 632l8 632t28 +295i8 Key{74I9} 302r38 13|615b8 624r20 627r25 +296m8 Relative{28M9} 13|616b8 627r39 +297a8 Path{string} 13|617b8 627r49 +298a8 Target{string} 13|618b8 627r55 +299m8 Mode{6|81M9} 13|619b8 627r63 +300m8 User{6|81M9} 13|620b8 627r69 +301e8 Status{234E9} 13|621b8 628m17 630m13 +312U14*Create_Hard_Link 313>8 314>8 315>8 316>8 317>8 318>8 319<8 13|634b14 +. 652l8 652t24 +313i8 Key{74I9} 320r38 13|635b8 644r20 647r25 +314m8 Relative_Path{28M9} 13|636b8 647r39 +315a8 Path{string} 13|637b8 647r54 +316m8 Relative_Target{28M9} 13|638b8 647r60 +317a8 Target{string} 13|639b8 648r17 +318m8 User{6|81M9} 13|640b8 648r25 +319e8 Status{234E9} 13|641b8 648m31 650m13 +331U14*Rename 332>8 333>8 334>8 335>8 336>8 337>8 338>8 339<8 13|654b14 673l8 +. 673t14 +332i8 Key{74I9} 340r38 13|655b8 665r20 668r25 +333m8 Relative_Source{28M9} 13|656b8 668r39 +334a8 Source{string} 13|657b8 668r56 +335m8 Relative_Target{28M9} 13|658b8 668r64 +336a8 Target{string} 13|659b8 669r17 +337b8 Keep{boolean} 13|660b8 669r25 +338m8 User{6|81M9} 13|661b8 669r31 +339e8 Status{234E9} 13|662b8 669m37 671m13 +348U14*Unlink 349>8 350>8 351>8 352>8 353<8 13|675b14 689l8 689t14 +349i8 Key{74I9} 354r38 13|676b8 683r20 685r33 +350m8 Relative{28M9} 13|677b8 685r47 +351a8 Path{string} 13|678b8 685r57 +352m8 User{6|81M9} 13|679b8 685r63 +353e8 Status{234E9} 13|680b8 685m69 687m13 +359U14*Close 359>21 359>38 13|691b14 698l8 698t13 +359i21 Key{74I9} 360r38 13|691b21 693r20 696r44 +359m38 Ino{28M9} 13|691b38 696r58 +369U14*Read_Entries 370>8 371>8 372>8 373<8 374<8 375<8 13|413s13 700b14 +. 735l8 735t20 +370i8 Key{74I9} 376r38 13|701b8 709r20 712r25 720r25 728r25 +371m8 Ino{28M9} 13|702b8 713r17 721r17 729r17 +372i8 Offset{natural} 13|703b8 714r17 722r17 730r17 +373a8 Entities{63A9} 13|704b8 715m17 723m17 731m17 +374i8 Ret_Count{natural} 13|705b8 716m17 724m17 732m17 +375e8 Success{234E9} 13|706b8 717m17 725m17 733m17 +384U14*Read_Symbolic_Link 385>8 386>8 387<8 388<8 389<8 13|454s16 522s16 +. 737b14 754l8 754t26 +385i8 Key{74I9} 390r38 13|738b8 745r20 748r25 +386m8 Ino{28M9} 13|739b8 748r39 +387a8 Path{string} 13|740b8 748m44 750m13 +388i8 Ret_Count{natural} 13|741b8 748m50 751m13 +389e8 Success{234E9} 13|742b8 748m61 752m13 +400U14*Read 401>8 402>8 403>8 404<8 405<8 406>8 407<8 13|756b14 793l8 793t12 +401i8 Key{74I9} 408r38 13|757b8 766r20 769r25 778r25 786r25 +402m8 Ino{28M9} 13|758b8 770r17 779r17 787r17 +403m8 Offset{6|84M9} 13|759b8 771r17 780r17 788r17 +404a8 Data{5|29A9} 13|760b8 772m17 781m17 789m17 +405i8 Ret_Count{natural} 13|761b8 773m17 782m17 790m17 +406b8 Is_Blocking{boolean} 13|762b8 774r17 +407e8 Success{234E9} 13|763b8 775m17 783m17 791m17 +418U14*Write 419>8 420>8 421>8 422>8 423<8 424>8 425<8 13|795b14 827l8 827t13 +419i8 Key{74I9} 426r38 13|796b8 805r20 808r25 817r25 +420m8 Ino{28M9} 13|797b8 809r17 818r17 +421m8 Offset{6|84M9} 13|798b8 810r17 819r17 +422a8 Data{5|29A9} 13|799b8 811r17 820r17 +423i8 Ret_Count{natural} 13|800b8 812m17 821m17 824m13 +424b8 Is_Blocking{boolean} 13|801b8 813r17 +425e8 Success{234E9} 13|802b8 814m17 822m17 825m13 +433U14*Stat 434>8 435>8 436<8 437<8 13|444s14 502s26 552s11 829b14 844l8 +. 844t12 991s7 +434i8 Key{74I9} 438r38 13|830b8 836r20 838r31 840r31 842r31 +435m8 Ino{28M9} 13|831b8 838r45 840r45 842r45 +436r8 Stat_Val{41R9} 13|832b8 838m50 840m50 842m50 +437e8 Success{234E9} 13|833b8 838m60 840m60 842m60 +445U14*Truncate 446>8 447>8 448>8 449<8 13|846b14 859l8 859t16 +446i8 Key{74I9} 450r38 13|847b8 853r20 855r35 +447m8 Ino{28M9} 13|848b8 855r49 +448m8 New_Size{6|84M9} 13|849b8 855r54 +449e8 Status{234E9} 13|850b8 855m64 857m13 +458U14*IO_Control 459>8 460>8 461>8 462>8 463<8 13|861b14 879l8 879t18 +459i8 Key{74I9} 464r38 13|862b8 869r20 872r25 875r25 +460m8 Ino{28M9} 13|863b8 872r39 875r39 +461m8 Request{6|84M9} 13|864b8 872r44 875r44 +462m8 Arg{10|67M9} 13|865b8 872r53 875r53 +463e8 Status{234E9} 13|866b8 872m58 875m58 877m13 +475U14*Mmap 476>8 477>8 478>8 479>8 480>8 481>8 482>8 483<8 13|881b14 901l8 +. 901t12 +476i8 Key{74I9} 484r38 13|882b8 893r20 896r25 +477m8 Ino{28M9} 13|883b8 896r39 +478p8 Map{4|43P9} 13|884b8 896r44 +479m8 Offset{6|84M9} 13|885b8 891r28 +480m8 Address{9|35M12} 13|886b8 896r49 +481m8 Length{6|84M9} 13|887b8 896r58 +482r8 Flags{4|26R9} 13|888b8 896r66 +483e8 Status{234E9} 13|889b8 897m17 899m13 +492U14*Poll 493>8 494>8 495<8 496<8 497<8 13|903b14 920l8 920t12 +493i8 Key{74I9} 498r38 13|904b8 911r20 914r25 +494m8 Ino{28M9} 13|905b8 914r39 +495b8 Can_Read{boolean} 13|906b8 914m44 916m13 +496b8 Can_Write{boolean} 13|907b8 914m54 917m13 +497b8 Is_Error{boolean} 13|908b8 914m65 918m13 +503V13*Synchronize{234E9} 503>26 13|922b13 929l8 929t19 1061s16 +503i26 Key{74I9} 504r38 13|922b26 924r20 925r57 926r57 +511V13*Synchronize{234E9} 512>8 513>8 514>8 13|931b13 945l8 945t19 +512i8 Key{74I9} 515r38 13|932b8 937r20 939r45 941r45 +513m8 Ino{28M9} 13|933b8 939r59 941r59 +514b8 Data_Only{boolean} 13|934b8 939r64 941r64 +522U14*Change_Mode 523>8 524>8 525>8 526<8 13|947b14 960l8 960t19 +523i8 Key{74I9} 527r38 13|948b8 954r20 956r38 +524m8 Ino{28M9} 13|949b8 956r52 +525m8 Mode{32M12} 13|950b8 956r57 +526e8 Status{234E9} 13|951b8 956m63 958m13 +535U14*Change_Owner 536>8 537>8 538>8 539>8 540<8 13|962b14 977l8 977t20 +536i8 Key{74I9} 541r38 13|963b8 970r20 973r25 +537m8 Ino{28M9} 13|964b8 973r39 +538m8 Owner{6|81M9} 13|965b8 973r44 +539m8 Group{6|81M9} 13|966b8 973r51 +540e8 Status{234E9} 13|967b8 973m58 975m13 +552U14*Check_Access 553>8 554>8 555>8 556>8 557>8 558>8 559>8 560<8 13|979b14 +. 1008l8 1008t20 +553i8 Key{74I9} 561r38 13|980b8 991r13 +554m8 Ino{28M9} 13|981b8 991r18 +555b8 Exists_Only{boolean} 13|982b8 992r39 +556b8 Can_Read{boolean} 13|983b8 1000r25 +557b8 Can_Write{boolean} 13|984b8 1001r25 +558b8 Can_Exec{boolean} 13|985b8 1002r25 +559m8 Real_UID{6|81M9} 13|986b8 997r25 +560e8 Status{234E9} 13|987b8 991m33 992r10 1004m10 1006m10 +571U14*Change_Access_Times 572>8 573>8 574>8 575>8 576>8 577>8 578<8 13|1010b14 +. 1028l8 1028t27 +572i8 Key{74I9} 579r38 13|1011b8 1020r20 1023r25 +573m8 Ino{28M9} 13|1012b8 1023r39 +574m8 Access_Seconds{6|84M9} 13|1013b8 1023r44 +575m8 Access_Nanoseconds{6|84M9} 13|1014b8 1023r60 +576m8 Modify_Seconds{6|84M9} 13|1015b8 1024r17 +577m8 Modify_Nanoseconds{6|84M9} 13|1016b8 1024r33 +578e8 Status{234E9} 13|1017b8 1024m53 1026m13 +593U14*Open 594>8 595<8 596<8 597<8 598>8 599>8 600>8 601>8 13|84s10 1030b14 +. 1052l8 1052t12 +594a8 Path{string} 13|1031b8 1044r25 +595i8 Key{74I9} 604r21 13|1032b8 1045m25 +596m8 Ino{28M9} 13|1033b8 1046m25 +597e8 Success{234E9} 603r24 13|1034b8 1047m25 +598m8 User{6|81M9} 13|1035b8 1048r25 +599b8 Want_Read{boolean} 13|1036b8 1049r25 +600b8 Want_Write{boolean} 13|1037b8 1050r25 +601b8 Do_Follow{boolean} 13|1038b8 1051r25 +609U14*Synchronize 609<27 13|1054b14 1067l8 1067t19 +609b27 Success{boolean} 13|1054b27 1056m7 1062m16 +618U14*Create_Node 619>8 620>8 621>8 622<8 623>8 13|1069b14 1085l8 1085t19 +619a8 Path{string} 13|1070b8 1080r23 +620e8 Typ{39E9} 13|1071b8 1081r23 +621m8 Mode{32M12} 13|1072b8 1082r23 +622e8 Success{234E9} 13|1073b8 1084m23 +623m8 User{6|81M9} 13|1074b8 1083r23 +629V13*Is_Absolute{boolean} 629>26 13|76s14 367s10 1087b13 1090l8 1090t19 +629a26 Path{string} 13|1087b26 1089r14 1089r40 1089r46 +635V13*Apply_Umask{32M12} 635>26 635>32 +635m26 Mode{32M12} 636r32 +635m32 Umask{32M12} 636r59 +639V13*Is_Initialized{boolean} 79s32 95s19 113s19 120s19 130s19 139s46 145s19 +. 151s19 157s19 166s19 179s19 186s19 193s19 199s19 205s19 215s19 225s19 231s19 +. 266s19 284s19 302s19 320s19 340s19 354s19 360s19 376s19 390s19 408s19 426s19 +. 438s19 450s19 464s19 484s19 498s19 504s19 515s19 527s19 541s19 561s19 579s19 +. 602s20 610s19 624s19 665b13 +648R9 Mount_Data 657e14 659r65 +649i7*Mounted_Dev{5|83I9} 13|29m11 99r24 101r27 123m14 145r24 155m27 175r24 +. 204r24 227r27 1060r24 +650e7*Mounted_FS{73E9} 13|30m11 124m14 148r29 217r27 250r25 259r25 268r25 +. 277r25 286r25 301r25 316r25 325r25 605r25 624r25 644r25 665r25 683r25 693r25 +. 709r25 745r25 766r25 805r25 836r25 853r25 869r25 893r25 911r25 924r25 937r25 +. 954r25 970r25 1020r25 +651m7*FS_Data{10|67M9} 13|31m11 125m14 149m55 150m55 151m55 154r36 222r27 +. 248r54 260r58 261r58 262r66 269r61 270r61 271r69 278r52 279r52 280r60 287r59 +. 288r59 289r68 302r59 303r59 304r59 317r59 318r59 319r59 326r68 327r68 328r68 +. 608r30 627r30 647r30 668r30 685r38 696r49 712r30 720r30 728r30 748r30 769r30 +. 778r30 786r30 808r30 817r30 838r36 840r36 842r36 855r40 872r30 875r30 896r30 +. 914r30 925r62 926r62 939r50 941r50 956r43 973r30 1023r30 +652i7*Path_Length{integer} 13|32m11 126m14 146r53 176r39 177r32 178r52 179r53 +. 180r57 183r34 239r30 +653a7*Path_Buffer{string} 13|33m11 127m14 132m26 146r24 179r24 238r23 +654i7*Base_Key{74I9} 13|34m11 128m14 479r33 497r33 +655m7*Base_Ino{28M9} 13|35m11 129m14 480r33 498r33 +656m7*Root_Ino{28M9} 13|36m11 130m14 369r35 483r47 501r47 1043r36 1079r34 +659A9 Mount_Registry(648R9)<74I9> 660r38 13|28r21 +660P9 Mount_Registry_Acc(659A9) 662r19 +662p4 Mounts{660P9} 665r47 13|28m7 98r16 99r13 101r16 122r10 132r10 144r16 +. 145r13 146r13 146r42 148r18 149r44 150r44 151r44 154r25 155r16 174r16 175r13 +. 176r28 177r21 178r41 179r13 179r42 180r46 183r23 203r16 204r13 217r14 222r14 +. 227r14 238r10 239r17 248r41 250r12 259r12 260r45 261r45 262r53 268r12 269r48 +. 270r48 271r56 277r12 278r39 279r39 280r47 286r12 287r46 288r46 289r55 301r12 +. 302r46 303r46 304r46 316r12 317r46 318r46 319r46 325r12 326r55 327r55 328r55 +. 369r24 478r25 479r22 480r22 483r36 496r25 497r22 498r22 501r36 605r12 608r17 +. 624r12 627r17 644r12 647r17 665r12 668r17 683r12 685r25 693r12 696r36 709r12 +. 712r17 720r17 728r17 745r12 748r17 766r12 769r17 778r17 786r17 805r12 808r17 +. 817r17 836r12 838r23 840r23 842r23 853r12 855r27 869r12 872r17 875r17 893r12 +. 896r17 911r12 914r17 924r12 925r49 926r49 937r12 939r37 941r37 954r12 956r30 +. 970r12 973r17 1020r12 1023r17 1043r25 1059r16 1060r13 1079r23 +663r4 Mounts_Mutex{8|22R9} 13|37m7 97m34 97r34 137m36 137r36 143m34 143r34 +. 161m36 161r36 173m34 173r34 186m36 186r36 202m34 202r34 212m36 212r36 1058m34 +. 1058r34 1066m36 1066r36 +667V13 Can_Access_File{boolean} 668>8 669>8 670>8 671>8 672>8 673>8 13|511s23 +. 556s14 996s10 1092b13 1122l8 1122t23 +668m8 User{6|81M9} 13|1093b8 1101r10 1105r23 +669m8 File_Owner{6|81M9} 13|1094b8 1105r10 +670m8 Mode{32M12} 13|1095b8 1106r36 1107r36 1108r36 1113r36 1114r36 1115r36 +671b8 Want_Read{boolean} 13|1096b8 1106r14 1113r14 +672b8 Want_Write{boolean} 13|1097b8 1107r14 1114r14 +673b8 Want_Exec{boolean} 13|1098b8 1108r14 1115r14 +X 13 vfs.adb +48a7 Name=48:29{string} +50e11 FS{12|73E9} 51r13 52r38 +66i7 De{5|83I9} 78r10 99r38 112r24 114r24 117r24 123r29 +67i7 Free_I{12|74I9} 102m13 122r18 132r18 +68m7 FS_Data{10|67M9} 112m55 114m55 117m42 121r10 125r29 +69i7 Key{12|74I9} 86m28 128r29 +70m7 Ino{12|28M9} 87m28 129r29 +71m7 Root_Inode{12|28M9} 112m64 115m13 118m13 130r29 +72e7 Succ{12|234E9} 88m28 92r13 +98i11 I 99r21 101r24 102r23 +109L6 Try_Probe 103r18 +136L6 Cleanup 100r18 107r12 +144i11 I 145r21 146r21 146r50 148r26 149r52 150r52 151r52 154r33 +. 155r24 +174i11 I 175r21 176r36 177r29 178r49 179r21 179r50 180r54 182r23 +. 183r31 +197i7 Curr_Index{natural} 205r16 206r35 207m16 207r30 +203i11 I 204r21 206r50 +248m7 Data{10|67M9} 251r38 252r38 253r38 +298m7 FB=298:32{6|84M9} +299m7 FU=299:32{6|84M9} +313m7 FI=313:32{6|84M9} +314m7 FU=314:32{6|84M9} +344P12 String_Acc(string) 346r66 360r25 +346U17 Free1[2|20] +346U17 Free1[2|20] 567s7 575s7 583s7 591s7 +347U17 Free2[2|20] +347U17 Free2[2|20] 568s7 576s7 584s7 592s7 +350i7 Orig_Key{12|74I9} 400r16 403r27 430m19 465r34 533r34 +351m7 Orig_Ino{12|28M9} 404r27 431m19 466r34 534r34 +352i7 Actual_Key{12|74I9} 368m10 403m13 414r30 430r33 444r20 455r33 479r44 +. 482m22 497r44 500m22 502r32 523r33 552r17 569r20 +353m7 Actual_Ino{12|28M9} 369m10 404m13 415r30 431r33 432m19 444r32 456r33 +. 480r44 483m22 498r44 501m22 502r44 524r33 552r29 570r20 +354i7 Path_Idx{natural} 372m7 378r29 379r35 381m13 381r25 383r26 389r23 398r32 +. 401r35 428r38 548m10 +355i7 Path_Last{natural} 389m10 390r29 391r35 393m13 393r26 395m10 395r23 +. 398r57 401r60 428r63 452r26 536r50 548r22 +356p7 Dir_Entries{12|64P9} 417r30 426r24 568m14 568r14 576m14 576r14 584m14 +. 584r14 592m14 592r14 +357r7 Entry_Stat{12|41R9} 444m44 453r16 476r19 494r15 502m56 513r34 514r34 +. 552m41 558r25 559r25 +358i7 Entries_Offset{natural} 410m10 416r30 437m13 437r31 +359i7 Entries_Count{natural} 411m10 418m30 420r42 426r42 437r48 +360p7 Symlink_Path{344P12} 457r33 467r34 525r33 535r34 567m14 567r14 575m14 +. 575r14 583m14 583r14 591m14 591r14 +361i7 Symlink_Len{natural} 458m33 467r53 526m33 535r53 +426r17 Ent{12|57R9} +442L6 Found_Entry 399r18 405r18 433r24 +478i20 I 479r30 480r30 482r36 483r44 +496i20 I 497r30 498r30 500r36 501r44 +574L6 Invalid_Value_Return 364r15 440r15 446r18 461r24 504r30 529r24 546r21 +. 554r15 +582L6 Not_Allowed_Return 519r24 564r15 +590L6 Cleanup_Only_Return 475r21 544r21 +989r7 Ino_Stat{12|41R9} 991m23 998r25 999r25 +1059i11 I 1060r21 1061r29 +18P9 Name{344P12} 20r50[346] 20r50[347] +20p39 X{344P12} 21r15[346] 22r23[346] 23r11[346] 21r15[347] 22r23[347] 23r11[347] +X 14 vfs-dev.ads +19K13*Dev 13|18w10 112r13 149r31 251r25 260r25 269r25 278r25 287r25 302r25 +. 317r25 326r35 711r13 768r13 807r13 838r13 871r13 895r13 913r13 925r32 939r20 +. 14|116e12 +20U14*Probe 13|112s17 +27U14*Remount 13|251s29 +33U14*Unmount 13|149s35 +35U14*Get_Block_Size 13|260s29 +37U14*Get_Fragment_Size 13|269s29 +39U14*Get_Size 13|278s29 +41U14*Get_Inode_Count 13|287s29 +43U14*Get_Free_Blocks 13|302s29 +48U14*Get_Free_Inodes 13|317s29 +53V13*Get_Max_Length{6|84M9} 13|326s39 +55U14*Read_Entries 13|711s17 +63U14*Read 13|768s17 +72U14*Write 13|807s17 +81U14*Stat 13|838s17 +87U14*IO_Control 13|871s17 +94U14*Mmap 13|895s17 +103U14*Poll 13|913s17 +110V13*Synchronize{12|234E9} 13|925s36 +112V13*Synchronize{12|234E9} 13|939s24 +X 15 vfs-ext.ads +20K13*EXT 13|19w10 114r13 150r31 252r25 261r25 270r25 279r25 288r25 303r25 +. 318r25 327r35 607r13 626r13 646r13 667r13 685r13 719r13 747r13 777r13 816r13 +. 840r13 855r13 874r13 926r32 941r20 956r13 972r13 1022r13 15|542e12 +21U14*Probe 13|114s17 +27U14*Remount 13|252s29 +33U14*Unmount 13|150s35 +35U14*Get_Block_Size 13|261s29 +37U14*Get_Fragment_Size 13|270s29 +39U14*Get_Size 13|279s29 +41U14*Get_Inode_Count 13|288s29 +43U14*Get_Free_Blocks 13|303s29 +48U14*Get_Free_Inodes 13|318s29 +53V13*Get_Max_Length{6|84M9} 13|327s39 +55U14*Create_Node 13|607s17 +64U14*Create_Symbolic_Link 13|626s17 +73U14*Create_Hard_Link 13|646s17 +82U14*Rename 13|667s17 +92U14*Unlink 13|685s17 +99U14*Read_Entries 13|719s17 +107U14*Read_Symbolic_Link 13|747s17 +114U14*Read 13|777s17 +122U14*Write 13|816s17 +130U14*Stat 13|840s17 +136U14*Truncate 13|855s17 +142U14*IO_Control 13|874s17 +149U14*Change_Mode 13|956s17 +155U14*Change_Owner 13|972s17 +162U14*Change_Access_Times 13|1022s17 +171V13*Synchronize{12|234E9} 13|926s36 +173V13*Synchronize{12|234E9} 13|941s24 +X 16 vfs-fat.ads +17K13*FAT 13|20w10 117r13 151r31 253r25 262r33 271r33 280r33 289r34 304r25 +. 319r25 328r35 696r25 727r13 785r13 842r13 16|241e12 +18U14*Probe 13|117s17 +24U14*Remount 13|253s29 +30U14*Unmount 13|151s35 +32V13*Get_Block_Size{6|84M9} 13|262s37 +34V13*Get_Fragment_Size{6|84M9} 13|271s37 +36V13*Get_Size{6|84M9} 13|280s37 +38V13*Get_Inode_Count{6|84M9} 13|289s38 +40U14*Get_Free_Blocks 13|304s29 +45U14*Get_Free_Inodes 13|319s29 +50V13*Get_Max_Length{6|84M9} 13|328s39 +58U14*Close 13|696s29 +60U14*Read_Entries 13|727s17 +68U14*Read 13|785s17 +76U14*Stat 13|842s17 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS vfs__init 1 vfs__is_initialized +GG EK_PROOF_DEPENDENCIES vfs__init 1 vfs__is_initialized +GG EK_GLOBALS vfs__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 2 vfs__mounts vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 2 vfs__mounts vfs__mounts_mutex calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 +GG EK_DIRECT_CALLS vfs__mount 2 vfs__is_initialized devices__is_initialized +GG EK_PROOF_DEPENDENCIES vfs__mount 2 vfs__is_initialized devices__is_initialized +GG EK_GLOBALS vfs__mount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 3 vfs__mounts vfs__mounts_mutex __HEAP proper_output 3 vfs__mounts vfs__mounts_mutex __HEAP refined_proof_in 0 refined_input 3 vfs__mounts vfs__mounts_mutex __HEAP refined_output 3 vfs__mounts vfs__mounts_mutex __HEAP calls_proof 0 calls 0 calls_conditional 14 devices__fetch devices__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__dev__probe ada___vfs__dev__read_entries ada___vfs__dev__stat ada___vfs__ext__probe ada___vfs__ext__read_entries ada___vfs__ext__read_symbolic_link ada___vfs__ext__stat ada___vfs__fat__probe ada___vfs__fat__read_entries ada___vfs__fat__stat FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS vfs__mount__2 10 vfs__open__2 vfs__is_absolute vfs__is_initialized devices__fetch devices__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__dev__probe ada___vfs__ext__probe ada___vfs__fat__probe +GG EK_PROOF_DEPENDENCIES vfs__mount__2 0 +GG EK_GLOBALS vfs__mount__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 3 vfs__mounts vfs__mounts_mutex __HEAP proper_output 3 vfs__mounts vfs__mounts_mutex __HEAP refined_proof_in 0 refined_input 3 vfs__mounts vfs__mounts_mutex __HEAP refined_output 3 vfs__mounts vfs__mounts_mutex __HEAP calls_proof 1 devices__is_initialized calls 0 calls_conditional 13 devices__fetch ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__dev__probe ada___vfs__dev__read_entries ada___vfs__dev__stat ada___vfs__ext__probe ada___vfs__ext__read_entries ada___vfs__ext__read_symbolic_link ada___vfs__ext__stat ada___vfs__fat__probe ada___vfs__fat__read_entries ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 +GG EK_DIRECT_CALLS vfs__unmount 6 vfs__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__dev__unmount ada___vfs__ext__unmount ada___vfs__fat__unmount +GG EK_PROOF_DEPENDENCIES vfs__unmount 0 +GG EK_GLOBALS vfs__unmount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 2 vfs__mounts vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 2 vfs__mounts vfs__mounts_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 3 ada___vfs__dev__unmount ada___vfs__ext__unmount ada___vfs__fat__unmount FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_mount 3 vfs__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES vfs__get_mount 0 +GG EK_GLOBALS vfs__get_mount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 1 vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 1 vfs__mounts_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 +GG EK_DIRECT_CALLS vfs__list_all 4 vfs__is_initialized devices__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES vfs__list_all 0 +GG EK_GLOBALS vfs__list_all local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 1 vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 1 vfs__mounts_mutex calls_proof 1 devices__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_backing_fs 1 vfs__is_initialized +GG EK_PROOF_DEPENDENCIES vfs__get_backing_fs 0 +GG EK_GLOBALS vfs__get_backing_fs local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_backing_fs_data 1 vfs__is_initialized +GG EK_PROOF_DEPENDENCIES vfs__get_backing_fs_data 0 +GG EK_GLOBALS vfs__get_backing_fs_data local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_backing_device 1 vfs__is_initialized +GG EK_PROOF_DEPENDENCIES vfs__get_backing_device 0 +GG EK_GLOBALS vfs__get_backing_device local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_mount_point 1 vfs__is_initialized +GG EK_PROOF_DEPENDENCIES vfs__get_mount_point 0 +GG EK_GLOBALS vfs__get_mount_point local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__remount 4 vfs__is_initialized ada___vfs__dev__remount ada___vfs__ext__remount ada___vfs__fat__remount +GG EK_PROOF_DEPENDENCIES vfs__remount 0 +GG EK_GLOBALS vfs__remount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__remount ada___vfs__ext__remount ada___vfs__fat__remount FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_block_size 4 vfs__is_initialized ada___vfs__dev__get_block_size ada___vfs__ext__get_block_size ada___vfs__fat__get_block_size +GG EK_PROOF_DEPENDENCIES vfs__get_block_size 0 +GG EK_GLOBALS vfs__get_block_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_block_size ada___vfs__ext__get_block_size ada___vfs__fat__get_block_size FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_fragment_size 4 vfs__is_initialized ada___vfs__dev__get_fragment_size ada___vfs__ext__get_fragment_size ada___vfs__fat__get_fragment_size +GG EK_PROOF_DEPENDENCIES vfs__get_fragment_size 0 +GG EK_GLOBALS vfs__get_fragment_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_fragment_size ada___vfs__ext__get_fragment_size ada___vfs__fat__get_fragment_size FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_size 4 vfs__is_initialized ada___vfs__dev__get_size ada___vfs__ext__get_size ada___vfs__fat__get_size +GG EK_PROOF_DEPENDENCIES vfs__get_size 0 +GG EK_GLOBALS vfs__get_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_size ada___vfs__ext__get_size ada___vfs__fat__get_size FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_inode_count 4 vfs__is_initialized ada___vfs__dev__get_inode_count ada___vfs__ext__get_inode_count ada___vfs__fat__get_inode_count +GG EK_PROOF_DEPENDENCIES vfs__get_inode_count 0 +GG EK_GLOBALS vfs__get_inode_count local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_inode_count ada___vfs__ext__get_inode_count ada___vfs__fat__get_inode_count FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_free_blocks 4 vfs__is_initialized ada___vfs__dev__get_free_blocks ada___vfs__ext__get_free_blocks ada___vfs__fat__get_free_blocks +GG EK_PROOF_DEPENDENCIES vfs__get_free_blocks 0 +GG EK_GLOBALS vfs__get_free_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_free_blocks ada___vfs__ext__get_free_blocks ada___vfs__fat__get_free_blocks FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_free_inodes 4 vfs__is_initialized ada___vfs__dev__get_free_inodes ada___vfs__ext__get_free_inodes ada___vfs__fat__get_free_inodes +GG EK_PROOF_DEPENDENCIES vfs__get_free_inodes 0 +GG EK_GLOBALS vfs__get_free_inodes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_free_inodes ada___vfs__ext__get_free_inodes ada___vfs__fat__get_free_inodes FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__get_max_length 4 vfs__is_initialized ada___vfs__dev__get_max_length ada___vfs__ext__get_max_length ada___vfs__fat__get_max_length +GG EK_PROOF_DEPENDENCIES vfs__get_max_length 0 +GG EK_GLOBALS vfs__get_max_length local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_max_length ada___vfs__ext__get_max_length ada___vfs__fat__get_max_length FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__open__free1 0 +GG EK_PROOF_DEPENDENCIES vfs__open__free1 0 +GG EK_GLOBALS vfs__open__free1 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 vfs__open vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS vfs__open__free2 0 +GG EK_PROOF_DEPENDENCIES vfs__open__free2 0 +GG EK_GLOBALS vfs__open__free2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 vfs__open vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS vfs__open 1 vfs__is_initialized +GG EK_PROOF_DEPENDENCIES vfs__open 1 vfs__is_initialized +GG EK_GLOBALS vfs__open local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 vfs__mounts __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 7 ada___vfs__dev__read_entries ada___vfs__dev__stat ada___vfs__ext__read_entries ada___vfs__ext__read_symbolic_link ada___vfs__ext__stat ada___vfs__fat__read_entries ada___vfs__fat__stat FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__create_node 2 vfs__is_initialized ada___vfs__ext__create_node +GG EK_PROOF_DEPENDENCIES vfs__create_node 0 +GG EK_GLOBALS vfs__create_node local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__create_node FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__create_symbolic_link 2 vfs__is_initialized ada___vfs__ext__create_symbolic_link +GG EK_PROOF_DEPENDENCIES vfs__create_symbolic_link 0 +GG EK_GLOBALS vfs__create_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__create_symbolic_link FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__create_hard_link 2 vfs__is_initialized ada___vfs__ext__create_hard_link +GG EK_PROOF_DEPENDENCIES vfs__create_hard_link 0 +GG EK_GLOBALS vfs__create_hard_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__create_hard_link FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__rename 2 vfs__is_initialized ada___vfs__ext__rename +GG EK_PROOF_DEPENDENCIES vfs__rename 0 +GG EK_GLOBALS vfs__rename local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__rename FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__unlink 2 vfs__is_initialized ada___vfs__ext__unlink +GG EK_PROOF_DEPENDENCIES vfs__unlink 0 +GG EK_GLOBALS vfs__unlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__unlink FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__close 2 vfs__is_initialized ada___vfs__fat__close +GG EK_PROOF_DEPENDENCIES vfs__close 0 +GG EK_GLOBALS vfs__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__fat__close FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__read_entries 4 vfs__is_initialized ada___vfs__dev__read_entries ada___vfs__ext__read_entries ada___vfs__fat__read_entries +GG EK_PROOF_DEPENDENCIES vfs__read_entries 0 +GG EK_GLOBALS vfs__read_entries local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__read_entries ada___vfs__ext__read_entries ada___vfs__fat__read_entries FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__read_symbolic_link 2 vfs__is_initialized ada___vfs__ext__read_symbolic_link +GG EK_PROOF_DEPENDENCIES vfs__read_symbolic_link 0 +GG EK_GLOBALS vfs__read_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__read_symbolic_link FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__read 4 vfs__is_initialized ada___vfs__dev__read ada___vfs__ext__read ada___vfs__fat__read +GG EK_PROOF_DEPENDENCIES vfs__read 0 +GG EK_GLOBALS vfs__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__read ada___vfs__ext__read ada___vfs__fat__read FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__write 3 vfs__is_initialized ada___vfs__dev__write ada___vfs__ext__write +GG EK_PROOF_DEPENDENCIES vfs__write 0 +GG EK_GLOBALS vfs__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___vfs__dev__write ada___vfs__ext__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__stat 4 vfs__is_initialized ada___vfs__dev__stat ada___vfs__ext__stat ada___vfs__fat__stat +GG EK_PROOF_DEPENDENCIES vfs__stat 0 +GG EK_GLOBALS vfs__stat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__stat ada___vfs__ext__stat ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__truncate 2 vfs__is_initialized ada___vfs__ext__truncate +GG EK_PROOF_DEPENDENCIES vfs__truncate 0 +GG EK_GLOBALS vfs__truncate local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__truncate FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__io_control 3 vfs__is_initialized ada___vfs__dev__io_control ada___vfs__ext__io_control +GG EK_PROOF_DEPENDENCIES vfs__io_control 0 +GG EK_GLOBALS vfs__io_control local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___vfs__dev__io_control ada___vfs__ext__io_control FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__mmap 2 vfs__is_initialized ada___vfs__dev__mmap +GG EK_PROOF_DEPENDENCIES vfs__mmap 0 +GG EK_GLOBALS vfs__mmap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__dev__mmap FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__poll 2 vfs__is_initialized ada___vfs__dev__poll +GG EK_PROOF_DEPENDENCIES vfs__poll 0 +GG EK_GLOBALS vfs__poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__dev__poll FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__synchronize 3 vfs__is_initialized ada___vfs__dev__synchronize ada___vfs__ext__synchronize +GG EK_PROOF_DEPENDENCIES vfs__synchronize 0 +GG EK_GLOBALS vfs__synchronize local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___vfs__dev__synchronize ada___vfs__ext__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__synchronize__2 3 vfs__is_initialized ada___vfs__dev__synchronize__2 ada___vfs__ext__synchronize__2 +GG EK_PROOF_DEPENDENCIES vfs__synchronize__2 0 +GG EK_GLOBALS vfs__synchronize__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___vfs__dev__synchronize__2 ada___vfs__ext__synchronize__2 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__change_mode 2 vfs__is_initialized ada___vfs__ext__change_mode +GG EK_PROOF_DEPENDENCIES vfs__change_mode 0 +GG EK_GLOBALS vfs__change_mode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__change_mode FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__change_owner 2 vfs__is_initialized ada___vfs__ext__change_owner +GG EK_PROOF_DEPENDENCIES vfs__change_owner 0 +GG EK_GLOBALS vfs__change_owner local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__change_owner FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__check_access 3 vfs__stat vfs__is_initialized vfs__can_access_file +GG EK_PROOF_DEPENDENCIES vfs__check_access 0 +GG EK_GLOBALS vfs__check_access local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__stat ada___vfs__ext__stat ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS vfs__change_access_times 2 vfs__is_initialized ada___vfs__ext__change_access_times +GG EK_PROOF_DEPENDENCIES vfs__change_access_times 0 +GG EK_GLOBALS vfs__change_access_times local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__change_access_times FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__open__2 2 vfs__open vfs__is_initialized +GG EK_PROOF_DEPENDENCIES vfs__open__2 0 +GG EK_GLOBALS vfs__open__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 vfs__mounts __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 7 ada___vfs__dev__read_entries ada___vfs__dev__stat ada___vfs__ext__read_entries ada___vfs__ext__read_symbolic_link ada___vfs__ext__stat ada___vfs__fat__read_entries ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__synchronize__3 4 vfs__synchronize vfs__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES vfs__synchronize__3 0 +GG EK_GLOBALS vfs__synchronize__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 1 vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 1 vfs__mounts_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___vfs__dev__synchronize ada___vfs__ext__synchronize FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 +GG EK_DIRECT_CALLS vfs__create_node__2 2 vfs__create_node vfs__is_initialized +GG EK_PROOF_DEPENDENCIES vfs__create_node__2 0 +GG EK_GLOBALS vfs__create_node__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__create_node FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__is_absolute 0 +GG EK_PROOF_DEPENDENCIES vfs__is_absolute 0 +GG EK_GLOBALS vfs__is_absolute local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS vfs__apply_umask 0 +GG EK_PROOF_DEPENDENCIES vfs__apply_umask 0 +GG EK_GLOBALS vfs__apply_umask local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS vfs__is_initialized 0 +GG EK_PROOF_DEPENDENCIES vfs__is_initialized 0 +GG EK_GLOBALS vfs__is_initialized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 +GG EK_DIRECT_CALLS vfs__can_access_file 0 +GG EK_PROOF_DEPENDENCIES vfs__can_access_file 0 +GG EK_GLOBALS vfs__can_access_file local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS vfs 0 +GG EK_PROOF_DEPENDENCIES vfs 0 +GG EK_GLOBALS vfs local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 vfs__mounts refined_initializes 1 vfs__mounts calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 vfs__mounts vfs__mounts_mutex TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___vfs__fat__read FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_type__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_size__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__create_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__set_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__inner_open_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__is_immutable FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__free1 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE vfs__open__free1GP11769 VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__create_hard_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__is_append_only FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__act_on_policy FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__inner_read_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__rename FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__check_user_access FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__inner_read_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__free1GP11769 TRUE FALSE FALSE FALSE TRUE vfs__open BODY_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__unlink FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__rw_superblock FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__free2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE vfs__open__free2GP11847 VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__rw_block_group_descriptor FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__read FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__read_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__rw_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__write FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__read FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_block_index FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE vfs__open__free2GP11847 TRUE FALSE FALSE FALSE TRUE vfs__open BODY_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__read_from_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__read_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__write FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_next_cluster FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__write_to_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__io_control FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__are_paths_equal FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__compose_path FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__mmap FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__truncate FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__grow_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat TRUE FALSE FALSE FALSE FALSE vfs +GG EK_FLOW_SCOPE ada___vfs__fat__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__sector_to_disk_offset FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__io_control FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__fat__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__cluster_to_disk_offset FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__assign_inode_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext TRUE FALSE FALSE FALSE FALSE vfs +GG EK_FLOW_SCOPE ada___vfs__ext__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__poll FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__change_mode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_type FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__wire_inode_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__synchronize FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__ext__change_owner FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__synchronize__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__allocate_block_for_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__change_access_times FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__allocate_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__add_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__synchronize FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__synchronize__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__open FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__delete_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__close FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_dir_type FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev TRUE FALSE FALSE FALSE FALSE vfs +GG EK_FLOW_SCOPE ada___vfs__fat__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__ext__get_dir_type__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__create_node FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_permissions FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_type FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/vfs.cswi b/obj/gnatprove/phase1/vfs.cswi new file mode 100644 index 0000000..ccc3360 --- /dev/null +++ b/obj/gnatprove/phase1/vfs.cswi @@ -0,0 +1,28 @@ +20250222171636 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g2867970" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp diff --git a/rts.gpr b/rts.gpr index 82e3acb..22ba07f 100644 --- a/rts.gpr +++ b/rts.gpr @@ -31,14 +31,14 @@ library project RTS is for Languages use ("Ada"); package Builder is - for Global_Configuration_Pragmas use "source/pragmas.adc"; + for Global_Configuration_Pragmas use "/home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc"; for Switches ("Ada") use ("-nostdlib", "-nostdinc"); end Builder; package Compiler is Base_Ada_Switches := Split (Ada_Flags, " ") & ( "-fno-stack-protector", "-fno-stack-check", "-nostdlib", "-nostdinc", - "-gnatg", "-ffile-prefix-map=" & "/home/michael/capstoneProject/ironclad" & "=." + "-gnatg", "-ffile-prefix-map=" & "/home/sean/capstone/ICK-RISCV-Context" & "=." ); case Arch is diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index 43eb48e..0d41640 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -1,4 +1,4 @@ --- arch-context.ads: Architecture-specific context switching. +-- arch-context.adb: Architecture-specific context switching. -- Copyright (C) 2024 streaksu -- -- This program is free software: you can redistribute it and/or modify @@ -14,238 +14,187 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . --- arch-context.adb: Architecture-specific context switching for RISC-V 64-bit --- SPDX-License-Identifier: GPL-3.0-or-later - -with System; with Arch.CPU; pragma SPARK_Mode (On); +with System; use System; +with Interfaces; use Interfaces; +with System.Machine_Code; +with Arch.Interrupts; +with Arch.CPU; package body Arch.Context is - - -- Get hart ID for multi-core support (Single-Core returns 0) - function Get_Hart_ID return Unsigned_64 - with - Global => null, - Post => Get_Hart_ID < 64 -- Ensures valid hart ID - is - HartID : Unsigned_64; + pragma Warnings (Off, "SPARK_Mode is enabled"); + + -- Define an internal record type to map to GP_Context + type GP_Context_Type is record + SP : Unsigned_64; + SEPC : Unsigned_64; + SSTATUS : Unsigned_64; + A0 : Unsigned_64; + end record; + + -- Helper function to convert from Frame to GP_Context_Type + function To_GP_Context_Type (Frame : GP_Context) return GP_Context_Type is + (SP => Unsigned_64 (Frame.R15), + SEPC => Unsigned_64 (Frame.R14), + SSTATUS => Unsigned_64 (Frame.R13), + A0 => Unsigned_64 (Frame.R12)); + + -- Helper function to convert from GP_Context_Type to Frame + function To_Frame (Ctx : GP_Context_Type) return GP_Context is + (R15 => Unsigned_32 (Ctx.SP and 16#FFFFFFFF#), + R14 => Unsigned_32 (Ctx.SEPC and 16#FFFFFFFF#), + R13 => Unsigned_32 (Ctx.SSTATUS and 16#FFFFFFFF#), + R12 => Unsigned_32 (Ctx.A0 and 16#FFFFFFFF#), + others => 0); + + function Get_CSR (CSR_Number : Unsigned_64) return Unsigned_64 is + Value : Unsigned_64; begin - -- Read the hart ID from the mhartid CSR - Asm ("csrr %0, mhartid", Outputs => Unsigned_64'Asm_Output ("=r", HartID)); - return HartID; - end Get_Hart_ID; - + System.Machine_Code.Asm ("csrr %0, %1", Outputs => Unsigned_64'Asm_Output ("=r", Value), + Inputs => Unsigned_64'Asm_Input ("i", CSR_Number)); + return Value; + end Get_CSR; - -- Check if the CPU supports a given extension in `misa` - function Has_Extension (Feature_Bit : Unsigned_64) return Boolean - with - Global => null, - Post => Has_Extension'Result = ((Get_CSR (16#F11#) and Feature_Bit) /= 0) - is + function Has_Extension (Feature_Bit : Unsigned_64) return Boolean is begin - return (Get_CSR (16#F11#) and Feature_Bit) /= 0; + return (Get_CSR (16#301#) and Feature_Bit) /= 0; -- MISA CSR end Has_Extension; - -- Get the number of FP registers based on MISA - function Get_Num_FP_Registers return Natural - with - Global => null, - Post => Get_Num_FP_Registers in 0 .. 32 - is - MISA_Value : Unsigned_64 := Get_CSR (16#F11#); + function Get_Hart_ID return Unsigned_64 is + Hart_ID : Unsigned_64; begin - if (MISA_Value and 16#20#) /= 0 then -- Check 'D' bit for double-precision - return 32; - elsif (MISA_Value and 16#10#) /= 0 then -- Check 'F' bit for single-precision - return 16; - else - return 0; - end if; - end Get_Num_FP_Registers; + System.Machine_Code.Asm ("csrr %0, mhartid", Outputs => Unsigned_64'Asm_Output ("=r", Hart_ID)); + pragma Assert (Hart_ID < 64); -- Ensure valid hart ID + return Hart_ID; + end Get_Hart_ID; - -- Initialize General-Purpose Context + -- Initialize general-purpose context procedure Init_GP_Context (Ctx : out GP_Context; - Stack : System.Address; - Start_Addr : System.Address) - with - Pre => Stack /= System.Null_Address and Start_Addr /= System.Null_Address, - Post => Ctx.SEPC = Unsigned_64 (To_Integer (Start_Addr)) and - Ctx.SP = Unsigned_64 (To_Integer (Stack)) + Stack : System.Address; + Start_Addr : System.Address) is - SSTATUS_Value : Unsigned_64; - Hart : Unsigned_64 := Get_Hart_ID; -- Get core ID + Ctx_Impl : GP_Context_Type; begin - -- Read current SSTATUS and configure correctly - Asm ("csrr %0, sstatus", Outputs => Unsigned_64'Asm_Output ("=r", SSTATUS_Value)); - SSTATUS_Value := SSTATUS_Value or 16#00040020#; - - -- Assertions to ensure SSTATUS_Value is correctly set - pragma Assert ((SSTATUS_Value and 16#00040020#) /= 0, "SSTATUS_Value not correctly set"); - - -- Assign core-specific context - Per_Core_Context (Hart) := ( - SEPC => Unsigned_64 (To_Integer (Start_Addr)), - SSTATUS => SSTATUS_Value, - SP => Unsigned_64 (To_Integer (Stack)), - others => 0 - ); - - -- Assertions to ensure the context is correctly assigned - pragma Assert (Per_Core_Context (Hart).SEPC = Unsigned_64 (To_Integer (Start_Addr)), "SEPC not correctly assigned"); - pragma Assert (Per_Core_Context (Hart).SP = Unsigned_64 (To_Integer (Stack)), "SP not correctly assigned"); - pragma Assert (Per_Core_Context (Hart).SSTATUS = SSTATUS_Value, "SSTATUS not correctly assigned"); - - -- Return reference to correct per-core context - Ctx := Per_Core_Context (Hart); - - -- Assertions to ensure the output context is correctly set - pragma Assert (Ctx.SEPC = Unsigned_64 (To_Integer (Start_Addr)), "Output SEPC not correctly set"); - pragma Assert (Ctx.SP = Unsigned_64 (To_Integer (Stack)), "Output SP not correctly set"); - pragma Assert (Ctx.SSTATUS = SSTATUS_Value, "Output SSTATUS not correctly set"); - - -- Inline assembly to load the general-purpose context and return from the trap - Asm ( - "ld ra, 0(%0)" & LF & HT & - "ld sp, 8(%0)" & LF & HT & - "ld gp, 16(%0)" & LF & HT & - "csrw sepc, %1" & LF & HT & - "csrw sstatus, %2" & LF & HT & - "sret", - Inputs => (System.Address'Asm_Input ("r", Ctx'Address), - Register'Asm_Input ("r", Ctx.SEPC), - Register'Asm_Input ("r", Ctx.SSTATUS)), - Clobber => "memory", - Volatile => True - ); + -- SPARK Aspects + pragma Assume (Stack /= System.Null_Address and Start_Addr /= System.Null_Address); + + Ctx_Impl.SP := Unsigned_64 (To_Integer (Stack)); + Ctx_Impl.SEPC := Unsigned_64 (To_Integer (Start_Addr)); + Ctx_Impl.SSTATUS := Get_CSR (16#100#); -- Supervisor Status Register + Ctx := To_Frame (Ctx_Impl); + + -- SPARK Aspects + pragma Assert ((for all Index in GP_Context'Range => Ctx.To_Element (Index) = 0) and + Ctx.To_Element (1) = Unsigned_32 (To_Integer (Stack) and 16#FFFFFFFF#) and + Ctx.To_Element (2) = Unsigned_32 (To_Integer (Start_Addr) and 16#FFFFFFFF#)); end Init_GP_Context; - - -- Load General-Purpose Context (Supports Multi-Core) - procedure Load_GP_Context (Ctx : GP_Context) is + -- Load general-purpose context for task switching + procedure Load_GP_Context (Ctx : GP_Context) + is + Ctx_Impl : GP_Context_Type := To_GP_Context_Type (Ctx); begin - pragma Assert (Ctx.SEPC /= 0, "Load_GP_Context: SEPC must not be zero!"); - pragma Assert (Ctx.SP /= 0, "Load_GP_Context: Stack Pointer must not be zero!"); - - -- Load context and return to user space - Asm ( - "ld ra, 0(%0)" & LF & HT & - "ld sp, 8(%0)" & LF & HT & - "ld gp, 16(%0)" & LF & HT & - "ld tp, 24(%0)" & LF & HT & - "ld t0, 32(%0)" & LF & HT & - "ld t1, 40(%0)" & LF & HT & - "ld t2, 48(%0)" & LF & HT & - "ld s0, 56(%0)" & LF & HT & - "ld s1, 64(%0)" & LF & HT & - "ld a0, 72(%0)" & LF & HT & - "ld a1, 80(%0)" & LF & HT & - "ld a2, 88(%0)" & LF & HT & - "ld a3, 96(%0)" & LF & HT & - "ld a4, 104(%0)" & LF & HT & - "ld a5, 112(%0)" & LF & HT & - "ld a6, 120(%0)" & LF & HT & - "ld a7, 128(%0)" & LF & HT & - "ld s2, 136(%0)" & LF & HT & - "ld s3, 144(%0)" & LF & HT & - "ld s4, 152(%0)" & LF & HT & - "ld s5, 160(%0)" & LF & HT & - "ld s6, 168(%0)" & LF & HT & - "ld s7, 176(%0)" & LF & HT & - "ld s8, 184(%0)" & LF & HT & - "ld s9, 192(%0)" & LF & HT & - "ld s10, 200(%0)"& LF & HT & - "ld s11, 208(%0)"& LF & HT & - "ld t3, 216(%0)" & LF & HT & - "ld t4, 224(%0)" & LF & HT & - "ld t5, 232(%0)" & LF & HT & - "ld t6, 240(%0)" & LF & HT & - "ld sepc, 248(%0)" & LF & HT & - "ld sstatus, 256(%0)" & LF & HT & - "sret", - Inputs => (System.Address'Asm_Input ("r", Ctx'Address), - Unsigned_64'Asm_Input ("r", Ctx.SEPC), - Unsigned_64'Asm_Input ("r", Ctx.SSTATUS)), - Clobber => "memory", - Volatile => True - ); - - -- Infinite loop for debugging if we accidentally return here + -- SPARK Aspects + pragma Assume (Ctx.To_Element (2) /= 0); + + System.Machine_Code.Asm ("csrw sepc, %0; csrw sstatus, %1; mv sp, %2; sret", + Inputs => (Unsigned_64'Asm_Input ("r", Ctx_Impl.SEPC), + Unsigned_64'Asm_Input ("r", Ctx_Impl.SSTATUS), + Unsigned_64'Asm_Input ("r", Ctx_Impl.SP)), + Clobber => "memory", + Volatile => True); loop null; end loop; end Load_GP_Context; - -- Save Core Context (Multi-Core Safe) + -- Save core-specific context for multi-core support procedure Save_Core_Context (Ctx : out Core_Context) - with - Post => Ctx >= 0 is begin - Ctx := Arch.CPU.Get_Local.User_Stack; + -- Assuming Get_Local is defined in CPU package + Ctx := Arch.CPU.Core_Locals (Arch.CPU.Core_Count).User_Stack; + -- SPARK Aspects + pragma Assert (Ctx >= 0); end Save_Core_Context; - -- Indicate Successful Fork + -- Ensure forked process returns 0 in userland procedure Success_Fork_Result (Ctx : in out GP_Context) - with - Pre => Ctx.SEPC /= 0, -- Ensure valid program counter - Post => Ctx.SEPC = 0 and Ctx.A0 = 0 -- Ensure child process returns 0 is + Ctx_Impl : GP_Context_Type := To_GP_Context_Type (Ctx); begin - -- Set child process return value (RV ABI: A0 register) - Ctx.A0 := 0; + -- SPARK Aspects + pragma Assume (Ctx.To_Element (2) /= 0); - -- Clear SEPC for child execution start - Ctx.SEPC := 0; - end Success_Fork_Result; + Ctx_Impl.A0 := 0; -- Ensure child process sees return value 0 + Ctx_Impl.SEPC := 0; + Ctx := To_Frame (Ctx_Impl); + -- SPARK Aspects + pragma Assert (Ctx.To_Element (2) = 0 and Ctx.To_Element (4) = 0); + end Success_Fork_Result; -- Initialize Floating-Point Context procedure Init_FP_Context (Ctx : out FP_Context) - with - Pre => True, - Post => True is - Num_FP_Regs : Natural := Get_Num_FP_Registers; begin - if Num_FP_Regs > 0 then - -- Initialize FP registers to 0.0 - for I in 0 .. Num_FP_Regs - 1 loop - Ctx.FP_Regs (I) := 0.0; -- Initialize FP register to 0.0 - end loop; - end if; + Ctx := (others => 0); -- Initialize FP context to zero + + -- SPARK Aspects + pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0); end Init_FP_Context; - -- Save Floating-Point Context (Handles Multi-Core) + -- Save floating-point registers, dynamically handling F/D extensions procedure Save_FP_Context (Ctx : in out FP_Context) - with - Pre => Ctx /= System.Null_Address, - Post => True is begin - if Has_Extension (16#1#) then - Asm ("fsd f0, 0(%0)", Inputs => System.Address'Asm_Input ("r", Ctx)); + if Has_Extension (16#1#) then -- 'F' extension + System.Machine_Code.Asm ("fsd f0, 0(%0); fsd f1, 8(%0)", + Inputs => (System.Address'Asm_Input ("r", Ctx'Address)), + Clobber => "memory", + Volatile => True); + end if; + + if Has_Extension (16#2#) then -- 'D' extension + System.Machine_Code.Asm ("fsd f2, 16(%0); fsd f3, 24(%0)", + Inputs => (System.Address'Asm_Input ("r", Ctx'Address)), + Clobber => "memory", + Volatile => True); end if; + + -- SPARK Aspects + pragma Assert (True); end Save_FP_Context; - -- Load Floating-Point Context (Handles Multi-Core) + -- Restore floating-point registers, dynamically handling F/D extensions procedure Load_FP_Context (Ctx : FP_Context) - with - Pre => Ctx /= System.Null_Address, - Post => True is begin - if Has_Extension (16#1#) then - Asm ("fld f0, 0(%0)", Inputs => System.Address'Asm_Input ("r", Ctx)); + if Has_Extension (16#1#) then -- 'F' extension + System.Machine_Code.Asm ("fld f0, 0(%0); fld f1, 8(%0)", + Inputs => (System.Address'Asm_Input ("r", Ctx'Address)), + Clobber => "memory", + Volatile => True); + end if; + + if Has_Extension (16#2#) then -- 'D' extension + System.Machine_Code.Asm ("fld f2, 16(%0); fld f3, 24(%0)", + Inputs => (System.Address'Asm_Input ("r", Ctx'Address)), + Clobber => "memory", + Volatile => True); end if; + + -- SPARK Aspects + pragma Assert (True); end Load_FP_Context; - -- Destroy Floating-Point Context + -- Destroy floating-point context procedure Destroy_FP_Context (Ctx : in out FP_Context) - with - Pre => Ctx /= System.Null_Address, - Post => Ctx = System.Null_Address is begin - Ctx := System.Null_Address; + Ctx := (others => 0); + + -- SPARK Aspects + pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0); end Destroy_FP_Context; end Arch.Context; From 8a24c706dbb9c965eb37119ece59a4acfab24c23 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 23 Feb 2025 13:58:21 -0500 Subject: [PATCH 56/99] Working on getting AUnit tests to compile and run --- .../tests/obj/aunit-reporter-text.adb.stderr | 0 .../tests/obj/aunit-reporter-text.adb.stdout | 0 source/tests/obj/aunit-reporter-text.ali | 316 ++++++++++++++++++ source/tests/obj/aunit-reporter-text.o | Bin 0 -> 25904 bytes source/tests/obj/aunit-reporter.adb.stderr | 0 source/tests/obj/aunit-reporter.adb.stdout | 0 source/tests/obj/aunit-reporter.ali | 112 +++++++ source/tests/obj/aunit-reporter.o | Bin 0 -> 5640 bytes source/tests/obj/aunit-run.adb.stderr | 0 source/tests/obj/aunit-run.adb.stdout | 0 source/tests/obj/aunit-run.ali | 147 ++++++++ source/tests/obj/aunit-run.o | Bin 0 -> 1984 bytes source/tests/obj/aunit.adb.stderr | 0 source/tests/obj/aunit.adb.stdout | 0 source/tests/obj/aunit.ali | 87 +++++ source/tests/obj/aunit.o | Bin 0 -> 3240 bytes source/tests/obj/rv64_test_suite.ads.stderr | 1 + source/tests/obj/rv64_test_suite.ads.stdout | 0 source/tests/obj/test-harness.adb.stderr | 3 + source/tests/obj/test-harness.adb.stdout | 0 source/tests/obj/test_harness.adb.stderr | 0 source/tests/obj/test_harness.adb.stdout | 0 source/tests/obj/test_harness.ali | 113 +++++++ source/tests/obj/test_harness.o | Bin 0 -> 2376 bytes source/tests/obj/test_harness_rv64.adb.stderr | 3 + source/tests/obj/test_harness_rv64.adb.stdout | 0 source/tests/obj/test_suite.adb.stderr | 5 + source/tests/obj/test_suite.adb.stdout | 0 source/tests/riscv64/arch_rv64_test_suite.adb | 17 + source/tests/riscv64/arch_rv64_test_suite.ads | 5 + source/tests/riscv64/rv64_test_suite.ads | 5 + source/tests/riscv64/rvf64_test_suite.adb | 14 + source/tests/riscv64/test-context.ads | 7 - source/tests/riscv64/test-suite.adb | 13 - .../{test-context.adb => test_context.adb} | 53 +-- source/tests/riscv64/test_context.ads | 21 ++ .../{test-harness.adb => test_harness.adb} | 8 +- source/tests/riscv64/test_harness.gpr | 27 -- source/tests/test_harness.gpr | 34 ++ 39 files changed, 917 insertions(+), 74 deletions(-) create mode 100644 source/tests/obj/aunit-reporter-text.adb.stderr create mode 100644 source/tests/obj/aunit-reporter-text.adb.stdout create mode 100644 source/tests/obj/aunit-reporter-text.ali create mode 100644 source/tests/obj/aunit-reporter-text.o create mode 100644 source/tests/obj/aunit-reporter.adb.stderr create mode 100644 source/tests/obj/aunit-reporter.adb.stdout create mode 100644 source/tests/obj/aunit-reporter.ali create mode 100644 source/tests/obj/aunit-reporter.o create mode 100644 source/tests/obj/aunit-run.adb.stderr create mode 100644 source/tests/obj/aunit-run.adb.stdout create mode 100644 source/tests/obj/aunit-run.ali create mode 100644 source/tests/obj/aunit-run.o create mode 100644 source/tests/obj/aunit.adb.stderr create mode 100644 source/tests/obj/aunit.adb.stdout create mode 100644 source/tests/obj/aunit.ali create mode 100644 source/tests/obj/aunit.o create mode 100644 source/tests/obj/rv64_test_suite.ads.stderr create mode 100644 source/tests/obj/rv64_test_suite.ads.stdout create mode 100644 source/tests/obj/test-harness.adb.stderr create mode 100644 source/tests/obj/test-harness.adb.stdout create mode 100644 source/tests/obj/test_harness.adb.stderr create mode 100644 source/tests/obj/test_harness.adb.stdout create mode 100644 source/tests/obj/test_harness.ali create mode 100644 source/tests/obj/test_harness.o create mode 100644 source/tests/obj/test_harness_rv64.adb.stderr create mode 100644 source/tests/obj/test_harness_rv64.adb.stdout create mode 100644 source/tests/obj/test_suite.adb.stderr create mode 100644 source/tests/obj/test_suite.adb.stdout create mode 100644 source/tests/riscv64/arch_rv64_test_suite.adb create mode 100644 source/tests/riscv64/arch_rv64_test_suite.ads create mode 100644 source/tests/riscv64/rv64_test_suite.ads create mode 100644 source/tests/riscv64/rvf64_test_suite.adb delete mode 100644 source/tests/riscv64/test-context.ads delete mode 100644 source/tests/riscv64/test-suite.adb rename source/tests/riscv64/{test-context.adb => test_context.adb} (57%) create mode 100644 source/tests/riscv64/test_context.ads rename source/tests/riscv64/{test-harness.adb => test_harness.adb} (52%) delete mode 100644 source/tests/riscv64/test_harness.gpr create mode 100644 source/tests/test_harness.gpr diff --git a/source/tests/obj/aunit-reporter-text.adb.stderr b/source/tests/obj/aunit-reporter-text.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/aunit-reporter-text.adb.stdout b/source/tests/obj/aunit-reporter-text.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/aunit-reporter-text.ali b/source/tests/obj/aunit-reporter-text.ali new file mode 100644 index 0000000..bf7676d --- /dev/null +++ b/source/tests/obj/aunit-reporter-text.ali @@ -0,0 +1,316 @@ +V "GNAT Lib v14" +A -gnatA +A -gnat2012 +A -mtune=generic +A -march=x86-64 +P SS ZX + +RN +RV NO_DISPATCH +RV NO_DISPATCHING_CALLS +RV NO_FIXED_POINT +RV NO_IMPLICIT_CONDITIONALS +RV NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_ELABORATION_CODE +RV NO_OBSOLESCENT_FEATURES + +U aunit.reporter.text%b aunit-reporter-text.adb b61e55fe OO PK +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +Z ada.tags%s a-tags.adb a-tags.ali +W aunit%s aunit.adb aunit.ali +W aunit.io%s aunit-io.ads aunit-io.ali +W aunit.reporter%s aunit-reporter.adb aunit-reporter.ali +W aunit.time_measure%s aunit-time_measure.adb aunit-time_measure.ali ED +Z interfaces%s interfac.ads interfac.ali +Z system.arith_64%s s-arit64.adb s-arit64.ali +Z system.exp_int%s s-expint.ads s-expint.ali +Z system.img_int%s s-imgint.ads s-imgint.ali +Z system.secondary_stack%s s-secsta.adb s-secsta.ali + +U aunit.reporter.text%s aunit-reporter-text.ads 1676cc84 EE OO PF PK +Z ada.exceptions%s a-except.adb a-except.ali +Z ada.streams%s a-stream.adb a-stream.ali +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +Z ada.tags%s a-tags.adb a-tags.ali +W aunit.reporter%s aunit-reporter.adb aunit-reporter.ali +Z system%s system.ads system.ali +Z system.put_images%s s-putima.adb s-putima.ali +Z system.return_stack%s s-retsta.ads s-retsta.ali +Z system.secondary_stack%s s-secsta.adb s-secsta.ali +Z system.stream_attributes%s s-stratt.adb s-stratt.ali + +D ada.ads 20240801081713 76789da1 ada%s +D a-assert.ads 20240801081713 ba465f5c ada.assertions%s +D a-calend.ads 20240801081713 158a5463 ada.calendar%s +D a-charac.ads 20240801081713 2d3ec45b ada.characters%s +D a-chlat1.ads 20240801081713 e0d72e76 ada.characters.latin_1%s +D a-except.ads 20240801081713 e7970cd9 ada.exceptions%s +D a-finali.ads 20240801081713 bf4f806b ada.finalization%s +D a-inteio.ads 20240801081713 f64b89a4 ada.integer_text_io%s +D a-ioexce.ads 20240801081713 40018c65 ada.io_exceptions%s +D a-numeri.ads 20240801081713 84bea7a3 ada.numerics%s +D a-nubinu.ads 20240801081713 93f1f3d1 ada.numerics.big_numbers%s +D a-nbnbig.ads 20240801081713 31ff4aa1 ada.numerics.big_numbers.big_integers_ghost%s +D a-stream.ads 20240801081713 119b8fb3 ada.streams%s +D a-string.ads 20240801081713 90ac6797 ada.strings%s +D a-strfix.ads 20240801081713 100e0a05 ada.strings.fixed%s +D a-strmap.ads 20240801081713 1f91ebb6 ada.strings.maps%s +D a-strsea.ads 20240801081713 2b7aab86 ada.strings.search%s +D a-sttebu.ads 20240801081713 f1ad67a2 ada.strings.text_buffers%s +D a-stuten.ads 20240801081713 c6ced0ae ada.strings.utf_encoding%s +D a-tags.ads 20240801081713 9eaa38c6 ada.tags%s +D a-textio.ads 20240801081713 34ef47de ada.text_io%s +D a-tiinio.ads 20240801081713 76699c8f ada.text_io.integer_io%s +D a-unccon.ads 20240801081713 0e9b276f ada.unchecked_conversion%s +D ada_containers.ads 20221219210842 11329e00 ada_containers%s +D ada_containers-aunit_lists.ads 20221219210842 d9ebc89a ada_containers.aunit_lists%s +D aunit.ads 20221219210842 76cdf7c6 aunit%s +D aunit-io.ads 20221219210842 fb5ed18b aunit.io%s +D aunit-options.ads 20221219210842 6e5a02a6 aunit.options%s +D aunit-reporter.ads 20221219210842 2c6ff74a aunit.reporter%s +D aunit-reporter-text.ads 20221219210842 3a193bce aunit.reporter.text%s +D aunit-reporter-text.adb 20221219210842 ae9bf80b aunit.reporter.text%b +D aunit-test_filters.ads 20221219210842 f10b2127 aunit.test_filters%s +D aunit-test_results.ads 20221219210842 b44de7dc aunit.test_results%s +D aunit-tests.ads 20221219210842 1da11d49 aunit.tests%s +D aunit-time_measure.ads 20221219210842 d9c247b0 aunit.time_measure%s +D aunit-time_measure.adb 20221219210842 bc5d5154 aunit.time_measure%b +D interfac.ads 20240801081713 9111f9c1 interfaces%s +D i-cstrea.ads 20240801081713 ffd01b9d interfaces.c_streams%s +D system.ads 20240801081714 14286b0f system%s +D s-arit64.ads 20240801081713 90488c35 system.arith_64%s +D s-assert.ads 20240801081713 9c4520c7 system.assertions%s +D s-crtl.ads 20240801081713 beb39b9e system.crtl%s +D s-exctab.ads 20240801081713 91bef6ef system.exception_table%s +D s-expint.ads 20240801081713 3e557eef system.exp_int%s +D s-expont.ads 20240801081713 f15262ed system.expont%s +D s-ficobl.ads 20240801081713 dc5161d4 system.file_control_block%s +D s-finmas.ads 20240801081713 28987ac5 system.finalization_masters%s +D s-finroo.ads 20240801081713 4ff27390 system.finalization_root%s +D s-imagei.ads 20240801081713 5e131ce0 system.image_i%s +D s-imgint.ads 20240801081713 67e4edfb system.img_int%s +D s-parame.ads 20240801081713 3597fc11 system.parameters%s +D s-pooglo.ads 20240801081713 91708d21 system.pool_global%s +D s-putima.ads 20240801081713 17291fe4 system.put_images%s +D s-retsta.ads 20240801081713 0f6b06cb system.return_stack%s +D s-secsta.ads 20240801081713 578279f5 system.secondary_stack%s +D s-soflin.ads 20240801081713 df77073e system.soft_links%s +D s-stache.ads 20240801081713 0b81c1fe system.stack_checking%s +D s-stalib.ads 20240801081713 1c9580f6 system.standard_library%s +D s-stoele.ads 20240801081713 ccded4e8 system.storage_elements%s +D s-stopoo.ads 20240801081713 e9fa2dd8 system.storage_pools%s +D s-stratt.ads 20240801081713 a1861007 system.stream_attributes%s +D s-traent.ads 20240801081713 c81cbf8c system.traceback_entries%s +D s-unstyp.ads 20240801081713 fa2a7f59 system.unsigned_types%s +D s-valspe.ads 20240801081714 b0fcd073 system.val_spec%s +D s-vaispe.ads 20240801081714 8280550e system.value_i_spec%s +D s-vauspe.ads 20240801081714 89269ba5 system.value_u_spec%s +D s-vs_int.ads 20240801081714 06b6b724 system.vs_int%s +D s-vs_uns.ads 20240801081714 e7f47a27 system.vs_uns%s +D s-wchcon.ads 20240801081714 d9032363 system.wch_con%s +G a e +G c b b b [b aunit__reporter__text 36 1 none] +G c Z s b [set_use_ansi_colors aunit__reporter__text 37 14 none] +G c Z s b [report aunit__reporter__text 44 14 none] +G c Z s b [report_ok_tests aunit__reporter__text 48 14 none] +G c Z s b [report_fail_tests aunit__reporter__text 50 14 none] +G c Z s b [report_error_tests aunit__reporter__text 52 14 none] +G c Z s s [text_reporterDA aunit__reporter__text 62 9 none] +G c Z s s [text_reporterDF aunit__reporter__text 62 9 none] +G c Z s s [text_reporterIP aunit__reporter__text 62 9 none] +G c Z b b [indent aunit__reporter__text 38 14 none] +G c Z b b [dump_result_list aunit__reporter__text 41 14 none] +G c Z b b [put_measureR aunit__reporter__text__put_measureGP2755 44 14 none] +G c Z b b [put_measure aunit__reporter__text 44 14 none] +G c Z b b [report_test aunit__reporter__text 47 14 none] +G r i none [b aunit__reporter__text 36 1 none] [gen_put_measure aunit__time_measure 58 14 none] +G r c none [report aunit__reporter__text 44 14 none] [success_count aunit__test_results 121 13 none] +G r c none [report aunit__reporter__text 44 14 none] [failure_count aunit__test_results 109 13 none] +G r c none [report aunit__reporter__text 44 14 none] [error_count aunit__test_results 102 13 none] +G r s list [report aunit__reporter__text 44 14 none] [listIP aunit__test_results__result_lists 224 9 73_4] +G r c none [report aunit__reporter__text 44 14 none] [successes aunit__test_results 124 14 none] +G r c none [report aunit__reporter__text 44 14 none] [first aunit__test_results__result_lists 155 13 73_4] +G r c none [report aunit__reporter__text 44 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] +G r c none [report aunit__reporter__text 44 14 none] [element aunit__test_results__result_lists 67 13 73_4] +G r c none [report aunit__reporter__text 44 14 none] [get_measure aunit__time_measure 53 13 none] +G r c none [report aunit__reporter__text 44 14 none] [next aunit__test_results__result_lists 165 14 73_4] +G r c none [report aunit__reporter__text 44 14 none] [failures aunit__test_results 112 14 none] +G r c none [report aunit__reporter__text 44 14 none] [errors aunit__test_results 105 14 none] +G r c none [report aunit__reporter__text 44 14 none] [test_count aunit__test_results 130 13 none] +G r c none [report aunit__reporter__text 44 14 none] [elapsed aunit__test_results 115 13 none] +G r s list [report_ok_tests aunit__reporter__text 48 14 none] [listIP aunit__test_results__result_lists 224 9 73_4] +G r c none [report_ok_tests aunit__reporter__text 48 14 none] [successes aunit__test_results 124 14 none] +G r c none [report_ok_tests aunit__reporter__text 48 14 none] [first aunit__test_results__result_lists 155 13 73_4] +G r c none [report_ok_tests aunit__reporter__text 48 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] +G r c none [report_ok_tests aunit__reporter__text 48 14 none] [element aunit__test_results__result_lists 67 13 73_4] +G r c none [report_ok_tests aunit__reporter__text 48 14 none] [get_measure aunit__time_measure 53 13 none] +G r c none [report_ok_tests aunit__reporter__text 48 14 none] [next aunit__test_results__result_lists 165 14 73_4] +G r s list [report_fail_tests aunit__reporter__text 50 14 none] [listIP aunit__test_results__result_lists 224 9 73_4] +G r c none [report_fail_tests aunit__reporter__text 50 14 none] [failures aunit__test_results 112 14 none] +G r c none [report_fail_tests aunit__reporter__text 50 14 none] [first aunit__test_results__result_lists 155 13 73_4] +G r c none [report_fail_tests aunit__reporter__text 50 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] +G r c none [report_fail_tests aunit__reporter__text 50 14 none] [element aunit__test_results__result_lists 67 13 73_4] +G r c none [report_fail_tests aunit__reporter__text 50 14 none] [get_measure aunit__time_measure 53 13 none] +G r c none [report_fail_tests aunit__reporter__text 50 14 none] [next aunit__test_results__result_lists 165 14 73_4] +G r s list [report_error_tests aunit__reporter__text 52 14 none] [listIP aunit__test_results__result_lists 224 9 73_4] +G r c none [report_error_tests aunit__reporter__text 52 14 none] [errors aunit__test_results 105 14 none] +G r c none [report_error_tests aunit__reporter__text 52 14 none] [first aunit__test_results__result_lists 155 13 73_4] +G r c none [report_error_tests aunit__reporter__text 52 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] +G r c none [report_error_tests aunit__reporter__text 52 14 none] [element aunit__test_results__result_lists 67 13 73_4] +G r c none [report_error_tests aunit__reporter__text 52 14 none] [get_measure aunit__time_measure 53 13 none] +G r c none [report_error_tests aunit__reporter__text 52 14 none] [next aunit__test_results__result_lists 165 14 73_4] +G r s reporter [text_reporterIP aunit__reporter__text 62 9 none] [reporterIP aunit__reporter 53 9 none] +G r c none [dump_result_list aunit__reporter__text 41 14 none] [first aunit__test_results__result_lists 155 13 73_4] +G r c none [dump_result_list aunit__reporter__text 41 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] +G r c none [dump_result_list aunit__reporter__text 41 14 none] [element aunit__test_results__result_lists 67 13 73_4] +G r c none [dump_result_list aunit__reporter__text 41 14 none] [get_measure aunit__time_measure 53 13 none] +G r c none [dump_result_list aunit__reporter__text 41 14 none] [next aunit__test_results__result_lists 165 14 73_4] +G r c none [report_test aunit__reporter__text 47 14 none] [get_measure aunit__time_measure 53 13 none] +X 21 a-textio.ads +67P9*File_Type +195P9*File_Access(67P9) +X 24 ada_containers.ads +20I9*Count_Type +X 25 ada_containers-aunit_lists.ads +51R9*List 31|41r67[33|73] 51r63[33|73] 91r67[33|73] 119r24[33|73] +53R9*Cursor 31|95r11[33|73] +67V13*Element{33|62R9} 31|105s29[33|73] +155V13*First{53R9[33|73]} 31|95s21[33|73] +165U14*Next 31|106s10[33|73] +185V13*Has_Element{boolean} 31|97s10[33|73] 104s13[33|73] +X 26 aunit.ads +34K9*AUnit 48e10 30|33r9 66r5 31|32r6 32r30 33r6 33r30 36r14 281r5 +36P9*Message_String(string) +X 27 aunit-io.ads +35K15*IO 59e13 31|32w12 32r36 +37P12*File_Type{21|67P9} 31|38r29 41r39 47r34 57r17 80r29 91r39 117r17 173r17 +. 214r34 +39P12*File_Access{21|195P9} +44U14*Put=48:47 31|189s7 192s7 195s7 198s7 242s10 +50U14*Put=51:54 31|83s10 123s10 129s10 188s7 191s7 194s7 197s7 204s10 217s7 +. 218s7 219s7 222s10 223s10 227s10 230s10 239s10 240s10 241s10 251s13 35|57i22 +53U14*Put_Line=54:59 31|206s10 237s10 247s10 252s13 257s13 271s19 +56U14*New_Line=57:87 31|98s10 187s7 190s7 193s7 196s7 199s7 233s7 243s10 +. 277s10 +X 28 aunit-options.ads +36R9*AUnit_Options 41e14 30|46r32 31|171r17 +39b7*Report_Successes{boolean} 31|180r18 +44r4*Default_Options{36R9} 30|46r49 31|171r34 +X 29 aunit-reporter.ads +36K15*Reporter 26|34k9 29|58e19 30|33r15 66r11 31|36r20 281r11 +38H9*Reporter 56e17 30|35r30 62r30 +40U14*Set_File +55p10*File{27|39P12} 31|143r35 152r35 161r35 173r42 +X 30 aunit-reporter-text.ads +33K24*Text 29|36k15 30|62E9 66l20 66e24 31|36b29 281l20 281t24 +35R9*Text_Reporter<29|38R9> 29|40p14 30|37p14 38r23 44P14 44r32 48p14 48r40 +. 50p14 50r42 52p14 52r43 62c9 64e14 31|55r17 70r23 115r17 138r17 147r17 +. 156r17 169r17 181r30 184r27 185r27 +37U14*Set_Use_ANSI_Colors 38=7 39>7 31|69b14 74l8 74t27 +38r7 Engine{35R9} 31|70b7 73m7 +39b7 Value{boolean} 31|71b7 73r26 +44U14*Report<29|44p14> 44>22 45=22 46>22 31|168b14 208l8 208t14 +44r22 Engine{35R9} 31|169b7 173r35 181r51 184r48 185r48 +45c22 R<33|40R9> 31|170b7 174r61 175r61 176r59 181r60 184r57 185r57 189r39 +. 201r19 202r37 +46r22 Options{28|36R9} 31|171b7 180r10 +48U14*Report_OK_Tests 48>31 49>31 31|137b14 144l8 144t23 181R10 +48r31 Engine{35R9} 31|138b8 143r17 143r28 +49c31 R<33|40R9> 31|139b8 143r25 +50U14*Report_Fail_Tests 50>33 51>33 31|146b14 153l8 153t25 184R7 +50r33 Engine{35R9} 31|147b8 152r17 152r28 +51c33 R<33|40R9> 31|148b8 152r25 +52U14*Report_Error_Tests 52>34 53>34 31|155b14 162l8 162t26 185R7 +52r34 Engine{35R9} 31|156b8 161r17 161r28 +53c34 R<33|40R9> 31|157b8 161r25 +63b7 Use_ANSI{boolean} 31|73m14 122r17 128r17 +X 31 aunit-reporter-text.adb +38U14 Indent 38>22 38>40 80b14 85l8 85t14 236s10 238s10 246s10 250s13 256s13 +. 270s19 +38p22 File{27|37P12} 80b22 83r15 +38i40 N{natural} 80b40 82r21 +41U14 Dump_Result_List 41>32 41>50 41>73 91b14 108l8 108t24 126s7 +41p32 File{27|37P12} 91b32 98r20 105r23 +41r50 L{25|51R9[33|73]} 91b50 95r28 +41a73 Prefix{string} 91b73 105r42 +44U14 Put_Measure[35|58] 205s10 229s10 36|69b14 +47U14 Report_Test 47>27 47>45 47>65 105s10 214b14 279l8 279t19 +47p27 File{27|37P12} 214b27 217r12 218r12 219r12 222r15 223r15 227r15 229r23 +. 230r15 233r17 236r18 237r20 238r18 239r15 240r15 241r15 242r15 243r20 246r18 +. 247r20 250r21 251r23 252r23 256r21 257r23 270r27 271r29 277r20 +47r45 Test{33|62R9} 214b45 219r18 221r10 223r21 226r10 228r28 235r10 237r26 +. 240r21 242r30 245r13 247r26 249r13 252r29 255r13 260r38 262r30 264r31 265r30 +. 271r35 +47a65 Prefix{string} 214b65 217r18 +51U22 Get 51>27 51=39 121s7 +51r27 R{33|40R9} +51r39 L{25|51R9[33|73]} +52a7 Label{string} 126r34 +53a7 Color{string} 123r21 +54u14 Report_Tests 55>8 56>8 57>8 114b14 131l8 131t20 141r33 150r33 159r33 +55r8 Engine{30|35R9} 115b8 122r10 128r10 +56c8 R<33|40R9> 116b8 121r20 +57p8 File{27|37P12} 117b8 123r15 126r25 129r15 +60a4 ANSI_Def{string} 129r21 +61a4 ANSI_Green{string} 141r64 +62a4 ANSI_Purple{string} 150r65 +63a4 ANSI_Red{string} 159r64 +82i11 J{integer} +95r7 C{25|53R9[33|73]} 97r23 104r26 105r38 106m16 106r16 +119r7 S{25|51R9[33|73]} 121m24 121r24 126r31 +141U17 Internal[54] 114b14 143s7 +150U17 Internal[54] 114b14 152s7 +159U17 Internal[54] 114b14 161s7 +173p7 File{21|67P9} 187r17 188r12 189r12 190r17 191r12 192r12 193r17 194r12 +. 195r12 196r17 197r12 198r12 199r17 204r15 205r23 206r20 +174i7 S_Count{integer} 192r18 +175i7 F_Count{integer} 195r18 +176i7 E_Count{integer} 198r18 +177o7 T{35|42O9} 202m10 205r29 +215o7 T{35|42O9} 228m10 229r29 +260i16 From{natural} 262r22 263r25 271r57 272m19 +260i22 To{natural} 263m19 264r25 265r52 267m22 267r28 271r65 272r27 +X 33 aunit-test_results.ads +40R9*Result 30|45r39 49r40 51r42 53r43 31|51r31 56r17 116r17 121r12 139r17 +. 148r17 157r17 170r24 33|144e14 +45p7*Message{26|36P9} 31|237r39 +46p7*Source_Name{26|36P9} 31|240r34 +47i7*Line{natural} 31|242r43 +49P9*Test_Failure_Access(44R9) +54p7*Exception_Name{26|36P9} 31|247r37 +55p7*Exception_Message{26|36P9} 31|249r24 252r40 +56p7*Traceback{26|36P9} 31|255r24 260r49 262r41 264r42 265r41 271r46 +58P9*Test_Error_Access(53R9) +62R9*Test_Result 31|47r52 214r52 33|68e14 +63p7*Test_Name{26|36P9} 31|219r23 +64p7*Routine_Name{26|36P9} 31|221r15 223r26 +65p7*Failure{49P9} 31|235r15 237r31 240r26 242r35 +66p7*Error{58P9} 31|245r18 247r31 249r18 252r34 255r18 260r43 262r35 264r36 +. 265r35 271r40 +67r7*Elapsed{35|37R9} 31|226r15 228r33 +73K12*Result_Lists[25|49] 31|41r54 51r50 91r54 93r11 119r11 +102V13*Error_Count{24|20I9} 31|176R46 +105U14*Errors 31|159r47 +109V13*Failure_Count{24|20I9} 31|175R46 +112U14*Failures 31|150r47 +115V13*Elapsed{35|37R9} 31|201R10 202R28 +121V13*Success_Count{24|20I9} 31|174R46 +124U14*Successes 31|141r47 +130V13*Test_Count{24|20I9} 31|189R27 +X 35 aunit-time_measure.ads +35K15*Time_Measure 31|33w12 33r36 201r25 226r26 35|71e23 +42O9*AUnit_Duration 31|177r11 215r11 +44r4*Null_Time{37R9} 31|201r38 226r39 +53V13*Get_Measure{42O9} 31|202s15 228s15 +58u14*Gen_Put_Measure 31|44r33 +X 37 interfac.ads +57I9*Integer_64 +X 40 s-arit64.ads +59I12*Int64{37|57I9} +92V13*Multiply_With_Ovflo_Check64{59I12} 96i22 + diff --git a/source/tests/obj/aunit-reporter-text.o b/source/tests/obj/aunit-reporter-text.o new file mode 100644 index 0000000000000000000000000000000000000000..5516a285438ae42d858264ecb7055bbe91df6582 GIT binary patch literal 25904 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 ReC0Pcc!kocEM5A`|1VErG)Vve literal 0 HcmV?d00001 diff --git a/source/tests/obj/aunit-reporter.adb.stderr b/source/tests/obj/aunit-reporter.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/aunit-reporter.adb.stdout b/source/tests/obj/aunit-reporter.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/aunit-reporter.ali b/source/tests/obj/aunit-reporter.ali new file mode 100644 index 0000000..89bf7a6 --- /dev/null +++ b/source/tests/obj/aunit-reporter.ali @@ -0,0 +1,112 @@ +V "GNAT Lib v14" +A -gnatA +A -gnat2012 +A -mtune=generic +A -march=x86-64 +P ZX + +RN +RV NO_DISPATCH +RV NO_DISPATCHING_CALLS +RV NO_IMPLICIT_CONDITIONALS +RV NO_STANDARD_STORAGE_POOLS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_ELABORATION_CODE + +U aunit.reporter%b aunit-reporter.adb bd1125e3 OO PK +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +W aunit%s aunit.adb aunit.ali + +U aunit.reporter%s aunit-reporter.ads 7beb347d EE OO PK +Z ada.exceptions%s a-except.adb a-except.ali +Z ada.streams%s a-stream.adb a-stream.ali +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +Z ada.tags%s a-tags.adb a-tags.ali +W aunit%s aunit.adb aunit.ali +W aunit.io%s aunit-io.ads aunit-io.ali +W aunit.options%s aunit-options.ads aunit-options.ali +W aunit.test_results%s aunit-test_results.adb aunit-test_results.ali +Z system%s system.ads system.ali +Z system.put_images%s s-putima.adb s-putima.ali +Z system.stream_attributes%s s-stratt.adb s-stratt.ali + +D ada.ads 20240801081713 76789da1 ada%s +D a-calend.ads 20240801081713 158a5463 ada.calendar%s +D a-except.ads 20240801081713 e7970cd9 ada.exceptions%s +D a-finali.ads 20240801081713 bf4f806b ada.finalization%s +D a-inteio.ads 20240801081713 f64b89a4 ada.integer_text_io%s +D a-ioexce.ads 20240801081713 40018c65 ada.io_exceptions%s +D a-stream.ads 20240801081713 119b8fb3 ada.streams%s +D a-string.ads 20240801081713 90ac6797 ada.strings%s +D a-sttebu.ads 20240801081713 f1ad67a2 ada.strings.text_buffers%s +D a-stuten.ads 20240801081713 c6ced0ae ada.strings.utf_encoding%s +D a-tags.ads 20240801081713 9eaa38c6 ada.tags%s +D a-textio.ads 20240801081713 34ef47de ada.text_io%s +D a-tiinio.ads 20240801081713 76699c8f ada.text_io.integer_io%s +D a-unccon.ads 20240801081713 0e9b276f ada.unchecked_conversion%s +D ada_containers.ads 20221219210842 11329e00 ada_containers%s +D ada_containers-aunit_lists.ads 20221219210842 d9ebc89a ada_containers.aunit_lists%s +D aunit.ads 20221219210842 76cdf7c6 aunit%s +D aunit-io.ads 20221219210842 fb5ed18b aunit.io%s +D aunit-options.ads 20221219210842 6e5a02a6 aunit.options%s +D aunit-reporter.ads 20221219210842 2c6ff74a aunit.reporter%s +D aunit-reporter.adb 20221219210842 917ed2a9 aunit.reporter%b +D aunit-test_filters.ads 20221219210842 f10b2127 aunit.test_filters%s +D aunit-test_results.ads 20221219210842 b44de7dc aunit.test_results%s +D aunit-tests.ads 20221219210842 1da11d49 aunit.tests%s +D aunit-time_measure.ads 20221219210842 d9c247b0 aunit.time_measure%s +D interfac.ads 20240801081713 9111f9c1 interfaces%s +D i-cstrea.ads 20240801081713 ffd01b9d interfaces.c_streams%s +D system.ads 20240801081714 14286b0f system%s +D s-crtl.ads 20240801081713 beb39b9e system.crtl%s +D s-exctab.ads 20240801081713 91bef6ef system.exception_table%s +D s-ficobl.ads 20240801081713 dc5161d4 system.file_control_block%s +D s-finmas.ads 20240801081713 28987ac5 system.finalization_masters%s +D s-finroo.ads 20240801081713 4ff27390 system.finalization_root%s +D s-parame.ads 20240801081713 3597fc11 system.parameters%s +D s-pooglo.ads 20240801081713 91708d21 system.pool_global%s +D s-putima.ads 20240801081713 17291fe4 system.put_images%s +D s-secsta.ads 20240801081713 578279f5 system.secondary_stack%s +D s-soflin.ads 20240801081713 df77073e system.soft_links%s +D s-stache.ads 20240801081713 0b81c1fe system.stack_checking%s +D s-stalib.ads 20240801081713 1c9580f6 system.standard_library%s +D s-stoele.ads 20240801081713 ccded4e8 system.storage_elements%s +D s-stopoo.ads 20240801081713 e9fa2dd8 system.storage_pools%s +D s-stratt.ads 20240801081713 a1861007 system.stream_attributes%s +D s-traent.ads 20240801081713 c81cbf8c system.traceback_entries%s +D s-unstyp.ads 20240801081713 fa2a7f59 system.unsigned_types%s +D s-wchcon.ads 20240801081714 d9032363 system.wch_con%s +G a e +G c Z s b [set_file aunit__reporter 40 14 none] +G c Z s s [reporterDA aunit__reporter 53 9 none] +G c Z s s [reporterDF aunit__reporter 53 9 none] +G c Z s s [reporterIP aunit__reporter 53 9 none] +X 12 a-textio.ads +67P9*File_Type +195P9*File_Access(67P9) +X 17 aunit.ads +34K9*AUnit 48e10 20|32r6 33r6 33r30 34r6 34r30 36r9 42r16 55r17 55r41 58r5 +. 21|32r14 36r16 41r5 +X 18 aunit-io.ads +35K15*IO 59e13 20|32w12 42r22 55r23 55r47 21|36r22 +39P12*File_Access{12|195P9} 20|42r25 55r26 21|36r25 +41V13*Standard_Output=42:45{12|195P9} 20|55s50 +X 19 aunit-options.ads +34K15*Options 50e18 20|33w12 33r36 +36R9*AUnit_Options 41e14 20|47r17 +44r4*Default_Options{36R9} 20|47r34 +X 20 aunit-reporter.ads +36K15*Reporter 17|34k9 20|53E9 58l11 58e19 21|32b20 41l11 41t19 +38H9*Reporter 40p14 41r23 44p14 45r17 53c9 56e17 21|35r23 +40U14*Set_File 41=7 42>7 21|34b14 39l8 39t16 +41r7 Engine{38R9} 21|35b7 38m7 +42p7 Value{18|39P12} 21|36b7 38r22 +44x14*Report 45>7 46=7 47>7 +45r7 Engine{38R9} +46c7 R<23|40R9> +47r7 Options{19|36R9} +55p10*File{18|39P12} 21|38m14 +X 23 aunit-test_results.ads +38K15*Test_Results 20|34w12 34r36 23|146e23 +40R9*Result 20|46r24 23|144e14 + diff --git a/source/tests/obj/aunit-reporter.o b/source/tests/obj/aunit-reporter.o new file mode 100644 index 0000000000000000000000000000000000000000..26480e6c497cccc0c75f48fa3737384a8d2a92e4 GIT binary patch literal 5640 zcmbuCU2GIp6oBux{8WXu{AjA6uEr2Fu$GEQ4c0AX%T%yzYAcX{!)!Y&3v{>4%!Za= ztf?rIjj<1!^nt`iUwHHdLkL2Fs5CLAPwImv@L(jS4>ci?L`Xg7&N(}myW1_%lg!+E zzw>kd&fdBEUSel^RU{%yY$T46y%~$I_o!B4D`Tgkz2xa)+4BnfaHT-h}SQI{!t->kU zYQE|<8ii8jFDRnMgjII9ybcO zGgn4#MvPOFUd_%z5=IqYd@Dg@Il#xuh!c7 z53AaiE;7`|Aa3H2wDgRH|B>(inB404bc@x}VXq5dLr zkeBhr`higYD{_$M@WpyF)Zax8@(#XOU$s{ntOm527HzKiZJ9^EkMyl-{F7n-CrQ6W z)gKS_XGmYG>N`UHMbbZ|>Vx4UDJ$r*K>RgZPFY>dlKZvQGMnyam^aH6dzmA^Fb$W1 zeVoQdX(@I9uZKsMqW~}t`^&WkHbT6e9Apkb{d0KA#rc-(J+hZM1@)VA*yC>v`yD5H znPX6Y5_q}zuaW%}*~^@R`d;FTphS_m24$A`3&drP0sn~jY2rNJFNu$7{4(*g#9Ofw zkl%>^NnGX-@V}wGOjN_~J`hril>o}k>viC`4r|Ck<{G%}Cccrl%rW3OXyg742jNAM z%8!AUi~q$O9KYl^P8MiN`9bo9Vl%b*JpY4uT;o*`0>{JSz;6voRPyTL_kiQHko^s5 zCBz;oQ^YsZg0X$M510IwnI?bC!dgc%Fb_#s>lRj@WtyHn=$V9p4+EF$4+M;9~{%O(j{FaN=Pw-_s*@VkkN^zO%(=g zG`&(m+tsugCSmq;w$0r&+K9*K_lb8eywgOfy_QP6+bn|T?rb2tiK9LIq>HkTYRvhZ z$P&jm55dE6K2i813ZGQ?Qibye72_;X_&qvL@O*nz;k9(&@pz)3Ls>x_s{M?@ajjYIPzB@QezDXb0KtO4h1jlFIDfN| zHz>Rw0ZCNh%NRnrR^iHDdC{nFUSo9Q?-8n>froX5Vz2T&3Rm;tfWrCCkMX1U0>SO4 z6p-z>e21LxX9qOS_p@P*^F3@_5re*uzMHC|7)bLDI zB~FblHA#SJO@U_zo?UTxRB6D&5`@fw0nH%_wyJD^M!ETq(P46f{Bi#3dCK!|0gfh(@Tk&= zK|xjoMe)tU;c`1@xL!1ZN*npB4C}fren0X2)aP%IzdkN~{c{vk_a7wxU$hQ&|HI&q zrg3;w8KjL*l0U8=p6Be(>xXK+Z;X?qgf=KKFdeZU-5>7&dhP%cW2gWb)|A?G;J-+D P|LgP-7?M%Km+t>BiAHve literal 0 HcmV?d00001 diff --git a/source/tests/obj/aunit-run.adb.stderr b/source/tests/obj/aunit-run.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/aunit-run.adb.stdout b/source/tests/obj/aunit-run.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/aunit-run.ali b/source/tests/obj/aunit-run.ali new file mode 100644 index 0000000..14de119 --- /dev/null +++ b/source/tests/obj/aunit-run.ali @@ -0,0 +1,147 @@ +V "GNAT Lib v14" +A -gnatA +A -gnat2012 +A -mtune=generic +A -march=x86-64 +P ZX + +RN +RV NO_DISPATCH +RV NO_DISPATCHING_CALLS +RV NO_DEFAULT_INITIALIZATION +RV NO_IMPLEMENTATION_PRAGMAS + +U aunit.run%b aunit-run.adb 4d723195 NE OO PK +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +W aunit%s aunit.adb aunit.ali +W aunit.test_suites%s aunit-test_suites.adb aunit-test_suites.ali +W aunit.time_measure%s aunit-time_measure.adb aunit-time_measure.ali + +U aunit.run%s aunit-run.ads dc46304b BN EE NE OO PK +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +W aunit%s aunit.adb aunit.ali +W aunit.options%s aunit-options.ads aunit-options.ali +W aunit.reporter%s aunit-reporter.adb aunit-reporter.ali +W aunit.test_results%s aunit-test_results.adb aunit-test_results.ali +W aunit.test_suites%s aunit-test_suites.adb aunit-test_suites.ali + +D ada.ads 20240801081713 76789da1 ada%s +D a-calend.ads 20240801081713 158a5463 ada.calendar%s +D a-except.ads 20240801081713 e7970cd9 ada.exceptions%s +D a-finali.ads 20240801081713 bf4f806b ada.finalization%s +D a-inteio.ads 20240801081713 f64b89a4 ada.integer_text_io%s +D a-ioexce.ads 20240801081713 40018c65 ada.io_exceptions%s +D a-stream.ads 20240801081713 119b8fb3 ada.streams%s +D a-string.ads 20240801081713 90ac6797 ada.strings%s +D a-sttebu.ads 20240801081713 f1ad67a2 ada.strings.text_buffers%s +D a-stuten.ads 20240801081713 c6ced0ae ada.strings.utf_encoding%s +D a-tags.ads 20240801081713 9eaa38c6 ada.tags%s +D a-textio.ads 20240801081713 34ef47de ada.text_io%s +D a-tiinio.ads 20240801081713 76699c8f ada.text_io.integer_io%s +D a-unccon.ads 20240801081713 0e9b276f ada.unchecked_conversion%s +D ada_containers.ads 20221219210842 11329e00 ada_containers%s +D ada_containers-aunit_lists.ads 20221219210842 d9ebc89a ada_containers.aunit_lists%s +D aunit.ads 20221219210842 76cdf7c6 aunit%s +D aunit-assertions.ads 20221219210842 b7f9ecd6 aunit.assertions%s +D aunit-io.ads 20221219210842 fb5ed18b aunit.io%s +D aunit-options.ads 20221219210842 6e5a02a6 aunit.options%s +D aunit-reporter.ads 20221219210842 2c6ff74a aunit.reporter%s +D aunit-run.ads 20221219210842 34d20999 aunit.run%s +D aunit-run.adb 20221219210842 c843a398 aunit.run%b +D aunit-simple_test_cases.ads 20221219210842 4111c32f aunit.simple_test_cases%s +D aunit-test_filters.ads 20221219210842 f10b2127 aunit.test_filters%s +D aunit-test_results.ads 20221219210842 b44de7dc aunit.test_results%s +D aunit-test_suites.ads 20221219210842 6821dc24 aunit.test_suites%s +D aunit-tests.ads 20221219210842 1da11d49 aunit.tests%s +D aunit-time_measure.ads 20221219210842 d9c247b0 aunit.time_measure%s +D gnat.ads 20240801081713 b5988c27 gnat%s +D g-souinf.ads 20240801081713 470146ee gnat.source_info%s +D interfac.ads 20240801081713 9111f9c1 interfaces%s +D i-cstrea.ads 20240801081713 ffd01b9d interfaces.c_streams%s +D system.ads 20240801081714 14286b0f system%s +D s-crtl.ads 20240801081713 beb39b9e system.crtl%s +D s-exctab.ads 20240801081713 91bef6ef system.exception_table%s +D s-ficobl.ads 20240801081713 dc5161d4 system.file_control_block%s +D s-finmas.ads 20240801081713 28987ac5 system.finalization_masters%s +D s-finroo.ads 20240801081713 4ff27390 system.finalization_root%s +D s-parame.ads 20240801081713 3597fc11 system.parameters%s +D s-pooglo.ads 20240801081713 91708d21 system.pool_global%s +D s-putima.ads 20240801081713 17291fe4 system.put_images%s +D s-secsta.ads 20240801081713 578279f5 system.secondary_stack%s +D s-soflin.ads 20240801081713 df77073e system.soft_links%s +D s-stache.ads 20240801081713 0b81c1fe system.stack_checking%s +D s-stalib.ads 20240801081713 1c9580f6 system.standard_library%s +D s-stoele.ads 20240801081713 ccded4e8 system.storage_elements%s +D s-stopoo.ads 20240801081713 e9fa2dd8 system.storage_pools%s +D s-stratt.ads 20240801081713 a1861007 system.stream_attributes%s +D s-traent.ads 20240801081713 c81cbf8c system.traceback_entries%s +D s-unstyp.ads 20240801081713 fa2a7f59 system.unsigned_types%s +D s-wchcon.ads 20240801081714 d9032363 system.wch_con%s +G a e +G c Z b b [run aunit__run 37 14 none] +G r c none [run aunit__run 37 14 none] [start_measure aunit__time_measure 47 14 none] +G r c none [run aunit__run 37 14 none] [run aunit__test_suites 52 14 none] +G r c none [run aunit__run 37 14 none] [stop_measure aunit__time_measure 50 14 none] +G r c none [run aunit__run 37 14 none] [set_elapsed aunit__test_results 99 14 none] +X 17 aunit.ads +34K9*AUnit 48e10 22|32r6 33r6 34r6 35r6 38r9 41r34 43r18 44r18 44r49 47r34 +. 49r18 50r25 51r18 51r49 59r34 61r18 62r18 62r49 65r5 23|32r6 33r6 33r29 +. 35r14 40r18 41r18 52r18 53r18 64r7 72r7 80r18 81r18 81r49 95r18 96r18 96r49 +. 112r18 113r25 114r18 114r49 121r5 +40E9*Status 40e37 22|63r14 23|42r22 54r22 84r17 97r14 100r17 116r17 +X 20 aunit-options.ads +34K15*Options 50e18 22|32w12 44r24 44r55 51r24 51r55 62r24 62r55 23|40r24 +. 52r24 81r24 81r55 96r24 96r55 114r24 114r55 +36R9*AUnit_Options 41e14 22|44r32 51r32 62r32 23|40r32 52r32 81r32 96r32 +. 114r32 +37b7*Global_Timer{boolean} 23|59r18 67r18 +44r4*Default_Options{36R9} 22|44r63 51r63 62r63 23|81r63 96r63 114r63 +X 21 aunit-reporter.ads +36K15*Reporter 58e19 22|33w12 43r24 49r24 61r24 23|41r24 53r24 72r13 80r24 +. 95r24 112r24 +38H9*Reporter 56e17 22|43r33 49r33 61r33 23|41r33 53r33 80r33 95r33 112r33 +44x14*Report 23|72R22 +X 22 aunit-run.ads +38K15*Run 17|34k9 22|65l11 65e14 23|35b20 121l11 121t14 +41V21 Suite{27|44P9} 23|87s12 +42u14*Test_Runner 43>7 44>7 23|79b14 88l8 88t19 +43c7 Reporter<21|38R9> 23|80b7 87r37 +44r7 Options{20|36R9} 23|81b7 87r28 +47V21 Suite{27|44P9} 23|118s12 +48u14*Test_Runner_With_Results 49>7 50=7 51>7 23|111b14 119l8 119t32 +49c7 Reporter<21|38R9> 23|112b7 118r37 +50c7 Results<26|40R9> 23|113b7 118m19 +51r7 Options{20|36R9} 23|114b7 118r28 +59V21 Suite{27|44P9} 23|103s12 +60v13*Test_Runner_With_Status 61>7 62>7 23|94b13 105l8 105t31 +61c7 Reporter<21|38R9> 23|95b7 103r37 +62r7 Options{20|36R9} 23|96b7 103r28 +X 23 aunit-run.adb +37U14 Run 38>7 39=7 40>7 41>7 42<7 49b14 73l8 73t11 87s7 103s7 118s7 +38p7 Suite{27|44P9} 50b7 64r30 +39c7 Results<26|40R9> 51b7 64m46 69m36 72m40 +40r7 Options{20|36R9} 52b7 59r10 64r37 67r10 72r49 +41c7 Reporter<21|38R9> 53b7 72r30 +42e7 Outcome{17|40E9} 54b7 64m55 +56r7 Time{29|37R9} 60m38 60r38 68m37 68r37 69r45 +83r7 Results{26|40R9} 86m27 86r27 87m19 87r19 +84e7 Outcome{17|40E9} 87m47 +99r7 Results{26|40R9} 102m27 102r27 103m19 103r19 +100e7 Outcome{17|40E9} 103m47 104r14 +116e7 Outcome{17|40E9} 118m47 +X 26 aunit-test_results.ads +38K15*Test_Results 22|34w12 50r31 23|39r25 51r25 69r10 83r17 86r7 99r17 102r7 +. 113r31 26|146e23 +40R9*Result 22|50r44 23|39r38 51r38 83r30 99r30 113r44 26|144e14 +99U14*Set_Elapsed 23|69R23 +133U14*Clear 23|86s20 102s20 +X 27 aunit-test_suites.ads +41K15*Test_Suites 22|35w12 41r40 47r40 59r40 23|33w12 33r35 64r13 27|86e22 +44P9*Access_Test_Suite(43R9) 22|41r52 47r52 59r52 23|38r18 50r18 +52U14*Run 23|64R25 +X 29 aunit-time_measure.ads +35K15*Time_Measure 23|32w12 56r17 60r10 68r10 29|71e23 +37R9*Time 23|56r30 29|40e14 +47U14*Start_Measure 23|60s23 +50U14*Stop_Measure 23|68s23 + diff --git a/source/tests/obj/aunit-run.o b/source/tests/obj/aunit-run.o new file mode 100644 index 0000000000000000000000000000000000000000..0c1d7bd31fe79b3ace8f327b50ef98f341e5c716 GIT binary patch literal 1984 zcmbtU&1(}u6n~pmTeY8lK(T^3iGp3Mcu)_LG^`z^ky?lc5w_cO?T02Qn^|aupcpGI zd(eNwTThacE(lt^n43BFBIe-5yRg2uJCjb9)QgWyX5R1p-p9N*$x~zQW=hjQiUv1e zUy~?6re8Tn#|(_XFcg^ggVle{Gq2WSp4;@A%=^kbBVb-(cg`~!qwkF1MZhPSU)W>5 z(PrLv=6z~Y2&C;Ht%;X-=)ihfzYL?u&O z)3^@dLKCDw3zSylEMi^GHeJ_5T;kRO59q) zojdWqDo>96*wVSZ$w6PXxCQ!BwFTz4bt6J$p}ThBWdfpGlG-2sCOA$s?3WfFADG&?vzLV z5+($GPT=ZH$aJ5`D9L5Uz2?6o z1|sK7^FM-1`b(VBBy%GKZIQo43d#^J%9He`n912A1c321 4|101b13 109l8 109t14 +44a21 S{string} 4|101b21 102r55 104r16 105r19 105r35 +45V13*Message_Alloc{36P9} 45>28 4|67b13 83l8 83t21 102s40 +45i28 Length{natural} 4|67b28 78r21 80r33 +46U14*Message_Free 46=28 4|89b14 95l8 95t20 +46p28 Msg{36P9} 4|89b28 91r10 92r35 93m10 +X 4 aunit.adb +45R9 Bounds 49e4 52r37 78r31 81r56 +46i7*First{natural} 79m25 +47i7*Last{natural} 80m25 +52P9 Bounds_Access(45R9) 56r23 71r26 73r10 +54R9 Fat_Pointer 58e4 69r10 74r13 +55m7*Address{6|67M9} 81m11 +56p7*Bound_Address{52P9} 76m11 79r11 80r11 81r38 +68V16 To_Message[2|20]{3|36P9} 82s14 +70V16 To_Bounds_Access[2|20]{52P9} 76s28 +72V16 To_Address[2|20]{6|67M9} 81s22 +74r7 Ret{54R9} 76m7 79m7 79r7 80m7 80r7 81m7 81r34 82r26 +102p7 Ptr{3|36P9} 105r10 108r14 +104i11 J{integer} 105r15 105r38 +X 5 aunit-memory.ads +40K15*Memory 4|34w12 34r42 77r16 92r16 5|53e17 +42M9*size_t 4|78r13 +44V13*AUnit_Alloc{6|67M9} 4|77s23 +46U14*AUnit_Free 4|92s23 +X 6 system.ads +37K9*System 4|33r6 33r36 35w6 49r22 50r33 55r23 58r22 59r33 71r10 73r25 6|155e11 +67M9*Address 4|55r30 71r17 73r32 +92e4*Default_Bit_Order{91E9} 4|49r29 50r40 58r29 59r40 +X 7 s-stoele.ads +40K16*Storage_Elements 4|33w13 33r43 7|90e28 +67V14*"+"{6|67M9} 4|81r53 + diff --git a/source/tests/obj/aunit.o b/source/tests/obj/aunit.o new file mode 100644 index 0000000000000000000000000000000000000000..71cf833cc879f5e0708d2f434a0a127cf32b29ac GIT binary patch literal 3240 zcmbtWO>7%Q6rN3-CMo%a2o<$R7D6bNz)DdMN%@O$w;hYnh8Uk{wApMnKQy+(dJPE* zZG}}}wIC`^MdFYHAPyXIsv-`-D1|s66@-cuRTd|Z3N<3-KrMt6-kY7tuE)-ar+8-G z_rCYDZ+?^u>d46^MIk~I@-*=^ffCZ+?yra0a+q|HPLiU|uhdnm;~Q+XsaDYl$PRT= z0xeX+&Ks3m%;JE>NmX67La)$5v5h*L!cfIP^inb3y?zF`Un1YL0lvw~@)@Ib3^!GA zMnjCj;$jJ28Cx5dS#^a<4|S^4xkH`e7Z{y7-%?%><6bJ-N7zCXwW;nfp7dQ?>}zAG z*o#S8s0=m=x(Z*p2C>%MLpYvrCql8I^72Co;~M>t8sAapI(5FMU+q3aBRlkgf1no% zE&NDsA6&zXth^E9Hu!jdq9R8vLgbP&zJ08Xclri^3iaFV1+}dF7K2=# zSE@t{*9KpTosEr;Z(yx^qUSSnc2u95+(T*?$y7Y9CX**)iILQpN{G_dO~|Qu{CK$k z)ag_teDqlK@#p{{A#e-BuLXW!AWcLmA|^!Py0{B{+@QQZMwG=K<#0!9+hs5w0UUoQ z2XTmX^}N*-?>wLa0aUa-i8#ppI0*X-zWprXAaCO!>`iYn0{Sl_4uVJCw?D`14+HcO z;vna+SmB>|ule0jp{03T@e(mc{eUhZa%Z>RLP&GNmjH3>TCLmz>b(Iz>jhwkIWBb8 z1HfPl7(Wa%3j21LVarGl0+LLC-UvSrIOhF~^I4Bz{lPx`&pDqxQ?O<|gBkBzqxd)X z!S4dz3!Mmp_sG#c>%j_;i{|3I^qrcGw^nW5X`ih&RR>F<~e#MO`FL;0Lz#)jdNOD)nbMLzFHi0-_eUUZJDNz z1%m}G(^)I6+oUe?nO99~dOrIak6mX^WTwo;n#8I|ma}y`pG(%Nr?FL!2Kt4k?q7H# zQ1G0fU>{rICvb6>@VxoELx>JK3i9z@3O=466q#S};5t5@2NaBhJ|fQV2!h}}z`SDL z=kbDpApZdT1b>C&a^6n@{9v6w?Zdwr;CBS#|FIAMuYLHf`~b`KbZ{K&?+nBb!x{z6 z;_Rb7j01?kF&@eU8+|;?^@|cN?(vF*i~CBVxuvwNPr__l-aIQ-mN~CSZFA8k(J9^5 zNpv!oBT*~sDMmJ(HZx$$WNkAFZ~kL&>fjD|`b;JtU9hqXre!aI4@NR)wP{OFo4k_$ zH-*6+TaRZTD8pPaf=vWWQrSC-dm#ASjjZs1SNOi-`NJii9h5`fL>_?|@!*|6)5koK zoKM#A9%4+{|5KTWK|y#qo&w`hj>+^@4jkKKdJA!X1U$t3#rrAnU%3B$0^qaAFXm^t zzeFQ<<$@%C!5@PKzB4kt$^p49(SPCpGAytb*}tDRv?z#tmi_S*HroF|PF&=Exc~UC zy6_kK-zYb_+~WDg`N1~?^T_@fQ{H=k$VGgVK^_#1_SCxl?*+V(|0+*pb3ZXj;mCio Cr6eE# literal 0 HcmV?d00001 diff --git a/source/tests/obj/rv64_test_suite.ads.stderr b/source/tests/obj/rv64_test_suite.ads.stderr new file mode 100644 index 0000000..6d909e1 --- /dev/null +++ b/source/tests/obj/rv64_test_suite.ads.stderr @@ -0,0 +1 @@ +cannot generate code for file rv64_test_suite.ads (package spec) diff --git a/source/tests/obj/rv64_test_suite.ads.stdout b/source/tests/obj/rv64_test_suite.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/test-harness.adb.stderr b/source/tests/obj/test-harness.adb.stderr new file mode 100644 index 0000000..9f75857 --- /dev/null +++ b/source/tests/obj/test-harness.adb.stderr @@ -0,0 +1,3 @@ +test-harness.adb:1:06: error: file "aunit.ads" not found +test-harness.adb:2:06: error: file "test_suite.ads" not found +test-harness.adb:5:11: warning: file name does not match unit name, should be "test_harness.adb" [enabled by default] diff --git a/source/tests/obj/test-harness.adb.stdout b/source/tests/obj/test-harness.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/test_harness.adb.stderr b/source/tests/obj/test_harness.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/test_harness.adb.stdout b/source/tests/obj/test_harness.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/test_harness.ali b/source/tests/obj/test_harness.ali new file mode 100644 index 0000000..0dd3cb7 --- /dev/null +++ b/source/tests/obj/test_harness.ali @@ -0,0 +1,113 @@ +V "GNAT Lib v14" +M P W=b +A -gnatA +A -gnat2012 +A -mtune=generic +A -march=x86-64 +P SS ZX + +RN +RV NO_DISPATCH +RV NO_IO +RV NO_DEFAULT_INITIALIZATION +RV NO_IMPLEMENTATION_PRAGMAS + +U test_harness%b test_harness.adb b04a62b6 NE OO SU +W ada%s ada.ads ada.ali +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +W ada.text_io%s a-textio.adb a-textio.ali +W aunit%s aunit.adb aunit.ali +W aunit.reporter%s aunit-reporter.adb aunit-reporter.ali +W aunit.reporter.text%s aunit-reporter-text.adb aunit-reporter-text.ali +W aunit.run%s aunit-run.adb aunit-run.ali +W rv64_test_suite%s rv64_test_suite.ads rv64_test_suite.ali + +D ada.ads 20240801081713 76789da1 ada%s +D a-calend.ads 20240801081713 158a5463 ada.calendar%s +D a-except.ads 20240801081713 e7970cd9 ada.exceptions%s +D a-finali.ads 20240801081713 bf4f806b ada.finalization%s +D a-inteio.ads 20240801081713 f64b89a4 ada.integer_text_io%s +D a-ioexce.ads 20240801081713 40018c65 ada.io_exceptions%s +D a-stream.ads 20240801081713 119b8fb3 ada.streams%s +D a-string.ads 20240801081713 90ac6797 ada.strings%s +D a-sttebu.ads 20240801081713 f1ad67a2 ada.strings.text_buffers%s +D a-stuten.ads 20240801081713 c6ced0ae ada.strings.utf_encoding%s +D a-tags.ads 20240801081713 9eaa38c6 ada.tags%s +D a-textio.ads 20240801081713 34ef47de ada.text_io%s +D a-tiinio.ads 20240801081713 76699c8f ada.text_io.integer_io%s +D a-unccon.ads 20240801081713 0e9b276f ada.unchecked_conversion%s +D ada_containers.ads 20221219210842 11329e00 ada_containers%s +D ada_containers-aunit_lists.ads 20221219210842 d9ebc89a ada_containers.aunit_lists%s +D aunit.ads 20221219210842 76cdf7c6 aunit%s +D aunit-assertions.ads 20221219210842 b7f9ecd6 aunit.assertions%s +D aunit-io.ads 20221219210842 fb5ed18b aunit.io%s +D aunit-options.ads 20221219210842 6e5a02a6 aunit.options%s +D aunit-reporter.ads 20221219210842 2c6ff74a aunit.reporter%s +D aunit-reporter-text.ads 20221219210842 3a193bce aunit.reporter.text%s +D aunit-run.ads 20221219210842 34d20999 aunit.run%s +D aunit-run.adb 20221219210842 c843a398 aunit.run%b +D aunit-simple_test_cases.ads 20221219210842 4111c32f aunit.simple_test_cases%s +D aunit-test_filters.ads 20221219210842 f10b2127 aunit.test_filters%s +D aunit-test_results.ads 20221219210842 b44de7dc aunit.test_results%s +D aunit-test_suites.ads 20221219210842 6821dc24 aunit.test_suites%s +D aunit-tests.ads 20221219210842 1da11d49 aunit.tests%s +D aunit-time_measure.ads 20221219210842 d9c247b0 aunit.time_measure%s +D gnat.ads 20240801081713 b5988c27 gnat%s +D g-souinf.ads 20240801081713 470146ee gnat.source_info%s +D interfac.ads 20240801081713 9111f9c1 interfaces%s +D i-cstrea.ads 20240801081713 ffd01b9d interfaces.c_streams%s +D rv64_test_suite.ads 20250223012229 9e3e8a36 rv64_test_suite%s +D system.ads 20240801081714 14286b0f system%s +D s-crtl.ads 20240801081713 beb39b9e system.crtl%s +D s-exctab.ads 20240801081713 91bef6ef system.exception_table%s +D s-ficobl.ads 20240801081713 dc5161d4 system.file_control_block%s +D s-finmas.ads 20240801081713 28987ac5 system.finalization_masters%s +D s-finroo.ads 20240801081713 4ff27390 system.finalization_root%s +D s-parame.ads 20240801081713 3597fc11 system.parameters%s +D s-pooglo.ads 20240801081713 91708d21 system.pool_global%s +D s-putima.ads 20240801081713 17291fe4 system.put_images%s +D s-retsta.ads 20240801081713 0f6b06cb system.return_stack%s +D s-secsta.ads 20240801081713 578279f5 system.secondary_stack%s +D s-soflin.ads 20240801081713 df77073e system.soft_links%s +D s-stache.ads 20240801081713 0b81c1fe system.stack_checking%s +D s-stalib.ads 20240801081713 1c9580f6 system.standard_library%s +D s-stoele.ads 20240801081713 ccded4e8 system.storage_elements%s +D s-stopoo.ads 20240801081713 e9fa2dd8 system.storage_pools%s +D s-stratt.ads 20240801081713 a1861007 system.stream_attributes%s +D s-traent.ads 20240801081713 c81cbf8c system.traceback_entries%s +D s-unstyp.ads 20240801081713 fa2a7f59 system.unsigned_types%s +D s-wchcon.ads 20240801081714 d9032363 system.wch_con%s +D test_harness.adb 20250223012249 14509d09 test_harness%b +G a e +G c Z b b [test_harness standard 6 11 none] +G r i none [test_harness standard 6 11 none] [test_runner aunit__run 42 14 none] +G r s text_reporter [test_harness standard 6 11 none] [text_reporterIP aunit__reporter__text 62 9 none] +G r s result [test_harness standard 6 11 none] [resultIP aunit__test_results 140 9 none] +G r c none [test_harness standard 6 11 none] [clear aunit__test_results 133 14 none] +G r c none [test_harness standard 6 11 none] [suite rv64_test_suite 4 13 none] +G r c none [test_harness standard 6 11 none] [run aunit__run 37 14 none] +X 1 ada.ads +16K9*Ada 20e8 56|4r6 10r4 +X 12 a-textio.ads +58K13*Text_IO 785e16 56|4w10 10r8 +565U14*Put_Line 56|10s16 +X 17 aunit.ads +34K9*AUnit 48e10 56|1r6 2r6 7r25 8r15 +X 21 aunit-reporter.ads +36K15*Reporter 58e19 56|1r12 8r21 +X 22 aunit-reporter-text.ads +33K24*Text 66e24 56|1w21 8r30 +35R9*Text_Reporter<21|38R9> 64e14 56|8r35 +X 23 aunit-run.ads +38K15*Run 65e14 56|2w12 7r31 +42u14*Test_Runner 56|7r35 +X 28 aunit-test_suites.ads +44P9*Access_Test_Suite(43R9) +X 35 rv64_test_suite.ads +3K9*RV64_Test_Suite 5e20 56|3w6 7r48 +4V13*Suite{28|44P9} 56|7r64 +X 56 test_harness.adb +6U11*Test_Harness 6b11 12l5 12t17 +7U14 Run[23|42] 24|79b14 56|11s4 +8r4 Reporter{22|35R9} 11r9 + diff --git a/source/tests/obj/test_harness.o b/source/tests/obj/test_harness.o new file mode 100644 index 0000000000000000000000000000000000000000..751f9c69a98ca1a01e44baf9ee4c39ca14b4e73b GIT binary patch literal 2376 zcmbtVO=uHA6rQBD^`|ZM4}>c0K}129SVUAr5@YNHqLkQpQr1nfHqmxB?9OTx#DgF% zv6zbx@Z!;f2l1x(2NhdAh@QlQ7eVmgp?Xpg;(N0*>2ygh`e5?j``-KBdpk3`xthrx zjmKg{N{k#LOP)jtSy-`TC%KsVlIw0^9Kq%2l@#e+98t;Xv)?3OB|CZJ;i z5{9A60_b|!x!B-l5kag;V2-EsTu7FBs{e^7sBY2Cm=&e?(L9e|` zq)w$ypPqx9yl>l8ds541Po#I9)Y6X4tQn@AxL9SSiZ)?+%+qz9@IBjxHOJEF1KRen z_8xY(KI4%?$ ze^Nuk*W>BIzIYWf2-ynILBv5E{E=}w+jFxwUgSxLcMOjCGI*&(cok zGYPMUKW#h24cw#QrbJaP`c2Y@xZ#PZL z8v=ms;Ida}yt{ap|G*oAa#+Fp6nsp<`xU&b;Bal*b#5v6Y6ZV7aKx~;lsm$Z_;%sn z7aDWdz>;%56nGr;fPz1Y;IfCN;K-4Z6b53rKjAy4xQaGPf5NvfXFf;-S_bdrZm4w*HMFHYjU>`hllue-`_+3C8|0Yz~vh-Am)!-5}4BPE#_ z2}I#M#PR)#&R-FU(Yd1Yp93zYM)^&_KLasUqI|rCoz7pwj|7P9kLSM%mgLLx@6;Q4 sKSlq2LgPD&C8K<-89jS|NJ4ck%x^RsqlXhivc0asj7P5=M^ literal 0 HcmV?d00001 diff --git a/source/tests/obj/test_harness_rv64.adb.stderr b/source/tests/obj/test_harness_rv64.adb.stderr new file mode 100644 index 0000000..7f7e0b3 --- /dev/null +++ b/source/tests/obj/test_harness_rv64.adb.stderr @@ -0,0 +1,3 @@ +test_harness_rv64.adb:1:06: error: file "aunit.ads" not found +test_harness_rv64.adb:2:06: error: file "test_suite.ads" not found +test_harness_rv64.adb:5:11: warning: file name does not match unit name, should be "test_harness.adb" [enabled by default] diff --git a/source/tests/obj/test_harness_rv64.adb.stdout b/source/tests/obj/test_harness_rv64.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/obj/test_suite.adb.stderr b/source/tests/obj/test_suite.adb.stderr new file mode 100644 index 0000000..44847d2 --- /dev/null +++ b/source/tests/obj/test_suite.adb.stderr @@ -0,0 +1,5 @@ +test_suite.adb:10:13: error: no selector "Add_Test" for type "Test_Suite'Class" defined at aunit-test_suites.ads:43 +test_context.ads:4:09: error: type must be declared abstract or "Name" overridden +test_context.ads:4:09: error: "Name" has been inherited at aunit-test_cases.ads:41 +test_context.ads:4:09: error: "Name" has been inherited from subprogram at aunit-simple_test_cases.ads:47 +test_context.ads:7:76: error: "Message_String" not declared in "Test_Cases" diff --git a/source/tests/obj/test_suite.adb.stdout b/source/tests/obj/test_suite.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/riscv64/arch_rv64_test_suite.adb b/source/tests/riscv64/arch_rv64_test_suite.adb new file mode 100644 index 0000000..4853bfc --- /dev/null +++ b/source/tests/riscv64/arch_rv64_test_suite.adb @@ -0,0 +1,17 @@ +-- Import tests and suites to run +with RV64_Test_Suite; +with AUnit.Tests; +package body Arch_RV64_Test_Suite is + use Test_Suites; + + -- Here we dynamically allocate the suite using the New_Suite function + -- We use the 'Suite' functions provided in This_Suite and That_Suite + -- We also use Ada 2005 distinguished receiver notation to call Add_Test + + function Suite return Access_Test_Suite is + Result : Access_Test_Suite := AUnit.Test_Suites.New_Suite; + begin + Result.Add_Test (RV64_Test_Suite.Suite); + return Result; + end Suite; +end Arch_RV64_Test_Suite; \ No newline at end of file diff --git a/source/tests/riscv64/arch_rv64_test_suite.ads b/source/tests/riscv64/arch_rv64_test_suite.ads new file mode 100644 index 0000000..ead21db --- /dev/null +++ b/source/tests/riscv64/arch_rv64_test_suite.ads @@ -0,0 +1,5 @@ +-- Composition package: +with AUnit; use AUnit; +package Composite_Suite is + function Suite return Test_Suites.Access_Test_Suite; +end Composite_Suite; \ No newline at end of file diff --git a/source/tests/riscv64/rv64_test_suite.ads b/source/tests/riscv64/rv64_test_suite.ads new file mode 100644 index 0000000..c553a11 --- /dev/null +++ b/source/tests/riscv64/rv64_test_suite.ads @@ -0,0 +1,5 @@ +with AUnit.Test_Suites; + +package RV64_Test_Suite is + function Suite return AUnit.Test_Suites.Access_Test_Suite; +end RV64_Test_Suite; \ No newline at end of file diff --git a/source/tests/riscv64/rvf64_test_suite.adb b/source/tests/riscv64/rvf64_test_suite.adb new file mode 100644 index 0000000..689486c --- /dev/null +++ b/source/tests/riscv64/rvf64_test_suite.adb @@ -0,0 +1,14 @@ +with AUnit.Test_Suites; +with Test_Context; + +package body RV64_Test_Suite is + use AUnit.Test_Suites; + + Result : aliased Test_Suite; + + function Suite return Access_Test_Suite is + begin + Add_Test (Result'Access, Test_Context.Test_Case'Access); + return Result'Access; + end Suite; +end RV64_Test_Suite; \ No newline at end of file diff --git a/source/tests/riscv64/test-context.ads b/source/tests/riscv64/test-context.ads deleted file mode 100644 index ea3903d..0000000 --- a/source/tests/riscv64/test-context.ads +++ /dev/null @@ -1,7 +0,0 @@ -with AUnit.Test_Cases; - -package Test_Context is - type Context_Test_Case is new AUnit.Test_Cases.Test_Case with null record; - - procedure Register_Tests (T : in out Context_Test_Case); -end Test_Context; diff --git a/source/tests/riscv64/test-suite.adb b/source/tests/riscv64/test-suite.adb deleted file mode 100644 index 7629b63..0000000 --- a/source/tests/riscv64/test-suite.adb +++ /dev/null @@ -1,13 +0,0 @@ -with AUnit.Test_Suites; -with Test_Context; - -package body Test_Suite is - - function Suite return AUnit.Test_Suites.Access_Test_Suite is - TS : constant AUnit.Test_Suites.Access_Test_Suite := AUnit.Test_Suites.New_Suite; - begin - AUnit.Test_Suites.Add_Test (TS, new Test_Context.Context_Test_Case); - return TS; - end Suite; - -end Test_Suite; diff --git a/source/tests/riscv64/test-context.adb b/source/tests/riscv64/test_context.adb similarity index 57% rename from source/tests/riscv64/test-context.adb rename to source/tests/riscv64/test_context.adb index 928f0e9..4726963 100644 --- a/source/tests/riscv64/test-context.adb +++ b/source/tests/riscv64/test_context.adb @@ -1,17 +1,18 @@ with AUnit.Assertions; -with AUnit.Test_Fixtures; +with AUnit.Test_Cases.Registration; with Arch.Context; with System; with Memory.Physical; with Ada.Text_IO; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; package body Test_Context is use AUnit.Assertions; - use AUnit.Test_Fixtures; -- Test General-Purpose Context Initialization - procedure Test_Init_GP_Context is + procedure Test_Init_GP_Context (T : in out AUnit.Test_Cases.Test_Case'Class) is Ctx : GP_Context; Stack : System.Address := Memory.Physical.Alloc (4096); begin @@ -21,7 +22,7 @@ package body Test_Context is end Test_Init_GP_Context; -- Test General-Purpose Context Loading - procedure Test_Load_GP_Context is + procedure Test_Load_GP_Context (T : in out AUnit.Test_Cases.Test_Case'Class) is Ctx : GP_Context; begin Init_GP_Context (Ctx, Memory.Physical.Alloc (4096), System.Null_Address); @@ -31,7 +32,7 @@ package body Test_Context is end Test_Load_GP_Context; -- Test Multi-Core Core Context Saving - procedure Test_Save_Core_Context is + procedure Test_Save_Core_Context (T : in out AUnit.Test_Cases.Test_Case'Class) is Ctx : Core_Context; begin Save_Core_Context (Ctx); @@ -39,7 +40,7 @@ package body Test_Context is end Test_Save_Core_Context; -- Test Success Fork Result - procedure Test_Success_Fork_Result is + procedure Test_Success_Fork_Result (T : in out AUnit.Test_Cases.Test_Case'Class) is Ctx : GP_Context; begin Init_GP_Context (Ctx, Memory.Physical.Alloc (4096), System.Null_Address); @@ -49,7 +50,7 @@ package body Test_Context is end Test_Success_Fork_Result; -- Test Floating-Point Context Initialization - procedure Test_Init_FP_Context is + procedure Test_Init_FP_Context (T : in out AUnit.Test_Cases.Test_Case'Class) is Ctx : FP_Context; begin Init_FP_Context (Ctx); @@ -57,7 +58,7 @@ package body Test_Context is end Test_Init_FP_Context; -- Test Floating-Point Context Saving - procedure Test_Save_FP_Context is + procedure Test_Save_FP_Context (T : in out AUnit.Test_Cases.Test_Case'Class) is Ctx : FP_Context; begin Init_FP_Context (Ctx); @@ -65,7 +66,7 @@ package body Test_Context is end Test_Save_FP_Context; -- Test Floating-Point Context Loading - procedure Test_Load_FP_Context is + procedure Test_Load_FP_Context (T : in out AUnit.Test_Cases.Test_Case'Class) is Ctx : FP_Context; begin Init_FP_Context (Ctx); @@ -73,7 +74,7 @@ package body Test_Context is end Test_Load_FP_Context; -- Test Floating-Point Context Destruction - procedure Test_Destroy_FP_Context is + procedure Test_Destroy_FP_Context (T : in out AUnit.Test_Cases.Test_Case'Class) is Ctx : FP_Context; begin Init_FP_Context (Ctx); @@ -82,7 +83,7 @@ package body Test_Context is end Test_Destroy_FP_Context; -- Test Hart ID Retrieval - procedure Test_Get_Hart_ID is + procedure Test_Get_Hart_ID (T : in out AUnit.Test_Cases.Test_Case'Class) is Hart : Unsigned_64; begin Hart := Get_Hart_ID; @@ -90,24 +91,28 @@ package body Test_Context is end Test_Get_Hart_ID; -- Test CPU Extension Checking - procedure Test_Has_Extension is + procedure Test_Has_Extension (T : in out AUnit.Test_Cases.Test_Case'Class) is begin Assert (Has_Extension (16#1#) = (Get_CSR (16#F11#) and 16#1# /= 0), "Extension check failed!"); end Test_Has_Extension; -- Register all test cases - procedure Register_Tests (T : in out Context_Test_Case) is + overriding procedure Register_Tests (T : in out Test_Context) is begin - T.Register_Test ("Test_Init_GP_Context", Test_Init_GP_Context'Access); - T.Register_Test ("Test_Load_GP_Context", Test_Load_GP_Context'Access); - T.Register_Test ("Test_Save_Core_Context", Test_Save_Core_Context'Access); - T.Register_Test ("Test_Success_Fork_Result", Test_Success_Fork_Result'Access); - T.Register_Test ("Test_Init_FP_Context", Test_Init_FP_Context'Access); - T.Register_Test ("Test_Save_FP_Context", Test_Save_FP_Context'Access); - T.Register_Test ("Test_Load_FP_Context", Test_Load_FP_Context'Access); - T.Register_Test ("Test_Destroy_FP_Context", Test_Destroy_FP_Context'Access); - T.Register_Test ("Test_Get_Hart_ID", Test_Get_Hart_ID'Access); - T.Register_Test ("Test_Has_Extension", Test_Has_Extension'Access); + Register_Routine (T, Test_Init_GP_Context'Access, "Test_Init_GP_Context"); + Register_Routine (T, Test_Load_GP_Context'Access, "Test_Load_GP_Context"); + Register_Routine (T, Test_Save_Core_Context'Access, "Test_Save_Core_Context"); + Register_Routine (T, Test_Success_Fork_Result'Access, "Test_Success_Fork_Result"); + Register_Routine (T, Test_Init_FP_Context'Access, "Test_Init_FP_Context"); + Register_Routine (T, Test_Save_FP_Context'Access, "Test_Save_FP_Context"); + Register_Routine (T, Test_Load_FP_Context'Access, "Test_Load_FP_Context"); + Register_Routine (T, Test_Destroy_FP_Context'Access, "Test_Destroy_FP_Context"); + Register_Routine (T, Test_Get_Hart_ID'Access, "Test_Get_Hart_ID"); + Register_Routine (T, Test_Has_Extension'Access, "Test_Has_Extension"); end Register_Tests; -end Test_Context; + overriding function Name (T : Test_Context) return Test_String is + begin + return Format ("Context Tests"); + end Name; +end Test_Context; \ No newline at end of file diff --git a/source/tests/riscv64/test_context.ads b/source/tests/riscv64/test_context.ads new file mode 100644 index 0000000..b592534 --- /dev/null +++ b/source/tests/riscv64/test_context.ads @@ -0,0 +1,21 @@ +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; + +package Test_Context is + + overriding procedure Register_Tests (T: in out Test_Context); + overriding function Name (T: Test_Context) return Message_String; + + -- Test Routines: + procedure Test_Init_GP_Context (T : in out Test_Cases.Test_Case'Class); + procedure Test_Load_GP_Context (T : in out Test_Cases.Test_Case'Class); + procedure Test_Save_Core_Context (T : in out Test_Cases.Test_Case'Class); + procedure Test_Success_Fork_Result (T : in out Test_Cases.Test_Case'Class); + procedure Test_Init_FP_Context (T : in out Test_Cases.Test_Case'Class); + procedure Test_Save_FP_Context (T : in out Test_Cases.Test_Case'Class); + procedure Test_Load_FP_Context (T : in out Test_Cases.Test_Case'Class); + procedure Test_Destroy_FP_Context (T : in out Test_Cases.Test_Case'Class); + procedure Test_Get_Hart_ID (T : in out Test_Cases.Test_Case'Class); + procedure Test_Has_Extension (T : in out Test_Cases.Test_Case'Class); + +end Test_Context; \ No newline at end of file diff --git a/source/tests/riscv64/test-harness.adb b/source/tests/riscv64/test_harness.adb similarity index 52% rename from source/tests/riscv64/test-harness.adb rename to source/tests/riscv64/test_harness.adb index 8b6169b..cb5bd28 100644 --- a/source/tests/riscv64/test-harness.adb +++ b/source/tests/riscv64/test_harness.adb @@ -1,10 +1,12 @@ +with AUnit.Reporter.Text; with AUnit.Run; -with Test_Suite; +with Arch_RV64_Test_Suite; with Ada.Text_IO; procedure Test_Harness is + procedure Run is new AUnit.Run.Test_Runner (Arch_RV64_Test_Suite.Suite); Reporter : AUnit.Reporter.Text.Text_Reporter; begin Ada.Text_IO.Put_Line ("Running RISC-V Context Switch Tests..."); - AUnit.Run.Run (Test_Suite.Suite, Reporter); -end Test_Harness; + Run (Reporter); +end Test_Harness; \ No newline at end of file diff --git a/source/tests/riscv64/test_harness.gpr b/source/tests/riscv64/test_harness.gpr deleted file mode 100644 index be93e19..0000000 --- a/source/tests/riscv64/test_harness.gpr +++ /dev/null @@ -1,27 +0,0 @@ -project Test_Harness_RV64 is - - for Source_Dirs use ("tests/riscv64"); - for Object_Dir use "obj"; - for Exec_Dir use "bin"; - - for Main use ("test-harness.adb"); - - package Compiler is - for Switches ("Ada") use ("-gnat2012"); - end Compiler; - - package Builder is - for Executable ("test-harness.adb") use "test-harness"; - end Builder; - - package Ide is - for Integrated_Tools use ("GNAT", "GPS"); - end Ide; - - for Languages use ("Ada"); - - package Linker is - for Default_Switches ("Ada") use ("-launit"); - end Linker; - -end Test_Harness_RV64; \ No newline at end of file diff --git a/source/tests/test_harness.gpr b/source/tests/test_harness.gpr new file mode 100644 index 0000000..2ec7fa0 --- /dev/null +++ b/source/tests/test_harness.gpr @@ -0,0 +1,34 @@ +project Test_Harness is + + for Source_Dirs use ("../tests/riscv64", + "/usr/share/ada/adainclude/aunit/", + "/home/sean/.alire/riscv64-elf/lib/gnat/", + "/home/sean/.alire/"); + for Object_Dir use "obj"; + for Exec_Dir use "bin"; + for Main use ("test_harness.adb"); + + package Compiler is + for Switches ("Ada") use ("-gnat2012"); + end Compiler; + + package Builder is + for Executable ("test_harness.adb") use "test-harness"; + end Builder; + + package Ide is + for Integrated_Tools use ("GNAT", "GPS"); + end Ide; + + for Languages use ("Ada"); + + package Linker is + for Default_Switches ("Ada") use ("-launit"); + end Linker; + + package Naming is + for Body_Suffix ("Ada") use ".adb"; + for Specification_Suffix ("Ada") use ".ads"; + end Naming; + +end Test_Harness; From af7c40ba26fbe9003ccc6868c10311853dc85d35 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 23 Feb 2025 14:12:18 -0500 Subject: [PATCH 57/99] added the ganteprove tarball to the .gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 8dc44d7..89ccc2f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ +#ignore files and directories generated by VSCode .ai/ .vscode/ + +# Ignore GNATprove tarball +[gnatprove-x86_64-linux-14.1.0-1.tar.gz](http://_vscodecontentref_/7) From d919d958b9b97b8f9fe415b5d0fd9b2738503d4e Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sun, 23 Feb 2025 14:13:49 -0500 Subject: [PATCH 58/99] trying to remove gnatprove tarball from commit --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 89ccc2f..449a688 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ .vscode/ # Ignore GNATprove tarball -[gnatprove-x86_64-linux-14.1.0-1.tar.gz](http://_vscodecontentref_/7) +gnatprove-x86_64-linux-14.1.0-1.tar.gz From 44116157142da2b3a357378c0568f1a791c7aaff Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:05:59 -0500 Subject: [PATCH 59/99] updated arch-context.adb to use constants and function pointers to streamline the code flow while minimizing unneeded operations. --- source/arch/riscv64-limine/arch-context.adb | 306 ++++++++++++-------- 1 file changed, 178 insertions(+), 128 deletions(-) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index 0d41640..aefa03b 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -1,3 +1,4 @@ +------------------------------------------------------------------ -- arch-context.adb: Architecture-specific context switching. -- Copyright (C) 2024 streaksu -- @@ -13,10 +14,11 @@ -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . +------------------------------------------------------------------ pragma SPARK_Mode (On); -with System; use System; -with Interfaces; use Interfaces; +with System; use System; +with Interfaces; use Interfaces; with System.Machine_Code; with Arch.Interrupts; with Arch.CPU; @@ -24,7 +26,120 @@ with Arch.CPU; package body Arch.Context is pragma Warnings (Off, "SPARK_Mode is enabled"); - -- Define an internal record type to map to GP_Context + ---------------------------------------------------------------------------- + -- Extension Constants + ---------------------------------------------------------------------------- + F_Extension_Bit : constant Unsigned_64 := 16#20#; -- Bit 5: F extension + D_Extension_Bit : constant Unsigned_64 := 16#40#; -- Bit 6: D extension + + ---------------------------------------------------------------------------- + -- Function Pointer Types for FP Routines + ---------------------------------------------------------------------------- + type FP_Save_Routine_Type is access procedure (Ctx : in out FP_Context); + type FP_Load_Routine_Type is access procedure (Ctx : FP_Context); + + FP_Save_Routine : FP_Save_Routine_Type; + FP_Load_Routine : FP_Load_Routine_Type; + + ---------------------------------------------------------------------------- + -- No-Op FP Routines (if no FP support) + ---------------------------------------------------------------------------- + procedure FP_Save_NoOp (Ctx : in out FP_Context) is + begin + null; + end FP_Save_NoOp; + + procedure FP_Load_NoOp (Ctx : FP_Context) is + begin + null; + end FP_Load_NoOp; + + ---------------------------------------------------------------------------- + -- Double-Precision FP Routines (using fsd/fld) + ---------------------------------------------------------------------------- + procedure Save_FP_Context_D (Ctx : in out FP_Context) is + FP_Ptr : System.Address := FP_Context'Address (Ctx); + begin + -- Save registers f0 .. f31 using fsd (8 bytes per register) + System.Machine_Code.Asm ("fsd f0, 0(%0)", + Inputs => System.Address'Asm_Input ("r", FP_Ptr), + Volatile => True); + -- (Unroll similar calls for registers f1 .. f30) + System.Machine_Code.Asm ("fsd f31,248(%0)", + Inputs => System.Address'Asm_Input ("r", FP_Ptr), + Volatile => True); + -- Zero any remaining bytes in the FP context buffer. + for Offset in 256 .. FP_Context'Length - 1 loop + Ctx(Offset + 1) := 0; + end loop; + end Save_FP_Context_D; + + procedure Load_FP_Context_D (Ctx : FP_Context) is + FP_Ptr : System.Address := FP_Context'Address (Ctx); + begin + System.Machine_Code.Asm ("fld f0, 0(%0)", + Inputs => System.Address'Asm_Input ("r", FP_Ptr), + Volatile => True); + -- (Unroll similar calls for registers f1 .. f30) + System.Machine_Code.Asm ("fld f31,248(%0)", + Inputs => System.Address'Asm_Input ("r", FP_Ptr), + Volatile => True); + end Load_FP_Context_D; + + ---------------------------------------------------------------------------- + -- Single-Precision FP Routines (using fsw/flw) + ---------------------------------------------------------------------------- + procedure Save_FP_Context_F (Ctx : in out FP_Context) is + FP_Ptr : System.Address := FP_Context'Address (Ctx); + begin + -- Save registers f0 .. f31 using fsw (4 bytes per register) + System.Machine_Code.Asm ("fsw f0, 0(%0)", + Inputs => System.Address'Asm_Input ("r", FP_Ptr), + Volatile => True); + -- (Unroll similar calls for registers f1 .. f30) + System.Machine_Code.Asm ("fsw f31,124(%0)", + Inputs => System.Address'Asm_Input ("r", FP_Ptr), + Volatile => True); + -- Zero the rest of the FP context area. + for Offset in 128 .. FP_Context'Length - 1 loop + Ctx(Offset + 1) := 0; + end loop; + end Save_FP_Context_F; + + procedure Load_FP_Context_F (Ctx : FP_Context) is + FP_Ptr : System.Address := FP_Context'Address (Ctx); + begin + System.Machine_Code.Asm ("flw f0, 0(%0)", + Inputs => System.Address'Asm_Input ("r", FP_Ptr), + Volatile => True); + -- (Unroll similar calls for registers f1 .. f30) + System.Machine_Code.Asm ("flw f31,124(%0)", + Inputs => System.Address'Asm_Input ("r", FP_Ptr), + Volatile => True); + end Load_FP_Context_F; + + ---------------------------------------------------------------------------- + -- Setup FP Routines at Initialization + ---------------------------------------------------------------------------- + procedure Setup_FP_Routines is + begin + if Has_Extension (F_Extension_Bit) then + if Has_Extension (D_Extension_Bit) then + FP_Save_Routine := FP_Save_Routine_Type'(Save_FP_Context_D'Access); + FP_Load_Routine := FP_Load_Routine_Type'(Load_FP_Context_D'Access); + else + FP_Save_Routine := FP_Save_Routine_Type'(Save_FP_Context_F'Access); + FP_Load_Routine := FP_Load_Routine_Type'(Load_FP_Context_F'Access); + end if; + else + FP_Save_Routine := FP_Save_Routine_Type'(FP_Save_NoOp'Access); + FP_Load_Routine := FP_Load_Routine_Type'(FP_Load_NoOp'Access); + end if; + end Setup_FP_Routines; + + ---------------------------------------------------------------------------- + -- General-Purpose Context Switching Routines + ---------------------------------------------------------------------------- type GP_Context_Type is record SP : Unsigned_64; SEPC : Unsigned_64; @@ -32,43 +147,21 @@ package body Arch.Context is A0 : Unsigned_64; end record; - -- Helper function to convert from Frame to GP_Context_Type function To_GP_Context_Type (Frame : GP_Context) return GP_Context_Type is - (SP => Unsigned_64 (Frame.R15), - SEPC => Unsigned_64 (Frame.R14), - SSTATUS => Unsigned_64 (Frame.R13), - A0 => Unsigned_64 (Frame.R12)); - - -- Helper function to convert from GP_Context_Type to Frame - function To_Frame (Ctx : GP_Context_Type) return GP_Context is - (R15 => Unsigned_32 (Ctx.SP and 16#FFFFFFFF#), - R14 => Unsigned_32 (Ctx.SEPC and 16#FFFFFFFF#), - R13 => Unsigned_32 (Ctx.SSTATUS and 16#FFFFFFFF#), - R12 => Unsigned_32 (Ctx.A0 and 16#FFFFFFFF#), - others => 0); - - function Get_CSR (CSR_Number : Unsigned_64) return Unsigned_64 is - Value : Unsigned_64; - begin - System.Machine_Code.Asm ("csrr %0, %1", Outputs => Unsigned_64'Asm_Output ("=r", Value), - Inputs => Unsigned_64'Asm_Input ("i", CSR_Number)); - return Value; - end Get_CSR; - - function Has_Extension (Feature_Bit : Unsigned_64) return Boolean is begin - return (Get_CSR (16#301#) and Feature_Bit) /= 0; -- MISA CSR - end Has_Extension; + return (SP => Unsigned_64 (Frame.R2), + SEPC => Get_CSR (16#141#), + SSTATUS => Get_CSR (16#100#), + A0 => Unsigned_64 (Frame.R10)); + end To_GP_Context_Type; - function Get_Hart_ID return Unsigned_64 is - Hart_ID : Unsigned_64; + function To_Frame (Ctx : GP_Context_Type) return GP_Context is begin - System.Machine_Code.Asm ("csrr %0, mhartid", Outputs => Unsigned_64'Asm_Output ("=r", Hart_ID)); - pragma Assert (Hart_ID < 64); -- Ensure valid hart ID - return Hart_ID; - end Get_Hart_ID; + return (R2 => Unsigned_32 (Ctx.SP and 16#FFFFFFFF#), + R10 => Unsigned_32 (Ctx.A0 and 16#FFFFFFFF#), + others => 0); + end To_Frame; - -- Initialize general-purpose context procedure Init_GP_Context (Ctx : out GP_Context; Stack : System.Address; @@ -76,125 +169,82 @@ package body Arch.Context is is Ctx_Impl : GP_Context_Type; begin - -- SPARK Aspects pragma Assume (Stack /= System.Null_Address and Start_Addr /= System.Null_Address); - - Ctx_Impl.SP := Unsigned_64 (To_Integer (Stack)); - Ctx_Impl.SEPC := Unsigned_64 (To_Integer (Start_Addr)); - Ctx_Impl.SSTATUS := Get_CSR (16#100#); -- Supervisor Status Register + Ctx_Impl.SP := Unsigned_64 (To_Integer (Stack)); + Ctx_Impl.SEPC := Unsigned_64 (To_Integer (Start_Addr)); + Ctx_Impl.SSTATUS := Get_CSR (16#100#); + Ctx_Impl.A0 := 0; Ctx := To_Frame (Ctx_Impl); - - -- SPARK Aspects - pragma Assert ((for all Index in GP_Context'Range => Ctx.To_Element (Index) = 0) and - Ctx.To_Element (1) = Unsigned_32 (To_Integer (Stack) and 16#FFFFFFFF#) and - Ctx.To_Element (2) = Unsigned_32 (To_Integer (Start_Addr) and 16#FFFFFFFF#)); + pragma Assert (Ctx.R2 = Unsigned_32 (To_Integer (Stack) and 16#FFFFFFFF#), + "Stack pointer correctly set"); end Init_GP_Context; - -- Load general-purpose context for task switching - procedure Load_GP_Context (Ctx : GP_Context) - is + procedure Load_GP_Context (Ctx : GP_Context) with No_Return is Ctx_Impl : GP_Context_Type := To_GP_Context_Type (Ctx); begin - -- SPARK Aspects - pragma Assume (Ctx.To_Element (2) /= 0); - - System.Machine_Code.Asm ("csrw sepc, %0; csrw sstatus, %1; mv sp, %2; sret", - Inputs => (Unsigned_64'Asm_Input ("r", Ctx_Impl.SEPC), + System.Machine_Code.Asm ( + "csrw sepc, %0; csrw sstatus, %1; mv sp, %2; sret", + Inputs => (Unsigned_64'Asm_Input ("r", Ctx_Impl.SEPC), Unsigned_64'Asm_Input ("r", Ctx_Impl.SSTATUS), Unsigned_64'Asm_Input ("r", Ctx_Impl.SP)), - Clobber => "memory", - Volatile => True); - loop null; end loop; + Clobber => "memory", + Volatile => True); + loop + null; + end loop; end Load_GP_Context; - -- Save core-specific context for multi-core support - procedure Save_Core_Context (Ctx : out Core_Context) - is - begin - -- Assuming Get_Local is defined in CPU package - Ctx := Arch.CPU.Core_Locals (Arch.CPU.Core_Count).User_Stack; - -- SPARK Aspects - pragma Assert (Ctx >= 0); - end Save_Core_Context; - - -- Ensure forked process returns 0 in userland - procedure Success_Fork_Result (Ctx : in out GP_Context) - is + procedure Success_Fork_Result (Ctx : in out GP_Context) is Ctx_Impl : GP_Context_Type := To_GP_Context_Type (Ctx); begin - -- SPARK Aspects - pragma Assume (Ctx.To_Element (2) /= 0); - - Ctx_Impl.A0 := 0; -- Ensure child process sees return value 0 - Ctx_Impl.SEPC := 0; + Ctx_Impl.A0 := 0; + Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; Ctx := To_Frame (Ctx_Impl); - - -- SPARK Aspects - pragma Assert (Ctx.To_Element (2) = 0 and Ctx.To_Element (4) = 0); + pragma Assert (Ctx.R10 = 0, "Return value must be zero for forked process"); end Success_Fork_Result; - -- Initialize Floating-Point Context - procedure Init_FP_Context (Ctx : out FP_Context) - is + ---------------------------------------------------------------------------- + -- Floating-Point Context Routines (Dispatch via function pointers) + ---------------------------------------------------------------------------- + procedure Init_FP_Context (Ctx : out FP_Context) is begin - Ctx := (others => 0); -- Initialize FP context to zero - - -- SPARK Aspects - pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0); + -- Always start with a zeroed FP context. + Ctx := (others => 0); + pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, + "FP context zeroed"); + -- Set up the FP routine pointers once. + Setup_FP_Routines; + -- Save the current FP context using the chosen routine. + FP_Save_Routine.all (Ctx); end Init_FP_Context; - -- Save floating-point registers, dynamically handling F/D extensions - procedure Save_FP_Context (Ctx : in out FP_Context) - is + procedure Save_FP_Context (Ctx : in out FP_Context) is begin - if Has_Extension (16#1#) then -- 'F' extension - System.Machine_Code.Asm ("fsd f0, 0(%0); fsd f1, 8(%0)", - Inputs => (System.Address'Asm_Input ("r", Ctx'Address)), - Clobber => "memory", - Volatile => True); - end if; - - if Has_Extension (16#2#) then -- 'D' extension - System.Machine_Code.Asm ("fsd f2, 16(%0); fsd f3, 24(%0)", - Inputs => (System.Address'Asm_Input ("r", Ctx'Address)), - Clobber => "memory", - Volatile => True); - end if; - - -- SPARK Aspects - pragma Assert (True); + FP_Save_Routine.all (Ctx); end Save_FP_Context; - -- Restore floating-point registers, dynamically handling F/D extensions - procedure Load_FP_Context (Ctx : FP_Context) - is + procedure Load_FP_Context (Ctx : FP_Context) is begin - if Has_Extension (16#1#) then -- 'F' extension - System.Machine_Code.Asm ("fld f0, 0(%0); fld f1, 8(%0)", - Inputs => (System.Address'Asm_Input ("r", Ctx'Address)), - Clobber => "memory", - Volatile => True); - end if; - - if Has_Extension (16#2#) then -- 'D' extension - System.Machine_Code.Asm ("fld f2, 16(%0); fld f3, 24(%0)", - Inputs => (System.Address'Asm_Input ("r", Ctx'Address)), - Clobber => "memory", - Volatile => True); - end if; - - -- SPARK Aspects - pragma Assert (True); + FP_Load_Routine.all (Ctx); end Load_FP_Context; - -- Destroy floating-point context - procedure Destroy_FP_Context (Ctx : in out FP_Context) - is + procedure Destroy_FP_Context (Ctx : in out FP_Context) is begin Ctx := (others => 0); - - -- SPARK Aspects - pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0); + pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, + "FP context destroyed"); end Destroy_FP_Context; + ---------------------------------------------------------------------------- + -- Core Context Routine + ---------------------------------------------------------------------------- + procedure Save_Core_Context (Ctx : out Core_Context) is + Temp : Unsigned_64; + begin + -- For riscv64, no extra core state needs saving. + Temp := 0; + Ctx := Temp; + pragma Assert (Ctx = 0, "Core context saved as zero on riscv64"); + end Save_Core_Context; + end Arch.Context; From 47c4d4e91f7a37bd832034307912f2b01d727877 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:24:21 -0500 Subject: [PATCH 60/99] fixing make errors --- GNUmakefile | 4 +- autom4te.cache/output.1 | 20 +- autom4te.cache/output.2 | 20 +- autom4te.cache/requests | 216 +- config.log | 16 +- config.status | 12 +- configure | 20 +- configure~ | 20 +- ironclad.gpr | 2 +- .../data_representation/config.ads.stderr | 3 + .../data_representation/config.ads.stdout | 0 .../kernel_main.adb.stderr | 3 + .../kernel_main.adb.stdout | 0 .../data_representation/scheduler.adb.stderr | 3 + .../data_representation/scheduler.adb.stdout | 0 .../userland-loader.adb.stderr | 3 + .../userland-loader.adb.stdout | 0 .../userland-mac.adb.stderr | 3 + .../userland-mac.adb.stdout | 0 .../userland-oom_failure.adb.stderr | 3 + .../userland-oom_failure.adb.stdout | 0 .../userland-syscall.adb.stderr | 3 + .../userland-syscall.adb.stdout | 0 .../data_representation/vfs-dev.adb.stderr | 3 + .../data_representation/vfs-dev.adb.stdout | 0 .../data_representation/vfs-ext.adb.stderr | 3 + .../data_representation/vfs-ext.adb.stdout | 0 .../data_representation/vfs-fat.adb.stderr | 3 + .../data_representation/vfs-fat.adb.stdout | 0 .../data_representation/vfs.adb.stderr | 3 + .../data_representation/vfs.adb.stdout | 0 .../data_representation_generation.log | 33 + obj/gnatprove/dea97157.tmp | 1 + obj/gnatprove/phase1/arch-clocks.ali | 2 +- obj/gnatprove/phase1/arch-clocks.cswi | 6 +- obj/gnatprove/phase1/arch-context.adb.stderr | 36 +- obj/gnatprove/phase1/arch-cpu.ali | 2 +- obj/gnatprove/phase1/arch-cpu.cswi | 6 +- obj/gnatprove/phase1/arch-debug.ali | 2 +- obj/gnatprove/phase1/arch-debug.cswi | 6 +- obj/gnatprove/phase1/arch-dtb.ali | 2 +- obj/gnatprove/phase1/arch-dtb.cswi | 6 +- obj/gnatprove/phase1/arch-entrypoint.ali | 2 +- obj/gnatprove/phase1/arch-entrypoint.cswi | 6 +- obj/gnatprove/phase1/arch-hooks.ali | 2 +- obj/gnatprove/phase1/arch-hooks.cswi | 6 +- .../phase1/arch-interrupts.ads.stderr | 0 .../phase1/arch-interrupts.ads.stdout | 0 obj/gnatprove/phase1/arch-interrupts.ali | 128 + obj/gnatprove/phase1/arch-interrupts.cswi | 28 + obj/gnatprove/phase1/arch-limine.ali | 2 +- obj/gnatprove/phase1/arch-limine.cswi | 6 +- obj/gnatprove/phase1/arch-local.ali | 2 +- obj/gnatprove/phase1/arch-local.cswi | 6 +- obj/gnatprove/phase1/arch-mmu.ali | 2 +- obj/gnatprove/phase1/arch-mmu.cswi | 6 +- obj/gnatprove/phase1/arch-power.adb.stderr | 0 obj/gnatprove/phase1/arch-power.adb.stdout | 0 obj/gnatprove/phase1/arch-power.ali | 101 + obj/gnatprove/phase1/arch-power.cswi | 28 + obj/gnatprove/phase1/arch-snippets.ali | 2 +- obj/gnatprove/phase1/arch-snippets.cswi | 6 +- obj/gnatprove/phase1/arch.ali | 2 +- obj/gnatprove/phase1/arch.cswi | 6 +- obj/gnatprove/phase1/config.ali | 6 +- obj/gnatprove/phase1/config.cswi | 6 +- .../phase1/cryptography-chacha20.adb.stderr | 0 .../phase1/cryptography-chacha20.adb.stdout | 0 .../phase1/cryptography-chacha20.ali | 146 + .../phase1/cryptography-chacha20.cswi | 28 + .../phase1/cryptography-md5.adb.stderr | 0 .../phase1/cryptography-md5.adb.stdout | 0 obj/gnatprove/phase1/cryptography-md5.ali | 147 + obj/gnatprove/phase1/cryptography-md5.cswi | 28 + .../phase1/cryptography-random.adb.stderr | 0 .../phase1/cryptography-random.adb.stdout | 0 obj/gnatprove/phase1/cryptography-random.ali | 324 ++ obj/gnatprove/phase1/cryptography-random.cswi | 28 + obj/gnatprove/phase1/cryptography.ads.stderr | 0 obj/gnatprove/phase1/cryptography.ads.stdout | 0 obj/gnatprove/phase1/cryptography.ali | 59 + obj/gnatprove/phase1/cryptography.cswi | 28 + obj/gnatprove/phase1/devices-console.ali | 2 +- obj/gnatprove/phase1/devices-console.cswi | 6 +- obj/gnatprove/phase1/devices-loopback.ali | 2 +- obj/gnatprove/phase1/devices-loopback.cswi | 6 +- .../phase1/devices-netinter.ads.stderr | 0 .../phase1/devices-netinter.ads.stdout | 0 obj/gnatprove/phase1/devices-netinter.ali | 161 + obj/gnatprove/phase1/devices-netinter.cswi | 28 + .../phase1/devices-partitions.adb.stderr | 0 .../phase1/devices-partitions.adb.stdout | 0 obj/gnatprove/phase1/devices-partitions.ali | 438 ++ obj/gnatprove/phase1/devices-partitions.cswi | 28 + .../phase1/devices-ramdev.adb.stderr | 0 .../phase1/devices-ramdev.adb.stdout | 0 obj/gnatprove/phase1/devices-ramdev.ali | 300 ++ obj/gnatprove/phase1/devices-ramdev.cswi | 28 + obj/gnatprove/phase1/devices-streams.ali | 2 +- obj/gnatprove/phase1/devices-streams.cswi | 6 +- .../phase1/devices-termios.ads.stderr | 0 .../phase1/devices-termios.ads.stdout | 0 obj/gnatprove/phase1/devices-termios.ali | 203 + obj/gnatprove/phase1/devices-termios.cswi | 28 + obj/gnatprove/phase1/devices-uart.ali | 2 +- obj/gnatprove/phase1/devices-uart.cswi | 6 +- obj/gnatprove/phase1/devices.ali | 2 +- obj/gnatprove/phase1/devices.cswi | 6 +- obj/gnatprove/phase1/ipc-fifo.adb.stderr | 0 obj/gnatprove/phase1/ipc-fifo.adb.stdout | 0 obj/gnatprove/phase1/ipc-fifo.ali | 500 ++ obj/gnatprove/phase1/ipc-fifo.cswi | 28 + obj/gnatprove/phase1/ipc-filelock.adb.stderr | 0 obj/gnatprove/phase1/ipc-filelock.adb.stdout | 0 obj/gnatprove/phase1/ipc-filelock.ali | 621 +++ obj/gnatprove/phase1/ipc-filelock.cswi | 28 + obj/gnatprove/phase1/ipc-futex.adb.stderr | 0 obj/gnatprove/phase1/ipc-futex.adb.stdout | 0 obj/gnatprove/phase1/ipc-futex.ali | 358 ++ obj/gnatprove/phase1/ipc-futex.cswi | 28 + obj/gnatprove/phase1/ipc-pty.adb.stderr | 0 obj/gnatprove/phase1/ipc-pty.adb.stdout | 0 obj/gnatprove/phase1/ipc-pty.ali | 642 +++ obj/gnatprove/phase1/ipc-pty.cswi | 28 + obj/gnatprove/phase1/ipc-shm.adb.stderr | 0 obj/gnatprove/phase1/ipc-shm.adb.stdout | 0 obj/gnatprove/phase1/ipc-shm.ali | 365 ++ obj/gnatprove/phase1/ipc-shm.cswi | 28 + obj/gnatprove/phase1/ipc-socket.adb.stderr | 0 obj/gnatprove/phase1/ipc-socket.adb.stdout | 0 obj/gnatprove/phase1/ipc-socket.ali | 936 ++++ obj/gnatprove/phase1/ipc-socket.cswi | 28 + obj/gnatprove/phase1/ipc.ads.stderr | 0 obj/gnatprove/phase1/ipc.ads.stdout | 0 obj/gnatprove/phase1/ipc.ali | 59 + obj/gnatprove/phase1/ipc.cswi | 28 + obj/gnatprove/phase1/kernel_main.ali | 6 +- obj/gnatprove/phase1/kernel_main.cswi | 6 +- obj/gnatprove/phase1/lib-alignment.ali | 2 +- obj/gnatprove/phase1/lib-alignment.cswi | 6 +- obj/gnatprove/phase1/lib-atomic.ads.stderr | 0 obj/gnatprove/phase1/lib-atomic.ads.stdout | 0 obj/gnatprove/phase1/lib-atomic.ali | 173 + obj/gnatprove/phase1/lib-atomic.cswi | 28 + obj/gnatprove/phase1/lib-cmdline.ali | 2 +- obj/gnatprove/phase1/lib-cmdline.cswi | 6 +- obj/gnatprove/phase1/lib-messages.ali | 2 +- obj/gnatprove/phase1/lib-messages.cswi | 6 +- obj/gnatprove/phase1/lib-panic.ali | 2 +- obj/gnatprove/phase1/lib-panic.cswi | 6 +- obj/gnatprove/phase1/lib-runtime.ali | 2 +- obj/gnatprove/phase1/lib-runtime.cswi | 6 +- obj/gnatprove/phase1/lib-synchronization.ali | 2 +- obj/gnatprove/phase1/lib-synchronization.cswi | 6 +- obj/gnatprove/phase1/lib-time.ali | 2 +- obj/gnatprove/phase1/lib-time.cswi | 6 +- obj/gnatprove/phase1/lib.ali | 2 +- obj/gnatprove/phase1/lib.cswi | 6 +- obj/gnatprove/phase1/main.ali | 2 +- obj/gnatprove/phase1/main.cswi | 6 +- obj/gnatprove/phase1/memory-physical.ali | 6 +- obj/gnatprove/phase1/memory-physical.cswi | 6 +- obj/gnatprove/phase1/memory.ali | 2 +- obj/gnatprove/phase1/memory.cswi | 6 +- obj/gnatprove/phase1/networking-arp.ali | 2 +- obj/gnatprove/phase1/networking-arp.cswi | 6 +- .../phase1/networking-interfaces.adb.stderr | 0 .../phase1/networking-interfaces.adb.stdout | 0 .../phase1/networking-interfaces.ali | 342 ++ .../phase1/networking-interfaces.cswi | 28 + .../phase1/networking-ipv4.adb.stderr | 0 .../phase1/networking-ipv4.adb.stdout | 0 obj/gnatprove/phase1/networking-ipv4.ali | 153 + obj/gnatprove/phase1/networking-ipv4.cswi | 28 + .../phase1/networking-ipv6.adb.stderr | 0 .../phase1/networking-ipv6.adb.stdout | 0 obj/gnatprove/phase1/networking-ipv6.ali | 143 + obj/gnatprove/phase1/networking-ipv6.cswi | 28 + obj/gnatprove/phase1/networking.ali | 2 +- obj/gnatprove/phase1/networking.cswi | 6 +- obj/gnatprove/phase1/scheduler.ali | 2 +- obj/gnatprove/phase1/scheduler.cswi | 6 +- .../phase1/userland-corefile.adb.stderr | 0 .../phase1/userland-corefile.adb.stdout | 0 obj/gnatprove/phase1/userland-corefile.ali | 592 +++ obj/gnatprove/phase1/userland-corefile.cswi | 28 + obj/gnatprove/phase1/userland-elf.adb.stderr | 0 obj/gnatprove/phase1/userland-elf.adb.stdout | 0 obj/gnatprove/phase1/userland-elf.ali | 847 ++++ obj/gnatprove/phase1/userland-elf.cswi | 28 + obj/gnatprove/phase1/userland-loader.ali | 2 +- obj/gnatprove/phase1/userland-loader.cswi | 6 +- obj/gnatprove/phase1/userland-mac.adb.stderr | 0 obj/gnatprove/phase1/userland-mac.adb.stdout | 0 obj/gnatprove/phase1/userland-mac.ali | 357 ++ obj/gnatprove/phase1/userland-mac.cswi | 28 + .../phase1/userland-memory_failure.adb.stderr | 0 .../phase1/userland-memory_failure.adb.stdout | 0 .../phase1/userland-memory_failure.ali | 190 + .../phase1/userland-memory_failure.cswi | 28 + .../userland-memory_locations.ads.stderr | 0 .../userland-memory_locations.ads.stdout | 0 .../phase1/userland-memory_locations.ali | 71 + .../phase1/userland-memory_locations.cswi | 28 + obj/gnatprove/phase1/userland-oom_failure.ali | 2 +- .../phase1/userland-oom_failure.cswi | 6 +- obj/gnatprove/phase1/userland-process.ali | 2 +- obj/gnatprove/phase1/userland-process.cswi | 6 +- .../phase1/userland-syscall.adb.stderr | 0 .../phase1/userland-syscall.adb.stdout | 0 obj/gnatprove/phase1/userland-syscall.ali | 4501 +++++++++++++++++ obj/gnatprove/phase1/userland-syscall.cswi | 28 + obj/gnatprove/phase1/userland.ali | 2 +- obj/gnatprove/phase1/userland.cswi | 6 +- obj/gnatprove/phase1/vfs-dev.adb.stderr | 0 obj/gnatprove/phase1/vfs-dev.adb.stdout | 0 obj/gnatprove/phase1/vfs-dev.ali | 487 ++ obj/gnatprove/phase1/vfs-dev.cswi | 28 + obj/gnatprove/phase1/vfs-ext.adb.stderr | 0 obj/gnatprove/phase1/vfs-ext.adb.stdout | 0 obj/gnatprove/phase1/vfs-ext.ali | 1516 ++++++ obj/gnatprove/phase1/vfs-ext.cswi | 28 + obj/gnatprove/phase1/vfs-fat.adb.stderr | 0 obj/gnatprove/phase1/vfs-fat.adb.stdout | 0 obj/gnatprove/phase1/vfs-fat.ali | 698 +++ obj/gnatprove/phase1/vfs-fat.cswi | 28 + obj/gnatprove/phase1/vfs.ali | 2 +- obj/gnatprove/phase1/vfs.cswi | 6 +- source/arch/riscv64-limine/arch-context.adb | 6 +- 229 files changed, 16792 insertions(+), 353 deletions(-) create mode 100644 obj/gnatprove/data_representation/config.ads.stderr create mode 100644 obj/gnatprove/data_representation/config.ads.stdout create mode 100644 obj/gnatprove/data_representation/kernel_main.adb.stderr create mode 100644 obj/gnatprove/data_representation/kernel_main.adb.stdout create mode 100644 obj/gnatprove/data_representation/scheduler.adb.stderr create mode 100644 obj/gnatprove/data_representation/scheduler.adb.stdout create mode 100644 obj/gnatprove/data_representation/userland-loader.adb.stderr create mode 100644 obj/gnatprove/data_representation/userland-loader.adb.stdout create mode 100644 obj/gnatprove/data_representation/userland-mac.adb.stderr create mode 100644 obj/gnatprove/data_representation/userland-mac.adb.stdout create mode 100644 obj/gnatprove/data_representation/userland-oom_failure.adb.stderr create mode 100644 obj/gnatprove/data_representation/userland-oom_failure.adb.stdout create mode 100644 obj/gnatprove/data_representation/userland-syscall.adb.stderr create mode 100644 obj/gnatprove/data_representation/userland-syscall.adb.stdout create mode 100644 obj/gnatprove/data_representation/vfs-dev.adb.stderr create mode 100644 obj/gnatprove/data_representation/vfs-dev.adb.stdout create mode 100644 obj/gnatprove/data_representation/vfs-ext.adb.stderr create mode 100644 obj/gnatprove/data_representation/vfs-ext.adb.stdout create mode 100644 obj/gnatprove/data_representation/vfs-fat.adb.stderr create mode 100644 obj/gnatprove/data_representation/vfs-fat.adb.stdout create mode 100644 obj/gnatprove/data_representation/vfs.adb.stderr create mode 100644 obj/gnatprove/data_representation/vfs.adb.stdout create mode 100644 obj/gnatprove/dea97157.tmp create mode 100644 obj/gnatprove/phase1/arch-interrupts.ads.stderr create mode 100644 obj/gnatprove/phase1/arch-interrupts.ads.stdout create mode 100644 obj/gnatprove/phase1/arch-interrupts.ali create mode 100644 obj/gnatprove/phase1/arch-interrupts.cswi create mode 100644 obj/gnatprove/phase1/arch-power.adb.stderr create mode 100644 obj/gnatprove/phase1/arch-power.adb.stdout create mode 100644 obj/gnatprove/phase1/arch-power.ali create mode 100644 obj/gnatprove/phase1/arch-power.cswi create mode 100644 obj/gnatprove/phase1/cryptography-chacha20.adb.stderr create mode 100644 obj/gnatprove/phase1/cryptography-chacha20.adb.stdout create mode 100644 obj/gnatprove/phase1/cryptography-chacha20.ali create mode 100644 obj/gnatprove/phase1/cryptography-chacha20.cswi create mode 100644 obj/gnatprove/phase1/cryptography-md5.adb.stderr create mode 100644 obj/gnatprove/phase1/cryptography-md5.adb.stdout create mode 100644 obj/gnatprove/phase1/cryptography-md5.ali create mode 100644 obj/gnatprove/phase1/cryptography-md5.cswi create mode 100644 obj/gnatprove/phase1/cryptography-random.adb.stderr create mode 100644 obj/gnatprove/phase1/cryptography-random.adb.stdout create mode 100644 obj/gnatprove/phase1/cryptography-random.ali create mode 100644 obj/gnatprove/phase1/cryptography-random.cswi create mode 100644 obj/gnatprove/phase1/cryptography.ads.stderr create mode 100644 obj/gnatprove/phase1/cryptography.ads.stdout create mode 100644 obj/gnatprove/phase1/cryptography.ali create mode 100644 obj/gnatprove/phase1/cryptography.cswi create mode 100644 obj/gnatprove/phase1/devices-netinter.ads.stderr create mode 100644 obj/gnatprove/phase1/devices-netinter.ads.stdout create mode 100644 obj/gnatprove/phase1/devices-netinter.ali create mode 100644 obj/gnatprove/phase1/devices-netinter.cswi create mode 100644 obj/gnatprove/phase1/devices-partitions.adb.stderr create mode 100644 obj/gnatprove/phase1/devices-partitions.adb.stdout create mode 100644 obj/gnatprove/phase1/devices-partitions.ali create mode 100644 obj/gnatprove/phase1/devices-partitions.cswi create mode 100644 obj/gnatprove/phase1/devices-ramdev.adb.stderr create mode 100644 obj/gnatprove/phase1/devices-ramdev.adb.stdout create mode 100644 obj/gnatprove/phase1/devices-ramdev.ali create mode 100644 obj/gnatprove/phase1/devices-ramdev.cswi create mode 100644 obj/gnatprove/phase1/devices-termios.ads.stderr create mode 100644 obj/gnatprove/phase1/devices-termios.ads.stdout create mode 100644 obj/gnatprove/phase1/devices-termios.ali create mode 100644 obj/gnatprove/phase1/devices-termios.cswi create mode 100644 obj/gnatprove/phase1/ipc-fifo.adb.stderr create mode 100644 obj/gnatprove/phase1/ipc-fifo.adb.stdout create mode 100644 obj/gnatprove/phase1/ipc-fifo.ali create mode 100644 obj/gnatprove/phase1/ipc-fifo.cswi create mode 100644 obj/gnatprove/phase1/ipc-filelock.adb.stderr create mode 100644 obj/gnatprove/phase1/ipc-filelock.adb.stdout create mode 100644 obj/gnatprove/phase1/ipc-filelock.ali create mode 100644 obj/gnatprove/phase1/ipc-filelock.cswi create mode 100644 obj/gnatprove/phase1/ipc-futex.adb.stderr create mode 100644 obj/gnatprove/phase1/ipc-futex.adb.stdout create mode 100644 obj/gnatprove/phase1/ipc-futex.ali create mode 100644 obj/gnatprove/phase1/ipc-futex.cswi create mode 100644 obj/gnatprove/phase1/ipc-pty.adb.stderr create mode 100644 obj/gnatprove/phase1/ipc-pty.adb.stdout create mode 100644 obj/gnatprove/phase1/ipc-pty.ali create mode 100644 obj/gnatprove/phase1/ipc-pty.cswi create mode 100644 obj/gnatprove/phase1/ipc-shm.adb.stderr create mode 100644 obj/gnatprove/phase1/ipc-shm.adb.stdout create mode 100644 obj/gnatprove/phase1/ipc-shm.ali create mode 100644 obj/gnatprove/phase1/ipc-shm.cswi create mode 100644 obj/gnatprove/phase1/ipc-socket.adb.stderr create mode 100644 obj/gnatprove/phase1/ipc-socket.adb.stdout create mode 100644 obj/gnatprove/phase1/ipc-socket.ali create mode 100644 obj/gnatprove/phase1/ipc-socket.cswi create mode 100644 obj/gnatprove/phase1/ipc.ads.stderr create mode 100644 obj/gnatprove/phase1/ipc.ads.stdout create mode 100644 obj/gnatprove/phase1/ipc.ali create mode 100644 obj/gnatprove/phase1/ipc.cswi create mode 100644 obj/gnatprove/phase1/lib-atomic.ads.stderr create mode 100644 obj/gnatprove/phase1/lib-atomic.ads.stdout create mode 100644 obj/gnatprove/phase1/lib-atomic.ali create mode 100644 obj/gnatprove/phase1/lib-atomic.cswi create mode 100644 obj/gnatprove/phase1/networking-interfaces.adb.stderr create mode 100644 obj/gnatprove/phase1/networking-interfaces.adb.stdout create mode 100644 obj/gnatprove/phase1/networking-interfaces.ali create mode 100644 obj/gnatprove/phase1/networking-interfaces.cswi create mode 100644 obj/gnatprove/phase1/networking-ipv4.adb.stderr create mode 100644 obj/gnatprove/phase1/networking-ipv4.adb.stdout create mode 100644 obj/gnatprove/phase1/networking-ipv4.ali create mode 100644 obj/gnatprove/phase1/networking-ipv4.cswi create mode 100644 obj/gnatprove/phase1/networking-ipv6.adb.stderr create mode 100644 obj/gnatprove/phase1/networking-ipv6.adb.stdout create mode 100644 obj/gnatprove/phase1/networking-ipv6.ali create mode 100644 obj/gnatprove/phase1/networking-ipv6.cswi create mode 100644 obj/gnatprove/phase1/userland-corefile.adb.stderr create mode 100644 obj/gnatprove/phase1/userland-corefile.adb.stdout create mode 100644 obj/gnatprove/phase1/userland-corefile.ali create mode 100644 obj/gnatprove/phase1/userland-corefile.cswi create mode 100644 obj/gnatprove/phase1/userland-elf.adb.stderr create mode 100644 obj/gnatprove/phase1/userland-elf.adb.stdout create mode 100644 obj/gnatprove/phase1/userland-elf.ali create mode 100644 obj/gnatprove/phase1/userland-elf.cswi create mode 100644 obj/gnatprove/phase1/userland-mac.adb.stderr create mode 100644 obj/gnatprove/phase1/userland-mac.adb.stdout create mode 100644 obj/gnatprove/phase1/userland-mac.ali create mode 100644 obj/gnatprove/phase1/userland-mac.cswi create mode 100644 obj/gnatprove/phase1/userland-memory_failure.adb.stderr create mode 100644 obj/gnatprove/phase1/userland-memory_failure.adb.stdout create mode 100644 obj/gnatprove/phase1/userland-memory_failure.ali create mode 100644 obj/gnatprove/phase1/userland-memory_failure.cswi create mode 100644 obj/gnatprove/phase1/userland-memory_locations.ads.stderr create mode 100644 obj/gnatprove/phase1/userland-memory_locations.ads.stdout create mode 100644 obj/gnatprove/phase1/userland-memory_locations.ali create mode 100644 obj/gnatprove/phase1/userland-memory_locations.cswi create mode 100644 obj/gnatprove/phase1/userland-syscall.adb.stderr create mode 100644 obj/gnatprove/phase1/userland-syscall.adb.stdout create mode 100644 obj/gnatprove/phase1/userland-syscall.ali create mode 100644 obj/gnatprove/phase1/userland-syscall.cswi create mode 100644 obj/gnatprove/phase1/vfs-dev.adb.stderr create mode 100644 obj/gnatprove/phase1/vfs-dev.adb.stdout create mode 100644 obj/gnatprove/phase1/vfs-dev.ali create mode 100644 obj/gnatprove/phase1/vfs-dev.cswi create mode 100644 obj/gnatprove/phase1/vfs-ext.adb.stderr create mode 100644 obj/gnatprove/phase1/vfs-ext.adb.stdout create mode 100644 obj/gnatprove/phase1/vfs-ext.ali create mode 100644 obj/gnatprove/phase1/vfs-ext.cswi create mode 100644 obj/gnatprove/phase1/vfs-fat.adb.stderr create mode 100644 obj/gnatprove/phase1/vfs-fat.adb.stdout create mode 100644 obj/gnatprove/phase1/vfs-fat.ali create mode 100644 obj/gnatprove/phase1/vfs-fat.cswi diff --git a/GNUmakefile b/GNUmakefile index 96d3061..b3ec19d 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -20,13 +20,13 @@ override MAKEFLAGS += -rR # Import some autoconf variables as make variables override SRCDIR := /home/sean/capstone/ICK-RISCV-Context override BUILDDIR := /home/sean/capstone/ICK-RISCV-Context -override PACKAGE_VERSION := g2867970 +override PACKAGE_VERSION := g4411615 override PACKAGE_TARNAME := ironclad override OUTPUT := $(PACKAGE_TARNAME) override DIST_OUTPUT := $(PACKAGE_TARNAME)-$(PACKAGE_VERSION) # Take care of reproducible dates. -override SOURCE_DATE_EPOCH := 1739144561 +override SOURCE_DATE_EPOCH := 1740427559 export SOURCE_DATE_EPOCH # Autoconf dir variables. diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1 index 10ee3fe..f94bc05 100644 --- a/autom4te.cache/output.1 +++ b/autom4te.cache/output.1 @@ -1,6 +1,6 @@ @%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.71 for Ironclad g2867970. +@%:@ Generated by GNU Autoconf 2.71 for Ironclad g4411615. @%:@ @%:@ Report bugs to . @%:@ @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g2867970' -PACKAGE_STRING='Ironclad g2867970' +PACKAGE_VERSION='g4411615' +PACKAGE_STRING='Ironclad g4411615' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g2867970 to adapt to many kinds of systems. +\`configure' configures Ironclad g4411615 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g2867970:";; + short | recursive ) echo "Configuration of Ironclad g4411615:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g2867970 +Ironclad configure g4411615 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g2867970, which was +It was created by Ironclad $as_me g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1739144561" +SOURCE_DATE_EPOCH="1740427559" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g2867970, which was +This file was extended by Ironclad $as_me g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g2867970 +Ironclad config.status g4411615 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/autom4te.cache/output.2 b/autom4te.cache/output.2 index dbae5e4..8dbcea7 100644 --- a/autom4te.cache/output.2 +++ b/autom4te.cache/output.2 @@ -1,6 +1,6 @@ @%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.71 for Ironclad g2867970. +@%:@ Generated by GNU Autoconf 2.71 for Ironclad g4411615. @%:@ @%:@ Report bugs to . @%:@ @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g2867970' -PACKAGE_STRING='Ironclad g2867970' +PACKAGE_VERSION='g4411615' +PACKAGE_STRING='Ironclad g4411615' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g2867970 to adapt to many kinds of systems. +\`configure' configures Ironclad g4411615 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g2867970:";; + short | recursive ) echo "Configuration of Ironclad g4411615:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g2867970 +Ironclad configure g4411615 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g2867970, which was +It was created by Ironclad $as_me g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1739144561" +SOURCE_DATE_EPOCH="1740427559" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g2867970, which was +This file was extended by Ironclad $as_me g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g2867970 +Ironclad config.status g4411615 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/autom4te.cache/requests b/autom4te.cache/requests index c93d103..278a962 100644 --- a/autom4te.cache/requests +++ b/autom4te.cache/requests @@ -15,18 +15,18 @@ 'configure.ac' ], { - 'AC_DEFUN_ONCE' => 1, - 'AU_DEFUN' => 1, 'm4_pattern_allow' => 1, - '_AM_AUTOCONF_VERSION' => 1, '_AM_CONFIG_MACRO_DIRS' => 1, + 'AC_DEFUN_ONCE' => 1, + '_AM_AUTOCONF_VERSION' => 1, + 'include' => 1, + 'AU_DEFUN' => 1, + 'm4_pattern_forbid' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'AC_CONFIG_MACRO_DIR' => 1, - '_m4_warn' => 1, 'AC_DEFUN' => 1, - 'include' => 1, 'm4_include' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'm4_pattern_forbid' => 1 + '_m4_warn' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -40,69 +40,69 @@ 'configure.ac' ], { - '_m4_warn' => 1, - 'm4_pattern_allow' => 1, - 'LT_INIT' => 1, - '_AM_COND_ENDIF' => 1, - 'AM_XGETTEXT_OPTION' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_LIBSOURCE' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'm4_pattern_forbid' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AC_INIT' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AC_FC_PP_SRCEXT' => 1, 'AH_OUTPUT' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_SILENT_RULES' => 1, + 'GTK_DOC_CHECK' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + '_AM_COND_ENDIF' => 1, 'AM_ENABLE_MULTILIB' => 1, - 'm4_pattern_forbid' => 1, - 'AC_CONFIG_AUX_DIR' => 1, + 'LT_SUPPORTED_TAG' => 1, 'AM_POT_TOOLS' => 1, - 'AC_CONFIG_HEADERS' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'm4_include' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AM_NLS' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AC_CONFIG_FILES' => 1, + 'AM_PROG_AR' => 1, + '_m4_warn' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, 'include' => 1, - 'AC_CANONICAL_HOST' => 1, - '_AM_COND_ELSE' => 1, + 'AM_NLS' => 1, + 'AC_SUBST' => 1, + 'm4_sinclude' => 1, + 'AC_FC_SRCEXT' => 1, + 'AM_AUTOMAKE_VERSION' => 1, 'sinclude' => 1, - 'AC_FC_PP_SRCEXT' => 1, - '_LT_AC_TAGCONFIG' => 1, + 'AM_INIT_AUTOMAKE' => 1, 'AC_CONFIG_LINKS' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AC_CANONICAL_BUILD' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AC_CANONICAL_TARGET' => 1, - '_AM_COND_IF' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AC_INIT' => 1, 'AC_FC_FREEFORM' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - 'IT_PROG_INTLTOOL' => 1, - 'AM_PROG_CC_C_O' => 1, - 'AC_FC_PP_DEFINE' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AC_FC_SRCEXT' => 1, - 'AC_SUBST' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AM_PATH_GUILE' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'AC_CONFIG_FILES' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'AM_PROG_AR' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'AM_PROG_FC_C_O' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, 'AM_PROG_MOC' => 1, + 'LT_INIT' => 1, + '_AM_COND_IF' => 1, + 'm4_pattern_allow' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AM_PATH_GUILE' => 1, 'AC_SUBST_TRACE' => 1, - 'AC_LIBSOURCE' => 1, - 'AM_PROG_LIBTOOL' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'GTK_DOC_CHECK' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AM_SILENT_RULES' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'm4_sinclude' => 1, - 'AM_PROG_F77_C_O' => 1, - 'AM_CONDITIONAL' => 1, - 'AM_MAKEFILE_INCLUDE' => 1 + 'IT_PROG_INTLTOOL' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_PP_DEFINE' => 1, + '_AM_COND_ELSE' => 1, + 'AC_CANONICAL_BUILD' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -117,69 +117,69 @@ 'configure.ac' ], { - 'AC_FC_FREEFORM' => 1, - 'AC_PROG_LIBTOOL' => 1, + 'GTK_DOC_CHECK' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AM_CONDITIONAL' => 1, 'AM_MAINTAINER_MODE' => 1, - 'AC_INIT' => 1, - '_AM_COND_IF' => 1, - 'AC_CONFIG_LINKS' => 1, 'AC_FC_PP_SRCEXT' => 1, + 'AH_OUTPUT' => 1, + 'AM_SILENT_RULES' => 1, '_LT_AC_TAGCONFIG' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AC_CANONICAL_TARGET' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AM_NLS' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'm4_include' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'sinclude' => 1, - '_AM_COND_ELSE' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'include' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AM_POT_TOOLS' => 1, 'm4_pattern_forbid' => 1, - 'AC_CONFIG_HEADERS' => 1, - '_AM_COND_ENDIF' => 1, - 'LT_INIT' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'AH_OUTPUT' => 1, - '_m4_warn' => 1, - 'm4_pattern_allow' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AC_INIT' => 1, + 'AM_PROG_CXX_C_O' => 1, 'AM_PROG_F77_C_O' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'm4_sinclude' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'AM_CONDITIONAL' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'GTK_DOC_CHECK' => 1, + 'AC_CONFIG_SUBDIRS' => 1, '_AM_SUBST_NOTMAKE' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AM_SILENT_RULES' => 1, - 'AM_PROG_LIBTOOL' => 1, + 'AM_GNU_GETTEXT' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, 'AC_LIBSOURCE' => 1, - 'AC_SUBST_TRACE' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'AM_PROG_MOC' => 1, - 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_CANONICAL_SYSTEM' => 1, 'AM_PROG_AR' => 1, + '_m4_warn' => 1, + 'AC_CONFIG_FILES' => 1, + 'AM_PROG_FC_C_O' => 1, + 'm4_include' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + '_AM_COND_ENDIF' => 1, + 'AM_ENABLE_MULTILIB' => 1, 'LT_SUPPORTED_TAG' => 1, - 'AC_CONFIG_FILES' => 1, - 'AM_PROG_CC_C_O' => 1, + 'AM_POT_TOOLS' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_FC_FREEFORM' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_AUTOMAKE_VERSION' => 1, 'AC_FC_SRCEXT' => 1, + 'sinclude' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_SUBST' => 1, + 'AM_NLS' => 1, + 'm4_sinclude' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'include' => 1, 'AC_FC_PP_DEFINE' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + '_AM_COND_ELSE' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, 'IT_PROG_INTLTOOL' => 1, + 'AC_SUBST_TRACE' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AM_XGETTEXT_OPTION' => 1, 'AM_PATH_GUILE' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'AC_SUBST' => 1, - 'AM_AUTOMAKE_VERSION' => 1 + 'LT_INIT' => 1, + 'AM_PROG_MOC' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'm4_pattern_allow' => 1, + '_AM_COND_IF' => 1 } ], 'Autom4te::Request' ) ); diff --git a/config.log b/config.log index 2a3c581..83e649d 100644 --- a/config.log +++ b/config.log @@ -1,7 +1,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad configure g2867970, which was +It was created by Ironclad configure g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was $ ./configure --target=riscv64-limine-elf @@ -93,7 +93,7 @@ configure:2871: creating ./config.status ## Running config.status. ## ## ---------------------- ## -This file was extended by Ironclad config.status g2867970, which was +This file was extended by Ironclad config.status g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = @@ -164,7 +164,7 @@ ac_cv_target=riscv64-limine-elf ADAFLAGS='-g -O2 -pipe -gnaty -Wall -Wextra' ASFLAGS='-g -O2 -pipe -Wall' BUILDDIR='/home/sean/capstone/ICK-RISCV-Context' -DEFS='-DPACKAGE_NAME=\"Ironclad\" -DPACKAGE_TARNAME=\"ironclad\" -DPACKAGE_VERSION=\"g2867970\" -DPACKAGE_STRING=\"Ironclad\ g2867970\" -DPACKAGE_BUGREPORT=\"https://ironclad.nongnu.org/usersupport.html\" -DPACKAGE_URL=\"\"' +DEFS='-DPACKAGE_NAME=\"Ironclad\" -DPACKAGE_TARNAME=\"ironclad\" -DPACKAGE_VERSION=\"g4411615\" -DPACKAGE_STRING=\"Ironclad\ g4411615\" -DPACKAGE_BUGREPORT=\"https://ironclad.nongnu.org/usersupport.html\" -DPACKAGE_URL=\"\"' ECHO_C='' ECHO_N='-n' ECHO_T='' @@ -189,15 +189,15 @@ OBJDUMP='objdump' OBJDUMP_FOUND='objdump' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_NAME='Ironclad' -PACKAGE_STRING='Ironclad g2867970' +PACKAGE_STRING='Ironclad g4411615' PACKAGE_TARNAME='ironclad' PACKAGE_URL='' -PACKAGE_VERSION='g2867970' +PACKAGE_VERSION='g4411615' PATH_SEPARATOR=':' PERL='perl' PERL_FOUND='perl' SHELL='/bin/bash' -SOURCE_DATE_EPOCH='1739144561' +SOURCE_DATE_EPOCH='1740427559' SRCDIR='/home/sean/capstone/ICK-RISCV-Context' STRIP='strip' STRIP_FOUND='strip' @@ -251,8 +251,8 @@ target_vendor='limine' /* confdefs.h */ #define PACKAGE_NAME "Ironclad" #define PACKAGE_TARNAME "ironclad" -#define PACKAGE_VERSION "g2867970" -#define PACKAGE_STRING "Ironclad g2867970" +#define PACKAGE_VERSION "g4411615" +#define PACKAGE_STRING "Ironclad g4411615" #define PACKAGE_BUGREPORT "https://ironclad.nongnu.org/usersupport.html" #define PACKAGE_URL "" diff --git a/config.status b/config.status index 5b7a726..39f540a 100755 --- a/config.status +++ b/config.status @@ -373,7 +373,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g2867970, which was +This file was extended by Ironclad $as_me g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -412,7 +412,7 @@ Report bugs to ." ac_cs_config='--target=riscv64-limine-elf target_alias=riscv64-limine-elf' ac_cs_version="\ -Ironclad config.status g2867970 +Ironclad config.status g4411615 configured by ./configure, generated by GNU Autoconf 2.71, with options \"$ac_cs_config\" @@ -614,7 +614,7 @@ S["INSTALL_DATA"]="${INSTALL} -m 644" S["INSTALL_SCRIPT"]="${INSTALL}" S["INSTALL_PROGRAM"]="${INSTALL}" S["MKDIR_P"]="/usr/bin/mkdir -p" -S["SOURCE_DATE_EPOCH"]="1739144561" +S["SOURCE_DATE_EPOCH"]="1740427559" S["LDFLAGS"]="-g -O2 -pipe -Wall" S["ASFLAGS"]="-g -O2 -pipe -Wall" S["ADAFLAGS"]="-g -O2 -pipe -gnaty -Wall -Wextra" @@ -628,7 +628,7 @@ S["LIBS"]="" S["ECHO_T"]="" S["ECHO_N"]="-n" S["ECHO_C"]="" -S["DEFS"]="-DPACKAGE_NAME=\\\"Ironclad\\\" -DPACKAGE_TARNAME=\\\"ironclad\\\" -DPACKAGE_VERSION=\\\"g2867970\\\" -DPACKAGE_STRING=\\\"Ironclad\\ g2867970\\\" -DPACKAGE_BUGREPOR"\ +S["DEFS"]="-DPACKAGE_NAME=\\\"Ironclad\\\" -DPACKAGE_TARNAME=\\\"ironclad\\\" -DPACKAGE_VERSION=\\\"g4411615\\\" -DPACKAGE_STRING=\\\"Ironclad\\ g4411615\\\" -DPACKAGE_BUGREPOR"\ "T=\\\"https://ironclad.nongnu.org/usersupport.html\\\" -DPACKAGE_URL=\\\"\\\"" S["mandir"]="${datarootdir}/man" S["localedir"]="${datarootdir}/locale" @@ -655,8 +655,8 @@ S["prefix"]="/usr/local" S["exec_prefix"]="${prefix}" S["PACKAGE_URL"]="" S["PACKAGE_BUGREPORT"]="https://ironclad.nongnu.org/usersupport.html" -S["PACKAGE_STRING"]="Ironclad g2867970" -S["PACKAGE_VERSION"]="g2867970" +S["PACKAGE_STRING"]="Ironclad g4411615" +S["PACKAGE_VERSION"]="g4411615" S["PACKAGE_TARNAME"]="ironclad" S["PACKAGE_NAME"]="Ironclad" S["PATH_SEPARATOR"]=":" diff --git a/configure b/configure index 71b55e5..93e4f8e 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Ironclad g2867970. +# Generated by GNU Autoconf 2.71 for Ironclad g4411615. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g2867970' -PACKAGE_STRING='Ironclad g2867970' +PACKAGE_VERSION='g4411615' +PACKAGE_STRING='Ironclad g4411615' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g2867970 to adapt to many kinds of systems. +\`configure' configures Ironclad g4411615 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g2867970:";; + short | recursive ) echo "Configuration of Ironclad g4411615:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g2867970 +Ironclad configure g4411615 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g2867970, which was +It was created by Ironclad $as_me g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1739144561" +SOURCE_DATE_EPOCH="1740427559" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g2867970, which was +This file was extended by Ironclad $as_me g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g2867970 +Ironclad config.status g4411615 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure~ b/configure~ index 71b55e5..93e4f8e 100755 --- a/configure~ +++ b/configure~ @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Ironclad g2867970. +# Generated by GNU Autoconf 2.71 for Ironclad g4411615. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g2867970' -PACKAGE_STRING='Ironclad g2867970' +PACKAGE_VERSION='g4411615' +PACKAGE_STRING='Ironclad g4411615' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g2867970 to adapt to many kinds of systems. +\`configure' configures Ironclad g4411615 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g2867970:";; + short | recursive ) echo "Configuration of Ironclad g4411615:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g2867970 +Ironclad configure g4411615 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g2867970, which was +It was created by Ironclad $as_me g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1739144561" +SOURCE_DATE_EPOCH="1740427559" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g2867970, which was +This file was extended by Ironclad $as_me g4411615, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g2867970 +Ironclad config.status g4411615 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/ironclad.gpr b/ironclad.gpr index e8d86d9..f4c94dd 100644 --- a/ironclad.gpr +++ b/ironclad.gpr @@ -51,7 +51,7 @@ project Ironclad is ("-fno-stack-protector", "-fno-stack-check", "-fdata-sections", "-ffunction-sections", "-gnateDIroncladName=""" & "Ironclad" & """", - "-gnateDVersion=""" & "g2867970" & """", + "-gnateDVersion=""" & "g4411615" & """", "-gnateDBugSite=""" & "https://ironclad.nongnu.org/usersupport.html" & """", "-gnateDArchName=""" & Arch & """", "-ffile-prefix-map=" & "/home/sean/capstone/ICK-RISCV-Context" & "=.", diff --git a/obj/gnatprove/data_representation/config.ads.stderr b/obj/gnatprove/data_representation/config.ads.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/config.ads.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/config.ads.stdout b/obj/gnatprove/data_representation/config.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/kernel_main.adb.stderr b/obj/gnatprove/data_representation/kernel_main.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/kernel_main.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/kernel_main.adb.stdout b/obj/gnatprove/data_representation/kernel_main.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/scheduler.adb.stderr b/obj/gnatprove/data_representation/scheduler.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/scheduler.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/scheduler.adb.stdout b/obj/gnatprove/data_representation/scheduler.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/userland-loader.adb.stderr b/obj/gnatprove/data_representation/userland-loader.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/userland-loader.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/userland-loader.adb.stdout b/obj/gnatprove/data_representation/userland-loader.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/userland-mac.adb.stderr b/obj/gnatprove/data_representation/userland-mac.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/userland-mac.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/userland-mac.adb.stdout b/obj/gnatprove/data_representation/userland-mac.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/userland-oom_failure.adb.stderr b/obj/gnatprove/data_representation/userland-oom_failure.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/userland-oom_failure.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/userland-oom_failure.adb.stdout b/obj/gnatprove/data_representation/userland-oom_failure.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/userland-syscall.adb.stderr b/obj/gnatprove/data_representation/userland-syscall.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/userland-syscall.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/userland-syscall.adb.stdout b/obj/gnatprove/data_representation/userland-syscall.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/vfs-dev.adb.stderr b/obj/gnatprove/data_representation/vfs-dev.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/vfs-dev.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/vfs-dev.adb.stdout b/obj/gnatprove/data_representation/vfs-dev.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/vfs-ext.adb.stderr b/obj/gnatprove/data_representation/vfs-ext.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/vfs-ext.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/vfs-ext.adb.stdout b/obj/gnatprove/data_representation/vfs-ext.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/vfs-fat.adb.stderr b/obj/gnatprove/data_representation/vfs-fat.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/vfs-fat.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/vfs-fat.adb.stdout b/obj/gnatprove/data_representation/vfs-fat.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation/vfs.adb.stderr b/obj/gnatprove/data_representation/vfs.adb.stderr new file mode 100644 index 0000000..f6ce6a8 --- /dev/null +++ b/obj/gnatprove/data_representation/vfs.adb.stderr @@ -0,0 +1,3 @@ +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/vfs.adb.stdout b/obj/gnatprove/data_representation/vfs.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/data_representation_generation.log b/obj/gnatprove/data_representation_generation.log index f6ce6a8..5232eff 100644 --- a/obj/gnatprove/data_representation_generation.log +++ b/obj/gnatprove/data_representation_generation.log @@ -1,3 +1,36 @@ gcc: error: unrecognized argument in option '-mabi=lp64' gcc: note: valid arguments to '-mabi=' are: ms sysv gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? +gcc: error: unrecognized argument in option '-mabi=lp64' +gcc: note: valid arguments to '-mabi=' are: ms sysv +gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/dea97157.tmp b/obj/gnatprove/dea97157.tmp new file mode 100644 index 0000000..4c55438 --- /dev/null +++ b/obj/gnatprove/dea97157.tmp @@ -0,0 +1 @@ +{"global_gen_mode":true,"output_mode":"GPO_PRETTY_COLOR","exclude_line":"","debug_exec_rac":false,"debug":false,"flow_advanced_debug":false,"flow_generate_contracts":true,"file_specific":{"Ada":{"check_counterexamples":true,"no_loop_unrolling":false,"no_inlining":false,"info_messages":false,"gp_mode":"GPM_ALL"}}} diff --git a/obj/gnatprove/phase1/arch-clocks.ali b/obj/gnatprove/phase1/arch-clocks.ali index 0001eb8..d5f64e4 100644 --- a/obj/gnatprove/phase1/arch-clocks.ali +++ b/obj/gnatprove/phase1/arch-clocks.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-clocks.cswi b/obj/gnatprove/phase1/arch-clocks.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-clocks.cswi +++ b/obj/gnatprove/phase1/arch-clocks.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-context.adb.stderr b/obj/gnatprove/phase1/arch-context.adb.stderr index ab1c07e..e8a3c55 100644 --- a/obj/gnatprove/phase1/arch-context.adb.stderr +++ b/obj/gnatprove/phase1/arch-context.adb.stderr @@ -1,32 +1,8 @@ -arch-context.adb:88:40: error: prefix for "Range" attribute must be array - 88 | pragma Assert ((for all Index in GP_Context'Range => Ctx.To_Element (Index) = 0) and - | ^~~~~~~~~~ +arch-context.adb:213:22: error: quantified expression must be parenthesized + 213 | pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -arch-context.adb:88:63: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 - 88 | pragma Assert ((for all Index in GP_Context'Range => Ctx.To_Element (Index) = 0) and - | ~~~^~~~~~~~~~~ - -arch-context.adb:89:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 - 89 | Ctx.To_Element (1) = Unsigned_32 (To_Integer (Stack) and 16#FFFFFFFF#) and - | ~~~^~~~~~~~~~~ - -arch-context.adb:90:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 - 90 | Ctx.To_Element (2) = Unsigned_32 (To_Integer (Start_Addr) and 16#FFFFFFFF#)); - | ~~~^~~~~~~~~~~ - -arch-context.adb:99:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 - 99 | pragma Assume (Ctx.To_Element (2) /= 0); - | ~~~^~~~~~~~~~~ - -arch-context.adb:126:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 - 126 | pragma Assume (Ctx.To_Element (2) /= 0); - | ~~~^~~~~~~~~~~ - -arch-context.adb:133:25: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 - 133 | pragma Assert (Ctx.To_Element (2) = 0 and Ctx.To_Element (4) = 0); - | ~~~^~~~~~~~~~~ - -arch-context.adb:133:52: error: no selector "To_Element" for type "Frame" defined at arch-interrupts.ads:21 - 133 | pragma Assert (Ctx.To_Element (2) = 0 and Ctx.To_Element (4) = 0); - | ~~~^~~~~~~~~~~ +arch-context.adb:234:22: error: quantified expression must be parenthesized + 234 | pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/obj/gnatprove/phase1/arch-cpu.ali b/obj/gnatprove/phase1/arch-cpu.ali index e400bb0..dbf7add 100644 --- a/obj/gnatprove/phase1/arch-cpu.ali +++ b/obj/gnatprove/phase1/arch-cpu.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-cpu.cswi b/obj/gnatprove/phase1/arch-cpu.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-cpu.cswi +++ b/obj/gnatprove/phase1/arch-cpu.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-debug.ali b/obj/gnatprove/phase1/arch-debug.ali index 2f679f9..e502078 100644 --- a/obj/gnatprove/phase1/arch-debug.ali +++ b/obj/gnatprove/phase1/arch-debug.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-debug.cswi b/obj/gnatprove/phase1/arch-debug.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-debug.cswi +++ b/obj/gnatprove/phase1/arch-debug.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-dtb.ali b/obj/gnatprove/phase1/arch-dtb.ali index dc79746..e8addef 100644 --- a/obj/gnatprove/phase1/arch-dtb.ali +++ b/obj/gnatprove/phase1/arch-dtb.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-dtb.cswi b/obj/gnatprove/phase1/arch-dtb.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-dtb.cswi +++ b/obj/gnatprove/phase1/arch-dtb.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-entrypoint.ali b/obj/gnatprove/phase1/arch-entrypoint.ali index 2923cb4..4242695 100644 --- a/obj/gnatprove/phase1/arch-entrypoint.ali +++ b/obj/gnatprove/phase1/arch-entrypoint.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-entrypoint.cswi b/obj/gnatprove/phase1/arch-entrypoint.cswi index dd2c5c1..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-entrypoint.cswi +++ b/obj/gnatprove/phase1/arch-entrypoint.cswi @@ -1,4 +1,4 @@ -20250222171635 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-hooks.ali b/obj/gnatprove/phase1/arch-hooks.ali index 6a3c2c6..15719cd 100644 --- a/obj/gnatprove/phase1/arch-hooks.ali +++ b/obj/gnatprove/phase1/arch-hooks.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-hooks.cswi b/obj/gnatprove/phase1/arch-hooks.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-hooks.cswi +++ b/obj/gnatprove/phase1/arch-hooks.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-interrupts.ads.stderr b/obj/gnatprove/phase1/arch-interrupts.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-interrupts.ads.stdout b/obj/gnatprove/phase1/arch-interrupts.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-interrupts.ali b/obj/gnatprove/phase1/arch-interrupts.ali new file mode 100644 index 0000000..7cb2ac2 --- /dev/null +++ b/obj/gnatprove/phase1/arch-interrupts.ali @@ -0,0 +1,128 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.interrupts%s arch-interrupts.ads f6a30a26 OO PK +W arch%s arch.ads arch.ali +W interfaces%s interfac.ads interfac.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 2|19r9 39r5 +X 2 arch-interrupts.ads +19K14*Interrupts 1|20k9 2|39l10 39e20 +21R9*Frame 38e15 +22m7*R15{3|81M9} +23m7*R14{3|81M9} +24m7*R13{3|81M9} +25m7*R12{3|81M9} +26m7*R11{3|81M9} +27m7*R10{3|81M9} +28m7*R9{3|81M9} +29m7*R8{3|81M9} +30m7*R7{3|81M9} +31m7*R6{3|81M9} +32m7*R5{3|81M9} +33m7*R4{3|81M9} +34m7*R3{3|81M9} +35m7*R2{3|81M9} +36m7*R1{3|81M9} +37m7*R0{3|81M9} +X 3 interfac.ads +38K9*Interfaces 2|17w6 17r22 3|233e15 +81M9*Unsigned_32 2|22r14 23r14 24r14 25r14 26r14 27r14 28r14 29r14 30r14 +. 31r14 32r14 33r14 34r14 35r14 36r14 37r14 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__interrupts 0 +GG EK_PROOF_DEPENDENCIES ada___arch__interrupts 0 +GG EK_GLOBALS ada___arch__interrupts local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-interrupts.cswi b/obj/gnatprove/phase1/arch-interrupts.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/arch-interrupts.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-limine.ali b/obj/gnatprove/phase1/arch-limine.ali index dcc68a2..4273845 100644 --- a/obj/gnatprove/phase1/arch-limine.ali +++ b/obj/gnatprove/phase1/arch-limine.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-limine.cswi b/obj/gnatprove/phase1/arch-limine.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-limine.cswi +++ b/obj/gnatprove/phase1/arch-limine.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-local.ali b/obj/gnatprove/phase1/arch-local.ali index aac7687..b29fc7c 100644 --- a/obj/gnatprove/phase1/arch-local.ali +++ b/obj/gnatprove/phase1/arch-local.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-local.cswi b/obj/gnatprove/phase1/arch-local.cswi index 1286ce7..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-local.cswi +++ b/obj/gnatprove/phase1/arch-local.cswi @@ -1,4 +1,4 @@ -20250222171637 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-mmu.ali b/obj/gnatprove/phase1/arch-mmu.ali index b373aa3..c02476d 100644 --- a/obj/gnatprove/phase1/arch-mmu.ali +++ b/obj/gnatprove/phase1/arch-mmu.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-mmu.cswi b/obj/gnatprove/phase1/arch-mmu.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-mmu.cswi +++ b/obj/gnatprove/phase1/arch-mmu.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-power.adb.stderr b/obj/gnatprove/phase1/arch-power.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-power.adb.stdout b/obj/gnatprove/phase1/arch-power.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/arch-power.ali b/obj/gnatprove/phase1/arch-power.ali new file mode 100644 index 0000000..3c197d6 --- /dev/null +++ b/obj/gnatprove/phase1/arch-power.ali @@ -0,0 +1,101 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U arch.power%b arch-power.adb d9f41aa6 OO PK +W arch%s arch.ads arch.ali + +U arch.power%s arch-power.ads 7aae2981 OO PK +W arch%s arch.ads arch.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-power.ads 20250222165738 0576051f arch.power%s +D arch-power.adb 20250222165738 dc821fb9 arch.power%b +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 2|17r9 29r5 3|17r14 32r5 +X 2 arch-power.ads +17K14*Power 1|20k9 2|29l10 29e15 3|17b19 32l10 32t15 +19E9*Power_Status 19e49 22r25 25r27 28r29 3|18r25 23r27 28r29 +19n26*Not_Supported{19E9} +19n41*Failure{19E9} 3|20r14 25r14 30r14 +22V13*Halt{19E9} 3|18b13 21l8 21t12 +25V13*Reboot{19E9} 3|23b13 26l8 26t14 +28V13*Poweroff{19E9} 3|28b13 31l8 31t16 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___arch__power__halt 0 +GG EK_PROOF_DEPENDENCIES ada___arch__power__halt 0 +GG EK_GLOBALS ada___arch__power__halt local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__power arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__power__reboot 0 +GG EK_PROOF_DEPENDENCIES ada___arch__power__reboot 0 +GG EK_GLOBALS ada___arch__power__reboot local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__power arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__power__poweroff 0 +GG EK_PROOF_DEPENDENCIES ada___arch__power__poweroff 0 +GG EK_GLOBALS ada___arch__power__poweroff local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__power arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___arch__power 0 +GG EK_PROOF_DEPENDENCIES ada___arch__power 0 +GG EK_GLOBALS ada___arch__power local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__power TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__power__halt FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__power__reboot FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__power__poweroff FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-power.cswi b/obj/gnatprove/phase1/arch-power.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/arch-power.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-snippets.ali b/obj/gnatprove/phase1/arch-snippets.ali index d4e436b..e812ed8 100644 --- a/obj/gnatprove/phase1/arch-snippets.ali +++ b/obj/gnatprove/phase1/arch-snippets.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch-snippets.cswi b/obj/gnatprove/phase1/arch-snippets.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/arch-snippets.cswi +++ b/obj/gnatprove/phase1/arch-snippets.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch.ali b/obj/gnatprove/phase1/arch.ali index 90728bf..76d17eb 100644 --- a/obj/gnatprove/phase1/arch.ali +++ b/obj/gnatprove/phase1/arch.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/arch.cswi b/obj/gnatprove/phase1/arch.cswi index dd2c5c1..2ba9819 100644 --- a/obj/gnatprove/phase1/arch.cswi +++ b/obj/gnatprove/phase1/arch.cswi @@ -1,4 +1,4 @@ -20250222171635 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/config.ali b/obj/gnatprove/phase1/config.ali index 1541b70..531b91a 100644 --- a/obj/gnatprove/phase1/config.ali +++ b/obj/gnatprove/phase1/config.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -42,9 +42,9 @@ RV NO_IMPLEMENTATION_RESTRICTIONS RR NO_ELABORATION_CODE RR NO_OBSOLESCENT_FEATURES -U config%s config.ads 5d21f3bf OO PK +U config%s config.ads 98924657 OO PK -D config.ads 20250222165738 5d21f3bf config%s +D config.ads 20250222165738 98924657 config%s D system.ads 20240507065137 14286b0f system%s D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 G a Z diff --git a/obj/gnatprove/phase1/config.cswi b/obj/gnatprove/phase1/config.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/config.cswi +++ b/obj/gnatprove/phase1/config.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/cryptography-chacha20.adb.stderr b/obj/gnatprove/phase1/cryptography-chacha20.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/cryptography-chacha20.adb.stdout b/obj/gnatprove/phase1/cryptography-chacha20.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/cryptography-chacha20.ali b/obj/gnatprove/phase1/cryptography-chacha20.ali new file mode 100644 index 0000000..0f49b79 --- /dev/null +++ b/obj/gnatprove/phase1/cryptography-chacha20.ali @@ -0,0 +1,146 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U cryptography.chacha20%b cryptography-chacha20.adb a311b42f OO PK +W cryptography%s cryptography.ads cryptography.ali + +U cryptography.chacha20%s cryptography-chacha20.ads b97386be OO PK +W cryptography%s cryptography.ads cryptography.ali +W interfaces%s interfac.ads interfac.ali + +D cryptography.ads 20250222165738 8132c7fc cryptography%s +D cryptography-chacha20.ads 20250222165738 a950b883 cryptography.chacha20%s +D cryptography-chacha20.adb 20250222165738 0a410cac cryptography.chacha20%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 cryptography.ads +17K9*Cryptography 18e17 2|19r9 40r5 3|17r14 65r5 +X 2 cryptography-chacha20.ads +19K22*Chacha20 1|17k9 2|40l18 40e26 3|17b27 65l18 65t26 +28A9*Block(4|81M9) 35r69 3|21r69 27r32 34r11 +29R9*Key 32e15 35r26 3|21r26 +30m7*Value1{4|81M9} 3|30r20 +30m15*Value2{4|81M9} 3|30r38 +30m23*Value3{4|81M9} 3|30r56 +30m31*Value4{4|81M9} 3|30r73 +31m7*Value5{4|81M9} 3|31r20 +31m15*Value6{4|81M9} 3|31r38 +31m23*Value7{4|81M9} 3|31r56 +31m31*Value8{4|81M9} 3|31r73 +35V13*Gen_Key{28A9} 35>22 35>31 35>38 3|21b13 56l8 56t15 +35r22 K{29R9} 3|21b22 30r18 30r36 30r54 30r71 31r18 31r36 31r54 31r71 +35m31 Nonce{4|84M9} 3|21b31 24r49 25r49 +35m38 Block_ID{4|84M9} 3|21b38 22r49 23r49 +39U14 Quarter_Round 39=29 39=32 39=35 39=38 3|39s10 40s10 41s10 42s10 45s10 +. 46s10 47s10 48s10 58b14 64l8 64t21 +39m29 A{4|81M9} 3|58b29 60m7 60r12 60r30 62m7 62r12 62r30 +39m32 B{4|81M9} 3|58b32 60r16 61m19 61r24 61m33 61r51 62r16 63m19 63r24 63m33 +. 63r51 +39m35 C{4|81M9} 3|58b35 61m7 61r12 61r30 63m7 63r12 63r30 +39m38 D{4|81M9} 3|58b38 60m19 60r24 60m33 60r51 61r16 62m19 62r24 62m33 62r51 +. 63r16 +X 3 cryptography-chacha20.adb +22m7 UB{4|84M9} 32r23 +23m7 LB{4|84M9} 32r41 +24m7 UN{4|84M9} 32r59 +25m7 LN{4|84M9} 32r77 +27a7 Initial_Block{2|28A9} 34r20 53r27 +34a7 B{2|28A9} 39m25 39r25 39m32 39r32 39m39 39r39 39m47 39r47 40m25 40r25 +. 40m32 40r32 40m39 40r39 40m47 40r47 41m25 41r25 41m32 41r32 41m39 41r39 +. 41m47 41r47 42m25 42r25 42m32 42r32 42m39 42r39 42m47 42r47 45m25 45r25 +. 45m32 45r32 45m39 45r39 45m47 45r47 46m25 46r25 46m32 46r32 46m39 46r39 +. 46m47 46r47 47m25 47r25 47m32 47r32 47m39 47r39 47m47 47r47 48m25 48r25 +. 48m32 48r32 48m39 48r39 48m47 48r47 52r16 53m10 53r19 55r14 +37i11 I{integer} +52i11 I{integer} 53r13 53r22 53r42 +X 4 interfac.ads +38K9*Interfaces 2|17w6 17r22 4|233e15 +81M9*Unsigned_32 2|28r37 30r40 31r40 39r49 3|32r10 32r28 32r46 32r64 58r49 +84M9*Unsigned_64 2|35r49 3|21r49 22r21 23r21 24r21 25r21 +156V13*Rotate_Left{81M9} 3|60s38 61s38 62s38 63s38 +171V13*Shift_Right{84M9} 3|22s36 23s36 24s36 25s36 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___cryptography__chacha20__gen_key 2 ada___cryptography__chacha20__quarter_round interfaces__shift_right__4 +GG EK_PROOF_DEPENDENCIES ada___cryptography__chacha20__gen_key 0 +GG EK_GLOBALS ada___cryptography__chacha20__gen_key local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___cryptography__chacha20 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__chacha20__quarter_round 1 interfaces__rotate_left__3 +GG EK_PROOF_DEPENDENCIES ada___cryptography__chacha20__quarter_round 0 +GG EK_GLOBALS ada___cryptography__chacha20__quarter_round local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__chacha20 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__chacha20 0 +GG EK_PROOF_DEPENDENCIES ada___cryptography__chacha20 0 +GG EK_GLOBALS ada___cryptography__chacha20 local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__chacha20__gen_key FALSE FALSE FALSE FALSE TRUE ada___cryptography__chacha20 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__chacha20 TRUE FALSE FALSE FALSE FALSE cryptography +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__chacha20__quarter_round FALSE FALSE FALSE FALSE TRUE ada___cryptography__chacha20 PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/cryptography-chacha20.cswi b/obj/gnatprove/phase1/cryptography-chacha20.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/cryptography-chacha20.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/cryptography-md5.adb.stderr b/obj/gnatprove/phase1/cryptography-md5.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/cryptography-md5.adb.stdout b/obj/gnatprove/phase1/cryptography-md5.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/cryptography-md5.ali b/obj/gnatprove/phase1/cryptography-md5.ali new file mode 100644 index 0000000..a02e28b --- /dev/null +++ b/obj/gnatprove/phase1/cryptography-md5.ali @@ -0,0 +1,147 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U cryptography.md5%b cryptography-md5.adb 037874d4 OO PK +W cryptography%s cryptography.ads cryptography.ali + +U cryptography.md5%s cryptography-md5.ads d7f8ddfd OO PK +W cryptography%s cryptography.ads cryptography.ali +W interfaces%s interfac.ads interfac.ali + +D cryptography.ads 20250222165738 8132c7fc cryptography%s +D cryptography-md5.ads 20250222165738 c7dbe3c0 cryptography.md5%s +D cryptography-md5.adb 20250222165738 c4a39714 cryptography.md5%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 cryptography.ads +17K9*Cryptography 18e17 2|19r9 36r5 3|17r14 119r5 +X 2 cryptography-md5.ads +19K22*MD5 1|17k9 2|36l18 36e21 3|17b27 119l18 119t21 +21A9*MD5_Hash(4|81M9) 27r47 30r31 3|50r47 96r31 100r18 +22A9*MD5_Block(4|81M9)<4|81M9> 23r51 +23A9*MD5_Blocks(22A9) 27r28 3|50r28 +27V13*Digest{21A9} 27>21 3|50b13 94l8 94t14 +27a21 Data{23A9} 3|50b21 58r20 80r40 +29A12*MD5_String{string} 30r48 3|96r48 101r18 +30V13*To_String{29A12} 30>24 3|96b13 118l8 118t17 +30a24 Hash{21A9} 3|96b24 106r31 +34V13 BSwap32{4|81M9} 34>22 35b30 3|106s22 +34m22 V{4|81M9} +X 3 cryptography-md5.adb +26a4 S(natural) 84r50 +32a4 K(4|81M9) 64r19 80r32 +51m7 Total_A{4|81M9} 59r21 87m10 87r21 93r15 +52m7 Total_B{4|81M9} 60r21 88m10 88r21 93r24 +53m7 Total_C{4|81M9} 61r21 89m10 89r21 93r33 +54m7 Total_D{4|81M9} 62r21 90m10 90r21 93r42 +55m7 Round_A{4|81M9} 59m10 80r22 81m13 87r31 +55m16 Round_B{4|81M9} 60m10 66r22 66r52 69r34 72r21 75r34 83r24 84m13 84r24 +. 88r31 +55m25 Round_C{4|81M9} 61m10 66r34 69r65 72r33 75r21 82r24 83m13 89r31 +55m34 Round_D{4|81M9} 62m10 66r65 69r22 69r52 72r45 75r50 81r24 82m13 90r31 +56m7 F{4|81M9} 66m16 69m16 72m16 75m16 80m13 80r18 84r47 +56m10 G{4|81M9} 67m16 70m16 73m16 76m16 78r36 80r47 +58a11 Block=58:20{2|22A9} +64m14 I{4|81M9} 65r16 67r21 68r19 70r26 71r19 73r26 76r26 80r35 84r53 +97a7 Hex_Chars(character) 112r34 +100a7 Item{2|21A9} 105r16 106m10 109r27 110r18 +101a7 Result{2|29A12} 103r32 103r52 103r67 111r27 112m13 117r14 +102m7 Temp{4|81M9} 110m10 112r54 114m13 114r34 +103i7 Position{integer} 111r16 112r21 113m13 113r34 +105i11 I{integer} 106r16 106r37 +109i11 Part{integer} 110r24 111r46 +X 4 interfac.ads +38K9*Interfaces 2|17w6 17r22 4|233e15 +81M9*Unsigned_32 2|21r41 22r30 22r60 34r26 34r46 3|26r24 32r24 32r54 51r17 +. 52r17 53r17 54r17 55r44 56r14 102r18 +156V13*Rotate_Left{81M9} 3|84s34 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___cryptography__md5__digest 1 interfaces__rotate_left__3 +GG EK_PROOF_DEPENDENCIES ada___cryptography__md5__digest 0 +GG EK_GLOBALS ada___cryptography__md5__digest local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___cryptography__md5 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__md5__to_string 1 ada___cryptography__md5__bswap32 +GG EK_PROOF_DEPENDENCIES ada___cryptography__md5__to_string 0 +GG EK_GLOBALS ada___cryptography__md5__to_string local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___cryptography__md5 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__md5__bswap32 0 +GG EK_PROOF_DEPENDENCIES ada___cryptography__md5__bswap32 0 +GG EK_GLOBALS ada___cryptography__md5__bswap32 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___cryptography__md5 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__md5 0 +GG EK_PROOF_DEPENDENCIES ada___cryptography__md5 0 +GG EK_GLOBALS ada___cryptography__md5 local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__md5__bswap32 FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__md5 TRUE FALSE FALSE FALSE FALSE cryptography +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__md5__to_string FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/cryptography-md5.cswi b/obj/gnatprove/phase1/cryptography-md5.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/cryptography-md5.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/cryptography-random.adb.stderr b/obj/gnatprove/phase1/cryptography-random.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/cryptography-random.adb.stdout b/obj/gnatprove/phase1/cryptography-random.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/cryptography-random.ali b/obj/gnatprove/phase1/cryptography-random.ali new file mode 100644 index 0000000..4707578 --- /dev/null +++ b/obj/gnatprove/phase1/cryptography-random.ali @@ -0,0 +1,324 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_UNCHECKED_CONVERSION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U cryptography.random%b cryptography-random.adb e0281b8a OO PK +W ada%s ada.ads ada.ali +W ada.unchecked_conversion%s a-unccon.ads a-unccon.ali +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W cryptography%s cryptography.ads cryptography.ali +W cryptography.chacha20%s cryptography-chacha20.adb cryptography-chacha20.ali +W cryptography.md5%s cryptography-md5.adb cryptography-md5.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W memory.physical%s memory-physical.adb memory-physical.ali + +U cryptography.random%s cryptography-random.ads ef42219b OO PK +W cryptography%s cryptography.ads cryptography.ali +W interfaces%s interfac.ads interfac.ali +N A35:4 gnatprove false_positive "postcondition might fail" "Counterexample works, could be a gnatprove bug?" + +D ada.ads 20240507065137 76789da1 ada%s +D a-unccon.ads 20240507065137 0e9b276f ada.unchecked_conversion%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D cryptography.ads 20250222165738 8132c7fc cryptography%s +D cryptography-chacha20.ads 20250222165738 a950b883 cryptography.chacha20%s +D cryptography-md5.ads 20250222165738 c7dbe3c0 cryptography.md5%s +D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s +D cryptography-random.adb 20250222165738 d5415301 cryptography.random%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D i-c.ads 20240507065137 aac316ce interfaces.c%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s +D system.ads 20240507065137 14286b0f system%s +D s-parame.ads 20240507065137 3597fc11 system.parameters%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 9|17r6 42r31 +X 2 a-unccon.ads +20v14*Unchecked_Conversion 9|17w10 42r35 +X 3 arch.ads +20K9*Arch 52e9 9|19r6 57r7 119r7 120r7 +X 4 arch-clocks.ads +19K14*Clocks 45e16 9|19w11 57r12 119r12 120r12 +31U14*Get_Monotonic_Time 9|57s19 120s19 +39U14*Get_Real_Time 9|119s19 +X 5 cryptography.ads +17K9*Cryptography 18e17 8|19r9 40r5 9|21r6 22r6 25r14 143r5 +X 6 cryptography-chacha20.ads +19K22*Chacha20 40e26 9|21w19 42r63 46r21 62r28 +28A9*Block(10|81M9) 9|46r30 +29R9*Key 32e15 9|42r72 +35V13*Gen_Key{28A9} 9|62s37 +X 7 cryptography-md5.ads +19K22*MD5 36e21 9|22w19 34r26 38r25 56r25 116r25 116r41 +21A9*MD5_Hash(10|81M9) 9|38r29 116r29 +22A9*MD5_Block(10|81M9)<10|81M9> +23A9*MD5_Blocks(22A9) 9|34r30 +27V13*Digest{21A9} 9|56s29 116s45 +X 8 cryptography-random.ads +19K22*Random 5|17k9 8|40l18 40e24 9|25b27 143l18 143t24 +21A9*Crypto_Data(10|70M9) 22r36 9|36r36 94r14 +22U14*Fill_Data 22<25 9|36b14 84l8 84t17 96s7 +22a25 Data{21A9} 9|36b25 60r20 74m10 +25U14*Feed_Entropy 25>28 9|86b14 91l8 91t20 +25m28 Data{10|81M9} 9|86b28 89r70 +28U14*Get_Integer 28<27 9|93b14 105l8 105t19 109s7 +28m27 Result{10|84M9} 9|93b27 97m7 +32U14*Get_Integer 32>27 32>32 32<51 9|107b14 111l8 111t19 +32m27 Min{10|84M9} 33r27 34r20 9|107b27 110r40 110r48 +32m32 Max{10|84M9} 33r20 33r35 34r48 9|107b32 110r30 +32m51 Result{10|84M9} 34r27 34r38 9|107b51 109m20 110m7 110r18 +39U14 Entropy_Adjust 9|54s7 113b14 142l8 142t22 +X 9 cryptography-random.adb +33r4 Accumulator_Mutex{13|22R9} 52m14 52r14 83m16 83r16 88m14 88r14 90m16 +. 90r16 +34a4 Entropy_Accumulator{7|23A9} 56r37 89m7 89r38 116r53 125m7 +37R12 Seed 41e18 42r57 44r21 +38a10 Entropy_Hash{7|21A9} 56m9 +39m10 Mono_Sec{10|84M9} 57m41 +40m10 Mono_NSec{10|84M9} 57m53 58r18 +42V16 To_Seed[2|20]{6|29R9} +42V16 To_Seed[2|20]{6|29R9} 62s46 +44r7 S{37R12} 56m7 57m39 57r39 57m51 57r51 58r16 62r55 +45m7 Nonce{10|84M9} 58m7 62r59 +46a7 Cha_Block{6|28A9} 47r36 61r21 62m13 63r28 68r44 69r44 70r44 71r44 +47i7 Index{natural} 61r13 63m13 68r55 69r55 70r55 71r55 78m13 78r27 +48i7 Mini_Index{natural} 67r15 76m10 76r24 77r13 79m13 +49m7 Block_Index{10|84M9} 62r66 64m13 64r28 +50m7 Temp{10|81M9} 68m23 69m23 70m23 71m23 74r31 +60m11 Value=60:20{10|70M9} +94a7 Data{8|21A9} 96m18 97r42 98r42 99r42 100r42 101r42 102r42 103r42 104r42 +114m7 RSec{10|84M9} 119m34 130r43 131r30 +114m13 RNSec{10|84M9} 119m40 132r43 133r30 +114m20 MSec{10|84M9} 120m39 126r43 127r30 +114m26 MNSec{10|84M9} 120m45 140r30 +114m33 Avail{10|84M9} 122m7 128r43 129r30 +114m40 Free{10|84M9} 123m7 138r43 139r30 +115r7 S{15|47R9} 118m23 122r29 123r29 +116a7 Hashed{7|21A9} 134r17 135r17 136r17 137r17 +17R9 Source{37R12} 20r40[42] +18R9 Target{6|29R9} 20r55[42] +X 10 interfac.ads +38K9*Interfaces 8|17w6 17r22 10|233e15 +70M9*Unsigned_8 8|21r52 9|74r19 +81M9*Unsigned_32 8|25r35 9|50r21 86r35 126r17 127r17 128r17 129r17 130r17 +. 131r17 132r17 133r17 138r17 139r17 140r17 +84M9*Unsigned_64 8|28r40 32r38 32r64 33r42 9|39r25 40r25 45r21 49r21 93r40 +. 97r29 98r29 99r29 100r29 101r29 102r29 103r29 104r29 107r38 107r64 114r47 +. 122r16 123r16 +146V13*Shift_Right{81M9} 9|68s31 69s31 70s31 71s31 +166V13*Shift_Left{84M9} 9|97s17 98s17 99s17 100s17 101s17 102s17 103s17 104s17 +171V13*Shift_Right{84M9} 9|126s30 128s30 130s30 132s30 138s30 +X 12 lib.ads +19K9*Lib 9|23r6 23r31 12|35e8 +X 13 lib-synchronization.ads +20K13*Synchronization 9|23w10 23r35 13|66e24 +22R9*Binary_Semaphore 9|33r34 13|57e14 +23r4*Unlocked_Semaphore{22R9} 9|33r54 +27U14*Seize 9|52s7 88s7 +31U14*Release 9|83s7 90s7 +X 14 memory.ads +19K9*Memory 9|18r6 18r27 20w6 20r18 115r16 14|36e11 +20M9*Size +X 15 memory-physical.ads +20K16*Physical 9|18w13 18r34 115r23 15|60e20 +47R9*Statistics 9|115r32 15|51e14 +49m7*Available{14|20M9} 9|122r31 +50m7*Free{14|20M9} 9|123r31 +55U14*Get_Statistics 9|118s7 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___cryptography__random__fill_data__to_seed 0 +GG EK_PROOF_DEPENDENCIES ada___cryptography__random__fill_data__to_seed 0 +GG EK_GLOBALS ada___cryptography__random__fill_data__to_seed local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___cryptography__random__fill_data ada___cryptography__random cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__random__fill_data 7 ada___cryptography__random__entropy_adjust interfaces__shift_right__3 ada___arch__clocks__get_monotonic_time ada___cryptography__chacha20__gen_key ada___cryptography__md5__digest ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___cryptography__random__fill_data 1 ada___cryptography__random__fill_data__to_seed +GG EK_GLOBALS ada___cryptography__random__fill_data local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state proper_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state calls_proof 0 calls 3 ada___memory__physical__get_statistics ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___cryptography__chacha20__gen_key ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__random__feed_entropy 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___cryptography__random__feed_entropy 0 +GG EK_GLOBALS ada___cryptography__random__feed_entropy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator proper_output 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator refined_proof_in 0 refined_input 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator refined_output 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__random__get_integer 2 ada___cryptography__random__fill_data interfaces__shift_left__4 +GG EK_PROOF_DEPENDENCIES ada___cryptography__random__get_integer 0 +GG EK_GLOBALS ada___cryptography__random__get_integer local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state proper_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state calls_proof 0 calls 3 ada___memory__physical__get_statistics ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___cryptography__chacha20__gen_key ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__random__get_integer__2 1 ada___cryptography__random__get_integer +GG EK_PROOF_DEPENDENCIES ada___cryptography__random__get_integer__2 0 +GG EK_GLOBALS ada___cryptography__random__get_integer__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state proper_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state calls_proof 0 calls 3 ada___memory__physical__get_statistics ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___cryptography__chacha20__gen_key ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__random__entropy_adjust 5 interfaces__shift_right__4 ada___memory__physical__get_statistics ada___arch__clocks__get_monotonic_time ada___arch__clocks__get_real_time ada___cryptography__md5__digest +GG EK_PROOF_DEPENDENCIES ada___cryptography__random__entropy_adjust 0 +GG EK_GLOBALS ada___cryptography__random__entropy_adjust local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state proper_output 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_output 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state calls_proof 0 calls 1 ada___memory__physical__get_statistics calls_conditional 1 ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state LOCKS 0 +GG EK_DIRECT_CALLS ada___cryptography__random 0 +GG EK_PROOF_DEPENDENCIES ada___cryptography__random 0 +GG EK_GLOBALS ada___cryptography__random local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator refined_initializes 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__fill_data__to_seedGP1736 TRUE FALSE FALSE FALSE TRUE ada___cryptography__random__fill_data BODY_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__chacha20__gen_key FALSE FALSE FALSE FALSE TRUE ada___cryptography__chacha20 VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__chacha20__quarter_round FALSE FALSE FALSE FALSE TRUE ada___cryptography__chacha20 PRIVATE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces +GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_conversion FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__md5 TRUE FALSE FALSE FALSE FALSE cryptography +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__md5__to_string FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__md5__bswap32 FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__fill_data__to_seed FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___cryptography__random__fill_data__to_seedGP1736 VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__chacha20 TRUE FALSE FALSE FALSE FALSE cryptography +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART +GG EK_REMOTE_STATES 2 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/cryptography-random.cswi b/obj/gnatprove/phase1/cryptography-random.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/cryptography-random.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/cryptography.ads.stderr b/obj/gnatprove/phase1/cryptography.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/cryptography.ads.stdout b/obj/gnatprove/phase1/cryptography.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/cryptography.ali b/obj/gnatprove/phase1/cryptography.ali new file mode 100644 index 0000000..ce9e907 --- /dev/null +++ b/obj/gnatprove/phase1/cryptography.ali @@ -0,0 +1,59 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U cryptography%s cryptography.ads 8132c7fc OO PK + +D cryptography.ads 20250222165738 8132c7fc cryptography%s +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 cryptography.ads +17K9*Cryptography 18l5 18e17 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS cryptography 0 +GG EK_PROOF_DEPENDENCIES cryptography 0 +GG EK_GLOBALS cryptography local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/cryptography.cswi b/obj/gnatprove/phase1/cryptography.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/cryptography.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-console.ali b/obj/gnatprove/phase1/devices-console.ali index 0b9fed3..228dc8b 100644 --- a/obj/gnatprove/phase1/devices-console.ali +++ b/obj/gnatprove/phase1/devices-console.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/devices-console.cswi b/obj/gnatprove/phase1/devices-console.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/devices-console.cswi +++ b/obj/gnatprove/phase1/devices-console.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-loopback.ali b/obj/gnatprove/phase1/devices-loopback.ali index 85154f5..e865b16 100644 --- a/obj/gnatprove/phase1/devices-loopback.ali +++ b/obj/gnatprove/phase1/devices-loopback.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/devices-loopback.cswi b/obj/gnatprove/phase1/devices-loopback.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/devices-loopback.cswi +++ b/obj/gnatprove/phase1/devices-loopback.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-netinter.ads.stderr b/obj/gnatprove/phase1/devices-netinter.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-netinter.ads.stdout b/obj/gnatprove/phase1/devices-netinter.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-netinter.ali b/obj/gnatprove/phase1/devices-netinter.ali new file mode 100644 index 0000000..4554d44 --- /dev/null +++ b/obj/gnatprove/phase1/devices-netinter.ali @@ -0,0 +1,161 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.netinter%s devices-netinter.ads 557aa7c4 OO PK +W devices%s devices.adb devices.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-netinter.ads 20250222165738 a12468cd devices.netinter%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 3 devices.ads +22K9*Devices 279e12 4|17r9 20r5 +X 4 devices-netinter.ads +17K17*NetInter 3|22k9 4|20l13 20e21 +19N4*NET_GETMAC + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___devices__netinter 0 +GG EK_PROOF_DEPENDENCIES ada___devices__netinter 0 +GG EK_GLOBALS ada___devices__netinter local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__netinter TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-netinter.cswi b/obj/gnatprove/phase1/devices-netinter.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/devices-netinter.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-partitions.adb.stderr b/obj/gnatprove/phase1/devices-partitions.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-partitions.adb.stdout b/obj/gnatprove/phase1/devices-partitions.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-partitions.ali b/obj/gnatprove/phase1/devices-partitions.ali new file mode 100644 index 0000000..f0c4b8b --- /dev/null +++ b/obj/gnatprove/phase1/devices-partitions.ali @@ -0,0 +1,438 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.partitions%b devices-partitions.adb b1f0e17e OO PK +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W devices%s devices.adb devices.ali +W system%s system.ads system.ali +W system.address_to_access_conversions%s s-atacco.ads s-atacco.ali + +U devices.partitions%s devices-partitions.ads 1cd28138 OO PK +W devices%s devices.adb devices.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-partitions.ads 20250222165738 e88c4e31 devices.partitions%s +D devices-partitions.adb 20250222165738 c2bce090 devices.partitions%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-atacco.ads 20240507065137 5868e3ba system.address_to_access_conversions%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 7|18r6 107r26 +X 2 a-uncdea.ads +20u15*Unchecked_Deallocation 7|18w10 107r30 +X 5 devices.ads +22K9*Devices 279e12 6|17r9 79r5 7|20r14 108r8 108r32 121r14 139r40 140r16 +. 141r14 155r7 177r10 232r40 233r16 234r14 242r7 333r7 369r7 381r14 395r14 +. 400r5 +29A9*Operation_Data(8|70M9) 6|60r26 68r22 7|108r16 141r22 234r22 +. 308r26 344r22 +30P9*Operation_Data_Acc(29A9) 7|108r40 140r24 233r24 +34A9*UUID(8|70M9) 6|55r21 7|63r33 89r26 283r21 +40m7*Data{12|67M9} 7|288m10 +41a7*ID{34A9} 7|290m10 +42b7*Is_Block{boolean} 7|289m10 +43i7*Block_Size{natural} 7|291m10 +44m7*Block_Count{8|84M9} 7|292m10 +46p7*Read 7|295m10 +53p7*Write 7|296m10 +60p7*Sync(boolean) 7|293m10 +61p7*Sync_Range(boolean) 7|294m10 +65p7*IO_Control(boolean) 7|297m10 +69p7*Mmap(boolean) 7|298m10 +75p7*Poll 7|299m10 +83I9*Device_Handle 6|26r15 33r27 38r27 44r22 7|117r15 135r27 228r27 +98U14*Register 7|287s7 +150V13*Is_Block_Device{boolean} 7|121s22 +154V13*Get_Block_Size{natural} 7|139s48 232s48 +179V13*Synchronize{boolean} 7|381s22 395s22 +193U14*Read 7|155s15 177s18 242s15 333s15 +210U14*Write 7|369s15 +X 6 devices-partitions.ads +17K17*Partitions 5|22k9 6|79l13 79e23 7|20b22 400l13 400t23 +24V13*Parse_Partitions{boolean} 25>8 26>8 7|115b13 131l8 131t24 +25a8 Name{string} 7|116b8 125r29 129r29 +26i8 Dev{5|83I9} 7|117b8 121r39 125r35 129r35 +31U14 Parse_GPT_Partitions 32>8 33>8 34<8 35<8 7|125s7 133b14 224l8 224t28 +32a8 Name{string} 7|134b8 209r23 +33i8 Dev{5|83I9} 7|135b8 139r64 156r24 178r27 202r38 +34b8 Found_Partitions{boolean} 7|136b8 154m7 200m19 +35b8 Success{boolean} 7|137b8 153m7 160m24 161r14 162m10 168m10 182m27 183r17 +. 184m13 194m19 211m22 +36U14 Parse_MBR_Partitions 37>8 38>8 39<8 40<8 7|129s7 226b14 276l8 276t28 +37a8 Name{string} 7|227b8 267r30 +38i8 Dev{5|83I9} 7|228b8 232r64 243r24 263r33 +39b8 Found_Partitions{boolean} 7|229b8 241m7 261m13 +40b8 Success{boolean} 7|230b8 240m7 247m24 248r14 249m10 255m10 268m16 +43R9 Partition_Data 48e14 49r42 7|111r62 201r31 262r25 +44i7*Inner_Device{5|83I9} 7|202m22 263m17 334r29 370r29 382r26 396r26 +45i7*Block_Size{natural} 7|203m22 264m17 318r57 319r57 354r57 355r57 383r57 +. 384r57 397r58 +46m7*LBA_Offset{8|84M9} 7|204m22 265m17 318r26 354r26 383r26 397r27 +47m7*LBA_Length{8|84M9} 7|205m22 266m17 292r30 319r26 355r26 384r26 +49P9 Partition_Data_Acc(43R9) 54r21 7|144r16 237r17 282r21 314r14 317r21 +. 350r14 353r21 378r23 379r10 392r23 393r10 +50V13 Set_Part{boolean} 51>8 52>8 53>8 54>8 55>8 7|208s26 267s20 278b13 303l8 +. 303t16 +51a8 Name{string} 7|279b8 300r10 +52i8 Index{positive} 7|280b8 300r48 +53i8 Block_Size{natural} 7|281b8 291r25 +54p8 Part{49P9} 7|282b8 288r63 292r25 +55a8 ID{5|34A9} 7|283b8 290r25 +57U14 Read 58>8 59>8 60<8 61<8 62<8 63>8 7|295r25 305b14 339l8 339t12 +58m8 Key{12|67M9} 7|306b8 317r58 +59m8 Offset{8|84M9} 7|307b8 321r10 327r10 328r38 335r37 +60a8 Data{5|29A9} 7|308b8 327r19 330r25 337m20 337r20 337r26 337r40 +61i8 Ret_Count{natural} 7|309b8 322m10 336m24 +62b8 Success{boolean} 7|310b8 323m10 338m24 +63b8 Is_Blocking{boolean} 7|311b8 313r28 +65U14 Write 66>8 67>8 68>8 69<8 70<8 71>8 7|296r25 341b14 375l8 375t13 +66m8 Key{12|67M9} 7|342b8 353r58 +67m8 Offset{8|84M9} 7|343b8 357r10 363r10 364r38 371r37 +68a8 Data{5|29A9} 7|344b8 363r19 366r25 373r20 373r26 373r40 +69i8 Ret_Count{natural} 7|345b8 358m10 372m24 +70b8 Success{boolean} 7|346b8 359m10 374m24 +71b8 Is_Blocking{boolean} 7|347b8 349r28 +73V13 Sync{boolean} 73>19 7|293r25 377b13 385l8 385t12 +73m19 Key{12|67M9} 7|377b19 379r47 +75V13 Sync_Range{boolean} 76>8 77>8 78>8 7|294r25 387b13 399l8 399t18 +76m8 Key{12|67M9} 7|388b8 393r47 +77m8 Offset{8|84M9} 7|389b8 397r73 +78m8 Count{8|84M9} 7|390b8 398r21 +X 7 devices-partitions.adb +22A9 MBR_Byte_Data(8|70M9) 25r26 27r26 41r24 43r24 +23R9 MBR_Entry 30e15 31r8 39r42 +24m7*Status{8|70M9} 32r7 +25a7*CHS_First_Sector{22A9} 33r7 +26m7*Entry_Type{8|70M9} 34r7 +27a7*CHS_Last_Sector{22A9} 35r7 +28m7*First_Sector{8|81M9} 36r7 265r62 +29m7*Sector_Count{8|81M9} 37r7 260r29 266r62 +39A9 MBR_Entries(23R9) 42r24 +40R9 MBR_Data 44e15 45r8 50r36 112r62 +41a7*Boot_Code{22A9} 46r7 +42a7*Entries{39A9} 47r7 259r20 260r17 265r50 266r50 +43a7*Boot_Signature{22A9} 48r7 254r14 +50P9 MBR_Data_Acc(40R9) 236r17 252r14 +53R9 GPT_Header 68e15 69r8 85r38 113r62 +54a7*Signature{string} 70r7 167r14 +55m7*Revision{8|81M9} 71r7 +56m7*Header_Size{8|81M9} 72r7 +57m7*CRC32{8|81M9} 73r7 +58m7*Reserved_0{8|81M9} 74r7 +59m7*Current_LBA{8|84M9} 75r7 +60m7*Backup_LBA{8|84M9} 76r7 +61m7*First_Usable_LBA{8|84M9} 77r7 +62m7*Last_Usable_LBA{8|84M9} 78r7 +63a7*GUID{5|34A9} 79r7 +64m7*Partition_Entry_LBA{8|84M9} 80r7 +65m7*Number_Of_Partitions{8|81M9} 81r7 172r40 +66m7*Partition_Entry_Size{8|81M9} 82r7 174r53 +67m7*Partition_Entries_CRC32{8|81M9} 83r7 +85P9 GPT_Header_Acc(53R9) 143r16 165r14 +86R9 GPT_Partition_Entry 94e15 95r8 104r52 +87m7*Type_GUID_High{8|84M9} 96r7 197r29 +88m7*Type_GUID_Low{8|84M9} 97r7 198r29 +89a7*GUID{5|34A9} 98r7 209r70 +90m7*Starting_LBA{8|84M9} 99r7 204r48 206r48 +91m7*Ending_LBA{8|84M9} 100r7 205r48 +92m7*Attributes{8|84M9} 101r7 +93a7*Partition_Name{wide_string} 102r7 +104A9 GPT_Entries(86R9) 189r25 +107U14 Free[2|20] +107U14*Free[2|20] 223s7 275s7 +111K12 Con1[13|39] 288r25 288r42 317r41 353r41 379r30 393r30 +112K12 Con2[13|39] 252r28 +113K12 Con3[13|39] 165r30 +119b7 Success{boolean} 125m58 126r10 129m58 130r14 +119b16 Found_Partitions{boolean} 125m40 126r22 129m40 +139i7 Block_Size{natural} 141r43 157r37 161r41 173r27 174r27 183r44 203r38 +. 209r42 219r27 +140p7 Sector{5|30P9} 142r44 159r24 181r27 223m13 223r13 +142m7 S_Addr{12|67M9} 165r47 190r36 +143p7 GPT{85P9} 165m7 167r10 172r36 174r49 +144p7 Part{6|49P9} 201m19 209r54 +146i7 Parts_Per_Sector{natural} 174m7 189r43 +147i7 Part_Count{natural} 172m7 193r24 +148i7 Block{natural} 173m7 179r40 219m10 219r19 +149i7 I{natural} 193r19 216m16 216r21 +150i7 Added_Index{natural} 209r29 214m19 214r34 +151i7 Block_Return{natural} 158m24 161r25 180m27 183r28 +189a13 GPT_Parts{104A9} 192r30 197r19 198r19 204r38 205r38 206r38 209r60 +192r17 Partition=192:30{86R9} +222L6 Return_End 163r15 169r15 185r18 195r24 212r27 +232i7 Block_Size{natural} 234r43 248r41 264r33 267r39 +233p7 Sector{5|30P9} 235r44 246r24 275m13 275r13 +235m7 S_Addr{12|67M9} 252r45 +236p7 MBR{50P9} 252m7 254r10 259r16 260r13 265r46 266r46 +237p7 Part{6|49P9} 262m13 267r51 +238i7 Block_Return{natural} 245m24 248r25 +259i11 I{integer} 260r26 265r59 266r59 267r36 +274L6 Return_End 250r15 256r15 269r21 +285b7 Success{boolean} 301m10 302r14 +314p7 Part{6|49P9} 317m7 318r21 318r52 319r21 319r52 334r24 +315m7 LBA_Offset{8|84M9} 318m7 321r19 327r33 335r24 +315m19 LBA_Length{8|84M9} 319m7 321r32 327r46 328r25 +315m31 Final_Count{8|84M9} 328m10 330m10 337r62 +350p7 Part{6|49P9} 353m7 354r21 354r52 355r21 355r52 370r24 +351m7 LBA_Offset{8|84M9} 354m7 357r19 363r33 371r24 +351m19 LBA_Length{8|84M9} 355m7 357r32 363r46 364r25 +351m31 Final_Count{8|84M9} 364m10 366m10 373r62 +378p7 Part{6|49P9} 382r21 383r21 383r52 384r21 384r52 +392p7 Part{6|49P9} 396r21 397r22 397r53 +37R9 Object{6|43R9} 43r7[111] 47r38[111] 43r7[112] 47r38[112] 43r7[113] 47r38[113] +47P9*Object_Pointer(6|43R9) 288r47[111] 48r8[111] 50r31[111] 57r56[111] 59r33[111] +. 48r8[112] 50r31[112] 57r56[112] 59r33[112] 48r8[113] 50r31[113] 57r56[113] +. 59r33[113] +57V13*To_Pointer{13|47P9[113]} 165s35[113] 252s33[112] 317s46[111] 353s46[111] +. 379s35[111] 393s35[111] 62r30[111] 62r30[112] 62r30[113] +59V13*To_Address{12|67M9} 288s30[111] 63r30[111] 63r30[112] 63r30[113] +18P9*Name{5|30P9} 20r50[107] +20p39 X{5|30P9} 21r15[107] 22r23[107] 23r11[107] +X 8 interfac.ads +70M9*Unsigned_8 7|22r54 24r26 26r26 +81M9*Unsigned_32 7|28r26 29r26 55r33 56r33 57r33 58r33 65r33 66r33 67r33 +84M9*Unsigned_64 6|46r22 47r22 59r22 67r22 77r17 78r17 7|59r33 60r33 61r33 +. 62r33 64r33 87r26 88r26 90r26 91r26 92r26 157r24 179r27 265r33 266r33 307r22 +. 315r45 318r39 319r39 343r22 351r45 354r39 355r39 383r39 384r39 389r17 390r17 +. 397r40 +X 12 system.ads +37K9*System 6|58r22 66r22 73r25 76r17 7|17r6 111r24 112r24 113r24 142r25 +. 235r25 306r22 342r22 377r25 388r17 12|155e11 +67M9*Address 6|58r29 66r29 73r32 76r24 7|142r32 235r32 306r29 342r29 377r32 +. 388r24 +X 13 s-atacco.ads +39k16*Address_To_Access_Conversions 7|17w13 111r31 112r31 113r31 13|65e41 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___devices__partitions__parse_partitions 3 ada___devices__partitions__parse_gpt_partitions ada___devices__partitions__parse_mbr_partitions devices__is_block_device +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__parse_partitions 0 +GG EK_GLOBALS ada___devices__partitions__parse_partitions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__register devices__is_block_device devices__get_block_size devices__read TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__parse_gpt_partitions 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__parse_gpt_partitions 0 +GG EK_GLOBALS ada___devices__partitions__parse_gpt_partitions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__register devices__get_block_size devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__parse_mbr_partitions 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__parse_mbr_partitions 0 +GG EK_GLOBALS ada___devices__partitions__parse_mbr_partitions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__register devices__get_block_size devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__set_part 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__set_part 0 +GG EK_GLOBALS ada___devices__partitions__set_part local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__register TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__read 2 devices__read ada___devices__partitions__con1__to_pointer +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__read 0 +GG EK_GLOBALS ada___devices__partitions__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__write 2 devices__write ada___devices__partitions__con1__to_pointer +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__write 0 +GG EK_GLOBALS ada___devices__partitions__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__sync 2 devices__synchronize__2 ada___devices__partitions__con1__to_pointer +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__sync 0 +GG EK_GLOBALS ada___devices__partitions__sync local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__synchronize__2 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__sync_range 2 devices__synchronize__2 ada___devices__partitions__con1__to_pointer +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__sync_range 0 +GG EK_GLOBALS ada___devices__partitions__sync_range local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__synchronize__2 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__free 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__free 0 +GG EK_GLOBALS ada___devices__partitions__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__con1__to_pointer 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con1__to_pointer 0 +GG EK_GLOBALS ada___devices__partitions__con1__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con1 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__con1__to_address 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con1__to_address 0 +GG EK_GLOBALS ada___devices__partitions__con1__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con1 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__con1 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con1 0 +GG EK_GLOBALS ada___devices__partitions__con1 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__con2__to_pointer 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con2__to_pointer 0 +GG EK_GLOBALS ada___devices__partitions__con2__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__con2__to_address 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con2__to_address 0 +GG EK_GLOBALS ada___devices__partitions__con2__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__con2 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con2 0 +GG EK_GLOBALS ada___devices__partitions__con2 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__con3__to_pointer 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con3__to_pointer 0 +GG EK_GLOBALS ada___devices__partitions__con3__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con3 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__con3__to_address 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con3__to_address 0 +GG EK_GLOBALS ada___devices__partitions__con3__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con3 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions__con3 0 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con3 0 +GG EK_GLOBALS ada___devices__partitions__con3 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__partitions 3 ada___devices__partitions__con1 ada___devices__partitions__con2 ada___devices__partitions__con3 +GG EK_PROOF_DEPENDENCIES ada___devices__partitions 0 +GG EK_GLOBALS ada___devices__partitions local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 3 ada___devices__partitions__con1 ada___devices__partitions__con2 ada___devices__partitions__con3 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___devices__partitions__freeGP4473 VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__parse_partitions FALSE FALSE FALSE FALSE TRUE ada___devices__partitions VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__parse_gpt_partitions FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__con2__to_pointer FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con2 VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___devices__partitions__freeGP4473 TRUE FALSE FALSE FALSE TRUE ada___devices__partitions BODY_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__con2__to_address FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con2 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__parse_mbr_partitions FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__con1 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___devices__partitions BODY_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__set_part FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__con3 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___devices__partitions BODY_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__read FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__con1__to_pointer FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con1 VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__address_to_access_conversions TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__con1__to_address FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con1 VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___devices__partitions__write FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___devices__partitions__con3__to_pointer FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con3 VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__sync FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__con3__to_address FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con3 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__sync_range FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__partitions__con2 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___devices__partitions BODY_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-partitions.cswi b/obj/gnatprove/phase1/devices-partitions.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/devices-partitions.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-ramdev.adb.stderr b/obj/gnatprove/phase1/devices-ramdev.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-ramdev.adb.stdout b/obj/gnatprove/phase1/devices-ramdev.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-ramdev.ali b/obj/gnatprove/phase1/devices-ramdev.ali new file mode 100644 index 0000000..9f4a673 --- /dev/null +++ b/obj/gnatprove/phase1/devices-ramdev.ali @@ -0,0 +1,300 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.ramdev%b devices-ramdev.adb 9d49d4c9 OO PK +W devices%s devices.adb devices.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W system%s system.ads system.ali +Z system.storage_elements%s s-stoele.ads s-stoele.ali + +U devices.ramdev%s devices-ramdev.ads ef14bfc6 OO PK +W arch%s arch.ads arch.ali +W devices%s devices.adb devices.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-ramdev.ads 20250222165738 64925c51 devices.ramdev%s +D devices-ramdev.adb 20250222165738 851b4a80 devices.ramdev%b +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s +D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 4|17w6 21r29 25r35 5|28r29 44r35 +37R9*Boot_RAM_File 40e14 4|25r40 5|44r40 +38m7*Start{12|67M9} 5|47r35 +39i7*Length{13|53I12} 5|48r48 +41A9*Boot_RAM_Files(37R9) 4|21r34 5|28r34 +X 3 devices.ads +22K9*Devices 279e12 4|19r9 42r5 5|20r14 36r10 120r5 +29A9*Operation_Data(6|70M9) 4|30r26 38r22 5|68r26 76r27 96r22 104r18 +34A9*UUID(6|70M9) +39R9*Resource 80e14 4|25r62 5|30r18 44r62 +40m7*Data{12|67M9} 5|51m11 +41a7*ID{34A9} 5|53m11 +42b7*Is_Block{boolean} 5|52m11 +43i7*Block_Size{natural} 5|54m11 +44m7*Block_Count{6|84M9} 5|55m11 +46p7*Read 5|56m11 +53p7*Write 5|57m11 +60p7*Sync(boolean) 5|58m11 +61p7*Sync_Range(boolean) 5|59m11 +65p7*IO_Control(boolean) 5|60m11 +69p7*Mmap(boolean) 5|61m11 +75p7*Poll 5|62m11 +98U14*Register 5|36s18 +X 4 devices-ramdev.ads +19K17*Ramdev 3|22k9 4|42l13 42e19 5|20b22 120l13 120t19 +21V13*Init{boolean} 21>19 5|28b13 42l8 42t12 +21a19 Modules{1|41A9} 5|28b19 33r21 35r51 +25V13 Init_Module{3|39R9} 25>26 5|35s38 44b13 63l8 63t19 +25r26 Module{1|37R9} 5|44b26 47r28 48r41 +27U14 Read 28>8 29>8 30<8 31<8 32<8 33>8 5|56r26 65b14 91l8 91t12 +28m8 Key{12|67M9} 5|66b8 74r63 +29m8 Offset{6|84M9} 5|67b8 79r48 87r29 87r53 +30a8 Data{3|29A9} 5|68b8 79r58 80r39 86m7 86r13 86r27 +31i8 Ret_Count{natural} 5|69b8 89m7 +32b8 Success{boolean} 5|70b8 90m7 +33b8 Is_Blocking{boolean} 5|71b8 73r28 +35U14 Write 36>8 37>8 38>8 39<8 40<8 41>8 5|57r26 93b14 119l8 119t13 +36m8 Key{12|67M9} 5|94b8 102r63 +37m8 Offset{6|84M9} 5|95b8 107r48 114r26 114r50 +38a8 Data{3|29A9} 5|96b8 107r58 108r39 115r10 115r16 115r30 +39i8 Ret_Count{natural} 5|97b8 117m7 +40b8 Success{boolean} 5|98b8 118m7 +41b8 Is_Blocking{boolean} 5|99b8 101r28 +X 5 devices-ramdev.adb +22R9 Ramdev_Data 25e14 26r35 46r48 74r27 102r27 +23m7*Start_Address{12|67M9} 47m11 77r38 105r38 +24m7*Size{6|84M9} 48m11 55r50 75r58 103r58 +26P9 Ramdev_Data_Acc(22R9) 46r25 +29b7 Success{boolean} 36m47 37r17 +30r7 Dev_Res{3|39R9} 35m10 36r28 +31a7 Dev_Name{string} 34m10 34r20 36r37 +33i11 I{integer} 34r53 35r60 +45K15 A[8|19] 55r26 +46p7 Data{26P9} 51r26 55r45 +74r7 Dev{22R9} 75r54 77r34 +75i7 Dev_Size{natural} 76r48 82r22 83r46 +76a7 Dev_Data{3|29A9} 87r10 +79i7 Final_Loc{natural} 82r10 83r34 +80i7 To_Write{natural} 83m10 83r22 86r40 87r63 89r20 +102r7 Dev{22R9} 103r54 105r34 +103i7 Dev_Size{natural} 104r39 110r22 111r46 +104a7 Dev_Data{3|29A9} 114m7 +107i7 Final_Loc{natural} 110r10 111r34 +108i7 To_Write{natural} 111m10 111r22 114r60 115r43 117r20 +18M9 T{6|84M9} 27r42[45] 27r52[45] 35r44[45] 35r54[45] 40r50[45] 40r60[45] +. 41r49[45] 23r42[45] 23r52[45] 27r14[45] 30r44[45] 30r54[45] 34r14[45] 37r50[45] +. 37r60[45] +27V13 Align_Up{6|84M9} 29r20[45] +27m23 Value{6|84M9} 24r61[45] +27m30 Alignment{6|84M9} 28r20[45] 28r40[45] 28r55[45] 29r40[45] 25r61[45] +35V13 Align_Down{6|84M9} 37r20[45] +35m25 Value{6|84M9} 31r61[45] +35m32 Alignment{6|84M9} 36r20[45] 36r40[45] 36r55[45] 37r42[45] 32r61[45] +40V13 Divide_Round_Up{6|84M9} 55s28[45] 42r20[45] +40m30 Dividend{6|84M9} 41r21[45] 39r15[45] +40m40 Divisor{6|84M9} 41r33[45] 41r62[45] 42r47[45] 39r27[45] 39r43[45] +24m7 Value2{13|82M9} 27r18[45] +25m7 Align2{13|82M9} 27r27[45] 27r48[45] +31m7 Value2{13|82M9} 34r17[45] +32m7 Align2{13|82M9} 34r33[45] +X 6 interfac.ads +70M9*Unsigned_8 +84M9*Unsigned_64 4|29r22 37r22 5|24r23 45r39 48r28 67r22 95r22 +X 7 lib.ads +19K9*Lib 5|18r6 45r24 7|35e8 +X 8 lib-alignment.ads +19k13*Alignment 5|18w10 45r28 8|43e18 +X 12 system.ads +37K9*System 4|28r22 36r22 5|17w6 17r18 23r23 66r22 94r22 12|155e11 +67M9*Address 4|28r29 36r29 5|23r30 66r29 94r29 +X 13 s-stoele.ads +51I9*Storage_Offset +53I12*Storage_Count{51I9} +82M9*Integer_Address + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___devices__ramdev__init 2 ada___devices__ramdev__init_module devices__register +GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init 0 +GG EK_GLOBALS ada___devices__ramdev__init local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__ramdev devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 1 devices__register TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__ramdev__init_module__a__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module__a__align_up 0 +GG EK_GLOBALS ada___devices__ramdev__init_module__a__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___devices__ramdev__init_module__a ada___devices__ramdev__init_module ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__ramdev__init_module__a__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module__a__align_down 0 +GG EK_GLOBALS ada___devices__ramdev__init_module__a__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___devices__ramdev__init_module__a ada___devices__ramdev__init_module ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__ramdev__init_module__a__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module__a__divide_round_up 0 +GG EK_GLOBALS ada___devices__ramdev__init_module__a__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___devices__ramdev__init_module__a ada___devices__ramdev__init_module ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__ramdev__init_module__a 0 +GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module__a 0 +GG EK_GLOBALS ada___devices__ramdev__init_module__a local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___devices__ramdev__init_module ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__ramdev__init_module 0 +GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module 0 +GG EK_GLOBALS ada___devices__ramdev__init_module local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__ramdev devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__ramdev__read 0 +GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__read 0 +GG EK_GLOBALS ada___devices__ramdev__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__ramdev__write 0 +GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__write 0 +GG EK_GLOBALS ada___devices__ramdev__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___devices__ramdev 0 +GG EK_PROOF_DEPENDENCIES ada___devices__ramdev 0 +GG EK_GLOBALS ada___devices__ramdev local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__ramdev__init_module__a__align_up FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev__init_module__a VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___devices__ramdev__init_module__a__align_down FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev__init_module__a VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__ramdev__init_module__a__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev__init_module__a VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__ramdev TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___devices__ramdev__init FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__ramdev__init_module FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___devices__ramdev__read FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev PRIVATE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__ramdev__write FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__ramdev__init_module__a TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___devices__ramdev__init_module BODY_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-ramdev.cswi b/obj/gnatprove/phase1/devices-ramdev.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/devices-ramdev.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-streams.ali b/obj/gnatprove/phase1/devices-streams.ali index 269d4ca..9abf8a7 100644 --- a/obj/gnatprove/phase1/devices-streams.ali +++ b/obj/gnatprove/phase1/devices-streams.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/devices-streams.cswi b/obj/gnatprove/phase1/devices-streams.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/devices-streams.cswi +++ b/obj/gnatprove/phase1/devices-streams.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-termios.ads.stderr b/obj/gnatprove/phase1/devices-termios.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-termios.ads.stdout b/obj/gnatprove/phase1/devices-termios.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/devices-termios.ali b/obj/gnatprove/phase1/devices-termios.ali new file mode 100644 index 0000000..9045ec3 --- /dev/null +++ b/obj/gnatprove/phase1/devices-termios.ali @@ -0,0 +1,203 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U devices.termios%s devices-termios.ads f2f06868 OO PK +W devices%s devices.adb devices.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 3 devices.ads +22K9*Devices 279e12 4|17r9 81r5 +X 4 devices-termios.ads +17K17*TermIOs 3|22k9 4|81l13 81e20 +19A9*Special_Characters(5|81M9) 49r23 +20R9*Local_Modes 31e15 32r8 48r23 +21b7*Echo_Input{boolean} 33r7 +22b7*Do_Erase{boolean} 34r7 +23b7*Do_Kill{boolean} 35r7 +24b7*Echo_Newline{boolean} 36r7 +25b7*Canonical_Mode{boolean} 37r7 +26b7*Do_Implementation{boolean} 38r7 +27b7*Generate_Signals{boolean} 39r7 +28b7*No_Flushing_Signal{boolean} 40r7 +29b7*Send_Stop{boolean} 41r7 +30b7*Print_As_Erased{boolean} 42r7 +44R9*Main_Data 52e15 +45m7*Input_Modes{5|81M9} +46m7*Output_Modes{5|81M9} +47m7*Control_Modes{5|81M9} +48r7*Local_Mode{20R9} +49a7*Special_Chars{19A9} +50m7*Input_Baud{5|81M9} +51m7*Output_Baud{5|81M9} +54R9*Win_Size 59e14 +55m7*Rows{5|73M9} +56m7*Columns{5|73M9} +57m7*X_Pixels{5|73M9} +58m7*Y_Pixels{5|73M9} +62N4*TCIFLUSH +63N4*TCOFLUSH +64N4*TCIOFLUSH +67N4*TCOOFF +68N4*TCOON +69N4*TCIOFF +70N4*TCION +73N4*TCGETS +74N4*TCSETS +75N4*TCSETSW +76N4*TCSETSF +77N4*TCXONC +78N4*TCFLSH +79N4*TIOCGWINSZ +80N4*TIOCSWINSZ +X 5 interfac.ads +73M9*Unsigned_16 4|55r18 56r18 57r18 58r18 +81M9*Unsigned_32 4|19r50 45r23 46r23 47r23 50r23 51r23 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___devices__termios 0 +GG EK_PROOF_DEPENDENCIES ada___devices__termios 0 +GG EK_GLOBALS ada___devices__termios local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-termios.cswi b/obj/gnatprove/phase1/devices-termios.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/devices-termios.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-uart.ali b/obj/gnatprove/phase1/devices-uart.ali index ac8c4a1..df46a26 100644 --- a/obj/gnatprove/phase1/devices-uart.ali +++ b/obj/gnatprove/phase1/devices-uart.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/devices-uart.cswi b/obj/gnatprove/phase1/devices-uart.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/devices-uart.cswi +++ b/obj/gnatprove/phase1/devices-uart.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices.ali b/obj/gnatprove/phase1/devices.ali index f341cb1..2d49c71 100644 --- a/obj/gnatprove/phase1/devices.ali +++ b/obj/gnatprove/phase1/devices.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/devices.cswi b/obj/gnatprove/phase1/devices.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/devices.cswi +++ b/obj/gnatprove/phase1/devices.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-fifo.adb.stderr b/obj/gnatprove/phase1/ipc-fifo.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-fifo.adb.stdout b/obj/gnatprove/phase1/ipc-fifo.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-fifo.ali b/obj/gnatprove/phase1/ipc-fifo.ali new file mode 100644 index 0000000..f40cc19 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-fifo.ali @@ -0,0 +1,500 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.fifo%b ipc-fifo.adb 2e10e0b9 OO PK IU +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W ipc%s ipc.ads ipc.ali +W scheduler%s scheduler.adb scheduler.ali +N A267:7 gnatprove false_positive "memory leak" "Cannot verify that the pipes have only 1 reference, but they do" + +U ipc.fifo%s ipc-fifo.ads e04893b5 OO PK IU +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W devices%s devices.adb devices.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-fifo.adb 20250222165738 1d0cfca1 ipc.fifo%b +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 11|17r6 23r26 24r26 +X 2 a-uncdea.ads +20u15*Unchecked_Deallocation 11|17w10 23r30 24r30 +X 3 arch.ads +20K9*Arch 52e9 10|19r6 137r46 +X 6 arch-mmu.ads +22K14*MMU 250e13 10|19w11 137r51 +49N7*Page_Size 10|137r55 +X 7 devices.ads +22K9*Devices 279e12 10|18w6 18r19 115r24 127r20 145r27 11|25r8 25r32 28r14 +. 30r19 128r20 132r28 145r24 209r20 +29A9*Operation_Data(8|70M9) 10|115r32 127r28 11|25r16 30r27 132r36 +. 145r32 209r28 +30P9*Operation_Data_Acc(29A9) 10|145r35 11|25r40 28r22 128r28 +X 8 interfac.ads +70M9*Unsigned_8 +X 9 ipc.ads +17K9*IPC 18e8 10|21r9 156r5 11|20r14 281r5 +X 10 ipc-fifo.ads +21K13*FIFO 9|17k9 10|156l9 156e13 11|20b18 281l9 281t13 +38R9*Inner 39r29 138c9 146e14 11|23r54 31r18 +39P9*Inner_Acc(38R9) 47r59 51r35 53r36 55r37 57r38 62r20 71r20 79r27 82r46 +. 84r46 88r39 94r28 102r28 114r20 126r20 133r27 148r27 154r46 11|23r61 27r59 +. 41r35 46r36 51r37 58r38 66r20 80r20 93r27 98r46 105r46 112r39 120r28 127r28 +. 144r20 208r20 266r46 +43i4*Default_Data_Length{natural} 137c4 11|30r48 +47V13*Create{39P9} 47>21 48r30 11|27b13 39l8 39t14 +47b21 Is_Blocking{boolean} 11|27b21 35r32 36r32 +51V13*Is_Read_Blocking{boolean} 51>31 11|41b13 44l8 44t24 +51p31 P{39P9} 52r37 11|41b31 43r14 +53V13*Is_Write_Blocking{boolean} 53>32 11|46b13 49l8 49t25 +53p32 P{39P9} 54r37 11|46b32 48r14 +55U14*Set_Read_Blocking 55>33 55>48 11|51b14 56l8 56t25 +55p33 P{39P9} 56r37 11|51b33 53r34 54r7 55r36 +55b48 B{boolean} 11|51b48 54r29 +57U14*Set_Write_Blocking 57>34 57>49 11|58b14 63l8 63t26 +57p34 P{39P9} 58r37 11|58b34 60r34 61r7 62r36 +57b49 B{boolean} 11|58b49 61r30 +61U14*Poll_Reader 62>8 63<8 64<8 65<8 66<8 11|65b14 77l8 77t19 +62p8 P{39P9} 67r29 67r51 11|66b8 73r34 76r20 76r39 +63b8 Can_Read{boolean} 11|67b8 73m7 +64b8 Can_Write{boolean} 11|68b8 74m7 +65b8 Is_Error{boolean} 11|69b8 75m7 +66b8 Is_Broken{boolean} 11|70b8 76m7 +70U14*Poll_Writer 71>8 72<8 73<8 74<8 75<8 11|79b14 91l8 91t19 +71p8 P{39P9} 76r29 11|80b8 88r20 88r36 +72b8 Can_Read{boolean} 11|81b8 87m7 +73b8 Can_Write{boolean} 11|82b8 88m7 +74b8 Is_Error{boolean} 11|83b8 89m7 +75b8 Is_Broken{boolean} 11|84b8 90m7 +79V13*Is_Empty{boolean} 79>23 11|73s24 93b13 96l8 96t16 +79p23 P{39P9} 79r75 11|93b23 95r14 +82U14*Close_Reader 82=28 11|98b14 103l8 103t20 +82p28 To_Close{39P9} 83r29 83r48 11|98b28 100r34 101r7 102m21 +84U14*Close_Writer 84=28 11|105b14 110l8 110t20 +84p28 To_Close{39P9} 85r29 85r48 11|105b28 107r34 108r7 109m21 +88U14*Close 88=21 11|112b14 118l8 118t13 +88p21 To_Close{39P9} 89r29 89r48 11|112b21 114r34 115r7 116r7 117m21 +94U14*Get_Size 94>24 94<39 11|120b14 125l8 125t16 +94p24 P{39P9} 95r29 11|120b24 122r34 123r15 124r36 +94i39 Size{natural} 11|120b39 123m7 +102U14*Set_Size 102>24 102>39 102<55 11|127b14 141l8 141t16 +102p24 P{39P9} 103r30 11|127b24 130r34 131r18 133r27 133r44 133r57 134r16 +. 135r10 140r36 +102i39 Size{natural} 103r37 11|127b39 131r10 132r57 +102b55 Success{boolean} 11|127b55 136m10 138m10 +106E9*Pipe_Status 106e75 117r24 129r24 11|147r24 211r24 +106n25*Pipe_Success{106E9} 11|161r29 173r27 204r20 257r23 +106n39*Broken_Failure{106E9} 11|218r23 +106n55*Would_Block_Failure{106E9} 11|175r27 233r26 260r23 +113U14*Read 114>8 115<8 116<8 117<8 11|143b14 205l8 205t12 +114p8 To_Read{39P9} 118r29 11|144b8 153r10 155r40 156r16 157r26 159r16 162r45 +. 165r42 169r37 170r13 172r16 177r42 182r22 183r23 190r10 192r19 192r41 193r13 +. 193r33 195r13 196r13 196r35 202r36 +115a8 Data{7|29A9} 11|145b8 149r30 151m7 185r10 186r38 189m7 189r13 189r27 +116i8 Ret_Count{natural} 11|146b8 160m16 171m13 203m7 +117e8 Success{106E9} 11|147b8 161m16 173m16 175m16 204m7 +125U14*Write 126>8 127>8 128<8 129<8 11|207b14 264l8 264t13 +126p8 To_Write{39P9} 130r29 11|208b8 216r10 222r10 224r40 225r23 225r46 226r42 +. 230r37 231r13 231r35 234r42 239r16 240r16 240r39 242r19 243r19 243r42 245r19 +. 249r19 252r10 253r10 253r25 255r10 263r36 +127a8 Data{7|29A9} 11|209b8 213r26 247r10 248r34 254r13 254r19 254r33 +128i8 Ret_Count{natural} 11|210b8 217m10 232m13 256m10 259m10 +129e8 Success{106E9} 11|211b8 218m10 233m13 257m10 260m10 +133V13*Is_Valid{boolean} 48s20 52s27 54s27 56s27 58s27 67s19 67s41 76s19 +. 79s65 83s19 85s19 89s19 95s19 103s20 118s19 130s19 133>23 148b13 +133p23 P{39P9} 149r8 150r8 151r8 151r24 152r8 +139r7*Mutex{13|22R9} 11|34m11 53m36 55m38 60m36 62m38 100m43 107m43 114m43 +. 122m36 124m38 130m36 140m38 155m48 162m53 165m50 169m45 177m50 202m44 224m49 +. 226m51 230m46 234m51 263m45 277m48 +140b7*Reader_Closed{boolean} 11|32m11 76r41 101m16 115m16 216r19 273r19 +141b7*Writer_Closed{boolean} 11|33m11 76r22 108m16 116m16 159r24 172r24 273r46 +142b7*Is_Read_Blocking{boolean} 11|35m11 43r16 54m9 153r18 +143b7*Is_Write_Blocking{boolean} 11|36m11 48r16 61m9 222r19 +144i7*Data_Count{natural} 151r10 11|37m11 88r22 95r16 131r20 133r29 133r59 +. 156r24 157r34 170r21 182r30 183r31 195r21 196m21 196r43 225r32 231r22 240r48 +. 243r51 245r28 249r28 252r19 253r34 255m19 +145p7*Data{7|30P9} 150r10 151r26 152r10 11|38m11 88r38 123r17 133r46 134m18 +. 135m12 190r18 192r27 192r49 193r21 193r41 225r55 231r44 239r25 240r25 242r28 +. 243r28 253r19 274m25 +154U14 Common_Close 154=28 11|102s7 109s7 117s7 266b14 280l8 280t20 +154p28 To_Close{39P9} 155r19 155r45 11|266b28 273r10 273r37 274r16 275m16 +. 277r39 279m7 +X 11 ipc-fifo.adb +23U14 Free[2|20] +23U14*Free[2|20] 275s10 +24U14 Free[2|20] +24U14*Free[2|20] 134s10 274s10 +28p7 Data{7|30P9} 30m7 38r32 +128p7 New_Buffer{7|30P9} 132m10 133r10 135r21 +149i7 Final_Len{natural} 182r10 183m10 185r38 186m10 189r40 190r29 191r21 +. 203r20 +191i11 I{integer} +192i14 J{integer} 193r27 193r47 +213i7 Len{natural} 239r10 240r10 243m10 245r41 247r38 248m10 249r41 254r46 +. 256r23 +214i7 Final{natural} 242m10 245m10 249m10 253r52 255r33 +18P9*Name{10|39P9} 20r50[23] 20r50[24] +20p39 X{10|39P9} 21r15[23] 22r23[23] 23r11[23] 21r15[24] 22r23[24] 23r11[24] +X 12 lib.ads +19K9*Lib 10|17r6 139r35 11|34r32 53r7 55r7 60r7 62r7 100r7 107r7 114r7 122r7 +. 124r7 130r7 140r7 155r13 162r16 165r13 169r10 177r13 202r7 224r13 226r13 +. 230r10 234r13 263r7 277r10 12|35e8 +X 13 lib-synchronization.ads +20K13*Synchronization 10|17w10 139r39 11|34r36 53r11 55r11 60r11 62r11 100r11 +. 107r11 114r11 122r11 124r11 130r11 140r11 155r17 162r20 165r17 169r14 177r17 +. 202r11 224r17 226r17 230r14 234r17 263r11 277r14 13|66e24 +22R9*Binary_Semaphore 10|139r55 13|57e14 +23r4*Unlocked_Semaphore{22R9} 11|34r52 +27U14*Seize 11|53s27 60s27 100s27 107s27 114s27 122s27 130s27 155s33 169s30 +. 224s33 230s30 +31U14*Release 11|55s27 62s27 124s27 140s27 162s36 165s33 177s33 202s27 226s33 +. 234s33 263s27 277s30 +X 15 scheduler.ads +25K9*Scheduler 11|18w6 166r13 227r13 15|183e14 +74U14*Yield_If_Able 11|166s23 227s23 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___ipc__fifo__create 1 ada___ipc__fifo__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__create 0 +GG EK_GLOBALS ada___ipc__fifo__create local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__is_read_blocking 1 ada___ipc__fifo__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__is_read_blocking 0 +GG EK_GLOBALS ada___ipc__fifo__is_read_blocking local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__is_write_blocking 1 ada___ipc__fifo__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__is_write_blocking 0 +GG EK_GLOBALS ada___ipc__fifo__is_write_blocking local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__set_read_blocking 3 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__set_read_blocking 0 +GG EK_GLOBALS ada___ipc__fifo__set_read_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__set_write_blocking 3 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__set_write_blocking 0 +GG EK_GLOBALS ada___ipc__fifo__set_write_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__poll_reader 2 ada___ipc__fifo__is_empty ada___ipc__fifo__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__poll_reader 0 +GG EK_GLOBALS ada___ipc__fifo__poll_reader local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__poll_writer 1 ada___ipc__fifo__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__poll_writer 0 +GG EK_GLOBALS ada___ipc__fifo__poll_writer local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__is_empty 1 ada___ipc__fifo__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__is_empty 0 +GG EK_GLOBALS ada___ipc__fifo__is_empty local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__close_reader 3 ada___ipc__fifo__is_valid ada___ipc__fifo__common_close ada___lib__synchronization__seize +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__close_reader 0 +GG EK_GLOBALS ada___ipc__fifo__close_reader local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__close_writer 3 ada___ipc__fifo__is_valid ada___ipc__fifo__common_close ada___lib__synchronization__seize +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__close_writer 0 +GG EK_GLOBALS ada___ipc__fifo__close_writer local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__close 3 ada___ipc__fifo__is_valid ada___ipc__fifo__common_close ada___lib__synchronization__seize +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__close 0 +GG EK_GLOBALS ada___ipc__fifo__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__get_size 3 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__get_size 0 +GG EK_GLOBALS ada___ipc__fifo__get_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__set_size 4 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release ada___ipc__fifo__free__2 +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__set_size 0 +GG EK_GLOBALS ada___ipc__fifo__set_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__read 4 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__read 0 +GG EK_GLOBALS ada___ipc__fifo__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__write 4 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__write 0 +GG EK_GLOBALS ada___ipc__fifo__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__is_valid 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__is_valid 0 +GG EK_GLOBALS ada___ipc__fifo__is_valid local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__common_close 3 ada___lib__synchronization__release ada___ipc__fifo__free ada___ipc__fifo__free__2 +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__common_close 0 +GG EK_GLOBALS ada___ipc__fifo__common_close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__free 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__free 0 +GG EK_GLOBALS ada___ipc__fifo__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo__free__2 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__free__2 0 +GG EK_GLOBALS ada___ipc__fifo__free__2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__fifo 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__fifo 0 +GG EK_GLOBALS ada___ipc__fifo local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__freeGP862 TRUE FALSE FALSE FALSE TRUE ada___ipc__fifo BODY_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__free__2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__fifo__freeGP934 VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__freeGP934 TRUE FALSE FALSE FALSE TRUE ada___ipc__fifo BODY_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__fifo__freeGP862 VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-fifo.cswi b/obj/gnatprove/phase1/ipc-fifo.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-fifo.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-filelock.adb.stderr b/obj/gnatprove/phase1/ipc-filelock.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-filelock.adb.stdout b/obj/gnatprove/phase1/ipc-filelock.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-filelock.ali b/obj/gnatprove/phase1/ipc-filelock.ali new file mode 100644 index 0000000..447ea88 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-filelock.ali @@ -0,0 +1,621 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.filelock%b ipc-filelock.adb 447f0202 OO PK IU +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W scheduler%s scheduler.adb scheduler.ali + +U ipc.filelock%s ipc-filelock.ads 3c28d1be OO PK IU +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali +W userland%s userland.ads userland.ali +W userland.process%s userland-process.adb userland-process.ali +W vfs%s vfs.adb vfs.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-filelock.ads 20250222165738 69934e3c ipc.filelock%s +D ipc-filelock.adb 20250222165738 d01080ee ipc.filelock%b +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 7 interfac.ads +38K9*Interfaces 233e15 10|17w6 17r28 +84M9*Unsigned_64 10|36r30 37r30 54r23 55r23 71r23 72r23 89r20 90r20 106r23 +. 107r23 11|24r18 25r18 38r30 39r30 62r23 63r23 100r23 101r23 161r23 162r23 +X 8 ipc.ads +17K9*IPC 18e8 10|21r9 111r5 11|20r14 185r5 +X 10 ipc-filelock.ads +21K13*FileLock 8|17k9 10|111l9 111e17 11|20b18 185l9 185t17 +33U14*Could_Acquire_Lock 34>8 35>8 36=8 37=8 38=8 39=8 40<8 11|35b14 57l8 +. 57t26 +34i8 Acquired_FS{26|74I9} 11|36b8 48r11 +35m8 Acquired_Ino{26|28M9} 11|37b8 48r24 +36m8 Start{7|84M9} 11|38b8 48r38 51m10 +37m8 Length{7|84M9} 11|39b8 48r45 52m10 +38i8 Acquirer{25|33I9} 11|40b8 53m10 +39b8 Is_Write{boolean} 11|41b8 48r53 54m10 +40b8 Success{boolean} 11|42b8 49m24 50r14 +51U14*Acquire_Lock 52>8 53>8 54>8 55>8 56>8 57>8 58>8 59<8 11|59b14 95l8 +. 95t20 +52i8 Acquired_FS{26|74I9} 11|60b8 74r14 80r33 +53m8 Acquired_Ino{26|28M9} 11|61b8 74r27 81r33 +54m8 Start{7|84M9} 11|62b8 74r41 82r33 +55m8 Length{7|84M9} 11|63b8 74r48 83r33 +56i8 Acquirer{25|33I9} 11|64b8 84r33 +57b8 Is_Write{boolean} 11|65b8 74r56 85r33 +58b8 Is_Blocking{boolean} 11|66b8 92r24 +59b8 Success{boolean} 11|67b8 75m27 76r13 77m13 86m19 92r39 +68U14*Release_Lock 69>8 70>8 71>8 72>8 73>8 74<8 11|97b14 110l8 110t20 +69i8 Acquired_FS{26|74I9} 11|98b8 109r21 +70m8 Acquired_Ino{26|28M9} 11|99b8 109r34 +71m8 Start{7|84M9} 11|100b8 105r28 +72m8 Length{7|84M9} 11|101b8 106r28 +73i8 Acquirer{25|33I9} 11|102b8 107r28 +74b8 Success{boolean} 11|103b8 109m48 +80U14*Release_Lock 81>8 82>8 83<8 11|109s7 112b14 131l8 131t20 +81i8 Acquired_FS{26|74I9} 11|113b8 122r20 +82m8 Acquired_Ino{26|28M9} 11|114b8 123r21 +83b8 Success{boolean} 11|115b8 119m7 126m13 +86R9*Lock_Info 93e14 94r49 +87i7*Acquirer{25|33I9} 11|145m20 +88b7*Is_Writing{boolean} 11|146m20 +89m7*Start{7|84M9} 11|147m20 +90m7*Length{7|84M9} 11|148m20 +91i7*FS{26|74I9} 11|149m20 +92m7*Ino{26|28M9} 11|150m20 +94A9*Lock_Arr(86R9) 99r37 11|133r37 +99U14*List_All 99<24 99<47 11|133b14 156l8 156t16 +99a24 Buffer{94A9} 11|133b24 136m7 143r29 144m16 144r24 +99i47 Length{natural} 11|133b47 137m7 142m13 142r23 +103U14 Inner_Could_Acquire 104>8 105>8 106>8 107>8 108>8 109<8 110<8 11|47s7 +. 73s10 158b14 184l8 184t27 +104i8 Acquired_FS{26|74I9} 11|159b8 172r32 +105m8 Acquired_Ino{26|28M9} 11|160b8 173r32 +106m8 Start{7|84M9} 11|161b8 176r39 +107m8 Length{7|84M9} 11|162b8 176r72 +108b8 Is_Write{boolean} 11|163b8 175r41 +109i8 Conflicting{natural} 11|164b8 169m7 178m16 +110b8 Success{boolean} 11|165b8 168m7 179m16 +X 11 ipc-filelock.adb +21R9 Lock_Inner 28e14 29r46 +22i7*FS{26|74I9} 80m21 122r15 149r47 172r26 +23m7*Ino{26|28M9} 81m21 123r15 150r47 173r26 +24m7*Start{7|84M9} 51r45 82m21 147r47 176r30 +25m7*Length{7|84M9} 52r45 83m21 148r47 176r62 +26i7*Acquirer{25|33I9} 53r45 79r21 84m21 121r15 125m15 141r26 145r47 171r26 +27b7*Is_Write{boolean} 54r45 85m21 146r47 175r29 +29A9 Lock_Inner_Arr(21R9) 32r32 +31r4 Registry_Mutex{15|22R9} 46m34 46r34 56m36 56r36 72m37 72r37 91m39 91r39 +. 118m34 118r34 130m36 130r36 139m34 139r34 155m36 155r36 +32a4 Registry{29A9} 51r22 52r22 53r22 54r22 78r22 79r19 80m19 81m19 82m19 +. 83m19 84m19 85m19 120r16 121r13 122r13 123r13 125m13 140r16 141r13 145r34 +. 146r34 147r34 148r34 149r34 150r34 170r16 171r13 172r13 173r13 175r16 176r17 +. 176r49 +44i7 Conflicting{natural} 49m11 51r32 52r32 53r32 54r32 +69i7 Conflicting{natural} 75m14 +78r17 L=78:22{21R9} +120r11 L=120:16{21R9} +134i7 Curr_Index{natural} 143r16 144r39 151m16 151r30 +140i11 I{integer} 141r23 145r44 146r44 147r44 148r44 149r44 150r44 +170i11 I{integer} 171r23 172r23 173r23 175r26 176r27 176r59 178r31 +X 14 lib.ads +19K9*Lib 11|17r6 17r31 46r7 56r7 72r10 91r10 118r7 130r7 139r7 155r7 14|35e8 +X 15 lib-synchronization.ads +20K13*Synchronization 11|17w10 17r35 46r11 56r11 72r14 91r14 118r11 130r11 +. 139r11 155r11 15|66e24 +22R9*Binary_Semaphore 11|31r29 15|57e14 +23r4*Unlocked_Semaphore{22R9} 11|31r49 +27U14*Seize 11|46s27 72s30 118s27 139s27 +31U14*Release 11|56s27 91s30 130s27 155s27 +X 18 scheduler.ads +25K9*Scheduler 11|18w6 93r10 18|183e14 +74U14*Yield_If_Able 11|93s20 +X 22 userland.ads +17K9*Userland 10|19r6 19r28 38r30 56r23 73r23 11|26r18 40r30 64r23 102r23 +. 22|23e13 +X 25 userland-process.ads +28K18*Process 10|19w15 19r37 38r39 56r32 73r32 11|26r27 40r39 64r32 102r32 +. 25|677e21 +33I9*PID 10|38r47 56r40 73r40 87r20 11|26r35 40r47 64r40 102r40 +34i4*Error_PID{33I9} 11|33r46 79r32 121r27 125r27 136r29 141r38 171r38 +X 26 vfs.ads +24K9*VFS 10|18w6 18r28 34r23 35r23 52r23 53r23 69r23 70r23 81r23 82r23 91r20 +. 92r20 104r23 105r23 11|22r18 23r18 33r19 36r23 37r23 60r23 61r23 98r23 +. 99r23 113r23 114r23 136r53 159r23 160r23 26|674e8 +28M9*File_Inode_Number<7|84M9> 10|35r27 53r27 70r27 82r27 92r24 105r27 11|23r22 +. 37r27 61r27 99r27 114r27 160r27 +74I9*FS_Handle 10|34r27 52r27 69r27 81r27 91r24 104r27 11|22r22 +. 36r27 60r27 98r27 113r27 159r27 +75i4*Error_Handle{74I9} 11|33r23 136r57 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___ipc__filelock__could_acquire_lock 3 ada___ipc__filelock__inner_could_acquire ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__could_acquire_lock 0 +GG EK_GLOBALS ada___ipc__filelock__could_acquire_lock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 1 ada___ipc__filelock__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 1 ada___ipc__filelock__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__filelock__acquire_lock 4 ada___ipc__filelock__inner_could_acquire ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able +GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__acquire_lock 0 +GG EK_GLOBALS ada___ipc__filelock__acquire_lock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__filelock__release_lock 1 ada___ipc__filelock__release_lock__2 +GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__release_lock 0 +GG EK_GLOBALS ada___ipc__filelock__release_lock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__filelock__release_lock__2 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__release_lock__2 0 +GG EK_GLOBALS ada___ipc__filelock__release_lock__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__filelock__list_all 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__list_all 0 +GG EK_GLOBALS ada___ipc__filelock__list_all local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 1 ada___ipc__filelock__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 1 ada___ipc__filelock__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__filelock__inner_could_acquire 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__inner_could_acquire 0 +GG EK_GLOBALS ada___ipc__filelock__inner_could_acquire local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 1 ada___ipc__filelock__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___ipc__filelock__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___ipc__filelock__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__filelock 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__filelock 0 +GG EK_GLOBALS ada___ipc__filelock local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_initializes 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___ipc__filelock__could_acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___ipc__filelock__list_all FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__inner_could_acquire FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-filelock.cswi b/obj/gnatprove/phase1/ipc-filelock.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-filelock.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-futex.adb.stderr b/obj/gnatprove/phase1/ipc-futex.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-futex.adb.stdout b/obj/gnatprove/phase1/ipc-futex.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-futex.ali b/obj/gnatprove/phase1/ipc-futex.ali new file mode 100644 index 0000000..8c8bfc9 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-futex.ali @@ -0,0 +1,358 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.futex%b ipc-futex.adb 1529e641 OO PK IU +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W lib.time%s lib-time.adb lib-time.ali +W scheduler%s scheduler.adb scheduler.ali + +U ipc.futex%s ipc-futex.ads 759f3969 OO PK IU +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-futex.ads 20250222165738 e719aab2 ipc.futex%s +D ipc-futex.adb 20250222165738 c8a21bed ipc.futex%b +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D lib-time.ads 20250222165738 30059be5 lib.time%s +D memory.ads 20250222165738 335640bf memory%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 10|19r6 72r7 87r10 +X 2 arch-clocks.ads +19K14*Clocks 45e16 10|19w11 72r12 87r15 +31U14*Get_Monotonic_Time 10|72s19 87s22 +X 7 interfac.ads +38K9*Interfaces 233e15 9|17w6 17r22 +81M9*Unsigned_32 9|29r25 30r18 10|24r28 26r21 +84M9*Unsigned_64 9|41r22 42r22 10|35r22 36r22 38r52 +X 8 ipc.ads +17K9*IPC 18e8 9|19r9 47r5 10|22r14 109r5 +X 9 ipc-futex.ads +19K13*Futex 8|17k9 9|47l9 47e14 10|22b18 109l9 109t14 +28R9*Element 31e14 32r52 +29p7*Key(7|81M9) 10|43r22 49r44 58r53 102r37 +30m7*Expected{7|81M9} 10|43r42 +32A9*Element_Arr(28R9) 40r22 46r27 10|34r22 97r27 +39V13*Wait{boolean} 40>8 41>8 42>8 10|33b13 95l8 95t12 +40a8 Keys{32A9} 10|34b8 39r25 42r16 43r13 43r33 49r35 58r44 +41m8 Max_Seconds{7|84M9} 10|35b8 73r50 +42m8 Max_Nanos{7|84M9} 10|36b8 73r63 +46U14*Wake 46>20 10|97b14 108l8 108t12 +46a20 Keys{32A9} 10|97b20 99r16 102r35 +X 10 ipc-futex.adb +23R9 Futex_Inner 27e14 28r41 +24p7*Key(7|81M9) 49r29 56r29 58m29 80m29 102r29 +25b7*Wakey_Wakey{boolean} 59m29 77r26 103m29 +26m7*Waiters{7|81M9} 51m29 51r53 60m29 78m26 78r50 79r29 +28A9 Futex_Arr(23R9) 31r36 +30r4 Registry_Mutex{12|22R9} 47m37 47r37 65m39 65r39 68m39 68r39 76m37 76r37 +. 82m42 82r42 85m39 85r39 100m37 100r37 106m39 106r39 +31a4 Registry{28A9} 48r19 49r16 51m16 51r40 55r19 56r16 58m16 59m16 60m16 +. 77r13 78m13 78r37 79r16 80m16 101r19 102r16 103m16 +38m7 Curr_Sec{7|84M9} 87m42 89r14 +38m17 Curr_NSec{7|84M9} 87m52 89r24 +38m28 Final_Sec{7|84M9} 72m39 73m27 73r27 89r35 +38m39 Final_NSec{7|84M9} 72m50 73m38 73r38 89r46 +39a7 Idx(natural) 50m16 57m16 75r16 77r23 78r23 78r47 79r26 80r26 +42i11 I{integer} 43r19 43r39 49r41 50r21 57r21 58r50 +48i14 J{integer} 49r26 50r27 51r26 51r50 +55i14 J{integer} 56r26 57r27 58r26 59r26 60r26 +67L9 End_Of_Iter 52r21 61r21 +75i11 I=75:16{natural} +99r11 K=99:16{9|28R9} +101i14 I{integer} 102r26 103r26 +X 11 lib.ads +19K9*Lib 10|18r6 18r31 20r6 47r10 65r10 68r10 73r7 76r10 82r13 85r10 88r20 +. 100r10 106r10 11|35e8 +X 12 lib-synchronization.ads +20K13*Synchronization 10|18w10 18r35 47r14 65r14 68r14 76r14 82r17 85r14 +. 100r14 106r14 12|66e24 +22R9*Binary_Semaphore 10|30r29 12|57e14 +23r4*Unlocked_Semaphore{22R9} 10|30r49 +27U14*Seize 10|47s30 76s30 100s30 +31U14*Release 10|65s30 68s30 82s33 85s30 106s30 +X 13 lib-time.ads +19K13*Time 10|20w10 73r11 88r24 13|77e13 +37U14*Increment 10|73s16 +63V13*Is_Greater_Equal{boolean} 10|88s29 +X 15 scheduler.ads +25K9*Scheduler 10|17w6 91r10 15|183e14 +74U14*Yield_If_Able 10|91s20 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___ipc__futex__wait 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__futex__wait 0 +GG EK_GLOBALS ada___ipc__futex__wait local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__futex ipc proper_proof_in 0 proper_input 3 ada___ipc__futex__registry_mutex ada___ipc__futex__registry __HEAP proper_output 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry refined_proof_in 0 refined_input 3 ada___ipc__futex__registry_mutex ada___ipc__futex__registry __HEAP refined_output 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry calls_proof 0 calls 0 calls_conditional 6 scheduler__yield_if_able ada___lib__synchronization__seize ada___lib__synchronization__release ada___arch__clocks__get_monotonic_time ada___lib__time__increment ada___lib__time__is_greater_equal TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__futex__wake 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__futex__wake 0 +GG EK_GLOBALS ada___ipc__futex__wake local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__futex ipc proper_proof_in 0 proper_input 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry proper_output 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry refined_proof_in 0 refined_input 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry refined_output 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__futex 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__futex 0 +GG EK_GLOBALS ada___ipc__futex local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___ipc__futex TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__futex__wait FALSE FALSE FALSE FALSE TRUE ada___ipc__futex VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__futex__wake FALSE FALSE FALSE FALSE TRUE ada___ipc__futex VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-futex.cswi b/obj/gnatprove/phase1/ipc-futex.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-futex.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-pty.adb.stderr b/obj/gnatprove/phase1/ipc-pty.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-pty.adb.stdout b/obj/gnatprove/phase1/ipc-pty.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-pty.ali b/obj/gnatprove/phase1/ipc-pty.ali new file mode 100644 index 0000000..6887c25 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-pty.ali @@ -0,0 +1,642 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.pty%b ipc-pty.adb 31bc106c OO PK IU +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W scheduler%s scheduler.adb scheduler.ali + +U ipc.pty%s ipc-pty.ads e51b3842 OO PK IU +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W devices%s devices.adb devices.ali +W devices.termios%s devices-termios.ads devices-termios.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-pty.adb 20250222165738 2690cc5d ipc.pty%b +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 13|17r6 25r26 +X 2 a-uncdea.ads +20u15*Unchecked_Deallocation 13|17w10 25r30 +X 3 arch.ads +20K9*Arch 52e9 12|19r6 161r46 162r56 +X 7 arch-mmu.ads +22K14*MMU 250e13 12|19w11 161r51 162r61 +49N7*Page_Size 12|161r55 162r65 +X 8 devices.ads +22K9*Devices 279e12 12|17r6 52r24 60r20 68r24 76r20 113r50 117r46 121r50 +. 125r46 162r27 174r28 175r28 192r26 201r22 13|33r24 78r24 92r20 106r24 120r20 +. 190r50 197r46 205r50 212r46 320r26 379r22 +29A9*Operation_Data(10|70M9) 12|52r32 60r28 68r32 76r28 162r35 192r34 +. 201r30 13|78r32 92r28 106r32 120r28 320r34 379r30 +X 9 devices-termios.ads +17K17*TermIOs 81e20 12|17w14 113r58 117r54 121r58 125r54 174r36 175r36 13|33r32 +. 190r58 197r54 205r58 212r54 +20R9*Local_Modes 31e15 13|33r40 +44R9*Main_Data 52e15 12|113r66 117r62 174r44 13|190r66 197r62 +54R9*Win_Size 59e14 12|121r66 125r62 175r44 13|205r66 212r62 +X 10 interfac.ads +38K9*Interfaces 233e15 13|20w6 20r22 +70M9*Unsigned_8 +81M9*Unsigned_32 13|225r27 +X 11 ipc.ads +17K9*IPC 18e8 12|21r9 203r5 13|22r14 426r5 +X 12 ipc-pty.ads +21K13*PTY 11|17k9 12|203l9 203e12 13|22b18 426l9 426t12 +36R9*Inner 37r29 163c9 182e14 13|25r54 40r18 +37P9*Inner_Acc(36R9) 43r27 47r37 51r20 59r20 67r20 75r20 83r20 91r20 97r39 +. 101r40 105r41 109r42 113r31 117r31 121r31 125r31 129r28 133r33 137r35 141r33 +. 145r35 149r32 153r34 157r27 184r27 13|25r61 31r27 61r37 77r20 91r20 105r20 +. 119r20 133r20 151r20 162r39 169r40 176r41 183r42 190r31 197r31 205r31 212r31 +. 220r28 234r33 250r35 266r33 278r35 290r32 302r34 +40E9*Status 40e49 54r24 62r24 70r24 78r24 13|80r24 94r24 108r24 122r24 +40n20*PTY_Success{40E9} 13|87r18 101r18 115r18 129r18 +40n33*PTY_Would_Block{40E9} +43V13*Create{37P9} 13|31b13 59l8 59t14 +47U14*Close 47=21 13|61b14 74l8 74t13 +47p21 Closed{37P9} 47r70 13|61b21 63r34 64r34 65r34 66r10 67m16 69r10 70r39 +. 71r39 72r39 +50U14*Read_Primary 51>8 52<8 53<8 54<8 13|76b14 88l8 88t20 +51p8 To_Read{37P9} 55r29 13|77b8 84r11 84r41 85r11 85r40 86r11 +52a8 Data{8|29A9} 13|78b8 86m33 +53i8 Ret_Count{natural} 13|79b8 86m39 +54e8 Success{40E9} 13|80b8 87m7 +58U14*Write_Primary 59>8 60>8 61<8 62<8 13|90b14 102l8 102t21 +59p8 To_Write{37P9} 63r29 13|91b8 98r11 98r44 99r11 99r43 100r11 +60a8 Data{8|29A9} 13|92b8 100r38 +61i8 Ret_Count{natural} 13|93b8 100m44 +62e8 Success{40E9} 13|94b8 101m7 +66U14*Read_Secondary 67>8 68<8 69<8 70<8 13|104b14 116l8 116t22 +67p8 To_Read{37P9} 71r29 13|105b8 112r11 112r43 113r11 113r42 114r11 +68a8 Data{8|29A9} 13|106b8 114m35 +69i8 Ret_Count{natural} 13|107b8 114m41 +70e8 Success{40E9} 13|108b8 115m7 +74U14*Write_Secondary 75>8 76>8 77<8 78<8 13|118b14 130l8 130t23 +75p8 To_Write{37P9} 79r29 13|119b8 126r11 126r42 127r11 127r41 128r11 +76a8 Data{8|29A9} 13|120b8 128r40 +77i8 Ret_Count{natural} 13|121b8 128m46 +78e8 Success{40E9} 13|122b8 129m7 +82U14*Poll_Primary 83>8 84<8 85<8 86<8 13|132b14 148l8 148t20 +83p8 P{37P9} 87r29 13|133b8 139r34 140r19 141r7 142r36 144r34 145r20 146r20 +. 146r40 147r36 +84b8 Can_Read{boolean} 13|134b8 145m7 +85b8 Can_Write{boolean} 13|135b8 146m7 +86b8 Can_Prio{boolean} 13|136b8 140m7 +90U14*Poll_Secondary 91>8 92<8 93<8 13|150b14 160l8 160t22 +91p8 P{37P9} 94r29 13|151b8 156r34 157r20 158r20 158r42 159r36 +92b8 Can_Read{boolean} 13|152b8 157m7 +93b8 Can_Write{boolean} 13|153b8 158m7 +97U14*Is_Primary_Blocking 97>35 97<50 13|162b14 167l8 167t27 +97p35 P{37P9} 98r29 13|162b35 164r34 165r19 166r36 +97b50 Blocking{boolean} 13|162b50 165m7 +101U14*Set_Primary_Blocking 101>36 101>51 13|169b14 174l8 174t28 +101p36 P{37P9} 102r29 13|169b36 171r34 172r7 173r36 +101b51 Blocking{boolean} 13|169b51 172r26 +105U14*Is_Secondary_Blocking 105>37 105<52 13|176b14 181l8 181t29 +105p37 P{37P9} 106r29 13|176b37 178r34 179r19 180r36 +105b52 Blocking{boolean} 13|176b52 179m7 +109U14*Set_Secondary_Blocking 109>38 109>53 13|183b14 188l8 188t30 +109p38 P{37P9} 110r29 13|183b38 185r34 186r7 187r36 +109b53 Blocking{boolean} 13|183b53 186r28 +113U14*Get_TermIOs 113>27 113<42 13|190b14 195l8 195t19 +113p27 P{37P9} 114r29 13|190b27 192r34 193r12 194r36 +113r42 T{9|44R9} 13|190b42 193m7 +117U14*Set_TermIOs 117>27 117>42 13|197b14 203l8 203t19 +117p27 P{37P9} 118r29 13|197b27 199r34 200r7 201r7 202r36 +117r42 T{9|44R9} 13|197b42 200r22 +121U14*Get_WinSize 121>27 121<42 13|205b14 210l8 210t19 +121p27 P{37P9} 122r29 13|205b27 207r34 208r12 209r36 +121r42 W{9|54R9} 13|205b42 208m7 +125U14*Set_WinSize 125>27 125>42 13|212b14 218l8 218t19 +125p27 P{37P9} 126r29 13|212b27 214r34 215r7 216r7 217r36 +125r42 W{9|54R9} 13|212b42 215r22 +129U14*Get_Name 129>24 129<39 129<57 13|220b14 232l8 232t16 +129p24 P{37P9} 130r29 13|220b24 225r40 +129a39 Str{string} 13|220b39 227r10 228m10 228r15 228r28 229m10 229r15 229r47 +129i57 Len{natural} 13|220b57 226m7 227r24 229r59 +133U14*Flush_Primary 133>29 133>44 133>53 13|234b14 248l8 248t21 +133p29 P{37P9} 134r29 13|234b29 237r37 238r10 239r10 240r39 243r37 244r10 +. 245r10 246r39 +133b44 To_Read{boolean} 13|234b44 236r10 +133b53 To_Transmit{boolean} 13|234b53 242r10 +137U14*Flush_Secondary 137>31 137>46 137>55 13|250b14 264l8 264t23 +137p31 P{37P9} 138r29 13|250b31 253r37 254r10 255r10 256r39 259r37 260r10 +. 261r10 262r39 +137b46 To_Read{boolean} 13|250b46 252r10 +137b55 To_Transmit{boolean} 13|250b55 258r10 +141U14*Start_Primary 141>29 141>44 141>53 13|266b14 276l8 276t21 +141p29 P{37P9} 142r29 13|266b29 268r34 270r10 273r10 275r36 +141b44 To_Read{boolean} 13|266b44 269r10 +141b53 To_Transmit{boolean} 13|266b53 272r10 +145U14*Start_Secondary 145>31 145>46 145>55 13|278b14 288l8 288t23 +145p31 P{37P9} 146r29 13|278b31 280r34 282r10 285r10 287r36 +145b46 To_Read{boolean} 13|278b46 281r10 +145b55 To_Transmit{boolean} 13|278b55 284r10 +149U14*Stop_Primary 149>28 149>43 149>52 13|290b14 300l8 300t20 +149p28 P{37P9} 150r29 13|290b28 292r34 294r10 297r10 299r36 +149b43 To_Read{boolean} 13|290b43 293r10 +149b52 To_Transmit{boolean} 13|290b52 296r10 +153U14*Stop_Secondary 153>30 153>45 153>54 13|302b14 312l8 312t22 +153p30 P{37P9} 154r29 13|302b30 304r34 306r10 309r10 311r36 +153b45 To_Read{boolean} 13|302b45 305r10 +153b54 To_Transmit{boolean} 13|302b54 308r10 +157V13*Is_Valid{boolean} 47s60 55s19 63s19 71s19 79s19 87s19 94s19 98s19 +. 102s19 106s19 110s19 114s19 118s19 122s19 126s19 130s19 134s19 138s19 142s19 +. 146s19 150s19 154s19 157>23 184b13 +157p23 P{37P9} 184r57 +161I12 Data_Length{natural} 178r36 179r36 188r29 197r29 13|316r29 375r29 +162A12 TTY_Data{8|29A9} 180r36 181r36 189r29 198r29 13|317r29 376r29 +164r7*Primary_Mutex{16|22R9} 13|41m11 63m41 70m46 84m19 126m20 144m36 147m38 +. 164m36 166m38 171m36 173m38 237m39 240m41 259m39 262m41 +165r7*Secondary_Mutex{16|22R9} 13|42m11 64m41 71m46 98m20 112m19 156m36 159m38 +. 178m36 180m38 185m36 187m38 243m39 246m41 253m39 256m41 +166r7*Global_Data_Mutex{16|22R9} 13|43m11 65m41 72m46 139m36 142m38 192m36 +. 194m38 199m36 202m38 207m36 209m38 214m36 217m38 268m36 275m38 280m36 287m38 +. 292m36 299m38 304m36 311m38 +167b7*Primary_Block{boolean} 13|44m11 85r48 99r52 165r21 172m9 +168b7*Secondary_Block{boolean} 13|45m11 113r50 127r50 179r21 186m9 +169b7*Primary_Read{boolean} 13|46m11 86r19 270m12 294m12 +170b7*Primary_Transmit{boolean} 13|47m11 100r20 273m12 297m12 +171b7*Secondary_Read{boolean} 13|48m11 114r19 282m12 306m12 +172b7*Secondary_Transmit{boolean} 13|49m11 128r20 285m12 309m12 +173i7*Name_Index{natural} 13|50m11 225r42 +174r7*Term_Info{9|44R9} 13|51m11 193r14 200m9 +175r7*Term_Size{9|54R9} 13|52m11 208r14 215m9 +176b7*Was_Closed{boolean} 13|53m11 66r17 69m17 +177b7*Termios_Changed{boolean} 13|54m11 140r21 141m9 201m9 216m9 +178i7*Primary_Length{161I12} 13|55m11 84m49 126m51 145r22 146r22 239m12 261m12 +179i7*Secondary_Length{161I12} 13|56m11 98m53 112m51 157r22 158r22 245m12 +. 255m12 +180a7*Primary_Data{162A12} 13|57m11 85m19 127m20 146r42 238m12 260m12 +181a7*Secondary_Data{162A12} 13|58m11 99m20 113m19 158r44 244m12 254m12 +186U14 Read_From_End 187^8 188^8 189^8 190>8 191>8 192<8 193<8 13|83s7 111s7 +. 314b14 371l8 371t21 +187p8 End_Mutex(16|22R9) 13|315b8 333r43 335r45 340r37 343r42 370r36 +188p8 Inner_Len(161I12) 13|316b8 332r16 334r26 341r13 348r24 349r23 363r13 +. 364r13 364r30 +189p8 Inner_Data(162A12) 13|317b8 358r10 360r19 360r39 361r13 361r31 +190b8 Is_Blocking{boolean} 13|318b8 330r10 +191b8 Is_Able_To{boolean} 13|319b8 325r14 +192a8 Data{8|29A9} 13|320b8 324m7 348r10 351r23 353r10 354r38 357m7 357r13 +. 357r27 +193i8 Ret_Count{natural} 13|321b8 326m10 342m13 349m10 351m10 353r38 354m10 +. 357r40 358r27 359r21 +195U14 Write_To_End 196^8 197^8 198^8 199>8 200>8 201>8 202<8 13|97s7 125s7 +. 373b14 425l8 425t20 +196p8 End_Mutex(16|22R9) 13|374b8 392r43 394r45 399r37 402r42 424r36 +197p8 Inner_Len(161I12) 13|375b8 391r16 393r26 400r13 408r44 411r43 413r19 +. 418r19 421r19 423r7 +198p8 Inner_Data(162A12) 13|376b8 391r33 393r43 407r24 408r24 410r19 411r23 +. 421r7 +199b8 Is_Blocking{boolean} 13|377b8 389r10 +200b8 Is_Able_To{boolean} 13|378b8 384r14 +201a8 Data{8|29A9} 13|379b8 400r29 407r10 408r10 413r35 414r23 416r10 417r38 +. 422r10 422r16 422r30 +202i8 Ret_Count{natural} 13|380b8 385m10 401m13 411m10 414m10 416r38 417m10 +. 418r35 422r43 +X 13 ipc-pty.adb +25U14 Free[2|20] +25U14*Free[2|20] 67s10 +27r4 Tracked_Lock{16|22R9} 35m34 35r34 38m36 38r36 +29i4 Tracked_Name{natural} 36r21 37m7 37r23 +32i7 Name_Index{natural} 36m7 50r33 +33r7 Modes{9|20R9} 51r43 +221a7 Root_Name{string} 226r14 228r40 228r65 229r27 +222a7 Buffer{15|55A12} 225m55 230r13 230r21 230r53 +223i7 Buffer_Len{natural} 225m63 226r33 230r35 +359i11 I{integer} +360i14 J{integer} 361r25 361r43 +382i7 Final{natural} 410m10 413m10 418m10 421r40 423r24 +18P9*Name{12|37P9} 20r50[25] +20p39 X{12|37P9} 21r15[25] 22r23[25] 23r11[25] +X 14 lib.ads +19K9*Lib 12|18r6 164r36 165r36 166r36 187r29 196r29 13|19r6 27r27 28r7 35r7 +. 38r7 41r33 42r33 43r33 63r7 64r7 65r7 70r10 71r10 72r10 139r7 142r7 144r7 +. 147r7 156r7 159r7 164r7 166r7 171r7 173r7 178r7 180r7 185r7 187r7 192r7 +. 194r7 199r7 202r7 207r7 209r7 214r7 217r7 222r20 225r7 237r10 240r10 243r10 +. 246r10 253r10 256r10 259r10 262r10 268r7 275r7 280r7 287r7 292r7 299r7 +. 304r7 311r7 315r29 333r16 335r16 340r10 343r13 370r7 374r29 392r16 394r16 +. 399r10 402r13 424r7 14|35e8 +X 15 lib-messages.ads +21K13*Messages 13|19w10 222r24 225r11 15|103e17 +55A12*Translated_String{string} 13|222r33 +63U14*Image 13|225s20 +X 16 lib-synchronization.ads +20K13*Synchronization 12|18w10 164r40 165r40 166r40 187r33 196r33 13|27r31 +. 28r11 35r11 38r11 41r37 42r37 43r37 63r11 64r11 65r11 70r14 71r14 72r14 +. 139r11 142r11 144r11 147r11 156r11 159r11 164r11 166r11 171r11 173r11 178r11 +. 180r11 185r11 187r11 192r11 194r11 199r11 202r11 207r11 209r11 214r11 217r11 +. 237r14 240r14 243r14 246r14 253r14 256r14 259r14 262r14 268r11 275r11 280r11 +. 287r11 292r11 299r11 304r11 311r11 315r33 333r20 335r20 340r14 343r17 370r11 +. 374r33 392r20 394r20 399r14 402r17 424r11 16|66e24 +22R9*Binary_Semaphore 12|164r56 165r56 166r56 187r49 196r49 13|27r47 315r49 +. 374r49 16|57e14 +23r4*Unlocked_Semaphore{22R9} 13|28r27 41r53 42r53 43r53 +27U14*Seize 13|35s27 63s27 64s27 65s27 139s27 144s27 156s27 164s27 171s27 +. 178s27 185s27 192s27 199s27 207s27 214s27 237s30 243s30 253s30 259s30 268s27 +. 280s27 292s27 304s27 333s36 340s30 392s36 399s30 +31U14*Release 13|38s27 70s30 71s30 72s30 142s27 147s27 159s27 166s27 173s27 +. 180s27 187s27 194s27 202s27 209s27 217s27 240s30 246s30 256s30 262s30 275s27 +. 287s27 299s27 311s27 335s36 343s33 370s27 394s36 402s33 424s27 +X 18 scheduler.ads +25K9*Scheduler 13|18w6 337r13 396r13 18|183e14 +74U14*Yield_If_Able 13|337s23 396s23 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___ipc__pty__create 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__create 0 +GG EK_GLOBALS ada___ipc__pty__create local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name proper_output 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name refined_proof_in 0 refined_input 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name refined_output 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__close 4 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release ada___ipc__pty__free +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__close 0 +GG EK_GLOBALS ada___ipc__pty__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__read_primary 1 ada___ipc__pty__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__read_primary 1 ada___ipc__pty__is_valid +GG EK_GLOBALS ada___ipc__pty__read_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__write_primary 1 ada___ipc__pty__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__write_primary 1 ada___ipc__pty__is_valid +GG EK_GLOBALS ada___ipc__pty__write_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__read_secondary 1 ada___ipc__pty__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__read_secondary 1 ada___ipc__pty__is_valid +GG EK_GLOBALS ada___ipc__pty__read_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__write_secondary 1 ada___ipc__pty__is_valid +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__write_secondary 1 ada___ipc__pty__is_valid +GG EK_GLOBALS ada___ipc__pty__write_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__poll_primary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__poll_primary 0 +GG EK_GLOBALS ada___ipc__pty__poll_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__poll_secondary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__poll_secondary 0 +GG EK_GLOBALS ada___ipc__pty__poll_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__is_primary_blocking 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__is_primary_blocking 0 +GG EK_GLOBALS ada___ipc__pty__is_primary_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__set_primary_blocking 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__set_primary_blocking 0 +GG EK_GLOBALS ada___ipc__pty__set_primary_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__is_secondary_blocking 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__is_secondary_blocking 0 +GG EK_GLOBALS ada___ipc__pty__is_secondary_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__set_secondary_blocking 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__set_secondary_blocking 0 +GG EK_GLOBALS ada___ipc__pty__set_secondary_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__get_termios 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__get_termios 0 +GG EK_GLOBALS ada___ipc__pty__get_termios local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__set_termios 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__set_termios 0 +GG EK_GLOBALS ada___ipc__pty__set_termios local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__get_winsize 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__get_winsize 0 +GG EK_GLOBALS ada___ipc__pty__get_winsize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__set_winsize 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__set_winsize 0 +GG EK_GLOBALS ada___ipc__pty__set_winsize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__get_name 2 ada___ipc__pty__is_valid ada___lib__messages__image +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__get_name 0 +GG EK_GLOBALS ada___ipc__pty__get_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__messages__image calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__flush_primary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__flush_primary 0 +GG EK_GLOBALS ada___ipc__pty__flush_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__flush_secondary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__flush_secondary 0 +GG EK_GLOBALS ada___ipc__pty__flush_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__start_primary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__start_primary 0 +GG EK_GLOBALS ada___ipc__pty__start_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__start_secondary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__start_secondary 0 +GG EK_GLOBALS ada___ipc__pty__start_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__stop_primary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__stop_primary 0 +GG EK_GLOBALS ada___ipc__pty__stop_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__stop_secondary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__stop_secondary 0 +GG EK_GLOBALS ada___ipc__pty__stop_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__is_valid 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__is_valid 0 +GG EK_GLOBALS ada___ipc__pty__is_valid local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__read_from_end 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__read_from_end 0 +GG EK_GLOBALS ada___ipc__pty__read_from_end local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__write_to_end 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__write_to_end 0 +GG EK_GLOBALS ada___ipc__pty__write_to_end local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty__free 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__pty__free 0 +GG EK_GLOBALS ada___ipc__pty__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__pty 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__pty 0 +GG EK_GLOBALS ada___ipc__pty local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name refined_initializes 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__pty__freeGP911 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__freeGP911 TRUE FALSE FALSE FALSE TRUE ada___ipc__pty BODY_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-pty.cswi b/obj/gnatprove/phase1/ipc-pty.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-pty.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-shm.adb.stderr b/obj/gnatprove/phase1/ipc-shm.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-shm.adb.stdout b/obj/gnatprove/phase1/ipc-shm.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-shm.ali b/obj/gnatprove/phase1/ipc-shm.ali new file mode 100644 index 0000000..97dc477 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-shm.ali @@ -0,0 +1,365 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.shm%b ipc-shm.adb d270d4f6 OO PK IU +W interfaces%s interfac.ads interfac.ali +W interfaces.c%s i-c.adb i-c.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W memory%s memory.ads memory.ali +W memory.physical%s memory-physical.adb memory-physical.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali + +U ipc.shm%s ipc-shm.ads 743d9457 OO PK IU +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D i-c.ads 20240507065137 aac316ce interfaces.c%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-shm.ads 20250222165738 e6bb078c ipc.shm%s +D ipc-shm.adb 20250222165738 0fa53a76 ipc.shm%b +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s +D system.ads 20240507065137 14286b0f system%s +D s-parame.ads 20240507065137 3597fc11 system.parameters%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 2 interfac.ads +38K9*Interfaces 233e15 5|17w6 17r22 6|20r6 20r24 +81M9*Unsigned_32 5|25r26 30r22 32r22 33r22 40r22 41r22 45r32 61r14 62r14 +. 72r15 73r15 77r21 79r21 80r21 81r21 82r21 6|26r26 27r26 28r26 29r26 30r26 +. 44r22 46r22 47r22 82r22 83r22 112r32 167r14 168r14 207r15 208r15 +84M9*Unsigned_64 5|31r22 34r22 39r22 42r22 49r18 50r22 56r22 57r22 74r15 +. 78r21 83r21 93r41 6|31r26 45r22 48r22 81r22 84r22 127r18 128r22 140r21 +. 150r22 151r22 156r21 157r18 209r15 231r29 245r41 251r28 +X 3 i-c.ads +30K20*C 598e17 6|20w17 20r35 +89M9*size_t 6|70r17 99r23 261r16 +X 4 ipc.ads +17K9*IPC 18e8 5|19r9 98r5 6|23r14 264r5 +X 5 ipc-shm.ads +19K13*SHM 4|17k9 5|98l9 98e12 6|23b18 264l9 264t12 +25M12*Segment_ID{2|81M9} 26r24 34r42 42r42 45r52 51r22 55r18 60r14 64r36 +. 68r38 71r15 88r16 97r41 6|37r31 48r42 50r18 84r42 86r18 112r52 113r18 129r22 +. 149r18 166r14 184r36 194r38 206r15 222r16 257r41 +26m4*Error_ID{25M12} 6|50r32 57r56 86r32 113r32 133r15 +29V13*Create_Segment{25M12} 30>8 31>8 32>8 33>8 34>8 6|43b13 78l8 78t22 +30m8 Wanted_Key{2|81M9} 35r19 6|44b8 54r60 63r34 +31m8 Wanted_Size{2|84M9} 6|45b8 70r25 71r48 +32m8 Creator_UID{2|81M9} 6|46b8 64r40 66r42 +33m8 Creator_GID{2|81M9} 6|47b8 65r40 67r42 +34m8 Mode{2|84M9} 6|48b8 68r35 +38V13*Create_Unkeyed_Segment{25M12} 39>8 40>8 41>8 42>8 6|80b13 110l8 110t30 +39m8 Wanted_Size{2|84M9} 6|81b8 99r31 100r47 +40m8 Creator_UID{2|81M9} 6|82b8 93r39 95r41 +41m8 Creator_GID{2|81M9} 6|83b8 94r39 96r41 +42m8 Mode{2|84M9} 6|84b8 97r34 +45V13*Get_Segment{25M12} 45>26 6|112b13 124l8 124t19 +45m26 Key{2|81M9} 6|112b26 117r60 +48U14*Get_Segment_And_Size 49>8 50<8 51<8 6|126b14 146l8 146t28 +49m8 Address{2|84M9} 6|127b8 138r70 +50m8 Size{2|84M9} 6|128b8 132m7 140m13 +51m8 ID{25M12} 6|129b8 133m7 141m13 +54U14*Get_Address 55>8 56<8 57<8 6|148b14 163l8 163t19 +55m8 ID{25M12} 6|149b8 155r20 156r44 157r41 +56m8 Address{2|84M9} 6|150b8 156m10 159m10 +57m8 Size{2|84M9} 6|151b8 157m10 160m10 +59V13*Check_Permissions{boolean} 60>8 61>8 62>8 6|165b13 182l8 182t25 +60m8 ID{25M12} 6|166b8 173r20 174r36 175r30 176r24 +61m8 UID{2|81M9} 6|167b8 174r20 +62m8 GID{2|81M9} 6|168b8 175r14 +64U14*Mark_Refcounted 64>31 6|184b14 192l8 192t23 +64m31 ID{25M12} 6|184b31 187r20 188r20 189r32 +68U14*Modify_Attachment 68>33 68>50 6|194b14 203l8 203t25 +68m33 ID{25M12} 6|194b33 197r20 198r20 199r23 200r32 +68b50 Increment{boolean} 6|194b50 199r42 +70U14*Modify_Permissions 71>8 72>8 73>8 74>8 6|205b14 219l8 219t26 +71m8 ID{25M12} 6|206b8 213r20 214r20 215r20 216r20 +72m8 UID{2|81M9} 6|207b8 214r37 +73m8 GID{2|81M9} 6|208b8 215r37 +74m8 Mode{2|84M9} 6|209b8 216r32 +76R9*Segment_Information 85e14 89r20 6|223r20 +77m7*Key{2|81M9} 6|230m14 +78m7*Size{2|84M9} 6|231m14 +79m7*Owner_UID{2|81M9} 6|232m14 +80m7*Owner_GID{2|81M9} 6|233m14 +81m7*Creator_UID{2|81M9} 6|234m14 +82m7*Creator_GID{2|81M9} 6|235m14 +83m7*Mode{2|84M9} 6|236m14 +84i7*Refcount{natural} 6|237m14 +87U14*Fetch_Information 88>8 89<8 90<8 6|221b14 243l8 243t25 +88m8 ID{25M12} 6|222b8 228r20 230r39 231r52 232r39 233r39 234r39 235r39 236r39 +. 237r39 +89r8 Info{76R9} 6|223b8 229m10 +90b8 Found{boolean} 6|224b8 238m10 240m10 +93U14*Get_Total_Size 93<30 6|245b14 255l8 255t22 +93m30 Size{2|84M9} 6|245b30 247m7 251m13 251r21 +97U14 Check_And_Maybe_Free 97>36 6|189s10 200s10 257b14 263l8 263t28 +97m36 ID{25M12} 6|257b36 259r20 259r51 260r20 261r34 +X 6 ipc-shm.adb +24R9 Segment_Inner 36e14 37r60 +25b7*Is_Present{boolean} 54r26 57r30 62m27 90r30 91m26 117r26 137r26 155r24 +. 173r24 187r24 197r24 213r24 228r24 250r17 260m24 +26m7*Key{2|81M9} 54r54 63m27 92m26 117r54 230r43 +27m7*Owner_UID{2|81M9} 64m27 93m26 174r40 214m24 232r43 +28m7*Owner_GID{2|81M9} 65m27 94m26 175r34 215m24 233r43 +29m7*Creator_UID{2|81M9} 66m27 95m26 234r43 +30m7*Creator_GID{2|81M9} 67m27 96m26 235r43 +31m7*Mode{2|84M9} 68m27 97m26 176r28 216m24 236r43 +32m7*Physical_Address{9|34M12} 69m27 98m26 138r26 156r48 261r38 +33m7*Size{9|20M9} 71m27 100m26 140r47 157r45 231r56 251r45 +34i7*Refcount{natural} 72m27 101m26 198m24 199r27 237r43 259r24 +35b7*Is_Refcounted{boolean} 73m27 102m26 188m24 259r55 +37A9 Segment_Arr(24R9)<2|81M9> 40r15 +39r4 Registry_Mutex{8|22R9} 52m34 52r34 76m36 76r36 88m34 88r34 108m36 108r36 +. 115m34 115r34 122m36 122r36 135m34 135r34 145m36 145r36 154m34 154r34 162m36 +. 162r36 172m34 172r34 180m36 180r36 186m34 186r34 191m36 191r36 196m34 196r34 +. 202m36 202r36 212m34 212r34 218m36 218r36 227m34 227r34 242m36 242r36 248m34 +. 248r34 254m36 254r36 +40a4 Registry{37A9} 53r16 54r13 54r41 57r17 62m7 63m7 64m7 65m7 66m7 67m7 +. 68m7 69m7 71m7 72m7 73m7 89r16 90r17 91m13 92m13 93m13 94m13 95m13 96m13 +. 97m13 98m13 100m13 101m13 102m13 116r16 117r13 117r41 136r16 137r13 138r13 +. 140r34 155r10 156r34 157r31 173r10 174r26 175r20 176r14 187r10 188m10 197r10 +. 198m10 199r13 213r10 214m10 215m10 216m10 228r10 230r29 231r42 232r29 233r29 +. 234r29 235r29 236r29 237r29 249r18 250r13 251r41 259r10 259r41 260m10 261r24 +50m7 Returned{5|25M12} 57r45 58m13 62r17 63r17 64r17 65r17 66r17 67r17 68r17 +. 69r17 71r17 72r17 73r17 77r14 +53m11 I{2|81M9} 54r23 54r51 57r27 58r25 +75L6 Cleanup 55r18 +86m7 Returned{5|25M12} 103m13 109r14 +89m11 I{2|81M9} 90r27 91r23 92r23 93r23 94r23 95r23 96r23 97r23 98r23 100r23 +. 101r23 102r23 103r25 +113m7 Returned{5|25M12} 118m13 123r14 +116m11 I{2|81M9} 117r23 117r51 118r25 +136m11 I{2|81M9} 137r23 138r23 140r44 141r21 +170b7 Result{boolean} 174m10 178m10 181r14 +249r11 Reg=249:18{24R9} +X 7 lib.ads +19K9*Lib 6|17r6 17r31 52r7 76r7 88r7 108r7 115r7 122r7 135r7 145r7 154r7 +. 162r7 172r7 180r7 186r7 191r7 196r7 202r7 212r7 218r7 227r7 242r7 248r7 +. 254r7 7|35e8 +X 8 lib-synchronization.ads +20K13*Synchronization 6|17w10 17r35 52r11 76r11 88r11 108r11 115r11 122r11 +. 135r11 145r11 154r11 162r11 172r11 180r11 186r11 191r11 196r11 202r11 212r11 +. 218r11 227r11 242r11 248r11 254r11 8|66e24 +22R9*Binary_Semaphore 6|39r29 8|57e14 +23r4*Unlocked_Semaphore{22R9} 6|39r49 +27U14*Seize 6|52s27 88s27 115s27 135s27 154s27 172s27 186s27 196s27 212s27 +. 227s27 248s27 +31U14*Release 6|76s27 108s27 122s27 145s27 162s27 180s27 191s27 202s27 218s27 +. 242s27 254s27 +X 9 memory.ads +19K9*Memory 6|18w6 19r6 19r27 32r26 33r26 70r41 71r35 99r47 100r34 138r45 +. 9|36e11 +20M9*Size 6|33r33 71r42 100r41 +29N4*Memory_Offset 6|70r48 99r54 +34M12*Physical_Address{13|82M9} 6|32r33 138r52 +X 10 memory-physical.ads +20K16*Physical 6|19w13 19r34 10|60e20 +34V13*Alloc{9|35M12} 6|70s10 99s16 +40U14*Free 6|261s10 +X 11 system.ads +37K9*System 6|21r6 21r35 11|155e11 +X 13 s-stoele.ads +40K16*Storage_Elements 6|21w13 21r42 13|90e28 +82M9*Integer_Address + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___ipc__shm__create_segment 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___memory__physical__alloc +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__create_segment 0 +GG EK_GLOBALS ada___ipc__shm__create_segment local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___memory__physical__alloc TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__create_unkeyed_segment 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___memory__physical__alloc +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__create_unkeyed_segment 0 +GG EK_GLOBALS ada___ipc__shm__create_unkeyed_segment local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___memory__physical__alloc TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__get_segment 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__get_segment 0 +GG EK_GLOBALS ada___ipc__shm__get_segment local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__get_segment_and_size 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__get_segment_and_size 0 +GG EK_GLOBALS ada___ipc__shm__get_segment_and_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__get_address 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__get_address 0 +GG EK_GLOBALS ada___ipc__shm__get_address local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__check_permissions 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__check_permissions 0 +GG EK_GLOBALS ada___ipc__shm__check_permissions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__mark_refcounted 3 ada___ipc__shm__check_and_maybe_free ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__mark_refcounted 0 +GG EK_GLOBALS ada___ipc__shm__mark_refcounted local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__modify_attachment 3 ada___ipc__shm__check_and_maybe_free ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__modify_attachment 0 +GG EK_GLOBALS ada___ipc__shm__modify_attachment local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__modify_permissions 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__modify_permissions 0 +GG EK_GLOBALS ada___ipc__shm__modify_permissions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__fetch_information 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__fetch_information 0 +GG EK_GLOBALS ada___ipc__shm__fetch_information local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__get_total_size 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__get_total_size 0 +GG EK_GLOBALS ada___ipc__shm__get_total_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm__check_and_maybe_free 1 ada___memory__physical__free +GG EK_PROOF_DEPENDENCIES ada___ipc__shm__check_and_maybe_free 0 +GG EK_GLOBALS ada___ipc__shm__check_and_maybe_free local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 1 ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry refined_proof_in 0 refined_input 1 ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry calls_proof 0 calls 0 calls_conditional 1 ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___ipc__shm__registry LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__shm 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__shm 0 +GG EK_GLOBALS ada___ipc__shm local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_initializes 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__get_segment_and_size FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__get_address FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__check_permissions FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__mark_refcounted FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__modify_attachment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__modify_permissions FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__fetch_information FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__get_total_size FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__check_and_maybe_free FALSE FALSE FALSE FALSE TRUE ada___ipc__shm PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__create_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__create_unkeyed_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__get_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory +GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-shm.cswi b/obj/gnatprove/phase1/ipc-shm.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-shm.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-socket.adb.stderr b/obj/gnatprove/phase1/ipc-socket.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-socket.adb.stdout b/obj/gnatprove/phase1/ipc-socket.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc-socket.ali b/obj/gnatprove/phase1/ipc-socket.ali new file mode 100644 index 0000000..7a92d9b --- /dev/null +++ b/obj/gnatprove/phase1/ipc-socket.ali @@ -0,0 +1,936 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc.socket%b ipc-socket.adb 9327d966 OO PK IU +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W ipc%s ipc.ads ipc.ali +W networking%s networking.adb networking.ali +W networking.interfaces%s networking-interfaces.adb networking-interfaces.ali +W networking.ipv4%s networking-ipv4.adb networking-ipv4.ali +W networking.ipv6%s networking-ipv6.adb networking-ipv6.ali +W scheduler%s scheduler.adb scheduler.ali +Z system%s system.ads system.ali + +U ipc.socket%s ipc-socket.ads b04b93ec OO PK IU +W devices%s devices.adb devices.ali +W ipc%s ipc.ads ipc.ali +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W networking%s networking.adb networking.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D ipc-socket.adb 20250222165738 7b5a2e7d ipc.socket%b +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D networking-arp.ads 20250222165738 eec21925 networking.arp%s +D networking-interfaces.ads 20250222165738 9c034257 networking.interfaces%s +D networking-ipv4.ads 20250222165738 1c38e59d networking.ipv4%s +D networking-ipv6.ads 20250222165738 617a68ce networking.ipv6%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 11|17r6 24r26 25r26 +X 2 a-uncdea.ads +20u15*Unchecked_Deallocation 11|17w10 24r30 25r30 +X 7 devices.ads +22K9*Devices 279e12 10|18w6 18r19 111r24 123r20 241r24 259r20 345r24 363r20 +. 443r24 459r20 477r27 510r24 516r20 523r24 529r20 552r24 558r20 11|151r24 +. 165r20 302r24 311r14 318r22 326r13 344r20 353r14 364r22 376r13 462r24 471r14 +. 478r22 486r13 503r20 512r14 523r22 535r13 706r24 721r20 736r24 752r20 768r24 +. 784r20 822r24 899r20 +29A9*Operation_Data(8|70M9) 10|111r32 123r28 241r32 259r28 345r32 +. 363r28 443r32 459r28 477r35 510r32 516r28 523r32 529r28 552r32 558r28 11|26r8 +. 151r32 165r28 302r32 344r28 358r18 372r29 462r32 503r28 517r18 531r29 706r32 +. 721r28 736r32 752r28 768r32 784r28 822r32 899r28 +30P9*Operation_Data_Acc(29A9) 11|26r24 354r18 513r18 +83I9*Device_Handle 11|311r22 353r22 471r22 512r22 +85i4*Error_Handle{83I9} 11|318r30 364r30 478r30 523r30 +193U14*Read 11|326s21 486s21 +210U14*Write 11|376s21 535s21 +X 8 interfac.ads +70M9*Unsigned_8 +73M9*Unsigned_16 +X 9 ipc.ads +17K9*IPC 18e8 10|21r9 573r5 11|23r14 1029r5 +X 10 ipc-socket.ads +21K13*Socket 9|17k9 10|573l9 573e15 11|23b18 1029l9 1029t15 +25E9*Domain 28e13 36r23 56r22 63r51 471r23 11|29r22 90r51 +26n8*IPv4{25E9} 178r61 190r61 201r61 214r61 229r39 247r39 265r39 281r61 488r15 +. 11|35r15 40r37 104r15 138r15 157r15 171r15 186r15 223r15 +27n8*IPv6{25E9} 293r61 304r61 317r61 333r39 351r39 369r39 448r39 464r39 496r15 +. 11|48r15 53r37 104r22 138r22 158r15 172r15 186r22 223r22 +28n8*UNIX{25E9} 386r61 398r61 406r61 416r61 432r39 476r15 11|61r15 66r39 +. 78r41 106r15 143r15 159r15 173r15 188r15 225r15 +30E9*DataType 33e12 36r37 57r22 70r49 471r37 11|30r22 95r49 +31n8*Stream{30E9} 153r59 163r59 230r37 248r38 266r38 334r37 352r38 370r38 +. 433r37 449r38 465r38 480r21 11|63r21 67r39 642r15 841r15 907r15 994r15 +32n8*Datagram{30E9} 11|75r21 79r41 +33n8*Raw{30E9} 490r21 498r21 11|37r21 41r37 50r21 54r37 84r21 276r15 316r15 +. 362r15 436r15 476r15 521r15 +36R9*Socket 36d17 36d31 37r30 471c9 505e14 11|24r54 38r30 51r30 64r30 76r30 +36e17 Dom{25E9} 471r17 475r12 11|40m21 53m21 66m21 78m21 92r19 103r21 137r17 +. 156r17 170r17 185r17 222r17 685r40 +36e31 Typ{30E9} 471r31 479r18 489r18 497r18 11|41m21 54m21 67m21 79m21 97r19 +. 275r17 315r17 361r17 435r17 475r17 520r17 641r17 686r40 840r17 906r17 993r17 +37P9*Socket_Acc(36R9) 58r46 63r32 70r30 75r39 81r33 87r35 97r20 110r20 122r20 +. 137r27 144r34 152r28 160r22 162r26 174r18 186r18 198r15 211r15 223r23 227r27 +. 240r20 258r20 277r18 289r18 301r15 314r15 327r23 331r27 344r20 362r20 382r18 +. 394r18 405r26 415r29 426r30 430r34 442r20 458r20 482r36 483r36 484r36 486r38 +. 509r20 515r20 522r20 528r20 536r18 546r46 548r43 551r20 557r20 563r20 570r27 +. 11|24r62 31r46 90r32 95r30 100r39 112r33 121r35 129r20 150r20 164r20 178r27 +. 195r34 204r28 214r22 216r26 232r18 245r18 258r15 270r15 286r23 290r27 301r20 +. 343r20 391r18 404r18 418r15 430r15 446r23 450r27 461r20 502r20 550r18 574r18 +. 601r26 630r29 631r20 667r30 671r34 673r13 705r20 712r23 720r20 727r23 735r20 +. 751r20 767r20 783r20 798r46 808r43 821r20 898r20 986r20 1016r27 +40E9*Socket_Status 43e20 113r24 125r24 245r24 263r24 349r24 367r24 446r24 +. 462r24 512r24 518r24 525r24 531r24 554r24 560r24 11|153r24 167r24 306r24 +. 348r24 466r24 507r24 709r24 724r24 738r24 754r24 770r24 786r24 824r24 901r24 +41n8*Plain_Success{40E9} 11|331r27 380r27 491r27 539r27 880r24 886r29 955r26 +. 976r29 +42n8*Is_Bad_Type{40E9} 11|338r24 386r24 497r26 545r26 845r29 910r29 +43n8*Would_Block{40E9} 11|321r29 333r27 366r29 382r27 481r29 493r27 525r29 +. 541r27 854r32 889r29 935r32 964r29 979r29 +46i4*Default_Socket_Size{natural} 469c4 477r56 478r46 11|919r22 929r50 940r22 +. 941r22 943r25 944r25 961r31 971r31 1003r54 +55V13*Create{37P9} 56>8 57>8 58>8 11|28b13 88l8 88t14 684s26 +56e8 Dom{25E9} 11|29b8 34r12 +57e8 Typ{30E9} 11|30b8 36r18 49r18 62r18 +58b8 Is_Blocking{boolean} 11|31b8 42r37 55r37 69r39 80r41 +63V13*Get_Domain{25E9} 63>25 178s41 190s41 201s41 214s41 229s19 247s19 265s19 +. 281s41 293s41 304s41 317s41 333s19 351s19 369s19 386s41 398s41 406s41 416s41 +. 432s19 448s19 464s19 11|90b13 93l8 93t18 +63p25 Sock{37P9} 64r19 11|90b25 92r14 +70V13*Get_Type{30E9} 70>23 153s41 163s41 230s19 248s19 266s19 334s19 352s19 +. 370s19 433s19 449s19 465s19 11|95b13 98l8 98t16 +70p23 Sock{37P9} 71r19 11|95b23 97r14 +75U14*Close 75=21 11|100b14 110l8 110t13 +75p21 To_Close{37P9} 76r19 76r45 11|100b21 102r34 103r12 107r31 109m13 +81V13*Is_Blocking{boolean} 81>26 11|112b13 119l8 119t19 +81p26 Sock{37P9} 82r19 11|112b26 115r34 116r17 117r36 +87U14*Set_Blocking 87>28 87>47 11|121b14 126l8 126t20 +87p28 Sock{37P9} 88r19 11|121b28 123r34 124r7 125r36 +87b47 Is_Blocking{boolean} 11|121b47 124r27 +96U14*Poll 97>8 98<8 99<8 100<8 101<8 11|128b14 147l8 147t12 +97p8 Sock{37P9} 102r19 11|129b8 136r34 137r12 144r30 146r36 +98b8 Can_Read{boolean} 11|130b8 139m13 144m36 +99b8 Can_Write{boolean} 11|131b8 140m13 144m46 +100b8 Is_Broken{boolean} 11|132b8 141m13 144m57 +101b8 Is_Error{boolean} 11|133b8 142m13 144m68 +109U14*Read 110>8 111<8 112<8 113<8 11|149b14 161l8 161t12 +110p8 Sock{37P9} 114r19 11|150b8 156r12 157r40 158r40 159r40 +111a8 Data{7|29A9} 11|151b8 157m46 158m46 159m46 +112i8 Ret_Count{natural} 11|152b8 157m52 158m52 159m52 +113e8 Success{40E9} 11|153b8 157m63 158m63 159m63 +121U14*Write 122>8 123>8 124<8 125<8 11|163b14 175l8 175t13 +122p8 Sock{37P9} 126r19 11|164b8 170r12 171r41 172r41 173r41 +123a8 Data{7|29A9} 11|165b8 171r47 172r47 173r47 +124i8 Ret_Count{natural} 11|166b8 171m53 172m53 173m53 +125e8 Success{40E9} 11|167b8 171m64 172m64 173m64 +136V13*Shutdown{boolean} 137>8 138>8 139>8 11|177b13 193l8 193t16 +137p8 Sock{37P9} 11|178b8 184r34 185r12 189r41 191r36 +138b8 Do_Receptions{boolean} 11|179b8 189r47 +139b8 Do_Transmissions{boolean} 11|180b8 189r62 +144V13*Is_Listening{boolean} 144>27 11|195b13 202l8 202t20 +144p27 Sock{37P9} 145r19 11|195b27 198r34 199r17 200r36 +152V13*Listen{boolean} 152>21 152>40 11|204b13 211l8 211t14 +152p21 Sock{37P9} 153r19 153r51 11|204b21 207r34 208r7 209r36 +152i40 Backlog{natural} 11|204b40 205r28 +159U14*Accept_Connection 160>8 161>8 162<8 11|213b14 229l8 229t25 +160p8 Sock{37P9} 163r19 163r51 11|214b8 221r34 222r12 226r32 228r36 +161b8 Is_Blocking{boolean} 11|215b8 226r38 +162p8 Result{37P9} 11|216b8 224m13 226m62 +173U14*Get_Bound 174>8 175<8 176<8 177<8 11|231b14 242l8 242t17 +174p8 Sock{37P9} 178r19 178r53 11|232b8 237r28 +175a8 Addr{15|23A9} 11|233b8 239m7 +176m8 Port{15|25M9} 11|234b8 240m7 +177b8 Success{boolean} 11|235b8 241m7 +185U14*Get_Peer 186>8 187<8 188<8 189<8 11|244b14 255l8 255t16 +186p8 Sock{37P9} 190r19 190r53 11|245b8 250r28 +187a8 Addr{15|23A9} 11|246b8 252m7 +188m8 Port{15|25M9} 11|247b8 253m7 +189b8 Success{boolean} 11|248b8 254m7 +197V13*Bind{boolean} 198>8 199>8 200>8 11|257b13 267l8 267t12 +198p8 Sock{37P9} 201r19 201r53 11|258b8 262r28 +199a8 Addr{15|23A9} 11|259b8 263r28 +200m8 Port{15|25M9} 11|260b8 264r28 +210V13*Connect{boolean} 211>8 212>8 213>8 11|269b13 283l8 283t15 +211p8 Sock{37P9} 214r19 214r53 11|270b8 275r12 277r13 278r13 +212a8 Addr{15|23A9} 11|271b8 277r41 +213m8 Port{15|25M9} 11|272b8 278r38 +222U14*Accept_Connection 223>8 224>8 225<8 226<8 227<8 11|285b14 298l8 298t25 +223p8 Sock{37P9} 228r19 229r31 230r29 11|286b8 292r28 +224b8 Is_Blocking{boolean} 11|287b8 293r28 +225a8 Peer_Address{15|23A9} 11|288b8 295m7 +226m8 Peer_Port{15|25M9} 11|289b8 296m7 +227p8 Result{37P9} 11|290b8 297m7 +239U14*Read 240>8 241<8 242<8 243>8 244>8 245<8 11|300b14 340l8 340t12 741s7 +240p8 Sock{37P9} 246r19 247r31 248r29 11|301b8 315r12 +241a8 Data{7|29A9} 11|302b8 319m16 326m35 327m13 327r19 327r33 328r16 328r22 +. 328r53 336m13 +242i8 Ret_Count{natural} 11|303b8 320m16 326m41 329m13 329r26 337m13 +243a8 Addr{15|23A9} 11|304b8 317r59 +244m8 Port{15|25M9} 11|305b8 308r28 +245e8 Success{40E9} 11|306b8 321m16 331m16 333m16 338m13 +257U14*Write 258>8 259>8 260<8 261>8 262>8 263<8 11|342b14 388l8 388t13 757s7 +258p8 Sock{37P9} 264r19 265r31 266r29 11|343b8 361r12 +259a8 Data{7|29A9} 11|344b8 371r64 372r50 374r64 +260i8 Ret_Count{natural} 11|345b8 365m16 376m50 385m13 +261a8 Addr{15|23A9} 11|346b8 363r59 371r58 +262m8 Port{15|25M9} 11|347b8 350r28 +263e8 Success{40E9} 11|348b8 366m16 380m16 382m16 386m13 +276U14*Get_Bound 277>8 278<8 279<8 280<8 11|390b14 401l8 401t17 +277p8 Sock{37P9} 281r19 281r53 11|391b8 396r28 +278a8 Addr{15|24A9} 11|392b8 398m7 +279m8 Port{15|26M9} 11|393b8 399m7 +280b8 Success{boolean} 11|394b8 400m7 +288U14*Get_Peer 289>8 290<8 291<8 292<8 11|403b14 414l8 414t16 +289p8 Sock{37P9} 293r19 293r53 11|404b8 409r28 +290a8 Addr{15|24A9} 11|405b8 411m7 +291m8 Port{15|26M9} 11|406b8 412m7 +292b8 Success{boolean} 11|407b8 413m7 +300V13*Bind{boolean} 301>8 302>8 303>8 11|417b13 427l8 427t12 +301p8 Sock{37P9} 304r19 304r53 11|418b8 422r28 +302a8 Addr{15|24A9} 11|419b8 423r28 +303m8 Port{15|26M9} 11|420b8 424r28 +313V13*Connect{boolean} 314>8 315>8 316>8 11|429b13 443l8 443t15 +314p8 Sock{37P9} 317r19 317r53 11|430b8 435r12 437r13 438r13 +315a8 Addr{15|24A9} 11|431b8 437r41 +316m8 Port{15|26M9} 11|432b8 438r38 +326U14*Accept_Connection 327>8 328>8 329<8 330<8 331<8 11|445b14 458l8 458t25 +327p8 Sock{37P9} 332r19 333r31 334r29 11|446b8 452r28 +328b8 Is_Blocking{boolean} 11|447b8 453r28 +329a8 Peer_Address{15|24A9} 11|448b8 455m7 +330m8 Peer_Port{15|26M9} 11|449b8 456m7 +331p8 Result{37P9} 11|450b8 457m7 +343U14*Read 344>8 345<8 346<8 347>8 348>8 349<8 11|460b14 499l8 499t12 773s7 +344p8 Sock{37P9} 350r19 351r31 352r29 11|461b8 475r12 +345a8 Data{7|29A9} 11|462b8 479m16 486m35 487m13 487r19 487r33 488r16 488r22 +. 488r53 +346i8 Ret_Count{natural} 11|463b8 480m16 486m41 489m13 489r26 496m13 +347a8 Addr{15|24A9} 11|464b8 477r59 +348m8 Port{15|26M9} 11|465b8 468r28 +349e8 Success{40E9} 11|466b8 481m16 491m16 493m16 497m13 +361U14*Write 362>8 363>8 364<8 365>8 366>8 367<8 11|501b14 547l8 547t13 789s7 +362p8 Sock{37P9} 368r19 369r31 370r29 11|502b8 520r12 +363a8 Data{7|29A9} 11|503b8 530r64 531r50 533r64 +364i8 Ret_Count{natural} 11|504b8 524m16 535m50 544m13 +365a8 Addr{15|24A9} 11|505b8 522r59 530r58 +366m8 Port{15|26M9} 11|506b8 509r28 +367e8 Success{40E9} 11|507b8 525m16 539m16 541m16 545m13 +381U14*Get_Bound 382>8 383<8 384<8 385<8 11|549b14 571l8 571t17 +382p8 Sock{37P9} 386r19 386r53 11|550b8 562r24 +383a8 Path{string} 11|551b8 556m7 563m13 563r19 563r33 +384i8 Length{natural} 11|552b8 557m7 565m13 +385b8 Success{boolean} 11|553b8 558m7 566m13 +393U14*Get_Peer 394>8 395<8 396<8 397<8 11|573b14 599l8 599t16 +394p8 Sock{37P9} 398r19 398r53 11|574b8 586r24 +395a8 Path{string} 11|575b8 580m7 587r16 588m16 588r22 588r36 591m16 591r39 +396i8 Length{natural} 11|576b8 581m7 593m13 +397b8 Success{boolean} 11|577b8 582m7 594m13 +405V13*Bind{boolean} 405>19 405>38 11|601b13 628l8 628t12 +405p19 Sock{37P9} 406r19 406r53 11|601b19 611r24 617r25 +405a38 Path{string} 11|601b38 604r10 604r29 618r28 618r44 619r29 +415V13*Connect{boolean} 415>22 415>41 11|630b13 664l8 664t15 714s18 729s18 +415p22 Sock{37P9} 416r19 416r53 11|630b22 641r12 643r13 646r48 652r26 656r13 +415a41 Path{string} 11|630b41 636r32 +425U14*Accept_Connection 426>8 427>8 428<8 429<8 430<8 11|226s13 666b14 702l8 +. 702t25 +426p8 Sock{37P9} 431r19 432r31 433r29 11|667b8 679r34 681r10 683r16 685r20 +. 686r20 689r23 690r38 693r16 696r27 701r36 +427b8 Is_Blocking{boolean} 11|668b8 687r20 +428a8 Peer_Address{string} 11|669b8 675m7 +429i8 Peer_Address_Length{natural} 11|670b8 676m7 +430p8 Result{37P9} 11|671b8 677m7 684m16 690r16 691r38 692r16 +441U14*Read 442>8 443<8 444<8 445>8 446<8 11|704b14 717l8 717t12 +442p8 Sock{37P9} 447r19 448r31 449r29 11|705b8 712r37 714r27 715r24 716r7 +443a8 Data{7|29A9} 11|706b8 715m30 +444i8 Ret_Count{natural} 11|707b8 715m36 +445a8 Path{string} 11|708b8 714r33 +446e8 Success{40E9} 11|709b8 715m47 +457U14*Write 458>8 459>8 460<8 461>8 462<8 11|719b14 732l8 732t13 +458p8 Sock{37P9} 463r19 464r31 465r29 11|720b8 727r37 729r27 730r25 731r7 +459a8 Data{7|29A9} 11|721b8 730r31 +460i8 Ret_Count{natural} 11|722b8 730m37 +461a8 Path{string} 11|723b8 729r33 +462e8 Success{40E9} 11|724b8 730m48 +472r7*Mutex{13|22R9} 11|39m21 52m21 65m21 77m21 102m43 115m39 117m41 123m39 +. 125m41 136m39 146m41 184m39 191m41 198m39 200m41 207m39 209m41 221m39 228m41 +. 679m39 701m41 831m45 833m47 837m42 849m53 894m41 917m66 920m68 924m63 927m45 +. 931m53 957m62 958m47 969m62 981m64 +473b7*Is_Blocking{boolean} 11|42m21 55m21 69m21 80m21 116r22 124m12 696r32 +. 829r15 848r24 915r21 930r24 +477a13*Data{7|29A9} 11|73m21 82m21 867r21 869r30 869r49 870m24 870r41 884r24 +. 949m33 973m38 +478i13*Data_Length{integer} 11|74m21 83m21 832r28 847r24 859r27 860r28 872r24 +. 873m24 873r44 882r21 883r32 884r40 885r34 918r49 929r36 941r64 944r67 946r45 +. 950r37 952m33 970r38 974m38 1001r34 1003r39 1008r31 +481b19*Is_Listener{boolean} 11|68m21 199r22 208m12 681r15 842r21 908r21 995r21 +482p19*Connected{37P9} 11|70m21 643m18 +483p19*Pending_Accept{37P9} 11|71m21 645r30 646m30 652r31 683r21 685r25 686r25 +. 689r28 691m20 692m23 693m21 842r41 908r41 917r51 918r34 920r53 924r48 929r21 +. 941r49 944r52 946r30 949r18 950r22 952r18 957r47 996r34 1002r34 1003r24 +484p19*Established{37P9} 11|72m21 586r29 690m23 1023r15 1024r15 1024m27 1025m15 +486p19*Simple_Connected{37P9} 11|81m21 656m18 712r42 716m12 727r42 731m12 +. 960r21 969r45 970r21 973r21 974r21 981r47 1009r31 +491a19*IPv4_Cached_Address{15|23A9} 11|43m21 277m18 745r29 761r29 +492m19*IPv4_Cached_Port{15|25M9} 11|44m21 278m18 746r29 762r29 +499a19*IPv6_Cached_Address{15|24A9} 11|56m21 437m18 777r29 793r29 +500m19*IPv6_Cached_Port{15|26M9} 11|57m21 438m18 778r29 794r29 +508U14 Inner_IPv4_Read 509>8 510<8 511<8 512<8 11|157s23 734b14 748l8 748t23 +509p8 Sock{37P9} 11|735b8 742r24 745r24 746r24 +510a8 Data{7|29A9} 11|736b8 743m24 +511i8 Ret_Count{natural} 11|737b8 744m24 +512e8 Success{40E9} 11|738b8 747m24 +514U14 Inner_IPv4_Write 515>8 516>8 517<8 518<8 11|171s23 750b14 764l8 764t24 +515p8 Sock{37P9} 11|751b8 758r24 761r24 762r24 +516a8 Data{7|29A9} 11|752b8 759r24 +517i8 Ret_Count{natural} 11|753b8 760m24 +518e8 Success{40E9} 11|754b8 763m24 +521U14 Inner_IPv6_Read 522>8 523<8 524<8 525<8 11|158s23 766b14 780l8 780t23 +522p8 Sock{37P9} 11|767b8 774r24 777r24 778r24 +523a8 Data{7|29A9} 11|768b8 775m24 +524i8 Ret_Count{natural} 11|769b8 776m24 +525e8 Success{40E9} 11|770b8 779m24 +527U14 Inner_IPv6_Write 528>8 529>8 530<8 531<8 11|172s23 782b14 796l8 796t24 +528p8 Sock{37P9} 11|783b8 790r24 793r24 794r24 +529a8 Data{7|29A9} 11|784b8 791r24 +530i8 Ret_Count{natural} 11|785b8 792m24 +531e8 Success{40E9} 11|786b8 795m24 +534N4 Bind_Path_Max 537r31 538r37 11|604r43 +535R9 Bound_Socket 539e14 543r44 +536p7*Sock{37P9} 544m19 11|562r17 586r17 611r17 616r17 617m17 801r17 802r24 +. 812r17 813m17 +537a7*Path{string} 544m33 11|564r20 589r23 591r28 618m17 801r43 +538i7*Path_Len{integer} 544m58 11|563r50 564r35 565r28 587r35 588r53 589r38 +. 593r28 619m17 801r58 +541r4 UNIX_Bound_Mutex{13|22R9} 11|560m34 560r34 570m36 570r36 584m34 584r34 +. 598m36 598r36 608m34 608r34 626m36 626r36 634m34 634r34 662m36 662r36 810m34 +. 810r34 817m36 817r36 +543a4 UNIX_Bound_Sockets(535R9) 11|561r18 562r13 563r46 564r16 564r31 565r24 +. 585r18 586r13 587r31 588r49 589r19 589r34 591r24 593r24 610r18 611r13 615r18 +. 616r13 617m13 618m13 619m13 800r18 801r13 801r39 801r54 802r20 811r18 812r13 +. 813m13 +546V13 Get_Bound{37P9} 546>24 11|636s21 798b13 806l8 806t17 +546a24 Path{string} 11|798b24 801r70 +548U14 Inner_UNIX_Close 548>32 11|107s13 808b14 818l8 818t24 +548p32 To_Close{37P9} 11|808b32 812r24 +550U14 Inner_UNIX_Read 551>8 552<8 553<8 554<8 11|159s23 715s7 820b14 895l8 +. 895t23 +551p8 Sock{37P9} 11|821b8 829r10 831r40 832r23 833r42 837r37 840r12 842r16 +. 842r36 847r19 848r19 849r48 859r22 860r23 867r16 869r25 869r44 870r19 870r36 +. 872r19 873r19 873r39 882r16 883r27 884r19 884r35 885r29 894r36 +552a8 Data{7|29A9} 11|822b8 826r24 843m16 852m19 862r16 863r38 866m13 866r19 +. 866r33 882r36 883m16 +553i8 Ret_Count{natural} 11|823b8 844m16 853m19 879m13 885m16 888m16 +554e8 Success{40E9} 11|824b8 845m16 854m19 880m13 886m16 889m16 +556U14 Inner_UNIX_Write 557>8 558>8 559<8 560<8 11|173s23 730s7 897b14 983l8 +. 983t24 +557p8 Sock{37P9} 11|898b8 906r12 908r16 908r36 915r16 917r46 918r29 920r48 +. 924r43 927r40 929r16 930r19 931r48 941r44 944r47 946r25 949r13 950r17 952r13 +. 957r42 958r42 960r16 969r40 970r16 973r16 974r16 981r42 +558a8 Data{7|29A9} 11|899b8 903r26 951r16 951r22 951r36 961r16 971r16 973r49 +. 973r65 974r53 975r29 +559i8 Ret_Count{natural} 11|900b8 909m16 934m19 954m13 963m16 975m16 978m16 +560e8 Success{40E9} 11|901b8 910m16 935m19 955m13 964m16 976m16 979m16 +562U14 Inner_UNIX_Poll 563>8 564<8 565<8 566<8 567<8 11|144s13 985b14 1013l8 +. 1013t23 +563p8 Sock{37P9} 11|986b8 993r12 995r16 996r29 1001r29 1002r29 1003r19 1008r26 +. 1009r26 +564b8 Can_Read{boolean} 11|987b8 996m16 997r29 1001m16 1008m13 +565b8 Can_Write{boolean} 11|988b8 997m16 1002m16 1009m13 +566b8 Is_Broken{boolean} 11|989b8 998m16 1004m16 1010m13 +567b8 Is_Error{boolean} 11|990b8 999m16 1005m16 1011m13 +569V13 Inner_UNIX_Shutdown{boolean} 570>8 571>8 572>8 11|189s20 1015b13 1028l8 +. 1028t27 +570p8 Sock{37P9} 11|1016b8 1023r10 1024r10 1025r10 +571b8 Do_Receptions{boolean} 11|1017b8 1020r28 +572b8 Do_Transmissions{boolean} 11|1018b8 1021r28 +X 11 ipc-socket.adb +24U14 Free[2|20] +24U14*Free[2|20] 109s7 +25U14 Free[2|20] +25U14*Free[2|20] 377s13 536s13 +113b7 Result{boolean} 116m7 118r14 +182b7 Suc{boolean} 187m13 189m13 192r14 +196b7 Result{boolean} 199m7 201r14 +218a7 Path{string} 226m51 +219i7 Len{natural} 226m57 +310b7 Succ{boolean} 326m52 330r16 +311i7 Dev{7|83I9} 317m65 318r16 324r58 326r27 +312a7 Src{15|23A9} 324m63 +313i7 Hdr_Size{natural} 327r46 328r36 329r39 +352b7 Succ{boolean} 376m61 379r16 +353i7 Dev{7|83I9} 363m65 364r16 369r58 376r28 +354p7 Tmp_Data{7|30P9} 372m13 373r13 374r13 374r46 376r36 377m19 377r19 +355a7 Src{15|23A9} 369m63 371r53 +356r7 Hdr{18|29R9} 358r39 359m34 359r34 371m13 372r65 +358a7 Hdr_Data{7|29A9} 373r28 373r48 374r23 +470b7 Succ{boolean} 486m52 490r16 +471i7 Dev{7|83I9} 477m65 478r16 484r58 486r27 +472a7 Src{15|24A9} 484m63 +473i7 Hdr_Size{natural} 487r46 488r36 489r39 +511b7 Succ{boolean} 535m61 538r16 +512i7 Dev{7|83I9} 522m65 523r16 528r58 535r28 +513p7 Tmp_Data{7|30P9} 531m13 532r13 533r13 533r46 535r36 536m19 536r19 +514a7 Src{15|24A9} 528m63 530r53 +515r7 Hdr{19|26R9} 517r39 518m34 518r34 530m13 531r65 +517a7 Hdr_Data{7|29A9} 532r28 532r48 533r23 +561r11 Ent=561:18{10|535R9} +585r11 Ent=585:18{10|535R9} +602b7 Success{boolean} 620m13 627r14 +610r11 Ent=610:18{10|535R9} +615r11 Ent=615:18{10|535R9} +625L6 Cleanup 612r18 621r18 +631p7 To_Connect{10|37P9} 636m7 637r10 643r31 645r19 646r19 656r38 +632b7 Success{boolean} 638m10 659m7 663r14 +661L6 End_Return 639r15 +673p7 Tmp{10|37P9} 689m16 691r16 692r41 +711b7 Discard{boolean} 714m7 +712p7 Temp{10|37P9} 716r32 +726b7 Discard{boolean} 729m7 +727p7 Temp{10|37P9} 731r32 +800r11 Ent=800:18{10|535R9} +811r11 Ent=811:18{10|535R9} +826i7 Len{natural} 859r16 860m16 862r44 863m16 866r46 867r32 868r27 879r26 +828L6 Retry 850r24 +868i17 I{integer} +869i20 J{integer} 870r30 870r47 +893L6 Cleanup 846r21 855r24 +903i7 Len{natural} 940r16 941r16 944m16 946r59 951r49 954r26 +904i7 Final{natural} 943m16 946m16 950r56 952r48 +914L12 Retry 932r24 +956L12 Cleanup 936r24 +18P9*Name{10|37P9} 20r50[24] 20r50[25] +20p39 X{10|37P9} 21r15[24] 22r23[24] 23r11[24] 21r15[25] 22r23[25] 23r11[25] +X 12 lib.ads +19K9*Lib 10|17r6 472r29 541r33 542r7 11|39r37 52r37 65r39 77r41 102r7 115r7 +. 117r7 123r7 125r7 136r7 146r7 184r7 191r7 198r7 200r7 207r7 209r7 221r7 +. 228r7 560r7 570r7 584r7 598r7 608r7 626r7 634r7 662r7 679r7 701r7 810r7 +. 817r7 831r13 833r13 837r10 849r19 894r7 917r19 920r19 924r16 927r13 931r19 +. 957r13 958r13 969r13 981r13 12|35e8 +X 13 lib-synchronization.ads +20K13*Synchronization 10|17w10 472r33 541r37 542r11 11|39r41 52r41 65r43 +. 77r45 102r11 115r11 117r11 123r11 125r11 136r11 146r11 184r11 191r11 198r11 +. 200r11 207r11 209r11 221r11 228r11 560r11 570r11 584r11 598r11 608r11 626r11 +. 634r11 662r11 679r11 701r11 810r11 817r11 831r17 833r17 837r14 849r23 894r11 +. 917r23 920r23 924r20 927r17 931r23 957r17 958r17 969r17 981r17 13|66e24 +22R9*Binary_Semaphore 10|472r49 541r53 13|57e14 +23r4*Unlocked_Semaphore{22R9} 10|542r27 11|39r57 52r57 65r59 77r61 +27U14*Seize 11|102s27 115s27 123s27 136s27 184s27 198s27 207s27 221s27 560s27 +. 584s27 608s27 634s27 679s27 810s27 831s33 837s30 917s39 924s36 927s33 969s33 +31U14*Release 11|117s27 125s27 146s27 191s27 200s27 209s27 228s27 570s27 +. 598s27 626s27 662s27 701s27 817s27 833s33 849s39 894s27 920s39 931s39 957s33 +. 958s33 981s33 +X 15 networking.ads +20K9*Networking 10|19w6 175r22 176r22 187r22 188r22 199r15 200r15 212r15 +. 213r15 225r27 226r27 243r20 244r20 261r20 262r20 278r22 279r22 290r22 291r22 +. 302r15 303r15 315r15 316r15 329r27 330r27 347r20 348r20 365r20 366r20 491r41 +. 492r41 499r41 500r41 11|19r6 20r6 21r6 233r22 234r22 246r22 247r22 259r15 +. 260r15 271r15 272r15 288r27 289r27 304r20 305r20 312r14 313r38 317r13 324r13 +. 346r20 347r20 355r14 356r14 363r13 369r13 371r20 392r22 393r22 405r22 406r22 +. 419r15 420r15 431r15 432r15 448r27 449r27 464r20 465r20 472r14 473r38 477r13 +. 484r13 505r20 506r20 514r14 515r14 522r13 528r13 530r20 15|55e15 +23A9*IPv4_Address(8|70M9) 10|175r33 187r33 199r26 212r26 225r38 +. 243r31 261r31 491r52 11|233r33 246r33 259r26 271r26 288r38 304r31 312r25 +. 346r31 355r25 +24A9*IPv6_Address(8|70M9) 10|278r33 290r33 302r26 315r26 329r38 +. 347r31 365r31 499r52 11|392r33 405r33 419r26 431r26 448r38 464r31 472r25 +. 505r31 514r25 +25M9*IPv4_Port<8|73M9> 10|176r33 188r33 200r26 213r26 226r38 244r31 262r31 +. 492r52 11|234r33 247r33 260r26 272r26 289r38 305r31 347r31 +26M9*IPv6_Port<8|73M9> 10|279r33 291r33 303r26 316r26 330r38 348r31 366r31 +. 500r52 11|393r33 406r33 420r26 432r26 449r38 465r31 506r31 +X 17 networking-interfaces.ads +20K20*Interfaces 11|21w17 317r24 324r24 363r24 369r24 477r24 484r24 522r24 +. 528r24 17|107e26 +42U14*Get_Interface_Address 11|324s35 369s35 +47U14*Get_Interface_Address 11|484s35 528s35 +62U14*Get_Suitable_Interface 11|317s35 363s35 +67U14*Get_Suitable_Interface 11|477s35 522s35 +X 18 networking-ipv4.ads +19K20*IPv4 11|19w17 313r49 356r25 371r31 18|67e20 +29R9*IPv4_Packet_Header 11|313r54 356r30 18|43e15 +62V13*Generate_Header{29R9} 11|371s36 +X 19 networking-ipv6.ads +19K20*IPv6 11|20w17 473r49 515r25 530r31 19|54e20 +26R9*IPv6_Packet_Header 11|473r54 515r30 19|35e15 +49V13*Generate_Header{26R9} 11|530s36 +X 20 scheduler.ads +25K9*Scheduler 11|18w6 649r16 653r16 697r13 834r13 921r19 20|183e14 +74U14*Yield_If_Able 11|649s26 653s26 697s23 834s23 921s29 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___ipc__socket__create 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__create 0 +GG EK_GLOBALS ada___ipc__socket__create local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__get_domain 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_domain 0 +GG EK_GLOBALS ada___ipc__socket__get_domain local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__get_type 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_type 0 +GG EK_GLOBALS ada___ipc__socket__get_type local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__close 3 ada___ipc__socket__inner_unix_close ada___lib__synchronization__seize ada___ipc__socket__free +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__close 0 +GG EK_GLOBALS ada___ipc__socket__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets proper_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_proof_in 0 refined_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__is_blocking 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__is_blocking 0 +GG EK_GLOBALS ada___ipc__socket__is_blocking local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__set_blocking 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__set_blocking 0 +GG EK_GLOBALS ada___ipc__socket__set_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__poll 3 ada___ipc__socket__inner_unix_poll ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__poll 0 +GG EK_GLOBALS ada___ipc__socket__poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__read 3 ada___ipc__socket__inner_ipv4_read ada___ipc__socket__inner_ipv6_read ada___ipc__socket__inner_unix_read +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__read 0 +GG EK_GLOBALS ada___ipc__socket__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 8 ada___lib__synchronization__seize ada___lib__synchronization__release devices__read scheduler__yield_if_able ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__write 3 ada___ipc__socket__inner_ipv4_write ada___ipc__socket__inner_ipv6_write ada___ipc__socket__inner_unix_write +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__write 0 +GG EK_GLOBALS ada___ipc__socket__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 10 ada___lib__synchronization__seize ada___lib__synchronization__release devices__write scheduler__yield_if_able ada___networking__ipv4__generate_header ada___networking__ipv6__generate_header ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__shutdown 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__shutdown 0 +GG EK_GLOBALS ada___ipc__socket__shutdown local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__is_listening 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__is_listening 0 +GG EK_GLOBALS ada___ipc__socket__is_listening local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__listen 1 ada___ipc__socket__get_type +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__listen 1 ada___ipc__socket__get_type +GG EK_GLOBALS ada___ipc__socket__listen local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__accept_connection 4 ada___ipc__socket__get_type ada___ipc__socket__accept_connection__4 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__accept_connection 0 +GG EK_GLOBALS ada___ipc__socket__accept_connection local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__get_bound 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_bound 0 +GG EK_GLOBALS ada___ipc__socket__get_bound local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__get_peer 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_peer 0 +GG EK_GLOBALS ada___ipc__socket__get_peer local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__bind 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__bind 0 +GG EK_GLOBALS ada___ipc__socket__bind local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__connect 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__connect 1 ada___ipc__socket__get_domain +GG EK_GLOBALS ada___ipc__socket__connect local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__accept_connection__2 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__accept_connection__2 0 +GG EK_GLOBALS ada___ipc__socket__accept_connection__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__read__2 5 ada___ipc__socket__get_domain ada___ipc__socket__get_type devices__read ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__read__2 0 +GG EK_GLOBALS ada___ipc__socket__read__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__read ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__write__2 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__write__2 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type +GG EK_GLOBALS ada___ipc__socket__write__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__write ada___networking__ipv4__generate_header ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__get_bound__2 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_bound__2 0 +GG EK_GLOBALS ada___ipc__socket__get_bound__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__get_peer__2 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_peer__2 0 +GG EK_GLOBALS ada___ipc__socket__get_peer__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__bind__2 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__bind__2 0 +GG EK_GLOBALS ada___ipc__socket__bind__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__connect__2 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__connect__2 1 ada___ipc__socket__get_domain +GG EK_GLOBALS ada___ipc__socket__connect__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__accept_connection__3 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__accept_connection__3 0 +GG EK_GLOBALS ada___ipc__socket__accept_connection__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__read__3 5 ada___ipc__socket__get_domain ada___ipc__socket__get_type devices__read ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__read__3 0 +GG EK_GLOBALS ada___ipc__socket__read__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__read ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__write__3 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__write__3 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type +GG EK_GLOBALS ada___ipc__socket__write__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__write ada___networking__ipv6__generate_header ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__get_bound__3 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_bound__3 1 ada___ipc__socket__get_domain +GG EK_GLOBALS ada___ipc__socket__get_bound__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets proper_output 1 ada___ipc__socket__unix_bound_mutex refined_proof_in 0 refined_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_output 1 ada___ipc__socket__unix_bound_mutex calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__get_peer__3 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_peer__3 1 ada___ipc__socket__get_domain +GG EK_GLOBALS ada___ipc__socket__get_peer__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP proper_output 1 ada___ipc__socket__unix_bound_mutex refined_proof_in 0 refined_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP refined_output 1 ada___ipc__socket__unix_bound_mutex calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__bind__3 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__bind__3 1 ada___ipc__socket__get_domain +GG EK_GLOBALS ada___ipc__socket__bind__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets proper_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_proof_in 0 refined_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__connect__3 1 ada___ipc__socket__get_domain +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__connect__3 1 ada___ipc__socket__get_domain +GG EK_GLOBALS ada___ipc__socket__connect__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP proper_output 2 ada___ipc__socket__unix_bound_mutex __HEAP refined_proof_in 0 refined_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP refined_output 2 ada___ipc__socket__unix_bound_mutex __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___ipc__socket__unix_bound_mutex LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__accept_connection__4 6 ada___ipc__socket__create ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__accept_connection__4 0 +GG EK_GLOBALS ada___ipc__socket__accept_connection__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__read__4 4 ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__connect__3 ada___ipc__socket__inner_unix_read +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__read__4 0 +GG EK_GLOBALS ada___ipc__socket__read__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP proper_output 2 ada___ipc__socket__unix_bound_mutex __HEAP refined_proof_in 0 refined_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP refined_output 2 ada___ipc__socket__unix_bound_mutex __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__write__4 4 ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__connect__3 ada___ipc__socket__inner_unix_write +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__write__4 0 +GG EK_GLOBALS ada___ipc__socket__write__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP proper_output 2 ada___ipc__socket__unix_bound_mutex __HEAP refined_proof_in 0 refined_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP refined_output 2 ada___ipc__socket__unix_bound_mutex __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__inner_ipv4_read 1 ada___ipc__socket__read__2 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_ipv4_read 0 +GG EK_GLOBALS ada___ipc__socket__inner_ipv4_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__read ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__inner_ipv4_write 1 ada___ipc__socket__write__2 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_ipv4_write 0 +GG EK_GLOBALS ada___ipc__socket__inner_ipv4_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__write ada___networking__ipv4__generate_header ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__inner_ipv6_read 1 ada___ipc__socket__read__3 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_ipv6_read 0 +GG EK_GLOBALS ada___ipc__socket__inner_ipv6_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__read ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__inner_ipv6_write 1 ada___ipc__socket__write__3 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_ipv6_write 0 +GG EK_GLOBALS ada___ipc__socket__inner_ipv6_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__write ada___networking__ipv6__generate_header ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__get_bound__4 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_bound__4 0 +GG EK_GLOBALS ada___ipc__socket__get_bound__4 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 ada___ipc__socket__unix_bound_sockets proper_output 0 refined_proof_in 0 refined_input 1 ada___ipc__socket__unix_bound_sockets refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___ipc__socket__unix_bound_sockets LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_close 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_close 0 +GG EK_GLOBALS ada___ipc__socket__inner_unix_close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets proper_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_proof_in 0 refined_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_read 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_read 0 +GG EK_GLOBALS ada___ipc__socket__inner_unix_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_write 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_write 0 +GG EK_GLOBALS ada___ipc__socket__inner_unix_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_poll 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_poll 0 +GG EK_GLOBALS ada___ipc__socket__inner_unix_poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_shutdown 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_shutdown 0 +GG EK_GLOBALS ada___ipc__socket__inner_unix_shutdown local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__free 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__free 0 +GG EK_GLOBALS ada___ipc__socket__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket__free__2 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket__free__2 0 +GG EK_GLOBALS ada___ipc__socket__free__2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___ipc__socket 0 +GG EK_PROOF_DEPENDENCIES ada___ipc__socket 0 +GG EK_GLOBALS ada___ipc__socket local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_initializes 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__ipv4 TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__ipv6__generate_header FALSE FALSE FALSE FALSE TRUE ada___networking__ipv6 VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__socket__freeGP906 VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__freeGP906 TRUE FALSE FALSE FALSE TRUE ada___ipc__socket BODY_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__free__2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__socket__freeGP980 VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__freeGP980 TRUE FALSE FALSE FALSE TRUE ada___ipc__socket BODY_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__ipv4__generate_header FALSE FALSE FALSE FALSE TRUE ada___networking__ipv4 VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__register_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__block FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__ipv6 TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-socket.cswi b/obj/gnatprove/phase1/ipc-socket.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/ipc-socket.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc.ads.stderr b/obj/gnatprove/phase1/ipc.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc.ads.stdout b/obj/gnatprove/phase1/ipc.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/ipc.ali b/obj/gnatprove/phase1/ipc.ali new file mode 100644 index 0000000..c34ffc9 --- /dev/null +++ b/obj/gnatprove/phase1/ipc.ali @@ -0,0 +1,59 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U ipc%s ipc.ads 03976a1a OO PK IU + +D ipc.ads 20250222165738 03976a1a ipc%s +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ipc.ads +17K9*IPC 18l5 18e8 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ipc 0 +GG EK_PROOF_DEPENDENCIES ipc 0 +GG EK_GLOBALS ipc local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc.cswi b/obj/gnatprove/phase1/ipc.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/ipc.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/kernel_main.ali b/obj/gnatprove/phase1/kernel_main.ali index c32489e..3f5238d 100644 --- a/obj/gnatprove/phase1/kernel_main.ali +++ b/obj/gnatprove/phase1/kernel_main.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -47,7 +47,7 @@ RV NO_IMPLEMENTATION_RESTRICTIONS RR NO_ELABORATION_CODE RR NO_OBSOLESCENT_FEATURES -U kernel_main%b kernel_main.adb cdc15f55 OO PK +U kernel_main%b kernel_main.adb 0872eabd OO PK W arch%s arch.ads arch.ali W arch.clocks%s arch-clocks.adb arch-clocks.ali W arch.hooks%s arch-hooks.adb arch-hooks.ali @@ -77,7 +77,7 @@ D arch-context.ads 20250222165738 7bffdd51 arch.context%s D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D config.ads 20250222165738 5d21f3bf config%s +D config.ads 20250222165738 98924657 config%s D devices.ads 20250222165738 f45ecf09 devices%s D devices-termios.ads 20250222165738 06aea761 devices.termios%s D interfac.ads 20240507065137 9111f9c1 interfaces%s diff --git a/obj/gnatprove/phase1/kernel_main.cswi b/obj/gnatprove/phase1/kernel_main.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/kernel_main.cswi +++ b/obj/gnatprove/phase1/kernel_main.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-alignment.ali b/obj/gnatprove/phase1/lib-alignment.ali index fa33dc3..e701954 100644 --- a/obj/gnatprove/phase1/lib-alignment.ali +++ b/obj/gnatprove/phase1/lib-alignment.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/lib-alignment.cswi b/obj/gnatprove/phase1/lib-alignment.cswi index 1286ce7..2ba9819 100644 --- a/obj/gnatprove/phase1/lib-alignment.cswi +++ b/obj/gnatprove/phase1/lib-alignment.cswi @@ -1,4 +1,4 @@ -20250222171637 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-atomic.ads.stderr b/obj/gnatprove/phase1/lib-atomic.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-atomic.ads.stdout b/obj/gnatprove/phase1/lib-atomic.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/lib-atomic.ali b/obj/gnatprove/phase1/lib-atomic.ali new file mode 100644 index 0000000..9f16ed1 --- /dev/null +++ b/obj/gnatprove/phase1/lib-atomic.ali @@ -0,0 +1,173 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U lib.atomic%s lib-atomic.ads 45ef3c55 OO PK +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W system%s system.ads system.ali + +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-atomic.ads 20250222165738 4d435862 lib.atomic%s +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 interfac.ads +38K9*Interfaces 233e15 3|18w6 18r22 +70M9*Unsigned_8 3|38r48 +73M9*Unsigned_16 3|39r48 +81M9*Unsigned_32 3|40r48 +84M9*Unsigned_64 3|41r48 +X 2 lib.ads +19K9*Lib 35e8 3|20r9 68r5 +X 3 lib-atomic.ads +20K13*Atomic 2|19k9 3|68l9 68e15 +22N4*Mem_Relaxed 29r39 +23N4*Mem_Consume +24N4*Mem_Acquire +25N4*Mem_Release +26N4*Mem_Acq_Rel +27N4*Mem_Seq_Cst 29r54 35r28 48r28 56r28 61r30 66r30 +29I12*Mem_Model{integer} 35r15 48r15 56r15 61r17 66r17 +32M12 Atomic_Type 35r48 35r48[38] 35r48[39] 35r48[40] 35r48[41] +33v13*Atomic_Load 34>7 35>7 36b30 38r35 39r35 40r35 41r35 +34m7 Ptr{4|67M9} +35i7 Model{29I12} +38V13*Atomic_Load_8[33]{1|70M9} +39V13*Atomic_Load_16[33]{1|73M9} +40V13*Atomic_Load_32[33]{1|81M9} +41V13*Atomic_Load_64[33]{1|84M9} +44M12 Atomic_Type2 47r15 48r48 +45v13*Atomic_Fetch_Add 46>7 47>7 48>7 49b30 +46m7 Ptr{4|67M9} +47*7 Val{44M12} +48i7 Model{29I12} +52M12 Atomic_Type3 55r15 56r48 +53v13*Atomic_Fetch_Sub 54>7 55>7 56>7 57b30 +54m7 Ptr{4|67M9} +55*7 Val{52M12} +56i7 Model{29I12} +59V13*Atomic_Test_And_Set{boolean} 60>7 61>7 62b30 +60m7 Pointer{4|67M9} +61i7 Model{29I12} +64U14*Atomic_Clear 65>7 66>7 67b30 +65m7 Pointer{4|67M9} +66i7 Model{29I12} +X 4 system.ads +37K9*System 3|17w6 34r15 46r15 54r15 60r17 65r17 4|155e11 +67M9*Address 3|34r22 46r22 54r22 60r24 65r24 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___lib__atomic__atomic_load_8 0 +GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_load_8 0 +GG EK_GLOBALS ada___lib__atomic__atomic_load_8 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__atomic__atomic_load_16 0 +GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_load_16 0 +GG EK_GLOBALS ada___lib__atomic__atomic_load_16 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__atomic__atomic_load_32 0 +GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_load_32 0 +GG EK_GLOBALS ada___lib__atomic__atomic_load_32 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__atomic__atomic_load_64 0 +GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_load_64 0 +GG EK_GLOBALS ada___lib__atomic__atomic_load_64 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__atomic__atomic_test_and_set 0 +GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_test_and_set 0 +GG EK_GLOBALS ada___lib__atomic__atomic_test_and_set local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__atomic__atomic_clear 0 +GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_clear 0 +GG EK_GLOBALS ada___lib__atomic__atomic_clear local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___lib__atomic 0 +GG EK_PROOF_DEPENDENCIES ada___lib__atomic 0 +GG EK_GLOBALS ada___lib__atomic local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_16 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_16GP1637 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_fetch_sub FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_8GP1577 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_test_and_set FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_64GP1759 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_32GP1698 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_fetch_add FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_clear FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_64 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_64GP1759 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_16GP1637 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_32 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_32GP1698 VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_8GP1577 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-atomic.cswi b/obj/gnatprove/phase1/lib-atomic.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/lib-atomic.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-cmdline.ali b/obj/gnatprove/phase1/lib-cmdline.ali index 910abf6..80e8b92 100644 --- a/obj/gnatprove/phase1/lib-cmdline.ali +++ b/obj/gnatprove/phase1/lib-cmdline.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/lib-cmdline.cswi b/obj/gnatprove/phase1/lib-cmdline.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/lib-cmdline.cswi +++ b/obj/gnatprove/phase1/lib-cmdline.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-messages.ali b/obj/gnatprove/phase1/lib-messages.ali index 089521d..680e86a 100644 --- a/obj/gnatprove/phase1/lib-messages.ali +++ b/obj/gnatprove/phase1/lib-messages.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/lib-messages.cswi b/obj/gnatprove/phase1/lib-messages.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/lib-messages.cswi +++ b/obj/gnatprove/phase1/lib-messages.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-panic.ali b/obj/gnatprove/phase1/lib-panic.ali index 99b1bbb..f2816fe 100644 --- a/obj/gnatprove/phase1/lib-panic.ali +++ b/obj/gnatprove/phase1/lib-panic.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/lib-panic.cswi b/obj/gnatprove/phase1/lib-panic.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/lib-panic.cswi +++ b/obj/gnatprove/phase1/lib-panic.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-runtime.ali b/obj/gnatprove/phase1/lib-runtime.ali index e5f795b..3a41458 100644 --- a/obj/gnatprove/phase1/lib-runtime.ali +++ b/obj/gnatprove/phase1/lib-runtime.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/lib-runtime.cswi b/obj/gnatprove/phase1/lib-runtime.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/lib-runtime.cswi +++ b/obj/gnatprove/phase1/lib-runtime.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-synchronization.ali b/obj/gnatprove/phase1/lib-synchronization.ali index e3254d3..08e0a7e 100644 --- a/obj/gnatprove/phase1/lib-synchronization.ali +++ b/obj/gnatprove/phase1/lib-synchronization.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/lib-synchronization.cswi b/obj/gnatprove/phase1/lib-synchronization.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/lib-synchronization.cswi +++ b/obj/gnatprove/phase1/lib-synchronization.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-time.ali b/obj/gnatprove/phase1/lib-time.ali index 391c4b2..d916c03 100644 --- a/obj/gnatprove/phase1/lib-time.ali +++ b/obj/gnatprove/phase1/lib-time.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/lib-time.cswi b/obj/gnatprove/phase1/lib-time.cswi index 1286ce7..2ba9819 100644 --- a/obj/gnatprove/phase1/lib-time.cswi +++ b/obj/gnatprove/phase1/lib-time.cswi @@ -1,4 +1,4 @@ -20250222171637 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib.ali b/obj/gnatprove/phase1/lib.ali index 2b03869..5dd66fe 100644 --- a/obj/gnatprove/phase1/lib.ali +++ b/obj/gnatprove/phase1/lib.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/lib.cswi b/obj/gnatprove/phase1/lib.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/lib.cswi +++ b/obj/gnatprove/phase1/lib.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/main.ali b/obj/gnatprove/phase1/main.ali index dfc5faf..68fedc0 100644 --- a/obj/gnatprove/phase1/main.ali +++ b/obj/gnatprove/phase1/main.ali @@ -15,7 +15,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/main.cswi b/obj/gnatprove/phase1/main.cswi index dd2c5c1..2ba9819 100644 --- a/obj/gnatprove/phase1/main.cswi +++ b/obj/gnatprove/phase1/main.cswi @@ -1,4 +1,4 @@ -20250222171635 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/memory-physical.ali b/obj/gnatprove/phase1/memory-physical.ali index f8ce324..5d49718 100644 --- a/obj/gnatprove/phase1/memory-physical.ali +++ b/obj/gnatprove/phase1/memory-physical.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -44,7 +44,7 @@ RV NO_IMPLEMENTATION_RESTRICTIONS RR NO_ELABORATION_CODE RR NO_OBSOLESCENT_FEATURES -U memory.physical%b memory-physical.adb 1a585658 OO PK +U memory.physical%b memory-physical.adb dfebe3b0 OO PK W arch%s arch.ads arch.ali W arch.mmu%s arch-mmu.adb arch-mmu.ali W config%s config.ads config.ali @@ -73,7 +73,7 @@ D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s D arch.ads 20250222165738 7fd82c9e arch%s D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D config.ads 20250222165738 5d21f3bf config%s +D config.ads 20250222165738 98924657 config%s D interfac.ads 20240507065137 9111f9c1 interfaces%s D i-c.ads 20240507065137 aac316ce interfaces.c%s D lib.ads 20250222165738 8d95f6f9 lib%s diff --git a/obj/gnatprove/phase1/memory-physical.cswi b/obj/gnatprove/phase1/memory-physical.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/memory-physical.cswi +++ b/obj/gnatprove/phase1/memory-physical.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/memory.ali b/obj/gnatprove/phase1/memory.ali index 6cb6517..dc7f20a 100644 --- a/obj/gnatprove/phase1/memory.ali +++ b/obj/gnatprove/phase1/memory.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/memory.cswi b/obj/gnatprove/phase1/memory.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/memory.cswi +++ b/obj/gnatprove/phase1/memory.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking-arp.ali b/obj/gnatprove/phase1/networking-arp.ali index a51d3b7..244ebfc 100644 --- a/obj/gnatprove/phase1/networking-arp.ali +++ b/obj/gnatprove/phase1/networking-arp.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/networking-arp.cswi b/obj/gnatprove/phase1/networking-arp.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/networking-arp.cswi +++ b/obj/gnatprove/phase1/networking-arp.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking-interfaces.adb.stderr b/obj/gnatprove/phase1/networking-interfaces.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking-interfaces.adb.stdout b/obj/gnatprove/phase1/networking-interfaces.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking-interfaces.ali b/obj/gnatprove/phase1/networking-interfaces.ali new file mode 100644 index 0000000..79b0405 --- /dev/null +++ b/obj/gnatprove/phase1/networking-interfaces.ali @@ -0,0 +1,342 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U networking.interfaces%b networking-interfaces.adb 968f107b OO PK +W devices%s devices.adb devices.ali +W devices.netinter%s devices-netinter.ads devices-netinter.ali +W networking%s networking.adb networking.ali +Z system%s system.ads system.ali +N A198:7 gnatprove false_positive "cannot prove upper bound for Buffer'Length" "not entirely sure how that happens" + +U networking.interfaces%s networking-interfaces.ads f675fa2e OO PK +W devices%s devices.adb devices.ali +W networking%s networking.adb networking.ali +W networking.arp%s networking-arp.adb networking-arp.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-netinter.ads 20250222165738 a12468cd devices.netinter%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D networking-arp.ads 20250222165738 eec21925 networking.arp%s +D networking-interfaces.ads 20250222165738 9c034257 networking.interfaces%s +D networking-interfaces.adb 20250222165738 aba83ae1 networking.interfaces%b +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 3 devices.ads +22K9*Devices 279e12 11|17w6 17r19 34r22 43r21 48r21 57r21 64r25 69r25 73r21 +. 80r21 88r21 12|17r6 17r28 31r19 34r22 46r26 58r21 75r21 92r21 111r25 116r21 +. 119r27 136r25 141r21 144r27 160r21 179r21 205r26 215r38 +83I9*Device_Handle 11|34r30 43r29 48r29 57r29 64r33 69r33 73r29 +. 80r29 88r29 12|23r20 34r30 58r29 75r29 92r29 111r33 136r33 160r29 179r29 +85i4*Error_Handle{83I9} 12|31r27 46r34 116r29 119r35 141r29 144r35 205r34 +. 215r46 +224V13*IO_Control{boolean} 12|49s24 +X 4 devices-netinter.ads +17K17*NetInter 20e21 12|17w14 17r36 +19N4*NET_GETMAC 12|49r48 +X 5 interfac.ads +70M9*Unsigned_8 +X 7 lib-synchronization.ads +22R9*Binary_Semaphore 57e14 12|29r30 +23r4*Unlocked_Semaphore{22R9} 12|29r50 +27U14*Seize 12|44s7 64s7 81s7 98s7 117s7 142s7 167s7 186s7 213s7 +31U14*Release 12|54s7 71s7 88s7 106s7 131s7 156s7 175s7 194s7 237s7 +X 9 networking.ads +20K9*Networking 55e15 11|18r6 20r9 107r5 12|19r14 239r5 +22A9*MAC_Address(5|70M9) 11|90r21 12|24r20 +23A9*IPv4_Address(5|70M9) 11|35r22 36r22 44r25 63r21 74r21 75r21 +. 91r21 92r21 12|35r22 36r22 59r25 61r16 110r21 113r16 114r16 161r21 162r21 +24A9*IPv6_Address(5|70M9) 11|37r22 38r22 49r25 68r21 81r21 82r21 +. 93r21 94r21 12|37r22 38r22 76r25 78r16 135r21 138r16 139r16 180r21 181r21 +X 10 networking-arp.ads +17K20*ARP 86e19 11|18w17 45r19 50r19 65r19 70r19 77r19 84r19 102r19 12|50r13 +. 67r13 84r13 120r13 145r13 170r13 189r13 224r16 228r16 +32U14*Add_Static 12|50s17 +40U14*Modify_Static 12|170s17 +46U14*Modify_Static 12|189s17 +53U14*Lookup 12|67s17 120s17 224s20 +57U14*Lookup 12|84s17 145s17 228s20 +69V13*Is_Initialized{boolean} 11|45s23 50s23 65s23 70s23 77s23 84s23 102s23 +X 11 networking-interfaces.ads +20K20*Interfaces 9|20k9 11|107l16 107e26 12|19b25 239l16 239t26 +25i4*Max_Interface_Count{natural} 106c4 12|27r34 +33U14*Register_Interface 34>8 35>8 36>8 37>8 38>8 39<8 12|33b14 55l8 55t26 +34i8 Interfaced{3|83I9} 12|34b8 47r27 49r36 +35a8 IPv4{9|23A9} 12|35b8 50r38 +36a8 IPv4_Subnet{9|23A9} 12|36b8 50r44 +37a8 IPv6{9|24A9} 12|37b8 50r57 +38a8 IPv6_Subnet{9|24A9} 12|38b8 50r63 +39b8 Success{boolean} 12|39b8 43m7 49m13 +42U14*Get_Interface_Address 43>8 44<8 12|57b14 72l8 72t29 +43i8 Interfaced{3|83I9} 12|58b8 66r26 +44a8 IP{9|23A9} 12|59b8 63m7 67m34 +47U14*Get_Interface_Address 48>8 49<8 12|74b14 89l8 89t29 +48i8 Interfaced{3|83I9} 12|75b8 83r26 +49a8 IP{9|24A9} 12|76b8 80m7 84m34 +56U14*Block 57>8 58>8 59<8 12|91b14 107l8 107t13 +57i8 Interfaced{3|83I9} 12|92b8 100r26 +58b8 Is_Blocked{boolean} 12|93b8 101r31 +59b8 Success{boolean} 12|94b8 97m7 102m13 +62U14*Get_Suitable_Interface 63>8 64<8 12|109b14 132l8 132t30 +63a8 IP{9|23A9} 12|110b8 122r44 +64i8 Interfaced{3|83I9} 12|111b8 116m7 126m13 +67U14*Get_Suitable_Interface 68>8 69<8 12|134b14 157l8 157t30 +68a8 IP{9|24A9} 12|135b8 147r44 +69i8 Interfaced{3|83I9} 12|136b8 141m7 151m13 +72U14*Modify_Addresses 73>8 74>8 75>8 76<8 12|159b14 176l8 176t24 +73i8 Interfaced{3|83I9} 12|160b8 169r26 +74a8 IP{9|23A9} 12|161b8 170r41 +75a8 IP_Subnet{9|23A9} 12|162b8 170r45 +76b8 Success{boolean} 12|163b8 166m7 171m13 +79U14*Modify_Addresses 80>8 81>8 82>8 83<8 12|178b14 195l8 195t24 +80i8 Interfaced{3|83I9} 12|179b8 188r26 +81a8 IP{9|24A9} 12|180b8 189r41 +82a8 IP_Subnet{9|24A9} 12|181b8 189r45 +83b8 Success{boolean} 12|182b8 185m7 190m13 +87R9*Interface_Info 95e14 96r54 +88i7*Handle{3|83I9} 12|205m11 218m51 +89b7*Is_Blocked{boolean} 12|206m11 220m51 +90a7*MAC{9|22A9} 12|207m11 222m51 225r55 229r55 +91a7*IPv4{9|23A9} 12|208m11 226m55 +92a7*IPv4_Subnet{9|23A9} 12|209m11 227m55 +93a7*IPv6{9|24A9} 12|210m11 230m55 +94a7*IPv6_Subnet{9|24A9} 12|211m11 231m55 +96A9*Interface_Arr(87R9) 101r44 12|197r44 +101U14*List_Interfaces 101<31 101<59 12|197b14 238l8 238t23 +101a31 Buffer{96A9} 12|197b31 204m7 217r29 218m16 218r24 220m16 220r24 222m16 +. 222r24 225r20 225r28 226m20 226r20 226r28 227m20 227r20 227r28 229r20 229r28 +. 230m20 230r20 230r28 231m20 231r20 231r28 +101i59 Len{natural} 12|197b59 203m7 216m13 216r20 +X 12 networking-interfaces.adb +22R9 Inner_Interface 26e14 27r58 +23i7*Handle{3|83I9} 46r17 47m17 66r17 83r17 100r17 119r17 126r31 144r17 151r31 +. 169r17 188r17 215r28 219r34 +24a7*MAC{9|22A9} 49m64 50r33 67r29 84r29 120r29 145r29 170r36 189r36 222r73 +25b7*Is_Blocked{boolean} 48m17 101m17 119r60 144r60 221r34 +27A9 Inner_Arr(22R9) 30r22 +29r4 Interfaces_Lock{7|22R9} 44m14 44r14 54m16 54r16 64m14 64r14 71m16 71r16 +. 81m14 81r14 88m16 88r16 98m14 98r14 106m16 106r16 117m14 117r14 131m16 +. 131r16 142m14 142r14 156m16 156r16 167m14 167r14 175m16 175r16 186m14 186r14 +. 194m16 194r16 213m14 213r14 237m16 237r16 +30a4 Interfaces{27A9} 45r18 46r13 47m13 48m13 49r60 50r29 65r18 66r13 67r25 +. 82r18 83r13 84r25 99r18 100r13 101m13 118r18 119r13 119r56 120r25 126r27 +. 143r18 144r13 144r56 145r25 151r27 168r18 169r13 170r32 187r18 188r13 189r32 +. 214r16 215r13 219r19 221r19 222r58 +45r11 Int=45:18{22R9} +61a7 IP_Sub{9|23A9} 67m38 +65r11 Int=65:18{22R9} +78a7 IP_Sub{9|24A9} 84m38 +82r11 Int=82:18{22R9} +99r11 Int=99:18{22R9} +113a7 IP_Sub{9|23A9} 120m39 121r22 122r19 +114a7 IP2{9|23A9} 120m34 122r54 +118r11 Int=118:18{22R9} +121i17 I{integer} 122r27 122r48 122r59 +128L12 End_Iter 123r24 +138a7 IP_Sub{9|24A9} 145m39 146r22 147r19 +139a7 IP2{9|24A9} 145m34 147r54 +143r11 Int=143:18{22R9} +146i17 I{integer} 147r27 147r48 147r59 +153L12 End_Iter 148r24 +168r11 Int=168:18{22R9} +187r11 Int=187:18{22R9} +201i7 Curr_Index{natural} 217r16 218r39 220r39 222r39 225r43 226r43 227r43 +. 229r43 230r43 231r43 233m16 233r30 +214i11 I{integer} 215r25 219r31 221r31 222r70 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___networking__interfaces__register_interface 0 +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__register_interface 0 +GG EK_GLOBALS ada___networking__interfaces__register_interface local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces calls_proof 0 calls 0 calls_conditional 4 ada___lib__synchronization__seize ada___lib__synchronization__release devices__io_control ada___networking__arp__add_static FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__interfaces__get_interface_address 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__get_interface_address 0 +GG EK_GLOBALS ada___networking__interfaces__get_interface_address local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__interfaces__get_interface_address__2 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup__2 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__get_interface_address__2 0 +GG EK_GLOBALS ada___networking__interfaces__get_interface_address__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__interfaces__block 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__block 0 +GG EK_GLOBALS ada___networking__interfaces__block local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__interfaces__get_suitable_interface 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__get_suitable_interface 0 +GG EK_GLOBALS ada___networking__interfaces__get_suitable_interface local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__interfaces__get_suitable_interface__2 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup__2 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__get_suitable_interface__2 0 +GG EK_GLOBALS ada___networking__interfaces__get_suitable_interface__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__interfaces__modify_addresses 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__modify_static ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__modify_addresses 0 +GG EK_GLOBALS ada___networking__interfaces__modify_addresses local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__interfaces__modify_addresses__2 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__modify_static__2 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__modify_addresses__2 0 +GG EK_GLOBALS ada___networking__interfaces__modify_addresses__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__interfaces__list_interfaces 5 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup ada___networking__arp__lookup__2 ada___networking__arp__is_initialized +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__list_interfaces 0 +GG EK_GLOBALS ada___networking__interfaces__list_interfaces local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___networking__arp__lookup ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__interfaces 0 +GG EK_PROOF_DEPENDENCIES ada___networking__interfaces 0 +GG EK_GLOBALS ada___networking__interfaces local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_initializes 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__block FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__netinter TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__register_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking-interfaces.cswi b/obj/gnatprove/phase1/networking-interfaces.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/networking-interfaces.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking-ipv4.adb.stderr b/obj/gnatprove/phase1/networking-ipv4.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking-ipv4.adb.stdout b/obj/gnatprove/phase1/networking-ipv4.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking-ipv4.ali b/obj/gnatprove/phase1/networking-ipv4.ali new file mode 100644 index 0000000..618cc3b --- /dev/null +++ b/obj/gnatprove/phase1/networking-ipv4.ali @@ -0,0 +1,153 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U networking.ipv4%b networking-ipv4.adb cfb8055c OO PK +W networking%s networking.adb networking.ali + +U networking.ipv4%s networking-ipv4.ads 78fae0c7 OO PK +W networking%s networking.adb networking.ali +W system%s system.ads system.ali + +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D networking.ads 20250222165738 70ea6e55 networking%s +D networking-ipv4.ads 20250222165738 1c38e59d networking.ipv4%s +D networking-ipv4.adb 20250222165738 d380e0c1 networking.ipv4%b +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 interfac.ads +70M9*Unsigned_8 5|38r25 39r25 6|35r30 +73M9*Unsigned_16 5|34r25 35r25 40r25 66r28 6|24r23 31r43 +X 4 networking.ads +20K9*Networking 55e15 5|19r9 67r5 6|17r14 41r5 +23A9*IPv4_Address(1|70M9) 5|41r25 42r25 63r30 6|21r30 +X 5 networking-ipv4.ads +19K20*IPv4 4|20k9 5|67l16 67e20 6|17b25 41l16 41t20 +21M9*Unsigned_2 33r25 +22M9*Unsigned_3 36r25 +23M9*Unsigned_4 30r25 31r25 +24M9*Unsigned_6 32r25 +25M9*Unsigned_13 37r25 +29R9*IPv4_Packet_Header 43e15 45r8 64r46 66r48 6|22r46 24r38 +30m7*Version{23M9} 46r7 6|27m11 +31m7*IHL{23M9} 47r7 6|28m11 +32m7*DSCP{24M9} 48r7 6|29m11 +33m7*ECN{21M9} 49r7 6|30m11 +34m7*Total_Length{1|73M9} 50r7 6|31m11 +35m7*Identification{1|73M9} 51r7 6|32m11 +36m7*Flags{22M9} 52r7 6|33m11 +37m7*Fragment_Offset{25M9} 53r7 6|34m11 +38m7*Time_To_Live{1|70M9} 54r7 6|35m11 +39m7*Protocol{1|70M9} 55r7 6|36m11 +40m7*Header_Checksum{1|73M9} 56r7 6|37m11 +41a7*Source_IP{4|23A9} 57r7 6|38m11 +42a7*Destination_IP{4|23A9} 58r7 6|39m11 +62V13*Generate_Header{29R9} 63>8 63>19 64>8 6|20b13 40l8 40t23 +63a8 Source_IP{4|23A9} 6|21b8 38r30 +63a19 Desto_IP{4|23A9} 6|21b19 39r30 +64i8 Data_Length{natural} 65r19 6|22b8 31r56 +X 6 networking-ipv4.adb +24m7 Size{1|73M9} 31r31 +X 7 system.ads +37K9*System 5|17w6 43r46 44r31 7|155e11 +91n23*High_Order_First{91E9} 5|43r53 44r38 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___networking__ipv4__generate_header 0 +GG EK_PROOF_DEPENDENCIES ada___networking__ipv4__generate_header 0 +GG EK_GLOBALS ada___networking__ipv4__generate_header local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___networking__ipv4 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__ipv4 0 +GG EK_PROOF_DEPENDENCIES ada___networking__ipv4 0 +GG EK_GLOBALS ada___networking__ipv4 local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___networking__ipv4 TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___networking__ipv4__generate_header FALSE FALSE FALSE FALSE TRUE ada___networking__ipv4 VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking-ipv4.cswi b/obj/gnatprove/phase1/networking-ipv4.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/networking-ipv4.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking-ipv6.adb.stderr b/obj/gnatprove/phase1/networking-ipv6.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking-ipv6.adb.stdout b/obj/gnatprove/phase1/networking-ipv6.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/networking-ipv6.ali b/obj/gnatprove/phase1/networking-ipv6.ali new file mode 100644 index 0000000..8de685e --- /dev/null +++ b/obj/gnatprove/phase1/networking-ipv6.ali @@ -0,0 +1,143 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U networking.ipv6%b networking-ipv6.adb 82a67bf3 OO PK +W networking%s networking.adb networking.ali + +U networking.ipv6%s networking-ipv6.ads 05b86d94 OO PK +W networking%s networking.adb networking.ali +W system%s system.ads system.ali + +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D networking.ads 20250222165738 70ea6e55 networking%s +D networking-ipv6.ads 20250222165738 617a68ce networking.ipv6%s +D networking-ipv6.adb 20250222165738 e3dc133d networking.ipv6%b +D system.ads 20240507065137 14286b0f system%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 interfac.ads +70M9*Unsigned_8 5|28r25 31r25 32r25 6|31r30 +73M9*Unsigned_16 5|30r25 53r28 6|29r30 +X 4 networking.ads +20K9*Networking 55e15 5|19r9 54r5 6|17r14 35r5 +24A9*IPv6_Address(1|70M9) 5|33r25 34r25 50r30 6|21r30 +X 5 networking-ipv6.ads +19K20*IPv6 4|20k9 5|54l16 54e20 6|17b25 35l16 35t20 +21M9*Unsigned_4 27r25 +22M9*Unsigned_20 29r25 +26R9*IPv6_Packet_Header 35e15 37r8 51r46 53r48 6|22r46 +27m7*Version{21M9} 38r7 6|26m11 +28m7*Trafic_Class{1|70M9} 39r7 6|27m11 +29m7*Flow_Label{22M9} 40r7 6|28m11 +30m7*Payload_Length{1|73M9} 41r7 6|29m11 +31m7*Next_Header{1|70M9} 42r7 6|30m11 +32m7*Hop_Limit{1|70M9} 43r7 6|31m11 +33a7*Source_IP{4|24A9} 44r7 6|32m11 +34a7*Destination_IP{4|24A9} 45r7 6|33m11 +49V13*Generate_Header{26R9} 50>8 50>19 51>8 6|20b13 34l8 34t23 +50a8 Source_IP{4|24A9} 6|21b8 32r30 +50a19 Desto_IP{4|24A9} 6|21b19 33r30 +51i8 Data_Length{natural} 52r19 6|22b8 29r43 +X 7 system.ads +37K9*System 5|17w6 35r46 36r31 7|155e11 +91n23*High_Order_First{91E9} 5|35r53 36r38 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___networking__ipv6__generate_header 0 +GG EK_PROOF_DEPENDENCIES ada___networking__ipv6__generate_header 0 +GG EK_GLOBALS ada___networking__ipv6__generate_header local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___networking__ipv6 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___networking__ipv6 0 +GG EK_PROOF_DEPENDENCIES ada___networking__ipv6 0 +GG EK_GLOBALS ada___networking__ipv6 local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__ipv6 TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___networking__ipv6__generate_header FALSE FALSE FALSE FALSE TRUE ada___networking__ipv6 VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking-ipv6.cswi b/obj/gnatprove/phase1/networking-ipv6.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/networking-ipv6.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking.ali b/obj/gnatprove/phase1/networking.ali index c4cf943..7c28180 100644 --- a/obj/gnatprove/phase1/networking.ali +++ b/obj/gnatprove/phase1/networking.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/networking.cswi b/obj/gnatprove/phase1/networking.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/networking.cswi +++ b/obj/gnatprove/phase1/networking.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/scheduler.ali b/obj/gnatprove/phase1/scheduler.ali index e224652..689e1a2 100644 --- a/obj/gnatprove/phase1/scheduler.ali +++ b/obj/gnatprove/phase1/scheduler.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/scheduler.cswi b/obj/gnatprove/phase1/scheduler.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/scheduler.cswi +++ b/obj/gnatprove/phase1/scheduler.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-corefile.adb.stderr b/obj/gnatprove/phase1/userland-corefile.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-corefile.adb.stdout b/obj/gnatprove/phase1/userland-corefile.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-corefile.ali b/obj/gnatprove/phase1/userland-corefile.ali new file mode 100644 index 0000000..4caa4d7 --- /dev/null +++ b/obj/gnatprove/phase1/userland-corefile.ali @@ -0,0 +1,592 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RV NO_ENUMERATION_MAPS +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.corefile%b userland-corefile.adb cdea35db OO PK +W arch%s arch.ads arch.ali +W arch.local%s arch-local.adb arch-local.ali +W devices%s devices.adb devices.ali +W interfaces%s interfac.ads interfac.ali +W lib%s lib.adb lib.ali +W lib.messages%s lib-messages.adb lib-messages.ali +Z system%s system.ads system.ali +W userland%s userland.ads userland.ali +W userland.mac%s userland-mac.adb userland-mac.ali +W userland.process%s userland-process.adb userland-process.ali +W vfs%s vfs.adb vfs.ali + +U userland.corefile%s userland-corefile.ads 987e4e69 OO PK +W arch%s arch.ads arch.ali +W arch.context%s arch-context.adb arch-context.ali +W userland%s userland.ads userland.ali +W vfs%s vfs.adb vfs.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-local.ads 20250222165738 e5953d14 arch.local%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-corefile.ads 20250222165738 964467dc userland.corefile%s +D userland-corefile.adb 20250222165738 b1395197 userland.corefile%b +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 24|17r6 22r39 25|19r6 26r39 27r42 +X 3 arch-context.ads +20K14*Context 70e17 24|17w11 22r44 25|26r44 +22R15*GP_Context{4|21R9} 24|22r52 25|26r52 +X 5 arch-local.ads +21K14*Local 40e15 25|19w11 27r47 +37V13*Get_Current_Process{28|33I9} 25|27s53 +X 7 devices.ads +22K9*Devices 279e12 25|17w6 37r18 +29A9*Operation_Data(9|70M9) 25|37r26 +X 9 interfac.ads +38K9*Interfaces 233e15 25|18w6 18r22 +70M9*Unsigned_8 +84M9*Unsigned_64 25|28r27 28r42 +X 14 lib.ads +19K9*Lib 35e8 25|22r6 32r18 46r7 54r13 60r13 66r13 71r10 +X 15 lib-messages.ads +21K13*Messages 103e17 25|22w10 32r22 46r11 54r17 60r17 66r17 71r14 +41U14*Put_Line 25|54s26 60s26 66s26 71s23 +55A12*Translated_String{string} 25|32r31 +74U14*Image 25|46s20 +X 23 userland.ads +17K9*Userland 23e13 24|20r9 24r5 25|20r6 20r28 21r6 21r28 25r14 76r5 +X 24 userland-corefile.ads +20K18*Corefile 23|17k9 24|24l14 24e22 25|25b23 76l14 76t22 +22U14*Generate_Corefile 22>33 25|26b14 75l8 75t25 +22r33 Ctx{3|22R15} 25|26b33 37r47 38r34 +X 25 userland-corefile.adb +27i7 Proc{28|33I9} 28r72 29r53 30r53 +28m7 PID_Val{9|84M9} 46r27 +29m7 Core_Lim{27|58M9} 40r10 42r13 43r22 +30m7 File_Lim{27|58M9} 42r24 43m10 +31i7 PID_Len{natural} 46m45 50r37 +32a7 PID_Buf{15|55A12} 46m36 50r13 50r22 50r52 +33e7 Success{29|234E9} 52m64 53r13 58m50 59r13 64m68 65r13 70m10 73r35 +34i7 Core_FS{29|74I9} 58m31 64r21 70r38 +35m7 Core_Ino{29|28M9} 58m40 64r30 70r47 +36i7 Ctx_Len{natural} 64m53 65r42 +37a7 Ctx_Data{7|29A9} 64r43 65r53 +49a10 File_Path{string} 52r27 54r68 58r20 60r66 66r67 72r34 +X 27 userland-mac.ads +20K18*MAC 25|21w15 21r37 27|180e17 +58M9*Limit_Value<9|84M9> 25|29r27 30r27 +60n8*Core_Size_Limit{59E9} 25|29r59 +62n8*File_Size_Limit{59E9} 25|30r59 +X 28 userland-process.ads +28K18*Process 25|20w15 20r37 27r27 28r55 28|677e21 +33I9*PID 25|27r35 +573V13*Convert{natural} 25|28s63 +604V13*Get_Limit{27|58M9} 25|29s42 30s42 +X 29 vfs.ads +24K9*VFS 24|18w6 23r19 25|23w6 23r15 33r18 34r18 35r18 52r10 52r38 53r24 +. 58r10 59r24 64r10 65r24 70r21 73r14 29|674e8 +28M9*File_Inode_Number<9|84M9> 25|35r22 +39n23*File_Regular{39E9} 25|52r42 +74I9*FS_Handle 25|34r22 +234E9*FS_Status 25|33r22 73r18 29|242e16 +235n8*FS_Success{234E9} 25|53r28 59r28 65r28 +418U14*Write 25|64s14 +511V13*Synchronize{234E9} 25|70s25 +593U14*Open 25|58s14 +618U14*Create_Node 25|52s14 +639V13*Is_Initialized{boolean} 24|23s23 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___userland__corefile__generate_corefile 0 +GG EK_PROOF_DEPENDENCIES ada___userland__corefile__generate_corefile 0 +GG EK_GLOBALS ada___userland__corefile__generate_corefile local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__corefile userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 vfs__write vfs__synchronize__2 vfs__open__2 vfs__create_node__2 vfs__is_initialized ada___arch__local__get_current_process ada___userland__process__convert ada___userland__process__get_limit ada___lib__messages__put_line ada___lib__messages__image__2 FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__corefile 0 +GG EK_PROOF_DEPENDENCIES ada___userland__corefile 0 +GG EK_GLOBALS ada___userland__corefile local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__corefile TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__corefile__generate_corefile FALSE FALSE FALSE FALSE TRUE ada___userland__corefile VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-corefile.cswi b/obj/gnatprove/phase1/userland-corefile.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/userland-corefile.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-elf.adb.stderr b/obj/gnatprove/phase1/userland-elf.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-elf.adb.stdout b/obj/gnatprove/phase1/userland-elf.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-elf.ali b/obj/gnatprove/phase1/userland-elf.ali new file mode 100644 index 0000000..5a69fe1 --- /dev/null +++ b/obj/gnatprove/phase1/userland-elf.ali @@ -0,0 +1,847 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.elf%b userland-elf.adb 30d0e83b OO PK +W devices%s devices.adb devices.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W memory%s memory.ads memory.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali +W userland%s userland.ads userland.ali +W userland.syscall%s userland-syscall.adb userland-syscall.ali + +U userland.elf%s userland-elf.ads ab5ea72d OO PK +W arch%s arch.ads arch.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W interfaces%s interfac.ads interfac.ali +W system%s system.ads system.ali +W userland%s userland.ads userland.ali +W vfs%s vfs.adb vfs.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s +D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D networking.ads 20250222165738 70ea6e55 networking%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-elf.adb 20250222165738 a1012059 userland.elf%b +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D userland-syscall.ads 20250222165738 b384b127 userland.syscall%s +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 23|20r6 51r25 140r17 24|27r25 69r18 148r17 156r35 160r24 185r20 +. 185r57 190r7 +X 4 arch-mmu.ads +22K14*MMU 250e13 23|20w11 51r30 140r22 24|27r30 69r23 148r22 156r40 160r29 +. 185r25 185r62 190r12 +26R9*Page_Permissions 32e14 24|160r33 +27b7*Is_User_Accesible{boolean} 24|161m11 +28b7*Can_Read{boolean} 24|162m11 +29b7*Can_Write{boolean} 24|163m11 176r39 +30b7*Can_Execute{boolean} 24|164m11 176r17 +31b7*Is_Global{boolean} 24|165m11 +43P9*Page_Table_Acc(42R9) 23|51r34 140r26 24|27r34 148r26 +49N7*Page_Size 24|69r27 156r44 185r29 185r66 +139U14*Map_Allocated_Range 24|190s16 +X 5 devices.ads +22K9*Devices 279e12 24|20w6 35r22 85r23 130r18 202r18 +29A9*Operation_Data(7|70M9) 24|35r30 85r31 130r26 202r26 +X 7 interfac.ads +38K9*Interfaces 233e15 23|18w6 18r22 +70M9*Unsigned_8 23|92r53 +73M9*Unsigned_16 23|97r30 98r30 104r30 105r30 106r30 107r30 108r30 109r30 +81M9*Unsigned_32 23|71r25 72r25 99r30 103r30 +84M9*Unsigned_64 23|32r30 33r30 34r30 35r30 52r25 73r25 74r25 77r25 78r25 +. 101r30 102r30 141r17 24|28r25 32r22 50r19 56r20 74r35 77r10 82r27 83r13 +. 84r27 94r23 128r18 149r17 152r40 155r27 157r28 171r20 +X 12 lib.ads +19K9*Lib 35e8 24|19r6 152r25 153r25 +X 13 lib-alignment.ads +19k13*Alignment 43e18 24|19w10 152r29 153r29 +X 16 memory.ads +19K9*Memory 36e11 24|18w6 18r18 +35M12*Virtual_Address{20|82M9} 24|158r30 159r10 +X 19 system.ads +37K9*System 155e11 23|17w6 40r21 75r25 100r30 24|17r6 17r35 40r26 169r20 +67M9*Address 23|40r28 75r32 100r37 24|169r27 +69m4*Null_Address{67M9} 24|40r33 +X 20 s-stoele.ads +40K16*Storage_Elements 90e28 24|17w13 17r42 +51I9*Storage_Offset 24|73r48 203r46 +53I12*Storage_Count{51I9} 24|193r30 +67V14*"+"{19|67M9} 24|73r46 203r44 +82M9*Integer_Address 24|153r40 170r20 183r44 +84V13*To_Address{19|67M9} 24|192s30 +87V13*To_Integer{82M9} 24|74s48 +X 22 userland.ads +17K9*Userland 23e13 23|22r9 142r5 24|21r6 23r14 173r19 209r5 +X 23 userland-elf.ads +22K18*ELF 22|17k9 23|142l14 142e17 24|23b23 209l14 209t17 +23P9*String_Acc(string) 41r21 133r40 24|125r40 129r22 +26N4*Auxval_Null +27N4*Auxval_Program_Headers +28N4*Auxval_Header_Size +29N4*Auxval_Header_Count +30N4*Auxval_Entrypoint +31R9*Auxval 36e14 42r21 +32m7*Entrypoint{7|84M9} 24|43m14 74m21 +33m7*Program_Headers{7|84M9} 24|44m14 106m33 +34m7*Program_Header_Count{7|84M9} 24|45m14 76m21 +35m7*Program_Header_Size{7|84M9} 24|46m14 75m21 +38R9*Parsed_ELF 44e14 52r45 24|28r45 38r16 +39b7*Was_Loaded{boolean} 24|39m11 117m17 +40m7*Entrypoint{19|67M9} 24|40m11 73m14 74r67 +41p7*Linker_Path{23P9} 24|41m11 108m26 +42r7*Vector{31R9} 24|42m11 74m14 75m14 76m14 106m26 +43b7*Exec_Stack{boolean} 24|47m10 110m26 +48V13*Load_ELF{38R9} 49>8 50>8 51>8 52>8 24|24b13 120l8 120t16 +49i8 FS{28|74I9} 24|25b8 55r17 93r20 102r39 108r53 +50m8 Ino{28|28M9} 24|26b8 55r21 93r24 102r43 108r57 +51p8 Map{4|43P9} 24|27b8 102r53 +52m8 Requested_Base{7|84M9} 24|28b8 32r37 +57N4 ET_DYN 24|68r28 +60N4 Program_Loadable_Segment 24|101r21 +61N4 Program_Dynamic_Segment +62N4 Program_Interpreter_Segment 24|107r21 +63N4 Program_Header_Table_Segment 24|105r21 +64N4 Program_GNU_Stack 24|109r21 +67N4 Flags_Executable 24|110r55 164r50 +68N4 Flags_Write 24|163r50 +69N4 Flags_Read 24|162r50 +70R9 Program_Header 79e14 80r8 90r8 133r17 139r17 24|75r45 81r62 125r17 147r17 +71m7*Segment_Type{7|81M9} 81r7 24|100r22 +72m7*Flags{7|81M9} 82r7 24|110r45 162r40 163r40 164r40 +73m7*Offset{7|84M9} 83r7 24|136r33 205r36 +74m7*Virt_Address{7|84M9} 84r7 24|106r63 156r17 159r41 +75m7*Phys_Address{19|67M9} 85r7 +76i7*File_Size_Bytes{natural} 86r7 24|129r60 130r54 137r54 202r54 206r62 +77m7*Mem_Size_Bytes{7|84M9} 87r7 24|157r61 +78m7*Alignment{7|84M9} 88r7 24|177r17 178r18 178r40 183r68 184r49 +92A9 ELF_ID_Field(7|70M9) 93r29 96r30 +93a4 ELF_Signature{92A9} 24|58r40 +95R9 ELF_Header 110e14 111r8 127r8 24|33r22 34r42 +96a7*Identifier{92A9} 112r7 24|58r17 +97m7*ELF_Type{7|73M9} 113r7 24|68r17 +98m7*Machine{7|73M9} 114r7 +99m7*Version{7|81M9} 115r7 +100m7*Entrypoint{19|67M9} 116r7 +101m7*Program_Header_List{7|84M9} 117r7 24|92r24 +102m7*Section_Header_List{7|84M9} 118r7 +103m7*Flags{7|81M9} 119r7 +104m7*Header_Size{7|73M9} 120r7 +105m7*Program_Header_Size{7|73M9} 121r7 24|83r33 +106m7*Program_Header_Count{7|73M9} 122r7 24|77r30 81r37 +107m7*Section_Header_Size{7|73M9} 123r7 +108m7*Section_Header_Count{7|73M9} 124r7 +109m7*Section_Names_Index{7|73M9} 125r7 +130V13 Get_Linker{23P9} 131>8 132>8 133>8 24|108s41 122b13 142l8 142t18 +131i8 FS{28|74I9} 24|123b8 136r17 +132m8 Ino{28|28M9} 24|124b8 136r21 +133r8 Header{70R9} 24|125b8 129r53 130r47 136r26 137r47 +136V13 Load_Header{boolean} 137>8 138>8 139>8 140>8 141>8 24|102s26 144b13 +. 208l8 208t19 +137i8 FS{28|74I9} 24|145b8 205r20 +138m8 Ino{28|28M9} 24|146b8 205r24 +139r8 Header{70R9} 24|147b8 156r10 157r54 159r34 162r33 163r33 164r33 177r10 +. 178r11 178r33 183r61 184r42 202r47 205r29 206r55 +140p8 Map{4|43P9} 24|148b8 174r11 191r30 +141m8 Base{7|84M9} 24|149b8 159r27 +X 24 userland-elf.adb +32m7 Base{7|84M9} 68r39 69m10 73r64 102r58 106r52 +33r7 Header{23|95R9} 36m34 36r34 58r10 68r10 73r28 77r23 81r30 83r26 92r17 +34i7 Header_Bytes{natural} 35r51 57r48 +35a7 Header_Data{5|29A9} 55m31 +38r7 Result{23|38R9} 60r17 73m7 74m7 74r60 75m7 76m7 89r20 96r20 103r29 106m19 +. 108m19 110m19 117m10 118r17 +49i7 Ret_Count{natural} 55m44 56r33 57r35 93m46 94r36 95r38 +50m7 Pos{7|84M9} 55r26 56m7 56r14 92m10 93r29 94m10 94r17 +51b7 Discard{boolean} +52e7 Success{28|234E9} 55m61 57r10 93m63 95r13 +81a10 PHDRs(23|70R9) 84r50 86m37 86r37 88r26 99r21 100r18 102r48 106r59 108r62 +. 110r41 +82m10 HSize{7|84M9} 84r42 88r13 +84m10 RSize{7|84M9} 85r61 95r60 +85a10 PHDRs_Data{5|29A9} 93m34 +99r14 HDR=99:21{23|70R9} +128m7 Discard{7|84M9} +129p7 Ret{23|23P9} 131r34 138r17 +130a7 Ret_Data{5|29A9} 136m41 +132i7 Ret_Count{natural} 136m51 137r35 +133b7 Discard2{boolean} +134e7 Success{28|234E9} 136m68 137r10 +152K15 A1[13|19] 184r16 +153K15 A2[13|19] 183r16 +155m7 MisAlign{7|84M9} 157r43 203r62 +157m7 Load_Size{7|84M9} 174r29 184r31 +158m7 ELF_Virtual{16|35M12} 174r16 183r31 +160r7 Flags{4|26R9} 176r11 176r33 194r30 +166i7 Ret_Count{natural} 205m51 206r43 +167b7 Success1{boolean} 173m7 175r14 196m30 197r14 +168e7 Success2{28|234E9} 205m68 206r17 +169m7 Result{19|67M9} 195m30 203r37 +170m7 Ali_V{20|82M9} 183m7 185r10 192r42 +171m7 Ali_L{7|84M9} 184m7 185r47 193r45 +202a10 Load2{5|29A9} 205m44 +18M9 T{7|84M9} 27r42[152] 27r52[152] 35r44[152] 35r54[152] 40r50[152] 40r60[152] +. 41r49[152] 27r42[153] 27r52[153] 35r44[153] 35r54[153] 40r50[153] 40r60[153] +. 41r49[153] 23r42[152] 23r52[152] 27r14[152] 30r44[152] 30r54[152] 34r14[152] +. 37r50[152] 37r60[152] 23r42[153] 23r52[153] 27r14[153] 30r44[153] 30r54[153] +. 34r14[153] 37r50[153] 37r60[153] +27V13 Align_Up{7|84M9} 184s19[152] 29r20[152] 29r20[153] +27m23 Value{7|84M9} 24r61[152] 24r61[153] +27m30 Alignment{7|84M9} 28r20[152] 28r40[152] 28r55[152] 29r40[152] 28r20[153] +. 28r40[153] 28r55[153] 29r40[153] 25r61[152] 25r61[153] +35V13 Align_Down{20|82M9} 183s19[153] 37r20[152] 37r20[153] +35m25 Value{7|84M9} 31r61[152] 31r61[153] +35m32 Alignment{7|84M9} 36r20[152] 36r40[152] 36r55[152] 37r42[152] 36r20[153] +. 36r40[153] 36r55[153] 37r42[153] 32r61[152] 32r61[153] +40V13 Divide_Round_Up{7|84M9} 42r20[152] 42r20[153] +40m30 Dividend{7|84M9} 41r21[152] 41r21[153] 39r15[152] 39r15[153] +40m40 Divisor{7|84M9} 41r33[152] 41r62[152] 42r47[152] 41r33[153] 41r62[153] +. 42r47[153] 39r27[152] 39r43[152] 39r27[153] 39r43[153] +24m7 Value2{20|82M9} 27r18[152] 27r18[153] +25m7 Align2{20|82M9} 27r27[152] 27r48[152] 27r27[153] 27r48[153] +31m7 Value2{20|82M9} 34r17[152] 34r17[153] +32m7 Align2{20|82M9} 34r33[152] 34r33[153] +X 27 userland-syscall.ads +33K18*Syscall 24|21w15 173r28 27|1356e21 +1257V13*Check_Userland_Mappability{boolean} 24|173s36 +X 28 vfs.ads +24K9*VFS 23|19w6 49r25 50r25 131r17 132r17 137r17 138r17 24|25r25 26r25 30r11 +. 55r7 93r10 123r17 124r17 127r11 136r7 145r17 146r17 151r11 205r10 28|674e8 +28M9*File_Inode_Number<7|84M9> 23|50r29 132r21 138r21 24|26r29 124r21 146r21 +74I9*FS_Handle 23|49r29 131r21 137r21 24|25r29 123r21 145r21 +234E9*FS_Status 24|52r19 134r19 168r20 28|242e16 +235n8*FS_Success{234E9} 24|57r21 95r24 137r20 206r28 +400U14*Read 24|55s11 93s14 136s11 205s14 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___userland__elf__load_elf 4 ada___userland__elf__get_linker ada___userland__elf__load_header vfs__read ada___system__storage_elements__to_integer +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_elf 0 +GG EK_GLOBALS ada___userland__elf__load_elf local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__elf userland proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 4 vfs__read ada___system__storage_elements__to_address ada___arch__mmu__map_allocated_range ada___userland__syscall__check_userland_mappability TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__get_linker 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__get_linker 0 +GG EK_GLOBALS ada___userland__elf__get_linker local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__elf userland proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 vfs__read TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__load_header__a1__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a1__align_up 0 +GG EK_GLOBALS ada___userland__elf__load_header__a1__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a1 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__load_header__a1__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a1__align_down 0 +GG EK_GLOBALS ada___userland__elf__load_header__a1__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a1 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__load_header__a1__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a1__divide_round_up 0 +GG EK_GLOBALS ada___userland__elf__load_header__a1__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a1 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__load_header__a1 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a1 0 +GG EK_GLOBALS ada___userland__elf__load_header__a1 local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__load_header__a2__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a2__align_up 0 +GG EK_GLOBALS ada___userland__elf__load_header__a2__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a2 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__load_header__a2__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a2__align_down 0 +GG EK_GLOBALS ada___userland__elf__load_header__a2__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a2 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__load_header__a2__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a2__divide_round_up 0 +GG EK_GLOBALS ada___userland__elf__load_header__a2__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a2 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__load_header__a2 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a2 0 +GG EK_GLOBALS ada___userland__elf__load_header__a2 local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf__load_header 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header 0 +GG EK_GLOBALS ada___userland__elf__load_header local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 vfs__read ada___system__storage_elements__to_address ada___arch__mmu__map_allocated_range ada___userland__syscall__check_userland_mappability TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__elf 0 +GG EK_PROOF_DEPENDENCIES ada___userland__elf 0 +GG EK_GLOBALS ada___userland__elf local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__readlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__open FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_sock_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header__a1 TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__elf__load_header BODY_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmdt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__close FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_peer_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__read FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmget FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header__a1__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a1 VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__write FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shutdown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__seek FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header__a1__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a1 VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__getsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__futex FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__setsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__getdents FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__elf__load_header__a1__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a1 VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__clock FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__makenode FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__munmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__clock_nanosleep FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__unlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_pid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_ppid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__truncate FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__exec FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__failure_policy FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_rusage FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__do_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__recvfrom FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__do_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__clone FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pre_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__post_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header__a2 TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__elf__load_header BODY_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sendto FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_mappability FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__do_remote_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__syscall__common_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__wait FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__bind FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header__a2__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a2 VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__symlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___userland__elf__load_header__a2__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a2 VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__connect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__config_netinterface FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__3 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__socket FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sysconf FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__open_pty FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__utimes FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header__a2__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a2 VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__4 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_hostname FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__spawn FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fsync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__create_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__link FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__switch_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_tid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__to_string FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ptrace FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_mmap_prot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__manage_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__execute_mac_failure FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pty_ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__listen FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sys_accept FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mac_syscall_to_kernel FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigaction FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_add_file FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__send_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE ada___userland__syscall__fcntl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__resolve_at_directive FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__exit_thread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__faccess FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_random FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fstat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mprotect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_egid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__chdir FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_gids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__syscall__sched_yield FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__ppoll FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__delete_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__tty_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pipe FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_euid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_uids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__rename FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fchmod FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fadvise FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__syscall__add_mac_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__umask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__reboot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fchown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sys_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__arch_prctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__umount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pwrite FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-elf.cswi b/obj/gnatprove/phase1/userland-elf.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/userland-elf.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-loader.ali b/obj/gnatprove/phase1/userland-loader.ali index 56825ab..ca63bdb 100644 --- a/obj/gnatprove/phase1/userland-loader.ali +++ b/obj/gnatprove/phase1/userland-loader.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/userland-loader.cswi b/obj/gnatprove/phase1/userland-loader.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/userland-loader.cswi +++ b/obj/gnatprove/phase1/userland-loader.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-mac.adb.stderr b/obj/gnatprove/phase1/userland-mac.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-mac.adb.stdout b/obj/gnatprove/phase1/userland-mac.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-mac.ali b/obj/gnatprove/phase1/userland-mac.ali new file mode 100644 index 0000000..d8a67fe --- /dev/null +++ b/obj/gnatprove/phase1/userland-mac.ali @@ -0,0 +1,357 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.mac%b userland-mac.adb 370e286c OO PK +W userland%s userland.ads userland.ali + +U userland.mac%s userland-mac.ads 0b26f347 OO PK +W interfaces%s interfac.ads interfac.ali +W userland%s userland.ads userland.ali +W vfs%s vfs.adb vfs.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-mac.adb 20250222165738 d8fcd60e userland.mac%b +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 4 interfac.ads +38K9*Interfaces 233e15 11|17w6 17r22 +84M9*Unsigned_64 11|58r28 +X 10 userland.ads +17K9*Userland 23e13 11|20r9 180r5 12|17r14 128r5 +X 11 userland-mac.ads +20K18*MAC 10|17k9 11|180l14 180e17 12|17b23 128l14 128t17 +23R9*Capabilities 39e14 84r53 89r61 154r17 12|31r53 36r61 +24b7*Can_Change_Scheduling{boolean} +25b7*Can_Spawn_Others{boolean} +26b7*Can_Access_Entropy{boolean} +27b7*Can_Modify_Memory{boolean} +28b7*Can_Use_Networking{boolean} +29b7*Can_Manage_Networking{boolean} +30b7*Can_Manage_Mounts{boolean} +31b7*Can_Manage_Power{boolean} +32b7*Can_Trace_Children{boolean} +33b7*Can_Change_UIDs{boolean} +34b7*Can_Manage_MAC{boolean} +35b7*Can_Use_Clocks{boolean} +36b7*Can_Signal_All{boolean} +37b7*Can_Change_GIDs{boolean} +38b7*Can_Bypass_IPC_Checks{boolean} +42R9*Permissions 49e14 101r45 116r17 147r19 12|44r45 68r17 +43b7*Includes_Contents{boolean} +44b7*Can_Read{boolean} +45b7*Can_Write{boolean} +46b7*Can_Execute{boolean} +47b7*Can_Append_Only{boolean} 12|60m18 +48b7*Can_Lock_Files{boolean} +52E9*Enforcement 55e13 74r52 79r59 153r17 12|21r52 26r59 +53n8*Deny{52E9} 160r19 +54n8*Deny_And_Scream{52E9} +55n8*Kill{52E9} +58M9*Limit_Value<4|84M9> 126r38 136r20 151r51 164r32 165r32 166r32 168r32 +. 12|91r38 100r20 +59E9*Limit_Type 65e26 126r19 135r20 151r30 12|91r19 99r20 +60n8*Core_Size_Limit{59E9} 163r11 +61n8*CPU_Time_Limit{59E9} 164r11 +62n8*File_Size_Limit{59E9} 165r11 +63n8*Opened_File_Limit{59E9} 166r11 +64n8*Stack_Size_Limit{59E9} 167r11 +65n8*Memory_Size_Limit{59E9} 168r11 +68R9*Context 69r31 74r36 79r44 84r37 89r45 99r15 113r24 125r19 134r27 152c9 +. 157e14 159r31 177r24 12|21r36 26r44 31r37 36r45 42r15 65r24 90r19 98r27 +. 113r24 +69r4*Default_Context{68R9} 159c4 +74V13*Get_Enforcement{52E9} 74>30 12|21b13 24l8 24t23 +74r30 Ctx{68R9} 12|21b30 23r14 +79U14*Set_Enforcement 79=31 79>53 12|26b14 29l8 29t23 +79r31 Ctx{68R9} 12|26b31 28m7 +79e53 Act{52E9} 12|26b53 28r21 +84V13*Get_Capabilities{23R9} 84>31 12|31b13 34l8 34t24 +84r31 Ctx{68R9} 12|31b31 33r14 +89U14*Set_Capabilities 89=32 89>54 12|36b14 39l8 39t24 +89r32 Ctx{68R9} 12|36b32 38m7 +89r54 Caps{23R9} 12|36b54 38r19 +98V13*Check_Permissions{42R9} 99>8 100>8 101>8 12|41b13 62l8 62t25 +99r8 Data{68R9} 12|42b8 48r16 49r13 51r20 51r36 51r50 52r23 +100i8 FS{13|74I9} 12|43b8 51r43 +101m8 Ino{13|28M9} 12|44b8 51r58 +104E9*Addition_Status 104e63 117r21 179r21 12|69r21 115r21 +104n29*Success{104E9} 12|75r26 121r23 +104n38*No_Space{104E9} 12|126r17 +104n48*Is_Conflicting{104E9} 12|77r26 +112U14*Add_Entity 113=8 114>8 115>8 116>8 117<8 12|64b14 87l8 87t18 +113r8 Data{68R9} 12|65b8 72r16 73r13 73r31 73r47 73r61 74r24 84m21 +114i8 FS{13|74I9} 118r16 12|66b8 73r54 85r35 +115m8 Ino{13|28M9} 12|67b8 73r69 85r39 +116r8 Perms{42R9} 12|68b8 74r16 85r44 +117e8 Status{104E9} 12|69b8 75m16 77m16 86m21 +124V13*Get_Limit{58M9} 125>8 126>8 12|89b13 95l8 95t17 +125r8 Data{68R9} 12|90b8 94r14 +126e8 Resource{59E9} 12|91b8 94r27 +133U14*Set_Limit 134=8 135>8 136>8 137<8 12|97b14 110l8 110t17 +134r8 Data{68R9} 12|98b8 104r19 105m10 +135e8 Resource{59E9} 12|99b8 104r32 105r23 +136m8 Limit{58M9} 12|100b8 104r10 105r36 +137b8 Could_Set{boolean} 12|101b8 106m10 108m10 +141N4 Filter_Path_Length +142R9 Filter 148e14 150r51 178r17 12|114r17 +143b7*Is_Used{boolean} 170m11 12|49r15 73r15 119r19 +144b7*Is_Device{boolean} 171m11 12|51r22 73r33 +145i7*FS{13|74I9} 172m11 12|51r38 73r49 +146m7*Ino{13|28M9} 173m11 12|51r52 73r63 +147r7*Perms{42R9} 174m11 12|52r25 74r26 +150A9 Filter_Arr(142R9) 156r17 +151A9 Limit_Arr(58M9)<59E9> 155r17 +153e7*Action{52E9} 160m8 12|23r18 28m11 +154r7*Caps{23R9} 161m8 12|33r18 38m11 +155a7*Limits{151A9} 162m8 12|94r19 104r24 105m15 +156a7*Filters{150A9} 169m8 12|48r21 72r21 118r21 +176U14 Add_Filter 177=8 178>8 179<8 12|83s7 112b14 127l8 127t18 +177r8 Data{68R9} 12|113b8 118r16 119r17 120m13 +178r8 Filt{142R9} 12|114b8 120r23 +179e8 Status{104E9} 12|115b8 121m13 126m7 +X 12 userland-mac.adb +46b7 Has_Elements{boolean} 50m13 57r10 +48r11 E{11|142R9} +72r11 E{11|142R9} +118r11 E{11|142R9} +X 13 vfs.ads +24K9*VFS 11|18w6 18r22 100r15 101r15 114r17 115r17 118r22 145r19 146r19 172r24 +. 12|43r15 44r15 66r17 67r17 13|674e8 +28M9*File_Inode_Number<4|84M9> 11|101r19 115r21 146r23 12|44r19 67r21 +74I9*FS_Handle 11|100r19 114r21 145r23 12|43r19 66r21 +75i4*Error_Handle{74I9} 11|118r26 172r28 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___userland__mac__get_enforcement 0 +GG EK_PROOF_DEPENDENCIES ada___userland__mac__get_enforcement 0 +GG EK_GLOBALS ada___userland__mac__get_enforcement local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__mac__set_enforcement 0 +GG EK_PROOF_DEPENDENCIES ada___userland__mac__set_enforcement 0 +GG EK_GLOBALS ada___userland__mac__set_enforcement local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__mac__get_capabilities 0 +GG EK_PROOF_DEPENDENCIES ada___userland__mac__get_capabilities 0 +GG EK_GLOBALS ada___userland__mac__get_capabilities local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__mac__set_capabilities 0 +GG EK_PROOF_DEPENDENCIES ada___userland__mac__set_capabilities 0 +GG EK_GLOBALS ada___userland__mac__set_capabilities local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__mac__check_permissions 0 +GG EK_PROOF_DEPENDENCIES ada___userland__mac__check_permissions 0 +GG EK_GLOBALS ada___userland__mac__check_permissions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__mac__add_entity 1 ada___userland__mac__add_filter +GG EK_PROOF_DEPENDENCIES ada___userland__mac__add_entity 0 +GG EK_GLOBALS ada___userland__mac__add_entity local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__mac__get_limit 0 +GG EK_PROOF_DEPENDENCIES ada___userland__mac__get_limit 0 +GG EK_GLOBALS ada___userland__mac__get_limit local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__mac__set_limit 0 +GG EK_PROOF_DEPENDENCIES ada___userland__mac__set_limit 0 +GG EK_GLOBALS ada___userland__mac__set_limit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__mac__add_filter 0 +GG EK_PROOF_DEPENDENCIES ada___userland__mac__add_filter 0 +GG EK_GLOBALS ada___userland__mac__add_filter local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__mac 0 +GG EK_PROOF_DEPENDENCIES ada___userland__mac 0 +GG EK_GLOBALS ada___userland__mac local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-mac.cswi b/obj/gnatprove/phase1/userland-mac.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/userland-mac.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-memory_failure.adb.stderr b/obj/gnatprove/phase1/userland-memory_failure.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-memory_failure.adb.stdout b/obj/gnatprove/phase1/userland-memory_failure.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-memory_failure.ali b/obj/gnatprove/phase1/userland-memory_failure.ali new file mode 100644 index 0000000..31c84a2 --- /dev/null +++ b/obj/gnatprove/phase1/userland-memory_failure.ali @@ -0,0 +1,190 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.memory_failure%b userland-memory_failure.adb 21d4eb33 OO PK +W lib%s lib.adb lib.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W userland%s userland.ads userland.ali + +U userland.memory_failure%s userland-memory_failure.ads 6fe99d62 OO PK +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W userland%s userland.ads userland.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-memory_failure.ads 20250222165738 e591e3ec userland.memory_failure%s +D userland-memory_failure.adb 20250222165738 0e397577 userland.memory_failure%b +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 7 lib.ads +19K9*Lib 35e8 14|17r6 17r31 15|17r6 36r7 +X 9 lib-panic.ads +21K13*Panic 39e14 15|17w10 36r11 +32U14*Hard_Panic 15|36s17 +X 10 lib-synchronization.ads +20K13*Synchronization 66e24 14|17w10 17r35 +22R9*Binary_Semaphore 57e14 14|37r27 +23r4*Unlocked_Semaphore{22R9} 14|37r47 +27U14*Seize 15|22s7 29s7 +31U14*Release 15|24s7 31s7 +X 13 userland.ads +17K9*Userland 23e13 14|19r9 39r5 15|19r14 38r5 +X 14 userland-memory_failure.ads +19K18*Memory_Failure 13|17k9 14|39l14 39e28 15|19b23 38l14 38t28 +21E9*Policy 24e18 27r43 30r39 38r37 15|20r43 27r39 +22n8*Hard_Panic{21E9} 38r47 +23n8*Soft_Kill{21E9} +24n8*Hard_Kill{21E9} +27U14*Get_System_Policy 27<33 15|20b14 25l8 25t25 +27e33 Pol{21E9} 15|20b33 23m7 +30U14*Set_System_Policy 30>33 15|27b14 32l8 32t25 +30e33 Pol{21E9} 15|27b33 30r21 +33U14*Handle_Failure 15|34b14 37l8 37t22 +37r4 Config_Mutex{10|22R9} 15|22m14 22r14 24m16 24r16 29m14 29r14 31m16 31r16 +38e4 Mem_Policy{21E9} 15|23r14 30m7 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___userland__memory_failure__get_system_policy 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__memory_failure__get_system_policy 0 +GG EK_GLOBALS ada___userland__memory_failure__get_system_policy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__memory_failure userland proper_proof_in 0 proper_input 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy proper_output 1 ada___userland__memory_failure__config_mutex refined_proof_in 0 refined_input 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy refined_output 1 ada___userland__memory_failure__config_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__memory_failure__set_system_policy 2 ada___lib__synchronization__seize ada___lib__synchronization__release +GG EK_PROOF_DEPENDENCIES ada___userland__memory_failure__set_system_policy 0 +GG EK_GLOBALS ada___userland__memory_failure__set_system_policy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__memory_failure userland proper_proof_in 0 proper_input 1 ada___userland__memory_failure__config_mutex proper_output 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy refined_proof_in 0 refined_input 1 ada___userland__memory_failure__config_mutex refined_output 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__memory_failure__handle_failure 1 ada___lib__panic__hard_panic +GG EK_PROOF_DEPENDENCIES ada___userland__memory_failure__handle_failure 0 +GG EK_GLOBALS ada___userland__memory_failure__handle_failure local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__memory_failure userland proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__memory_failure 0 +GG EK_PROOF_DEPENDENCIES ada___userland__memory_failure 0 +GG EK_GLOBALS ada___userland__memory_failure local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy refined_initializes 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__memory_failure TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__memory_failure__get_system_policy FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE ada___userland__memory_failure__set_system_policy FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__memory_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_REMOTE_STATES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-memory_failure.cswi b/obj/gnatprove/phase1/userland-memory_failure.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/userland-memory_failure.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-memory_locations.ads.stderr b/obj/gnatprove/phase1/userland-memory_locations.ads.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-memory_locations.ads.stdout b/obj/gnatprove/phase1/userland-memory_locations.ads.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-memory_locations.ali b/obj/gnatprove/phase1/userland-memory_locations.ali new file mode 100644 index 0000000..5e19996 --- /dev/null +++ b/obj/gnatprove/phase1/userland-memory_locations.ali @@ -0,0 +1,71 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.memory_locations%s userland-memory_locations.ads ce1ff5c9 OO PK +W userland%s userland.ads userland.ali + +D system.ads 20240507065137 14286b0f system%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-memory_locations.ads 20250222165738 d86e3770 userland.memory_locations%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 2 userland.ads +17K9*Userland 23e13 3|17r9 30r5 +X 3 userland-memory_locations.ads +17K18*Memory_Locations 2|17k9 3|30l14 30e30 +20N4*Program_Offset +24N4*LD_Offset_Min +25N4*LD_Offset_Max +26N4*Mmap_Anon_Min +27N4*Mmap_Anon_Max +28N4*Stack_Jump_Min +29N4*Stack_Jump_Max + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___userland__memory_locations 0 +GG EK_PROOF_DEPENDENCIES ada___userland__memory_locations 0 +GG EK_GLOBALS ada___userland__memory_locations local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__memory_locations TRUE FALSE FALSE FALSE FALSE userland +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-memory_locations.cswi b/obj/gnatprove/phase1/userland-memory_locations.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/userland-memory_locations.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-oom_failure.ali b/obj/gnatprove/phase1/userland-oom_failure.ali index d4244c5..20c8db2 100644 --- a/obj/gnatprove/phase1/userland-oom_failure.ali +++ b/obj/gnatprove/phase1/userland-oom_failure.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/userland-oom_failure.cswi b/obj/gnatprove/phase1/userland-oom_failure.cswi index 1286ce7..2ba9819 100644 --- a/obj/gnatprove/phase1/userland-oom_failure.cswi +++ b/obj/gnatprove/phase1/userland-oom_failure.cswi @@ -1,4 +1,4 @@ -20250222171637 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-process.ali b/obj/gnatprove/phase1/userland-process.ali index 9ad7b8b..1053e13 100644 --- a/obj/gnatprove/phase1/userland-process.ali +++ b/obj/gnatprove/phase1/userland-process.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/userland-process.cswi b/obj/gnatprove/phase1/userland-process.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/userland-process.cswi +++ b/obj/gnatprove/phase1/userland-process.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-syscall.adb.stderr b/obj/gnatprove/phase1/userland-syscall.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-syscall.adb.stdout b/obj/gnatprove/phase1/userland-syscall.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/userland-syscall.ali b/obj/gnatprove/phase1/userland-syscall.ali new file mode 100644 index 0000000..19e07ff --- /dev/null +++ b/obj/gnatprove/phase1/userland-syscall.ali @@ -0,0 +1,4501 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_ACCESS +RV NO_UNCHECKED_CONVERSION +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U userland.syscall%b userland-syscall.adb d8b419ff OO PK +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W ada.unchecked_conversion%s a-unccon.ads a-unccon.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W arch%s arch.ads arch.ali +W arch.clocks%s arch-clocks.adb arch-clocks.ali +W arch.hooks%s arch-hooks.adb arch-hooks.ali +W arch.local%s arch-local.adb arch-local.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W arch.power%s arch-power.adb arch-power.ali +W config%s config.ads config.ali +W cryptography%s cryptography.ads cryptography.ali +W cryptography.random%s cryptography-random.adb cryptography-random.ali +W devices%s devices.adb devices.ali +W devices.termios%s devices-termios.ads devices-termios.ali +W ipc%s ipc.ads ipc.ali +W ipc.filelock%s ipc-filelock.adb ipc-filelock.ali +W ipc.futex%s ipc-futex.adb ipc-futex.ali +W ipc.shm%s ipc-shm.adb ipc-shm.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W lib.time%s lib-time.adb lib-time.ali +W memory%s memory.ads memory.ali +W memory.physical%s memory-physical.adb memory-physical.ali +W networking%s networking.adb networking.ali +W networking.interfaces%s networking-interfaces.adb networking-interfaces.ali +W system%s system.ads system.ali +Z system.storage_elements%s s-stoele.ads s-stoele.ali +W userland%s userland.ads userland.ali +W userland.loader%s userland-loader.adb userland-loader.ali +W userland.memory_failure%s userland-memory_failure.adb userland-memory_failure.ali +W userland.oom_failure%s userland-oom_failure.adb userland-oom_failure.ali + +U userland.syscall%s userland-syscall.ads db6029d6 OO PK +W arch%s arch.ads arch.ali +W arch.context%s arch-context.adb arch-context.ali +W arch.mmu%s arch-mmu.adb arch-mmu.ali +W interfaces%s interfac.ads interfac.ali +W ipc%s ipc.ads ipc.ali +W ipc.fifo%s ipc-fifo.adb ipc-fifo.ali +W ipc.pty%s ipc-pty.adb ipc-pty.ali +W ipc.socket%s ipc-socket.adb ipc-socket.ali +W memory%s memory.ads memory.ali +W networking%s networking.adb networking.ali +W scheduler%s scheduler.adb scheduler.ali +W system%s system.ads system.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali +W userland%s userland.ads userland.ali +W userland.mac%s userland-mac.adb userland-mac.ali +W userland.process%s userland-process.adb userland-process.ali +W vfs%s vfs.adb vfs.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D a-unccon.ads 20240507065137 0e9b276f ada.unchecked_conversion%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-context.ads 20250222165738 7bffdd51 arch.context%s +D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s +D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s +D arch-local.ads 20250222165738 e5953d14 arch.local%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D arch-power.ads 20250222165738 0576051f arch.power%s +D config.ads 20250222165738 98924657 config%s +D cryptography.ads 20250222165738 8132c7fc cryptography%s +D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s +D devices.ads 20250222165738 f45ecf09 devices%s +D devices-termios.ads 20250222165738 06aea761 devices.termios%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D i-c.ads 20240507065137 aac316ce interfaces.c%s +D ipc.ads 20250222165738 03976a1a ipc%s +D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s +D ipc-filelock.ads 20250222165738 69934e3c ipc.filelock%s +D ipc-futex.ads 20250222165738 e719aab2 ipc.futex%s +D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s +D ipc-shm.ads 20250222165738 e6bb078c ipc.shm%s +D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s +D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D lib-time.ads 20250222165738 30059be5 lib.time%s +D memory.ads 20250222165738 335640bf memory%s +D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s +D networking.ads 20250222165738 70ea6e55 networking%s +D networking-arp.ads 20250222165738 eec21925 networking.arp%s +D networking-interfaces.ads 20250222165738 9c034257 networking.interfaces%s +D scheduler.ads 20250222165738 61f570e7 scheduler%s +D system.ads 20240507065137 14286b0f system%s +D s-parame.ads 20240507065137 3597fc11 system.parameters%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s +D userland.ads 20250222165738 1671c2b9 userland%s +D userland-elf.ads 20250222165738 416b8b0c userland.elf%s +D userland-loader.ads 20250222165738 4d432fbc userland.loader%s +D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s +D userland-memory_failure.ads 20250222165738 e591e3ec userland.memory_failure%s +D userland-oom_failure.ads 20250222165738 8ec1521c userland.oom_failure%s +D userland-process.ads 20250222165738 a4893a04 userland.process%s +D userland-syscall.ads 20250222165738 b384b127 userland.syscall%s +D userland-syscall.adb 20250222165738 afb2e59c userland.syscall%b +D vfs.ads 20250222165738 63b4365d vfs%s +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 53|17r6 18r6 32r6 1406r48 1409r33 1411r36 1413r36 1415r38 1485r46 +. 2291r29 2332r43 3114r26 3115r26 4510r26 4511r26 4951r39 5352r30 5685r29 +X 2 a-charac.ads +16K13*Characters 18e19 53|17r10 1406r52 1409r37 1411r40 1413r40 1415r42 1485r50 +. 2332r47 4951r43 5352r34 +X 3 a-chlat1.ads +16K24*Latin_1 294e27 53|17w21 1406r63 1409r48 1411r51 1413r51 1415r53 1485r61 +. 2332r58 4951r54 5352r45 +23e4*NUL{character} 53|1406r71 1409r56 1411r59 1413r59 1415r61 1485r69 2332r66 +. 4951r62 5352r53 +X 4 a-unccon.ads +20v14*Unchecked_Conversion 53|18w10 3114r30 3115r30 4510r30 4511r30 +X 5 a-uncdea.ads +20u15*Unchecked_Deallocation 53|32w10 2291r33 5685r33 +X 6 arch.ads +20K9*Arch 52e9 52|19r6 20r6 212r19 213r19 1253r40 1254r41 1258r21 1268r17 +. 1311r52 1342r21 53|27r6 27r20 28r6 29r6 33r6 39r6 54r16 63r43 72r17 92r49 +. 192r30 213r47 291r47 375r34 442r49 545r41 565r41 569r44 585r33 586r33 587r17 +. 606r21 608r10 623r19 624r19 630r24 692r26 719r48 793r7 811r36 864r33 905r36 +. 1060r47 1094r35 1152r30 1176r30 1214r30 1233r48 1289r44 1311r36 1543r30 +. 1547r16 1584r33 1636r41 1647r30 1703r28 1879r11 1879r43 1889r45 1917r31 +. 1919r24 1952r29 1961r43 1992r47 2059r31 2094r49 2173r36 2220r49 2297r40 +. 2379r49 2440r48 2482r37 2512r48 2577r49 2635r48 2697r47 2734r34 2765r35 +. 2823r31 2856r47 2884r46 2986r34 3013r27 3037r48 3117r48 3158r7 3236r13 +. 3253r30 3267r30 3303r49 3388r30 3403r37 3405r17 3415r41 3416r41 3417r41 +. 3427r18 3428r18 3447r49 3537r47 3594r47 3655r49 3727r49 3798r47 3838r44 +. 3932r43 3954r22 3957r22 3965r22 3968r22 3976r22 4003r46 4032r16 4034r16 +. 4042r16 4044r16 4064r43 4113r47 4204r47 4286r48 4364r49 4457r32 4483r32 +. 4513r45 4574r45 4641r33 4686r22 4711r22 4744r22 4780r22 4802r30 4811r30 +. 4825r30 4858r43 4887r43 4922r48 4972r48 5011r30 5035r46 5036r26 5046r13 +. 5076r30 5146r30 5154r7 5157r33 5167r13 5193r30 5196r60 5234r48 5294r48 +. 5333r43 5374r43 5415r46 5494r14 5494r36 5502r45 5511r14 5511r36 5519r45 +. 5524r40 5525r33 5531r41 5532r33 5547r17 5551r19 5554r39 5766r17 5766r38 +. 5805r52 5958r21 5968r46 5969r7 5983r21 5995r7 +X 7 arch-clocks.ads +19K14*Clocks 45e16 53|28w11 3158r12 3236r18 3954r27 3957r27 3965r27 3968r27 +. 3976r27 4032r21 4034r21 4042r21 4044r21 +27U14*Get_Monotonic_Resolution 53|3954s34 +31U14*Get_Monotonic_Time 53|3158s19 3236s25 3965s34 4032s28 4042s28 +35U14*Get_Real_Time_Resolution 53|3957s34 +39U14*Get_Real_Time 53|3968s34 4034s28 4044s28 +43U14*Set_Real_Time 53|3976s34 +X 8 arch-context.ads +20K14*Context 70e17 52|19w11 212r24 213r24 1253r45 1254r46 1268r22 53|623r24 +. 624r24 5524r45 5531r46 5547r22 5551r24 +22R15*GP_Context{10|21R9} 52|212r32 1253r53 1254r54 1268r30 53|623r32 5524r53 +. 5531r54 5547r30 5551r32 +23A15*FP_Context(19|70M9) 52|213r32 53|624r32 +X 9 arch-hooks.ads +17K14*Hooks 33e15 53|33w11 72r22 1311r41 +22V13*PRCTL_Hook{boolean} 53|72s28 +29V13*Get_Active_Core_Count{positive} 53|1311s47 +X 11 arch-local.ads +21K14*Local 40e15 53|29w11 54r21 63r48 92r54 192r35 213r52 291r52 375r39 +. 442r54 545r46 565r46 569r49 585r38 586r38 630r29 692r31 719r53 811r41 864r38 +. 905r41 1060r52 1094r40 1152r35 1176r35 1214r35 1233r53 1289r49 1584r38 +. 1636r46 1647r35 1703r33 1879r16 1879r48 1889r50 1917r36 1952r34 1961r48 +. 1992r52 2059r36 2094r54 2173r41 2220r54 2297r45 2379r54 2440r53 2482r42 +. 2512r53 2577r54 2635r53 2697r52 2734r39 2765r40 2823r36 2856r52 2884r51 +. 2986r39 3013r32 3037r53 3117r53 3253r35 3267r35 3303r54 3388r35 3403r42 +. 3447r54 3537r52 3594r52 3655r54 3727r54 3798r52 3838r49 3932r48 4003r51 +. 4064r48 4113r52 4204r52 4286r53 4364r54 4457r37 4483r37 4513r50 4574r50 +. 4641r38 4686r27 4711r27 4744r27 4780r27 4802r35 4811r35 4825r35 4858r48 +. 4887r48 4922r53 4972r53 5011r35 5076r35 5146r35 5193r35 5234r53 5294r53 +. 5333r48 5374r48 5415r51 5502r50 5519r50 5525r38 5532r38 5554r44 +27V13*Fetch_TCB{41|67M9} 53|692s37 +36V13*Get_Current_Thread{40|27I9} 53|585s44 1636s52 1879s54 4711s33 4780s33 +. 5502s56 5519s56 5525s44 5532s44 +37V13*Get_Current_Process{51|33I9} 53|54s27 63s54 92s60 192s41 213s58 291s58 +. 375s45 442s60 545s52 565s52 569s55 586s44 630s35 719s59 811s47 864s44 905s47 +. 1060s58 1094s46 1152s41 1176s41 1214s41 1233s59 1289s55 1584s44 1647s41 +. 1703s39 1879s22 1889s56 1917s42 1952s40 1961s54 1992s58 2059s42 2094s60 +. 2173s47 2220s60 2297s51 2379s60 2440s59 2482s48 2512s59 2577s60 2635s59 +. 2697s58 2734s45 2765s46 2823s42 2856s58 2884s57 2986s45 3013s38 3037s59 +. 3117s59 3253s41 3267s41 3303s60 3388s41 3403s48 3447s60 3537s58 3594s58 +. 3655s60 3727s60 3798s58 3838s55 3932s54 4003s57 4064s54 4113s58 4204s58 +. 4286s59 4364s60 4457s43 4483s43 4513s56 4574s56 4641s44 4686s33 4744s33 +. 4802s41 4811s41 4825s41 4858s54 4887s54 4922s59 4972s59 5011s41 5076s41 +. 5146s41 5193s41 5234s59 5294s59 5333s54 5374s54 5415s57 5554s50 +X 12 arch-mmu.ads +22K14*MMU 250e13 52|20w11 1258r26 1311r57 1342r26 53|27w11 27r25 587r22 606r26 +. 608r15 793r12 1543r35 1547r21 1919r29 5035r51 5036r31 5046r18 5154r12 5157r38 +. 5167r18 5196r65 5494r19 5494r41 5511r19 5511r41 5766r22 5766r43 5805r57 +. 5958r26 5968r51 5969r12 5983r26 5995r12 +26R9*Page_Permissions 32e14 52|1311r61 53|441r29 1919r33 5013r24 5805r61 +27b7*Is_User_Accesible{boolean} 53|5014m11 5808m18 5811m14 +28b7*Can_Read{boolean} 53|5015m11 5812m14 +29b7*Can_Write{boolean} 53|452r20 1927r20 5016m11 5813m14 +30b7*Can_Execute{boolean} 53|452r40 1927r40 5814m14 +31b7*Is_Global{boolean} 53|5815m14 +43P9*Page_Table_Acc(42R9) 52|1258r30 1342r30 53|64r25 93r31 214r31 292r31 +. 443r31 546r23 587r26 721r30 865r30 906r33 1095r32 1177r23 1234r30 1290r26 +. 1615r32 1704r36 1890r25 1918r24 1993r29 2095r31 2174r33 2221r32 2298r37 +. 2380r31 2441r30 2578r31 2698r29 2766r32 2885r28 3038r30 3118r30 3304r31 +. 3448r31 3538r31 3595r31 3656r31 3728r31 3839r26 3933r25 4004r28 4065r25 +. 4114r31 4205r31 4287r30 4365r31 4514r27 4575r27 4859r25 4888r25 4923r30 +. 5077r22 5147r22 5235r30 5295r30 5334r25 5375r25 5416r28 5688r30 5958r30 +. 5983r30 +49N7*Page_Size 53|453r25 454r25 1299r23 1306r50 1309r55 1314r51 1928r26 1929r26 +. 5035r55 5036r35 5157r42 5196r69 5968r55 +58p4*Kernel_Table{43P9} 53|5494r45 5511r45 5766r47 +70V13*Fork_Table{43P9} 53|680s33 5766s26 +75U14*Destroy_Table 53|608s19 793s16 +81V13*Make_Active{boolean} 53|606s30 5494s23 5511s23 +96U14*Translate_Address 53|5154s16 5969s16 5995s16 +117V13*Map_Range{boolean} 53|5046s22 +139U14*Map_Allocated_Range 53|480s10 +159V13*Remap_Range{boolean} 53|1936s14 +175V13*Unmap_Range{boolean} 53|553s13 5167s22 +187V13*Get_User_Mapped_Size{19|84M9} 53|458s13 +191R9*Virtual_Statistics 195e14 53|1543r39 +192m7*Kernel_Usage{35|20M9} 53|1554r54 +193m7*Table_Usage{35|20M9} 53|1555r54 +198U14*Get_Statistics 53|1547s25 +X 13 arch-power.ads +17K14*Power 29e15 53|39w11 3405r22 3415r46 3416r46 3417r46 3427r23 3428r23 +19E9*Power_Status 19e49 53|3405r28 +19n26*Not_Supported{19E9} 53|3427r29 +19n41*Failure{19E9} 53|3428r29 +22V13*Halt{19E9} 53|3415s52 +25V13*Reboot{19E9} 53|3417s52 +28V13*Poweroff{19E9} 53|3416s52 +X 14 config.ads +17K9*Config 29e11 53|19w6 1408r38 1409r19 1410r34 1411r19 1412r34 1413r19 +. 1414r34 1415r19 +22a4*Name{string} 53|1408r45 1409r26 +23a4*Version{string} 53|1410r41 1411r26 1412r41 1413r26 +24a4*Arch_Name{string} 53|1414r41 1415r26 +X 15 cryptography.ads +17K9*Cryptography 18e17 53|34r6 1893r16 1904r10 +X 16 cryptography-random.ads +19K22*Random 40e24 53|34w19 1893r29 1904r23 +21A9*Crypto_Data(19|70M9) 53|1893r36 +22U14*Fill_Data 53|1904s30 +X 17 devices.ads +22K9*Devices 279e12 53|38r6 40w6 40r19 241r17 319r17 3562r17 3619r17 4137r17 +. 4228r17 4290r15 4316r16 5565r23 +29A9*Operation_Data(19|70M9) 53|241r25 319r25 3562r25 3619r25 4137r25 +. 4228r25 5565r31 +83I9*Device_Handle 53|4290r23 +130U14*Fetch_Name 53|1379s19 1484s19 +161V13*Get_Unique_ID{natural} 53|1014s13 1524s23 +165V13*From_Unique_ID{83I9} 53|4316s24 +X 18 devices-termios.ads +17K17*TermIOs 81e20 53|38w14 5843r11 5845r21 5846r21 +44R9*Main_Data 52e15 53|5845r29 +54R9*Win_Size 59e14 53|5846r29 +62N4*TCIFLUSH 53|5862r21 5863r36 +63N4*TCOFLUSH 53|5862r32 5864r36 +64N4*TCIOFLUSH 53|5862r43 5863r57 5864r57 +67N4*TCOOFF 53|5875r21 5876r36 +68N4*TCOON 53|5883r21 5884r36 +69N4*TCIOFF 53|5875r30 5877r36 +70N4*TCION 53|5883r29 5885r36 +73N4*TCGETS 53|5852r15 +74N4*TCSETS 53|5854r15 +75N4*TCSETSW 53|5854r24 +76N4*TCSETSF 53|5854r34 +77N4*TCXONC 53|5873r15 +78N4*TCFLSH 53|5860r15 +79N4*TIOCGWINSZ 53|5856r15 +80N4*TIOCSWINSZ 53|5858r15 +X 19 interfac.ads +38K9*Interfaces 233e15 52|17w6 17r22 +70M9*Unsigned_8 52|645r18 1249r42 1264r49 53|54r48 728r20 5490r42 5538r49 +73M9*Unsigned_16 52|377r21 378r21 379r21 413r21 414r21 415r21 416r21 421r20 +. 422r20 423r20 517r19 518r19 644r18 694r20 695r20 700r23 701r23 829r20 830r20 +. 53|1348r38 1349r38 1350r38 1431r38 1433r38 1434r38 1437r42 1439r42 1440r25 +. 1457r37 1459r37 5550r19 5592r23 +81M9*Unsigned_32 52|267r23 268r23 269r23 270r23 380r21 381r21 386r23 387r23 +. 389r23 391r23 441r16 442r16 450r39 521r19 693r20 699r23 702r23 704r23 707r20 +. 708r20 828r20 935r18 936r18 1057r17 1147r22 1148r22 1149r22 1150r22 1151r22 +. 1152r22 1153r22 1162r20 1163r20 53|109r21 221r19 299r19 379r18 729r20 733r36 +. 787r40 918r20 1018r28 1019r28 1064r14 1099r15 1215r14 1243r26 1519r37 1534r29 +. 1829r31 1996r19 2230r22 2304r20 2389r20 2447r20 2485r17 2586r20 2621r26 +. 2774r26 3044r20 3254r14 3268r18 3271r34 3272r55 3274r33 3275r45 3279r34 +. 3281r58 3310r21 3454r21 3521r11 3522r11 3542r19 3599r19 3847r43 3893r28 +. 4371r21 4645r33 4758r23 4758r42 4760r43 4803r14 4812r14 4826r18 4829r34 +. 4830r55 4832r33 4833r45 4837r34 4839r58 5012r28 5012r43 5019r20 5075r27 +. 5075r42 5082r20 5123r41 5194r28 5194r43 5198r14 5199r14 5244r52 5250r16 +. 5258r23 5304r52 5700r20 5820r29 5820r44 +84M9*Unsigned_64 52|99r19 100r23 105r19 106r19 107r23 118r20 119r20 120r20 +. 121r20 122r24 127r19 128r23 133r19 134r19 135r19 136r23 141r19 142r19 143r19 +. 144r23 152r19 153r19 154r19 155r23 169r21 170r21 171r21 172r21 173r21 174r21 +. 175r25 180r19 181r19 182r23 186r38 189r39 193r20 194r20 195r20 196r20 197r20 +. 198r20 199r24 206r19 207r19 208r19 209r19 210r19 211r19 214r23 222r21 223r21 +. 224r21 225r25 240r19 241r19 242r23 247r19 248r19 249r23 254r21 255r21 265r23 +. 266r23 271r23 272r23 276r23 277r23 296r20 297r20 298r20 299r20 300r20 301r24 +. 306r19 307r23 312r19 313r19 314r19 315r23 319r42 323r19 324r23 329r22 330r22 +. 331r26 335r38 340r22 341r22 342r22 343r22 344r22 345r22 346r22 347r26 392r23 +. 393r23 394r23 395r23 396r23 397r23 398r23 399r23 400r23 431r21 443r16 444r16 +. 445r16 446r16 453r24 454r24 455r24 456r24 457r24 458r24 459r24 463r19 464r19 +. 465r19 466r23 471r20 472r20 473r20 474r20 475r20 476r20 477r20 478r24 482r38 +. 489r21 490r21 491r21 492r21 493r25 519r19 520r19 525r19 526r19 527r19 528r23 +. 532r42 536r18 537r18 538r22 543r20 544r20 545r20 546r24 566r19 567r23 572r23 +. 583r20 584r20 585r20 586r24 594r19 595r23 606r22 607r22 608r22 609r22 610r22 +. 611r22 612r26 618r20 619r20 620r20 621r24 626r22 627r22 628r22 629r22 630r22 +. 631r26 642r18 643r18 655r27 657r22 658r22 659r22 660r26 664r35 668r20 669r20 +. 670r20 671r20 672r20 673r24 678r20 679r20 680r20 681r24 686r19 687r19 688r23 +. 712r20 713r20 714r20 715r24 720r22 721r22 722r22 723r22 724r22 725r22 726r26 +. 731r20 732r20 733r20 734r24 739r22 740r26 745r19 746r19 747r23 752r22 753r22 +. 754r22 755r22 756r22 757r22 758r26 764r22 765r22 766r22 767r22 768r26 773r19 +. 774r19 775r23 780r20 781r20 782r20 783r20 784r24 795r19 796r23 801r19 802r19 +. 803r23 812r20 813r20 814r20 815r20 816r20 817r24 832r28 834r20 835r20 836r20 +. 837r20 838r24 842r39 846r19 847r19 848r23 853r20 854r20 855r20 856r20 857r20 +. 858r24 863r19 864r23 872r19 873r19 874r23 879r20 880r20 881r20 882r20 883r20 +. 884r20 885r24 890r19 891r19 892r19 893r19 894r23 899r19 900r19 901r19 902r19 +. 903r23 907r20 908r20 909r20 910r24 914r20 915r20 916r20 917r24 924r19 925r19 +. 926r23 934r18 940r20 941r20 942r20 943r20 944r24 954r20 955r20 956r20 957r24 +. 963r23 964r23 965r23 966r23 967r27 979r21 980r21 981r25 985r20 986r20 987r20 +. 988r20 989r20 990r20 991r24 995r20 996r20 997r20 998r20 999r20 1000r20 +. 1001r24 1016r20 1017r20 1018r20 1019r24 1023r20 1024r20 1025r20 1026r20 +. 1027r20 1028r24 1032r23 1036r19 1037r19 1038r23 1045r19 1046r19 1047r19 +. 1048r23 1056r17 1060r19 1061r19 1062r19 1063r23 1067r19 1068r19 1069r23 +. 1077r19 1078r19 1079r23 1083r19 1084r19 1085r19 1086r23 1089r38 1091r39 +. 1095r19 1096r19 1097r23 1102r19 1103r19 1104r23 1109r19 1110r19 1111r23 +. 1116r19 1117r19 1118r19 1119r23 1130r19 1131r19 1132r19 1133r19 1134r23 +. 1140r19 1141r19 1142r19 1143r23 1158r20 1159r20 1160r20 1161r20 1164r20 +. 1171r19 1172r19 1173r19 1174r23 1178r19 1179r23 1187r19 1188r19 1189r19 +. 1190r23 1201r19 1202r19 1203r19 1204r19 1205r19 1206r23 1210r19 1211r19 +. 1212r19 1213r19 1214r19 1215r23 1219r19 1220r19 1221r19 1222r23 1226r19 +. 1227r19 1228r19 1229r23 1237r24 1238r24 1242r19 1243r19 1244r23 1260r21 +. 1273r25 1274r29 1279r25 1280r29 1285r25 1286r29 1291r25 1292r29 1297r20 +. 1298r20 1299r20 1300r20 1301r20 1302r20 1311r32 1320r21 1325r55 1329r18 +. 1344r21 1348r17 1353r18 53|47r19 48r23 58r19 59r19 60r23 69r22 71r20 74r22 +. 83r20 84r20 85r20 86r20 87r24 112r22 115r24 116r22 130r25 138r25 169r22 +. 177r25 179r22 182r22 188r19 189r23 199r22 205r19 206r19 207r19 208r23 225r22 +. 229r22 232r21 248r31 254r38 256r30 259r44 264r44 269r44 273r28 277r30 283r19 +. 284r19 285r19 286r23 304r22 308r22 310r21 326r31 328r43 329r19 332r31 340r38 +. 341r44 345r44 350r44 355r44 359r28 363r30 369r19 370r19 371r19 372r23 380r18 +. 385r22 422r19 427r19 432r21 433r21 434r21 435r21 436r21 437r21 438r25 459r10 +. 489r25 514r25 517r25 525r19 530r19 536r19 540r21 541r21 542r25 552r22 558r22 +. 562r38 565r19 568r39 572r19 576r20 577r20 578r20 579r20 580r20 581r20 582r24 +. 612r22 617r19 618r19 619r19 620r19 621r19 622r19 625r23 633r17 644r22 646r23 +. 648r22 656r25 670r17 693r17 710r19 714r41 715r45 733r23 780r25 797r19 802r19 +. 806r19 807r19 808r23 848r22 855r19 859r19 860r19 861r23 875r22 881r22 889r22 +. 897r20 898r20 899r20 900r20 901r20 902r24 924r22 934r25 984r28 1001r28 +. 1010r22 1016r28 1017r28 1022r28 1033r28 1056r19 1057r23 1068r22 1076r22 +. 1086r19 1087r19 1088r19 1089r23 1103r22 1107r22 1135r22 1139r42 1148r19 +. 1149r23 1157r22 1158r23 1162r22 1170r22 1171r22 1172r26 1185r22 1206r22 +. 1213r38 1219r19 1223r22 1224r22 1225r22 1226r22 1227r22 1228r22 1229r22 +. 1230r26 1249r22 1251r26 1252r26 1255r22 1273r25 1283r19 1284r19 1285r19 +. 1286r23 1294r16 1301r23 1303r23 1306r23 1309r23 1311r23 1314r23 1316r23 +. 1318r23 1320r23 1331r22 1361r26 1398r26 1444r26 1471r26 1498r26 1507r26 +. 1523r37 1525r37 1528r26 1544r30 1550r38 1551r38 1552r38 1554r38 1555r38 +. 1570r19 1574r20 1575r20 1576r20 1577r20 1578r20 1579r20 1580r20 1581r24 +. 1591r22 1609r22 1617r22 1619r52 1623r28 1630r19 1633r38 1636r19 1640r21 +. 1641r21 1642r21 1643r21 1644r25 1654r22 1656r23 1688r19 1693r19 1697r19 +. 1698r19 1699r19 1700r23 1723r42 1724r44 1870r19 1873r42 1884r18 1885r18 +. 1886r22 1899r22 1902r22 1911r20 1912r20 1913r20 1914r24 1925r22 1932r22 +. 1938r22 1947r19 1948r23 1958r23 1963r28 1986r20 1987r20 1988r20 1989r24 +. 2005r22 2009r22 2011r24 2013r22 2051r19 2055r19 2056r23 2065r22 2075r25 +. 2085r22 2086r22 2087r22 2088r22 2089r22 2090r22 2091r26 2110r22 2112r26 +. 2113r26 2116r22 2121r22 2149r31 2162r22 2167r20 2168r20 2169r20 2170r24 +. 2181r22 2183r24 2185r22 2190r22 2205r25 2212r22 2213r22 2214r22 2215r22 +. 2216r22 2217r26 2237r22 2239r26 2240r26 2243r22 2257r25 2266r25 2274r25 +. 2280r36 2285r22 2286r22 2287r22 2288r26 2296r29 2307r22 2310r22 2324r56 +. 2327r24 2329r52 2333r24 2335r24 2344r25 2347r25 2355r35 2364r22 2369r20 +. 2370r20 2371r20 2372r20 2373r20 2374r24 2393r22 2395r24 2397r22 2408r25 +. 2434r20 2435r20 2436r20 2437r24 2451r22 2453r24 2455r22 2466r25 2477r19 +. 2478r19 2479r23 2489r22 2501r25 2506r20 2507r20 2508r20 2509r24 2520r22 +. 2525r22 2563r22 2568r22 2569r22 2570r22 2571r22 2572r22 2573r22 2574r26 +. 2592r22 2594r26 2595r26 2598r22 2611r25 2629r20 2630r20 2631r20 2632r24 +. 2643r22 2648r22 2686r22 2691r22 2692r26 2706r22 2721r22 2729r19 2730r19 +. 2731r23 2741r22 2751r25 2756r22 2757r22 2758r22 2759r22 2760r22 2761r22 +. 2762r26 2780r22 2782r26 2783r26 2786r22 2803r25 2814r22 2815r22 2816r22 +. 2817r22 2818r26 2828r22 2833r22 2842r25 2851r19 2852r19 2853r23 2861r22 +. 2864r22 2871r25 2877r20 2878r20 2879r20 2880r20 2881r24 2900r22 2904r22 +. 2960r33 2962r25 2967r25 2971r22 2978r19 2982r19 2983r23 2993r22 2998r19 +. 3002r19 3003r19 3004r23 3025r19 3029r20 3030r20 3031r20 3032r20 3033r20 +. 3034r24 3048r22 3050r24 3052r22 3065r25 3084r25 3106r20 3107r20 3108r20 +. 3109r20 3110r24 3125r33 3128r20 3129r20 3130r20 3131r20 3139r22 3146r25 +. 3177r40 3249r19 3252r39 3258r19 3262r19 3263r19 3264r23 3271r21 3274r20 +. 3279r21 3280r23 3284r28 3295r20 3296r20 3297r20 3298r20 3299r20 3300r24 +. 3316r22 3318r24 3320r22 3331r25 3344r28 3361r28 3368r28 3378r41 3384r19 +. 3385r23 3394r19 3398r19 3399r19 3400r23 3410r22 3420r25 3430r22 3438r20 +. 3439r20 3440r20 3441r20 3442r20 3443r20 3444r24 3460r22 3462r24 3464r22 +. 3475r25 3488r28 3505r28 3512r28 3528r19 3529r19 3530r19 3531r19 3532r23 +. 3547r22 3551r22 3553r21 3569r31 3574r44 3578r28 3585r19 3586r19 3587r19 +. 3588r19 3589r23 3604r22 3608r22 3610r21 3626r31 3628r31 3629r19 3632r31 +. 3638r44 3642r28 3649r20 3650r20 3651r20 3652r24 3666r22 3675r53 3710r22 +. 3717r19 3721r20 3722r20 3723r20 3724r24 3738r22 3747r53 3782r22 3789r19 +. 3793r19 3794r19 3795r23 3804r22 3817r25 3826r22 3831r20 3832r20 3833r20 +. 3834r20 3835r24 3845r28 3846r28 3847r28 3871r21 3873r22 3905r31 3911r28 +. 3922r19 3926r20 3927r20 3928r20 3929r24 3937r22 3943r22 3991r19 3996r23 +. 3997r23 3998r23 3999r23 4000r27 4011r22 4017r22 4024r24 4025r24 4059r21 +. 4060r21 4061r25 4069r22 4088r28 4098r20 4099r20 4100r20 4101r20 4102r20 +. 4103r20 4104r24 4123r22 4127r22 4130r21 4184r37 4189r20 4190r20 4191r20 +. 4192r20 4193r20 4194r20 4195r24 4214r22 4218r22 4221r21 4275r37 4280r20 +. 4281r20 4282r20 4283r24 4302r22 4305r22 4312r22 4344r22 4351r19 4356r20 +. 4357r20 4358r20 4359r20 4360r20 4361r24 4379r22 4381r24 4383r22 4394r25 +. 4407r28 4424r28 4431r28 4454r23 4463r22 4470r22 4473r22 4478r19 4479r19 +. 4480r23 4490r22 4495r22 4503r19 4504r19 4505r19 4506r23 4552r31 4564r19 +. 4568r19 4569r19 4570r19 4571r23 4585r22 4632r19 4636r19 4637r19 4638r23 +. 4650r22 4656r22 4660r22 4670r25 4681r19 4682r19 4683r23 4693r22 4707r25 +. 4724r22 4726r22 4726r41 4734r19 4738r19 4739r19 4740r19 4741r23 4751r22 +. 4755r18 4758r10 4760r30 4776r25 4798r19 4801r38 4807r19 4810r39 4816r19 +. 4820r19 4821r19 4822r23 4829r21 4832r20 4837r21 4838r23 4842r28 4853r19 +. 4854r19 4855r23 4867r22 4874r22 4877r22 4882r19 4883r19 4884r23 4899r25 +. 4906r25 4916r19 4917r19 4918r19 4919r23 4932r22 4936r22 4959r19 4963r19 +. 4964r19 4965r19 4966r19 4967r23 5000r19 5004r19 5005r19 5006r19 5007r23 +. 5010r43 5018r35 5026r25 5058r25 5065r19 5069r19 5070r19 5071r19 5072r23 +. 5089r25 5100r28 5112r31 5125r38 5138r19 5142r19 5143r23 5152r14 5164r37 +. 5177r25 5181r22 5186r19 5187r19 5188r19 5189r23 5192r43 5195r23 5195r48 +. 5196r23 5216r22 5219r22 5224r19 5225r19 5226r19 5227r19 5228r19 5229r23 +. 5280r19 5284r19 5285r19 5286r19 5287r19 5288r19 5289r23 5323r19 5327r19 +. 5328r19 5329r19 5330r23 5341r23 5364r19 5368r19 5369r19 5370r19 5371r23 +. 5382r23 5404r19 5408r19 5409r19 5410r23 5451r25 5482r19 5487r19 5586r34 +. 5600r25 5601r29 5618r19 5623r25 5624r29 5636r19 5641r25 5642r29 5654r19 +. 5659r25 5660r29 5670r25 5675r20 5676r20 5677r20 5678r20 5679r20 5680r20 +. 5686r51 5805r32 5839r21 5899r55 5922r18 5947r10 5948r10 5960r21 5962r40 +. 5963r16 5985r21 6010r17 6031r18 +141V13*Shift_Left{81M9} 53|785s42 3172s34 +X 21 ipc.ads +17K9*IPC 18e8 52|21r6 29r6 29r28 30r6 30r28 31r5 1278r25 1284r25 1290r25 +. 1318r21 53|35r6 36r6 37r6 218r19 219r19 220r19 262r16 267r16 275r16 296r19 +. 297r19 298r19 348r16 353r16 361r16 814r20 815r20 816r20 819r34 820r34 821r34 +. 826r38 827r38 828r38 1179r19 1189r20 1514r23 1517r16 1548r16 1818r19 1832r22 +. 1841r22 2530r15 2539r15 2548r15 2653r15 2662r15 2671r15 2699r24 2710r18 +. 2862r45 2866r13 2902r45 2918r18 2929r18 2940r18 3191r22 3195r22 3199r22 +. 3203r22 3206r22 3681r15 3688r15 3695r15 3753r15 3760r15 3767r15 3810r21 +. 3812r21 3814r21 3881r20 3901r19 3909r16 4117r19 4140r61 4143r21 4147r22 +. 4155r21 4159r22 4167r21 4173r22 4182r13 4208r19 4231r61 4234r21 4238r22 +. 4246r21 4250r22 4258r21 4264r22 4273r13 4927r15 4946r7 5024r17 5031r7 5053r13 +. 5080r14 5087r17 5096r13 5108r19 5114r19 5151r12 5164r7 5166r30 5172r13 +. 5197r21 5205r25 5208r25 5211r25 5214r25 5258r36 5556r23 5622r25 5640r25 +. 5658r25 5665r15 5668r15 5837r21 5853r13 5855r13 5857r13 5859r13 5866r22 +. 5868r22 5879r22 5881r22 5887r22 5889r22 +X 22 ipc-fifo.ads +21K13*FIFO 156e13 52|30w10 30r32 1284r29 53|218r23 296r23 1179r23 1189r24 +. 3191r26 3195r26 5556r27 5640r29 +39P9*Inner_Acc(38R9) 53|1179r28 +47V13*Create{39P9} 53|1189s29 +51V13*Is_Read_Blocking{boolean} 53|1746s27 +53V13*Is_Write_Blocking{boolean} 53|1748s27 +55U14*Set_Read_Blocking 53|1763s19 +57U14*Set_Write_Blocking 53|1765s19 +61U14*Poll_Reader 53|3191s31 +70U14*Poll_Writer 53|3195s31 +79V13*Is_Empty{boolean} 53|5589s23 +94U14*Get_Size 53|1778s19 1780s19 +102U14*Set_Size 53|1787s19 1793s19 +106E9*Pipe_Status 106e75 52|1284r34 53|218r28 296r28 5556r32 5640r34 +106n25*Pipe_Success{106E9} 53|5647r15 +106n39*Broken_Failure{106E9} 53|5651r15 +106n55*Would_Block_Failure{106E9} 53|5652r15 +113U14*Read 53|258s16 +125U14*Write 53|344s16 5593s13 +X 23 ipc-filelock.ads +21K13*FileLock 111e17 53|36w10 1514r27 1517r20 1818r23 1832r26 1841r26 +33U14*Could_Acquire_Lock 53|1818s32 +51U14*Acquire_Lock 53|1841s35 +68U14*Release_Lock 53|1832s35 +87i7*Acquirer{51|33I9} 53|1519r68 +88b7*Is_Writing{boolean} 53|1520r50 +89m7*Start{19|84M9} 53|1521r46 +90m7*Length{19|84M9} 53|1522r46 +91i7*FS{54|74I9} 53|1524r67 +92m7*Ino{54|28M9} 53|1525r59 +94A9*Lock_Arr(86R9) 53|1514r36 +99U14*List_All 53|1517s29 +X 24 ipc-futex.ads +19K13*Futex 47e14 53|35w10 3881r24 3901r23 3909r20 +32A9*Element_Arr(28R9) 53|3881r30 +39V13*Wait{boolean} 53|3901s29 +46U14*Wake 53|3909s26 +X 25 ipc-pty.ads +21K13*PTY 203e12 52|21w10 31r9 1290r29 1318r25 53|220r23 262r20 267r20 298r23 +. 348r20 353r20 2699r28 2710r22 3199r26 3203r26 4927r19 4946r11 5658r29 5665r19 +. 5668r19 5837r25 5853r17 5855r17 5857r17 5859r17 5866r26 5868r26 5879r26 +. 5881r26 5887r26 5889r26 +37P9*Inner_Acc(36R9) 52|1318r29 53|2699r32 4927r23 5837r29 +40E9*Status 40e49 52|1290r33 53|220r27 298r27 5658r33 +40n20*PTY_Success{40E9} 53|5665r23 +40n33*PTY_Would_Block{40E9} 53|5668r23 +43V13*Create{37P9} 53|2710s26 +47U14*Close 53|2716s10 2717s10 +50U14*Read_Primary 53|262s24 +58U14*Write_Primary 53|348s24 +66U14*Read_Secondary 53|267s24 +74U14*Write_Secondary 53|353s24 +82U14*Poll_Primary 53|3199s30 +90U14*Poll_Secondary 53|3203s30 +97U14*Is_Primary_Blocking 53|1752s19 +101U14*Set_Primary_Blocking 53|1769s19 +105U14*Is_Secondary_Blocking 53|1754s19 +109U14*Set_Secondary_Blocking 53|1771s19 +113U14*Get_TermIOs 53|5853s21 +117U14*Set_TermIOs 53|5855s21 +121U14*Get_WinSize 53|5857s21 +125U14*Set_WinSize 53|5859s21 +129U14*Get_Name 53|4946s15 +133U14*Flush_Primary 53|5866s30 +137U14*Flush_Secondary 53|5868s30 +141U14*Start_Primary 53|5887s30 +145U14*Start_Secondary 53|5889s30 +149U14*Stop_Primary 53|5879s30 +153U14*Stop_Secondary 53|5881s30 +X 26 ipc-shm.ads +19K13*SHM 98e12 53|37w10 1548r20 5024r21 5031r11 5053r17 5080r18 5087r21 +. 5096r17 5108r23 5114r23 5151r16 5164r11 5166r34 5172r17 5197r25 5205r29 +. 5208r29 5211r29 5214r29 +25M12*Segment_ID{19|81M9} 53|5151r20 5197r29 +26m4*Error_ID{25M12} 53|5166r38 5214r33 +29V13*Create_Segment{25M12} 53|5208s33 +38V13*Create_Unkeyed_Segment{25M12} 53|5205s33 +45V13*Get_Segment{25M12} 53|5211s33 +48U14*Get_Segment_And_Size 53|5164s15 +54U14*Get_Address 53|5031s15 +59V13*Check_Permissions{boolean} 53|5024s25 5087s25 +64U14*Mark_Refcounted 53|5096s21 +68U14*Modify_Attachment 53|5053s21 5172s21 +70U14*Modify_Permissions 53|5108s27 +76R9*Segment_Information 85e14 53|5080r22 +77m7*Key{19|81M9} 53|5118r54 +78m7*Size{19|84M9} 53|5124r42 +79m7*Owner_UID{19|81M9} 53|5119r45 +80m7*Owner_GID{19|81M9} 53|5120r45 +81m7*Creator_UID{19|81M9} 53|5121r46 +82m7*Creator_GID{19|81M9} 53|5122r46 +83m7*Mode{19|84M9} 53|5123r59 +84i7*Refcount{natural} 53|5125r56 +87U14*Fetch_Information 53|5114s27 +93U14*Get_Total_Size 53|1548s24 +X 27 ipc-socket.ads +21K13*Socket 573e15 52|29w10 29r32 1278r29 53|219r23 275r20 297r23 361r20 +. 814r24 815r24 816r24 819r38 820r38 821r38 826r42 827r42 828r42 2530r19 +. 2539r19 2548r19 2653r19 2662r19 2671r19 2862r49 2866r17 2902r49 2918r22 +. 2929r22 2940r22 3206r26 3681r19 3688r19 3695r19 3753r19 3760r19 3767r19 +. 3810r25 3812r25 3814r25 4117r23 4140r65 4143r25 4147r26 4155r25 4159r26 +. 4167r25 4173r26 4182r17 4208r23 4231r65 4234r25 4238r26 4246r25 4250r26 +. 4258r25 4264r26 4273r17 5258r40 5622r29 +25E9*Domain 28e13 53|815r31 +26n8*IPv4{25E9} 53|819r45 2530r26 2653r26 2918r29 3681r26 3753r26 4143r32 +. 4234r32 +27n8*IPv6{25E9} 53|820r45 2539r26 2662r26 2929r29 3688r26 3760r26 4155r32 +. 4246r32 +28n8*UNIX{25E9} 53|821r45 2548r26 2671r26 2940r29 3695r26 3767r26 4167r32 +. 4258r32 +30E9*DataType 33e12 53|816r31 +31n8*Stream{30E9} 53|826r49 2862r56 2902r56 4140r72 4231r72 5261r24 +32n8*Datagram{30E9} 53|827r49 5263r24 +33n8*Raw{30E9} 53|828r49 5265r24 +37P9*Socket_Acc(36R9) 53|814r31 2894r15 +40E9*Socket_Status 43e20 52|1278r36 53|219r30 297r30 4117r30 4208r30 5622r36 +41n8*Plain_Success{40E9} 53|5629r15 +42n8*Is_Bad_Type{40E9} 53|5633r15 +43n8*Would_Block{40E9} 53|5634r15 +46i4*Default_Socket_Size{natural} 53|5258r47 +55V13*Create{37P9} 53|832s19 +63V13*Get_Domain{25E9} 53|2529s12 2652s12 2917s15 3680s12 3752s12 4142s18 +. 4233s18 +70V13*Get_Type{30E9} 53|2862s13 2902s13 4140s29 4231s29 5260s21 +75U14*Close 53|845s10 2964s13 +81V13*Is_Blocking{boolean} 53|1750s27 +87U14*Set_Blocking 53|1767s19 +96U14*Poll 53|3206s33 +109U14*Read 53|275s27 4182s24 +121U14*Write 53|361s27 4273s24 +136V13*Shutdown{boolean} 53|3810s32 3812s32 3814s32 +144V13*Is_Listening{boolean} 53|5254s27 +152V13*Listen{boolean} 53|2866s24 +159U14*Accept_Connection 53|2909s10 +173U14*Get_Bound 53|3685s16 +185U14*Get_Peer 53|3757s16 +197V13*Bind{boolean} 53|2534s24 +210V13*Connect{boolean} 53|2657s24 +222U14*Accept_Connection 53|2922s19 +239U14*Read 53|4147s33 +257U14*Write 53|4238s33 +276U14*Get_Bound 53|3692s16 +288U14*Get_Peer 53|3764s16 +300V13*Bind{boolean} 53|2543s24 +313V13*Connect{boolean} 53|2666s24 +326U14*Accept_Connection 53|2933s19 +343U14*Read 53|4159s33 +361U14*Write 53|4250s33 +381U14*Get_Bound 53|3701s16 +393U14*Get_Peer 53|3773s16 +405V13*Bind{boolean} 53|2554s24 +415V13*Connect{boolean} 53|2677s24 +425U14*Accept_Connection 53|2946s19 +441U14*Read 53|4173s33 +457U14*Write 53|4264s33 +X 28 lib.ads +19K9*Lib 35e8 53|21r6 22w6 23r6 24r6 25r6 1506r16 2551r43 2674r43 2943r37 +. 3164r10 3237r37 3433r10 3698r34 3770r34 4036r13 4046r23 4170r49 4261r49 +. 5010r28 5192r28 5495r10 5512r10 5799r40 5821r20 5824r7 5829r13 5831r13 +. 5962r25 +23V13*C_String_Length{natural} 53|2551s47 2674s47 2943s41 3698s38 3770s38 +. 4170s53 4261s53 5799s44 +X 29 lib-alignment.ads +19k13*Alignment 43e18 53|25w10 5010r32 5192r32 5962r29 +X 31 lib-messages.ads +21K13*Messages 103e17 53|21w10 1506r20 5495r14 5512r14 5821r24 5824r11 5829r17 +. 5831r17 +41U14*Put_Line 53|5495s23 5512s23 5829s26 5831s26 +50U14*Dump_Logs 53|1506s29 +55A12*Translated_String{string} 53|5821r33 +63U14*Image 53|5824s20 +X 32 lib-panic.ads +21K13*Panic 39e14 53|24w10 3433r14 +32U14*Hard_Panic 53|3433s20 +X 34 lib-time.ads +19K13*Time 77e13 53|23w10 3164r14 3237r41 4036r17 4046r27 +37U14*Increment 53|3164s19 4036s22 +63V13*Is_Greater_Equal{boolean} 53|3237s46 4046s32 +X 35 memory.ads +19K9*Memory 36e11 52|25w6 1259r21 1343r21 53|30r6 31w6 31r18 1293r16 1305r13 +. 1308r13 1313r13 1546r16 5959r21 5984r21 +20M9*Size +29N4*Memory_Offset 53|5991r48 +35M12*Virtual_Address{43|82M9} 52|1259r28 1343r28 53|444r30 444r49 469r27 +. 547r53 5959r28 5984r28 5991r17 +X 36 memory-physical.ads +20K16*Physical 60e20 53|30w13 1293r23 1305r20 1308r20 1313r20 1546r23 +47R9*Statistics 51e14 53|1293r32 +48m7*Total{35|20M9} 53|1314r42 1550r57 +49m7*Available{35|20M9} 53|1309r42 1551r57 +50m7*Free{35|20M9} 53|1306r42 1552r57 +55U14*Get_Statistics 53|1305s29 1308s29 1313s29 1546s32 +X 37 networking.ads +20K9*Networking 55e15 52|26w6 432r21 433r21 434r21 435r21 436r21 696r20 703r23 +. 1008r13 1009r13 1012r13 1013r13 53|41r6 885r7 1303r36 1405r16 1478r23 1482r16 +. 2537r28 2546r28 2660r28 2669r28 2926r39 2937r39 3686r19 3693r19 3758r19 +. 3765r19 4152r39 4164r39 4243r39 4255r39 4323r13 4328r13 4334r13 +22A9*MAC_Address(19|70M9) 52|432r32 +23A9*IPv4_Address(19|70M9) 52|433r32 434r32 696r31 1008r24 1009r24 +24A9*IPv6_Address(19|70M9) 52|435r32 436r32 703r34 1012r24 1013r24 +25M9*IPv4_Port<19|73M9> 53|2537r39 2660r39 2926r50 3686r30 3758r30 4152r50 +. 4243r50 +26M9*IPv6_Port<19|73M9> 53|2546r39 2669r39 2937r50 3693r30 3765r30 4164r50 +. 4255r50 +33i4*Hostname_Max_Len{natural} 53|1303r47 +38U14*Get_Hostname 53|1405s27 +45U14*Set_Hostname 53|885s18 +X 39 networking-interfaces.ads +20K20*Interfaces 107e26 53|41w17 1478r34 1482r27 4323r24 4328r24 4334r24 +56U14*Block 53|4323s35 +72U14*Modify_Addresses 53|4328s35 +79U14*Modify_Addresses 53|4334s35 +88i7*Handle{17|83I9} 53|1484r40 +89b7*Is_Blocked{boolean} 53|1486r31 +90a7*MAC{37|22A9} 53|1491r43 +91a7*IPv4{37|23A9} 53|1492r44 +92a7*IPv4_Subnet{37|23A9} 53|1493r51 +93a7*IPv6{37|24A9} 53|1494r44 +94a7*IPv6_Subnet{37|24A9} 53|1495r51 +96A9*Interface_Arr(87R9) 53|1478r45 +101U14*List_Interfaces 53|1482s38 +X 40 scheduler.ads +25K9*Scheduler 183e14 52|23w6 23r21 53|609r10 632r17 668r28 670r30 686r21 +. 690r26 751r13 765r13 1142r7 1159r14 1424r23 1451r23 1537r16 1648r14 1649r14 +. 1661r18 1663r18 1669r18 1671r18 1688r32 1880r7 3240r13 4047r13 4458r16 +. 4467r17 5335r26 5335r43 5350r10 5376r26 5376r43 5391r10 5504r7 5521r7 5527r7 +. 5535r7 5590r16 +27I9*TID 52|1267r17 53|585r26 632r27 4485r25 4687r15 4745r15 5335r36 +. 5376r36 5525r26 5532r26 5546r17 +28I9*TCID 53|1648r24 4458r26 4484r24 +29i4*Error_TID{27I9} 53|696r20 4491r45 4714r24 4783r24 +30i4*Error_TCID{28I9} 53|1674r17 4468r20 4491r21 +52V13*Create_User_Thread{27I9} 53|663s21 +61V13*Create_User_Thread{27I9} 53|686s31 +74U14*Yield_If_Able 53|751s23 765s23 1142s17 3240s23 4047s23 5590s26 +77U14*Bail 53|609s20 1880s17 5504s17 5521s17 +87U14*Signal_Kernel_Entry 53|5527s17 +88U14*Signal_Kernel_Exit 53|5535s17 +93E9*Cluster_Algorithm 95e28 53|1649r24 +94n8*Cluster_RR{93E9} 53|1461r27 1661r28 +95n8*Cluster_Cooperative{93E9} 53|1463r27 1663r28 +97V13*Set_Scheduling_Algorithm{boolean} 53|1678s14 +103V13*Set_Time_Slice{boolean} 53|1683s14 +105V13*Create_Cluster{28I9} 53|1669s28 4467s27 +106V13*Delete_Cluster{boolean} 53|1159s24 +108V13*Switch_Cluster{boolean} 53|4492s14 +112I12*Niceness{integer} 53|1426r23 4688r15 4746r15 4755r31 4756r19 4758r59 +. 4760r20 +115V13*Get_Niceness{112I12} 53|1435s24 4718s22 +116U14*Set_Niceness 53|4787s13 +118U14*Get_Name 53|5350s20 +119U14*Set_Name 53|5391s20 +125U14*Get_Load_Averages 53|1537s26 +132V13*Convert{natural} 53|670s40 1431s51 1636s32 5592s36 +133V13*Convert{natural} 53|1433s51 1457s50 1688s42 4470s35 +134V13*Convert{27I9} 53|4485s32 4713s22 4782s22 5335s53 5376s53 +135V13*Convert{28I9} 53|668s38 690s36 1159s40 1671s28 4484s32 +138i7*Thread{27I9} 53|1431r69 1435r47 +139i7*Cluster{28I9} 53|1433r69 +140i7*Proc{natural} 53|1434r60 +142A9*Thread_Listing_Arr(137R9) 53|1424r33 +145i7*Cluster{28I9} 53|1457r68 +146e7*Cluster_Algo{93E9} 53|1460r33 +147b7*Cluster_Int{boolean} 53|1466r31 +148i7*Cluster_Quan{natural} 53|1459r59 +150A9*Cluster_Listing_Arr(144R9) 53|1451r33 +155U14*List_All 53|1428s16 +156U14*List_All 53|1454s16 +X 41 system.ads +37K9*System 155e11 52|18r6 18r35 22w6 709r20 1055r17 1308r31 1321r21 53|20w6 +. 20r18 66r25 91r31 212r29 290r29 445r20 547r23 777r32 868r28 908r31 910r31 +. 1093r30 1236r30 1238r30 1292r26 1892r27 1920r23 2098r31 2099r31 2176r30 +. 2224r32 2225r32 2295r29 2382r31 2443r29 2515r30 2550r36 2580r31 2582r31 +. 2638r30 2673r36 2696r29 2768r30 2770r30 2891r29 2942r39 3040r30 3120r30 +. 3122r30 3124r30 3306r31 3450r31 3536r29 3593r29 3659r31 3661r31 3697r36 +. 3731r31 3733r31 3769r36 3841r26 3843r26 4110r29 4112r34 4169r41 4201r29 +. 4203r34 4260r41 4615r53 4925r30 5079r30 5148r14 5558r23 5578r27 5690r30 +. 5702r30 5704r30 5798r31 5840r21 5964r16 5987r16 +67M9*Address 52|709r27 1055r24 1308r38 1321r28 53|66r32 91r38 212r36 290r36 +. 445r27 547r30 868r35 908r38 910r38 1093r37 1236r37 1238r37 1292r33 1892r34 +. 1920r30 2098r38 2099r38 2176r37 2224r39 2225r39 2295r36 2382r38 2443r36 +. 2515r37 2550r43 2580r38 2582r38 2638r37 2673r43 2696r36 2768r37 2770r37 +. 2891r36 2942r46 3040r37 3120r37 3122r37 3124r37 3306r38 3450r38 3536r36 +. 3593r36 3659r38 3661r38 3697r43 3731r38 3733r38 3769r43 3841r33 3843r33 +. 4110r36 4112r41 4169r48 4201r36 4203r41 4260r48 4925r37 5079r37 5148r21 +. 5558r30 5690r37 5702r37 5704r37 5798r38 5840r28 5964r23 5987r23 +69m4*Null_Address{67M9} 53|777r39 4615r60 5578r34 +81V14*"="{boolean} 53|777r29 5578r25 +X 43 s-stoele.ads +40K16*Storage_Elements 90e28 52|18w13 18r42 +51I9*Storage_Offset +53I12*Storage_Count{51I9} 53|483r32 553r37 1936r38 5050r32 5170r31 5972r33 +. 5998r33 +67V14*"+"{41|67M9} 53|2550r60 2673r60 2942r65 3697r61 3769r61 4169r66 4260r66 +82M9*Integer_Address 52|1051r26 1052r26 1053r26 53|65r24 65r43 90r30 90r49 +. 211r28 211r47 289r28 289r47 664r28 718r29 718r48 867r27 867r46 907r30 907r49 +. 909r30 909r49 1092r29 1092r48 1175r23 1175r43 1235r29 1235r48 1237r29 1237r48 +. 1291r25 1291r44 1616r31 1616r50 1803r33 1803r52 1891r26 1891r45 1920r53 +. 1994r28 1994r47 2096r30 2096r49 2097r30 2097r49 2175r30 2175r49 2222r31 +. 2222r50 2223r31 2223r50 2294r29 2294r48 2381r30 2381r49 2442r29 2442r48 +. 2514r29 2514r48 2579r30 2579r49 2581r30 2581r49 2637r29 2637r48 2695r28 +. 2695r47 2767r29 2767r48 2769r29 2769r48 2890r28 2890r47 2892r28 2892r47 +. 3039r29 3039r48 3119r29 3119r48 3121r29 3121r48 3123r29 3123r48 3305r30 +. 3305r49 3449r30 3449r49 3535r28 3535r47 3592r28 3592r47 3658r30 3658r49 +. 3660r30 3660r49 3730r30 3730r49 3732r30 3732r49 3840r25 3840r44 3842r25 +. 3842r44 3882r20 3885r19 3934r24 3934r43 4005r27 4005r46 4006r27 4006r46 +. 4066r24 4066r43 4109r28 4109r47 4111r33 4111r52 4200r28 4200r47 4202r33 +. 4202r52 4289r29 4289r48 4366r30 4366r49 4367r30 4367r49 4515r26 4515r45 +. 4516r26 4516r45 4576r26 4576r45 4577r26 4577r45 4860r24 4860r43 4889r24 +. 4889r43 4924r29 4924r48 5048r44 5049r44 5078r29 5078r48 5156r45 5169r43 +. 5237r29 5237r48 5297r29 5297r48 5336r24 5336r43 5377r24 5377r43 5417r27 +. 5417r46 5418r27 5418r46 5689r29 5689r48 5701r29 5701r48 5703r29 5703r48 +. 5757r48 5760r47 +84V13*To_Address{41|67M9} 53|66s43 91s49 212s47 290s47 482s32 547s41 729s48 +. 868s46 908s49 910s49 1093s48 1178s64 1236s48 1238s48 1292s44 1617s58 1804s58 +. 1892s45 1920s41 2029s37 2098s49 2099s49 2176s49 2224s50 2225s50 2295s48 +. 2382s49 2443s48 2515s48 2580s49 2582s49 2638s48 2696s47 2768s48 2770s48 +. 2891s47 3040s48 3120s48 3122s48 3124s48 3306s49 3450s49 3536s47 3593s47 +. 3659s49 3661s49 3731s49 3733s49 3841s44 3843s44 3893s64 3948s51 4022s58 +. 4023s58 4075s49 4110s47 4112s52 4201s47 4203s52 4295s56 4296s56 4297s56 +. 4402s40 4439s51 4528s57 4541s55 4596s58 4611s58 4863s34 4892s34 4925s48 +. 5048s32 5049s32 5079s48 5156s33 5169s31 5250s52 5348s37 5389s37 5419s57 +. 5420s57 5690s48 5702s48 5704s48 5757s36 5760s35 5971s33 5997s33 +87V13*To_Integer{82M9} 53|4613s18 5164s50 +X 45 userland.ads +17K9*Userland 23e13 52|24r6 27r6 27r28 33r9 1356r5 53|26r6 42r6 43r6 45r14 +. 121r7 194r10 195r10 238r7 389r7 591r7 607r10 754r20 794r7 928r7 1072r7 +. 1111r7 1217r7 1265r10 1878r7 2025r7 2313r10 2419r10 2420r10 2493r7 3256r7 +. 3272r13 3275r13 3278r10 3281r16 3559r7 4805r7 4814r7 4830r13 4833r13 4836r10 +. 4839r16 5047r32 5413r27 5421r18 5500r7 5501r7 5502r7 5503r7 5517r7 5518r7 +. 5519r7 5520r7 5540r7 5541r7 5542r7 5557r23 5570r10 5584r7 5720r7 5721r7 +. 5753r17 5754r17 5764r10 5765r10 5771r18 6045r5 +19P9*String_Acc(string) 52|1308r54 53|5685r65 5798r54 +20A9*Argument_Arr(19P9) 53|5753r26 +21A9*Environment_Arr(19P9) 53|5754r26 +X 47 userland-loader.ads +20K18*Loader 65e20 53|26w15 5771r27 +41V13*Start_Program{boolean} 53|5771s34 +X 48 userland-mac.ads +20K18*MAC 180e17 52|24w15 1331r22 53|107r21 329r49 459r40 1962r23 1995r19 +. 1997r19 2043r15 2047r15 2048r15 2060r15 2070r45 2071r45 2072r45 2248r23 +. 2988r18 3008r18 3015r27 3312r21 3456r21 3629r49 4373r21 5699r20 5826r15 +. 5828r15 5830r15 5900r23 5924r22 5928r41 5929r41 5930r41 5931r41 5932r41 +. 5933r41 5934r34 5948r43 +23R9*Capabilities 39e14 53|1962r27 5900r27 +24b7*Can_Change_Scheduling{boolean} 53|1154r38 1651r38 1965r15 4460r38 4487r38 +. 4690r38 4748r38 5904r17 +25b7*Can_Spawn_Others{boolean} 53|641r40 1966r15 5713r41 5905r17 +26b7*Can_Access_Entropy{boolean} 53|1896r38 1967r15 5906r17 +27b7*Can_Modify_Memory{boolean} 53|450r38 549r38 1922r38 1968r15 5907r17 +28b7*Can_Use_Networking{boolean} 53|1969r15 5908r17 +29b7*Can_Manage_Networking{boolean} 53|872r38 1970r15 4299r38 5909r17 +30b7*Can_Manage_Mounts{boolean} 53|1971r15 2118r41 2187r46 5910r17 +31b7*Can_Manage_Power{boolean} 53|1972r15 3407r38 5911r17 +32b7*Can_Trace_Children{boolean} 53|1973r15 2830r41 5912r17 +33b7*Can_Change_UIDs{boolean} 53|1974r15 3270r34 5913r17 +34b7*Can_Manage_MAC{boolean} 53|1975r15 2002r38 2062r38 5448r41 5914r17 +35b7*Can_Use_Clocks{boolean} 53|1976r15 3940r41 4014r41 5915r17 +36b7*Can_Signal_All{boolean} 53|1977r15 4664r38 5916r17 +37b7*Can_Change_GIDs{boolean} 53|1978r15 4828r34 5917r17 +38b7*Can_Bypass_IPC_Checks{boolean} 53|1979r15 5021r38 5084r38 5918r17 +42R9*Permissions 49e14 53|107r25 1995r23 2248r27 3312r25 3456r25 4373r25 +. 5699r24 +43b7*Includes_Contents{boolean} 53|2018m11 +44b7*Can_Read{boolean} 53|163r44 2019m11 2271r28 +45b7*Can_Write{boolean} 53|164r44 2020m11 3366r31 3510r31 4429r31 +46b7*Can_Execute{boolean} 53|2021m11 5740r25 +47b7*Can_Append_Only{boolean} 53|165r40 2022m11 +48b7*Can_Lock_Files{boolean} 53|2023m11 +52E9*Enforcement 55e13 53|2060r19 +53n8*Deny{52E9} 53|2070r49 5826r19 +54n8*Deny_And_Scream{52E9} 53|2071r49 5828r19 +55n8*Kill{52E9} 53|2072r49 5830r19 +58M9*Limit_Value<19|84M9> 53|3015r31 +59E9*Limit_Type 65e26 52|1331r26 53|2988r22 3008r22 5924r26 +60n8*Core_Size_Limit{59E9} 53|5928r45 +61n8*CPU_Time_Limit{59E9} 53|5929r45 +62n8*File_Size_Limit{59E9} 53|329r53 3629r53 5930r45 +63n8*Opened_File_Limit{59E9} 53|5931r45 5934r38 5948r47 +64n8*Stack_Size_Limit{59E9} 53|5932r45 +65n8*Memory_Size_Limit{59E9} 53|459r44 5933r45 +104E9*Addition_Status 104e63 53|1997r23 +104n29*Success{104E9} 53|2043r19 +104n38*No_Space{104E9} 53|2047r19 +104n48*Is_Conflicting{104E9} 53|2048r19 +X 49 userland-memory_failure.ads +19K18*Memory_Failure 39e28 53|42w15 5413r36 5421r27 5469r13 +21E9*Policy 24e18 53|5421r42 +22n8*Hard_Panic{21E9} 53|5428r25 5457r57 +23n8*Soft_Kill{21E9} 53|5430r25 5458r57 +24n8*Hard_Kill{21E9} 53|5432r25 5459r57 +27U14*Get_System_Policy 53|5426s17 +30U14*Set_System_Policy 53|5469s28 +X 50 userland-oom_failure.ads +19K18*OOM_Failure 35e25 53|43w15 5436r13 5470r13 +22U14*Get_Killing_Config 53|5436s25 +26U14*Configure_Killing 53|5470s25 +X 51 userland-process.ads +28K18*Process 677e21 52|27w15 27r37 53|121r16 176r10 194r19 195r19 238r16 +. 316r7 389r16 591r16 607r19 634r30 723r20 735r13 754r29 794r16 928r16 1072r16 +. 1111r16 1217r16 1265r19 1301r36 1316r36 1318r36 1724r16 1878r16 2025r16 +. 2254r10 2313r19 2405r10 2419r19 2420r19 2463r10 2493r16 2608r10 2796r10 +. 3012r10 3056r7 3069r10 3090r10 3256r16 3272r22 3275r22 3278r19 3281r25 +. 3324r7 3391r7 3392r7 3468r7 3559r16 3616r7 4079r16 4083r16 4387r7 4578r17 +. 4580r17 4644r17 4805r16 4814r16 4830r22 4833r22 4836r19 4839r25 5047r41 +. 5500r16 5501r16 5502r16 5503r16 5517r16 5518r16 5519r16 5520r16 5540r16 +. 5541r16 5542r16 5557r32 5570r19 5584r16 5720r16 5721r16 5764r19 5765r19 +. 6017r10 6037r17 6037r42 6038r17 6038r42 6040r17 6042r17 +33I9*PID 52|1249r30 1250r30 1264r37 1303r20 1314r62 1325r43 1335r18 +. 1347r17 53|63r36 92r42 192r23 213r40 291r40 375r27 442r42 545r34 569r25 +. 586r26 630r17 631r17 719r41 722r20 811r29 864r26 905r29 1060r40 1094r28 +. 1152r23 1176r23 1214r23 1233r41 1289r37 1584r26 1586r17 1647r23 1703r21 +. 1889r38 1917r24 1961r36 1992r40 2059r24 2094r42 2173r29 2220r42 2297r33 +. 2379r42 2440r41 2482r30 2512r41 2577r42 2635r41 2697r40 2734r27 2765r28 +. 2823r24 2824r24 2856r40 2884r39 2986r27 3037r41 3117r41 3253r23 3267r23 +. 3303r42 3388r23 3403r30 3447r42 3537r40 3594r40 3655r42 3727r42 3798r40 +. 3838r37 3932r36 4003r39 4064r36 4113r40 4204r40 4286r41 4364r42 4457r25 +. 4483r25 4513r38 4574r38 4641r26 4642r26 4686r15 4744r15 4802r23 4811r23 +. 4825r23 4858r36 4887r36 4922r41 4972r41 5011r23 5076r23 5146r23 5193r23 +. 5234r41 5294r41 5333r36 5374r36 5415r39 5490r30 5507r30 5538r37 5554r32 +. 5681r20 5819r62 5899r43 5940r18 6009r17 +34i4*Error_PID{33I9} 53|654r22 673r21 742r29 755r22 1589r18 2826r18 4654r16 +. 4700r26 4769r26 +35i4*Max_Process_Count{natural} 53|1316r44 +40i4*Max_Name_Length{natural} 53|634r38 +42i4*Max_File_Count{natural} 53|1301r44 +50n8*Description_Reader_FIFO{49E9} 53|257r18 357r18 942r18 1192r31 1745r21 +. 1762r21 1777r21 1786r21 3190r24 +51n8*Description_Writer_FIFO{49E9} 53|271r18 343r18 942r44 1197r31 1747r21 +. 1764r21 1779r21 1792r21 3194r24 5587r54 +52n8*Description_Primary_PTY{49E9} 53|261r18 347r18 943r18 1122r15 1751r21 +. 1768r21 2711r40 3198r24 4941r15 +53n8*Description_Secondary_PTY{49E9} 53|266r18 352r18 943r44 1124r15 1753r21 +. 1770r21 2712r40 3202r24 4942r15 +54n8*Description_Inode{49E9} 53|152r35 245r18 323r18 392r15 499r32 939r18 +. 1066r50 1114r15 1755r21 1772r21 1810r42 2309r53 2495r15 2746r15 3209r24 +. 3328r63 3472r63 3566r18 3623r18 4304r53 4391r63 4979r33 6020r55 +55n8*Description_Socket{49E9} 53|274r18 360r18 837r37 959r18 1749r21 1766r21 +. 2518r50 2641r50 2859r50 2898r50 2957r40 3205r24 3664r50 3736r50 3802r50 +. 4126r53 4217r53 5239r50 5299r50 +56R9*File_Description 80e14 53|150r28 837r19 1190r26 1195r26 2711r22 2712r22 +. 2957r22 +57P9*File_Description_Acc(56R9) 52|1336r18 53|106r21 215r28 293r28 376r18 +. 446r20 813r20 911r20 1061r23 1096r24 1181r34 1705r30 1707r21 2299r29 2483r26 +. 2513r24 2636r24 2700r24 2735r23 2857r23 2886r24 2893r15 3127r20 3311r21 +. 3455r21 3539r28 3596r28 3657r25 3729r25 3799r23 4115r28 4206r28 4288r24 +. 4372r21 4926r24 4973r24 5236r24 5296r24 5555r23 5941r18 6014r15 +58e27*Description{49E9} 53|152m14 244r20 322r20 391r17 499r18 938r25 1066r35 +. 1113r17 1192m10 1197m10 1744r23 1761r23 1776r23 1785r23 1810r27 2309r38 +. 2494r17 2518r35 2641r35 2745r17 2859r35 2898r35 3189r26 3328r48 3472r48 +. 3565r20 3622r20 3664r35 3736r35 3802r35 4126r38 4217r38 4304r38 4391r48 +. 4940r17 4979r18 5239r35 5299r35 5587r40 6020r40 +59i7*Children_Count{natural} 53|151m14 1191m10 1196m10 +62p13*Inner_Reader_FIFO{22|39P9} 53|258r27 1193m10 1746r50 1763r43 1778r34 +. 1787r34 3192r31 +64p13*Inner_Writer_FIFO{22|39P9} 53|344r28 1198m10 1748r51 1765r44 1780r34 +. 1793r34 3196r31 5589r38 5593r25 +66p13*Inner_Primary_PTY{25|37P9} 53|263r25 349r25 1123r29 1752r45 1769r46 +. 3200r31 4941r57 +68p13*Inner_Secondary_PTY{25|37P9} 53|268r25 354r25 1125r29 1754r47 1771r48 +. 3204r31 4942r57 +70b13*Inner_Is_Locked{boolean} 53|153m14 1839m27 1850m27 +71b13*Inner_Is_Blocking{boolean} 53|154m14 252r48 338r32 1756r32 1773m24 +. 3573r48 3637r49 +72b13*Inner_Ino_Read{boolean} 53|155m14 246r28 1115r21 3567r28 +73b13*Inner_Ino_Write{boolean} 53|156m14 324r28 1115r45 3624r28 +74m13*Inner_Ino_Pos{19|84M9} 53|158m14 251r66 253m21 253r43 328r27 337r32 +. 339m21 339r43 402m24 404m24 404r46 406m24 411r28 2318r41 2324m18 2324r40 +75i13*Inner_Ino_FS{54|74I9} 53|157m14 251r31 336r32 393r28 501r37 940r33 +. 1073r22 1080r27 1116r37 1819r44 1833r47 1842r47 2316r32 2497r22 2747r43 +. 3210r37 3334r27 3478r27 3572r31 3636r32 4310r22 4397r27 4990r42 6024r26 +76m13*Inner_Ino{54|28M9} 53|159m14 251r50 336r51 393r47 502r37 941r33 1073r41 +. 1080r46 1116r56 1820r44 1834r47 1843r47 2317r32 2497r41 2747r62 3210r56 +. 3335r27 3479r27 3572r50 3636r51 4310r41 4316r54 4398r27 4990r61 6025r26 +78p13*Inner_Socket{27|37P9} 53|275r38 361r39 1750r45 1767r38 2529r29 2535r33 +. 2544r33 2554r35 2652r29 2658r33 2667r33 2677r38 2862r28 2866r37 2902r28 +. 2909r34 2917r32 2923r44 2934r44 2947r51 3207r31 3680r29 3685r32 3692r32 +. 3701r32 3752r29 3757r31 3764r31 3773r31 3810r47 3812r47 3814r47 4140r44 +. 4142r35 4148r44 4160r44 4174r44 4182r35 4231r44 4233r35 4239r44 4251r44 +. 4265r44 4273r36 5254r46 5260r36 +82E9*Signal 110e34 52|1250r41 1354r22 53|727r20 4578r25 4644r25 5507r41 5557r40 +. 6032r22 6037r25 6037r50 6038r25 6038r50 6040r25 +92n8*Signal_Kill{82E9} 53|6042r25 +143A9*Signal_Bitmap(boolean)<82E9> 53|3114r52 3115r65 3132r20 4510r52 4511r65 +. 4517r17 4522r54 4528r19 4535r54 4580r25 +155A9*Children_Arr(33I9) 53|723r28 +156U14*Get_Children 53|735s21 +162R9*Process_Info 170e14 53|1339r38 +163a7*Identifier{string} 53|1347r48 +164i7*Identifier_Len{natural} 53|1348r61 +165i7*Process{33I9} 53|1350r70 +166i7*Parent{33I9} 53|1349r70 +167m7*User{19|81M9} 53|1351r48 +168b7*Is_Being_Traced{boolean} 53|1353r32 +169b7*Has_Exited{boolean} 53|1356r32 +171A9*Process_Info_Arr(162R9) 53|1341r24 +176U14*List_All 53|1344s16 +181U14*Create_Process 53|672s10 1588s7 +185U14*Delete_Process 53|794s24 +188U14*Get_Runtime_Times 53|4079s24 +194U14*Get_Children_Runtimes 53|4083s24 +203U14*Add_Thread 53|699s7 +218U14*Remove_Thread 53|607s27 1878s24 5502s24 5519s24 +223U14*Flush_Threads 53|591s24 5500s24 5517s24 5540s24 +228U14*Reassign_Process_Addresses 53|5765s27 +232V13*Get_Niceness{40|112I12} 53|4704s22 +236U14*Set_Niceness 53|4773s13 +243V13*Is_Valid_File{boolean} 53|194s27 +252U14*Add_File 53|5950s10 +263V13*Get_File_Count{natural} 53|5947s23 +269U14*Duplicate 53|1719s13 +277U14*Duplicate_FD_Table 53|685s10 1595s7 +288U14*Close 53|167s10 181s10 846s10 1203s10 1204s10 2718s10 2719s10 2965s13 +294V13*Get_File{57P9} 53|215s52 293s52 382s15 494s18 931s23 1061s47 1096s48 +. 1705s54 2299s53 2483s50 2513s48 2636s48 2735s47 2857s47 2886s48 3177s24 +. 3327s23 3471s23 3539s52 3596s52 3657s49 3729s49 3799s47 4115s52 4206s52 +. 4288s48 4390s23 4926s48 4973s48 5236s48 5296s48 5586s18 6019s19 +303U14*Get_FD_Flags 53|1731s13 +314U14*Set_FD_Flags 53|176s18 840s10 1724s24 1739s13 2960s13 +324U14*Remove_File 53|195s27 +329U14*Flush_Files 53|5501s24 5518s24 5541s24 +333U14*Flush_Exec_Files 53|5764s27 +338U14*Set_Common_Map 53|611s10 680s10 5767s10 +344V13*Get_Common_Map{12|43P9} 53|64s43 93s49 214s49 292s49 443s49 546s41 +. 592s18 606s43 665s28 680s45 681s13 689s26 721s48 792s14 865s48 906s51 1095s50 +. 1177s45 1234s48 1290s44 1615s50 1704s54 1890s47 1918s42 1993s47 2095s49 +. 2174s51 2221s50 2298s55 2380s49 2441s48 2522s40 2578s49 2645s40 2698s47 +. 2766s50 2885s46 3038s48 3118s48 3304s49 3448s49 3538s49 3595s49 3656s49 +. 3728s49 3839s44 3933s43 4004s46 4065s43 4114s49 4205s49 4287s48 4365s49 +. 4514s45 4575s45 4859s43 4888s43 4923s48 5047s49 5077s40 5147s40 5235s48 +. 5295s48 5334s43 5375s43 5416s46 5688s48 +363V13*Bump_Alloc_Base{19|84M9} 53|469s44 5042s19 +370U14*Get_Traced_Info 53|5584s24 +380U14*Set_Traced_Info 53|2839s13 +390U14*Issue_Exit 53|5503s24 5542s24 +397U14*Issue_Exit 53|5520s24 +406U14*Check_Exit 53|743s19 760s13 +418U14*Set_CWD 53|1080s7 +428U14*Get_CWD 53|5721s24 6017s18 +437V13*Get_Parent{33I9} 53|569s32 653s20 755s40 2826s44 +443U14*Set_Identifier 53|678s10 5768s10 +450U14*Get_Identifier 53|677s10 +459U14*Get_UID 53|1217s24 3090s18 3278s27 4666s10 +464U14*Set_UID 53|3275s30 +469U14*Get_Effective_UID 53|121s24 238s24 316s15 389s24 928s24 1072s24 1111s24 +. 1265s27 2025s24 2254s18 2313s27 2405s18 2420s27 2463s18 2493s24 2608s18 +. 2796s18 3056s15 3069s18 3256s24 3324s15 3468s15 3559s24 3616s15 4387s15 +. 4665s10 4667s10 5022s10 5085s10 5201s7 5720s24 +474U14*Set_Effective_UID 53|3272s30 3281s33 +479U14*Get_GID 53|4805s24 4836s27 +484U14*Set_GID 53|4833s30 +489U14*Get_Effective_GID 53|4814s24 5023s10 5086s10 5202s7 +494U14*Set_Effective_GID 53|4830s30 4839s33 +496N4*Max_Supplementary_Groups 53|1318r44 +497A9*Supplementary_GID_Arr(19|81M9) 53|4862r15 4891r15 +499U14*Get_Supplementary_Groups 53|4871s7 +504U14*Set_Supplementary_Groups 53|4903s10 +509U14*Empty_Supplementary_Groups 53|4895s10 +514U14*Get_Umask 53|2419s27 3391s15 +519U14*Set_Umask 53|3392s15 +525U14*Get_Masked_Signals 53|3153s13 4519s7 4617s19 +531U14*Set_Masked_Signals 53|3154s13 3245s10 4545s19 4547s19 4549s19 4619s19 +536U14*Raise_Signal 53|4675s7 +542U14*Get_Signal_Handler 53|4600s13 +551U14*Set_Signal_Handler 53|4615s19 4621s19 +562U14*Get_Raised_Signal_Actions 53|5570s27 +573V13*Convert{natural} 53|565s32 572s32 669s28 691s26 693s30 797s32 1349s51 +. 1350s51 1519s50 1630s32 1829s44 5820s57 +579V13*Convert{33I9} 53|754s37 1814s24 2824s31 4642s33 4699s24 4768s24 +586V13*Get_Enforcement{48|52E9} 53|5825s12 +587U14*Set_Enforcement 53|2079s7 +589V13*Get_Capabilities{48|23R9} 53|450s14 549s14 641s14 872s14 1154s14 1651s14 +. 1896s14 1922s14 1962s43 2002s14 2062s14 2118s17 2187s17 2830s17 3270s10 +. 3407s14 3940s17 4014s17 4299s14 4460s14 4487s14 4664s14 4690s14 4748s14 +. 4828s10 5021s14 5084s14 5448s17 5713s17 5900s43 +590U14*Set_Capabilities 53|5902s7 +592V13*Check_Permissions{48|42R9} 53|149s24 2270s24 3365s27 3509s27 4428s27 +. 5739s21 +597U14*Add_Entity 53|2039s7 +604V13*Get_Limit{48|58M9} 53|329s32 459s23 2993s35 3629s32 5948s23 +608U14*Set_Limit 53|3012s18 +X 52 userland-syscall.ads +33K18*Syscall 45|17k9 52|1356l14 1356e21 53|45b23 6045l14 6045t21 +36E9*Errno_Value 62e23 63r8 101r23 108r23 123r24 129r23 137r23 145r23 156r23 +. 176r25 183r23 186r63 189r64 200r24 215r23 226r25 243r23 250r23 302r24 308r23 +. 316r23 319r67 325r23 332r26 335r63 348r26 467r23 479r24 482r63 494r25 529r23 +. 532r67 539r22 547r24 568r23 573r23 587r24 596r23 613r26 622r24 632r26 661r26 +. 664r60 674r24 682r24 689r23 716r24 727r26 735r24 741r26 748r23 759r26 769r26 +. 776r23 785r24 797r23 804r23 818r24 839r24 842r64 849r23 859r24 865r23 875r23 +. 886r24 895r23 904r23 911r24 918r24 927r23 945r24 958r24 968r27 982r25 992r24 +. 1002r24 1020r24 1029r24 1033r23 1039r23 1049r23 1064r23 1070r23 1080r23 +. 1087r23 1089r63 1091r64 1098r23 1105r23 1112r23 1120r23 1135r23 1144r23 +. 1175r23 1180r23 1191r23 1207r23 1216r23 1223r23 1230r23 1245r23 1275r29 +. 1281r29 1287r29 1293r29 1305r24 53|49r23 61r23 88r24 190r23 209r23 287r23 +. 373r23 439r25 543r25 562r63 568r64 583r24 626r23 716r45 809r23 862r23 903r24 +. 1058r23 1090r23 1139r67 1150r23 1173r26 1213r63 1231r26 1287r23 1582r24 +. 1633r63 1645r25 1701r23 1873r67 1887r22 1915r24 1949r23 1959r23 1990r24 +. 2057r23 2092r26 2171r24 2218r26 2289r26 2355r60 2375r24 2438r24 2480r23 +. 2510r24 2575r26 2633r24 2693r26 2732r23 2763r26 2819r26 2854r23 2882r24 +. 2984r23 3005r23 3035r24 3111r24 3252r64 3265r23 3301r24 3386r23 3401r23 +. 3445r24 3533r23 3590r23 3653r24 3725r24 3796r23 3836r24 3930r24 4001r27 +. 4062r25 4105r24 4196r24 4284r24 4362r24 4455r23 4481r23 4507r23 4572r23 +. 4639r23 4684r23 4742r23 4801r63 4810r64 4823r23 4856r23 4885r23 4920r23 +. 4968r23 5008r23 5073r23 5144r23 5190r23 5230r23 5290r23 5331r23 5372r23 +. 5411r23 5602r29 5625r29 5643r29 5661r29 5683r24 +37n8*Error_No_Error{36E9} 64r8 53|53r19 78r22 178r22 197r22 416r16 488r22 +. 513r22 554r19 564r16 571r16 704r16 771r19 796r19 843r19 891r19 1051r19 +. 1081r19 1131r19 1144r19 1164r22 1208r19 1218r16 1564r19 1629r19 1635r19 +. 1687r19 1863r16 1876r16 1905r19 1941r19 1953r16 1981r16 2044r25 2080r16 +. 2158r19 2201r22 2345r25 2360r22 2559r19 2682r19 2723r19 2846r16 2867r22 +. 2961r25 2992r19 3018r22 3248r19 3257r16 3290r16 3393r16 3706r19 3778r19 +. 3822r22 3903r31 3917r19 3987r16 4054r22 4093r22 4342r22 4469r22 4497r22 +. 4558r19 4626r19 4676r19 4729r16 4792r16 4806r16 4815r16 4848r16 4873r19 +. 4911r16 4953r16 4987r22 5054r22 5132r16 5173r22 5215r19 5273r16 5316r16 +. 5354r30 5394r25 5476r19 5607r25 5630r25 5648r25 5666r25 5787r22 +38n8*Error_Not_Big_Enough{36E9} 65r8 +39n8*Error_Bad_Access{36E9} 66r8 53|170r22 534r16 550r19 642r19 873r19 1155r19 +. 1608r22 1652r19 1897r19 1923r19 2003r19 2063r19 2119r19 2188r19 2272r22 +. 2831r19 3367r28 3408r19 3511r28 3941r19 4015r19 4300r19 4430r28 4461r19 +. 4488r19 4691r19 4749r19 5025r22 5088r22 5449r22 5714r19 5742r19 5791r22 +40n8*Error_Would_Block{36E9} 67r8 53|709r19 1590r22 1789r31 1795r31 1854r31 +. 2970r22 5634r41 5652r47 5669r25 +41n8*Error_Busy{36E9} 68r8 53|2204r22 +42n8*Error_Child{36E9} 69r8 53|801r19 +43n8*Error_Would_Fault{36E9} 70r8 53|70r22 113r22 226r22 303r19 779r25 880r19 +. 923r19 1102r19 1184r19 1248r19 1330r22 1622r28 1808r28 1901r19 1937r19 +. 2008r22 2109r19 2180r19 2236r19 2308r22 2392r19 2450r19 2524r19 2591r19 +. 2647r19 2705r19 2779r19 2977r19 3047r22 3138r22 3145r25 3315r22 3459r22 +. 3546r19 3603r19 3716r19 3788r19 3921r19 3938r22 4012r22 4070r22 4124r22 +. 4215r22 4352r19 4378r22 4563r19 4631r19 4866r19 4898r22 4931r19 5099r25 +. 5245r19 5305r19 5339r19 5380r19 5481r19 5710r19 +44n8*Error_File_Too_Big{36E9} 71r8 53|331r28 3631r28 +45n8*Error_Invalid_ID{36E9} 72r8 +46n8*Error_Invalid_Value{36E9} 73r8 53|75r22 247r28 272r28 325r28 358r25 +. 426r16 524r16 557r19 647r22 655r22 854r19 888r19 1161r22 1569r19 1692r19 +. 1867r16 1931r22 2012r22 2048r46 2074r22 2148r28 2750r25 2841r22 2870r22 +. 2997r16 3024r16 3419r22 3568r28 3577r25 3625r28 3641r25 3709r19 3816r25 +. 3872r22 3912r28 3992r19 4089r28 4345r22 4494r19 4551r31 4584r22 4649r22 +. 4659r22 4733r16 4797r16 4876r19 4905r22 4958r16 4993r22 5064r16 5137r16 +. 5180r19 5218r19 5278r16 5321r16 5362r16 5402r16 5486r19 5611r48 5633r41 +. 5651r42 +47n8*Error_IO{36E9} 74r8 53|2161r19 2363r22 2562r19 2685r19 3428r55 5614r48 +48n8*Error_Is_Directory{36E9} 75r8 53|5610r48 +49n8*Error_File_Loop{36E9} 76r8 53|5616r48 +50n8*Error_Too_Many_Files{36E9} 77r8 53|183r22 847r22 1205r19 1727r25 2720r19 +. 2966r25 +51n8*Error_String_Too_Long{36E9} 78r8 53|117r22 1254r19 2115r19 2184r19 2242r19 +. 2396r19 2454r19 2597r19 2785r19 3051r22 3319r22 3463r22 4382r22 +52n8*Error_No_Entity{36E9} 79r8 53|139r25 1000r28 2265r22 2348r25 3083r25 +. 3360r28 3504r28 4423r28 5734r19 +53n8*Error_No_Memory{36E9} 80r8 53|529r16 2047r46 3906r31 4472r22 5057r22 +. 5176r22 +54n8*Error_Not_Implemented{36E9} 81r8 53|3427r55 5612r48 +55n8*Error_Not_Connected{36E9} 82r8 53|3781r19 3825r22 +56n8*Error_Not_A_TTY{36E9} 83r8 53|1106r19 1134r19 +57n8*Error_Not_Supported{36E9} 84r8 53|2863r22 2903r22 4706r25 4775r25 +58n8*Error_Bad_Permissions{36E9} 85r8 53|2827r19 3283r25 4669r25 4841r25 +. 5615r48 +59n8*Error_Read_Only_FS{36E9} 86r8 53|5613r48 +60n8*Error_Invalid_Seek{36E9} 87r8 53|421r16 4980r19 +61n8*Error_Bad_Search{36E9} 88r8 53|4655r22 +62n8*Error_Bad_File{36E9} 89r8 53|131r25 200r22 230r22 307r19 384r19 516r22 +. 933r22 983r28 1009r19 1067r22 1075r22 1272r25 1711r19 2258r25 2311r22 2409r25 +. 2467r25 2488r19 2500r22 2519r19 2612r25 2642r19 2740r22 2804r25 2860r22 +. 2899r22 3064r25 3330r25 3343r28 3474r25 3487r28 3550r19 3607r19 3665r22 +. 3737r22 3803r22 4128r22 4219r22 4306r22 4313r22 4393r25 4406r28 4935r19 +. 4977r19 5240r19 5300r19 +92N4*AT_FDCWD 53|6016r19 +93N4*AT_EMPTY_PATH 53|930r21 3326r21 3470r21 4389r21 +94N4*AT_SYMLINK_NOFOLLOW 53|998r42 3081r39 3358r42 3502r42 4421r42 +95N4*AT_EACCESS 53|3089r21 +98U14*Sys_Exit 99>8 100<8 101<8 53|46b14 55l8 55t16 +99m8 Code{19|84M9} 53|47b8 54r60 +100m8 Returned{19|84M9} 53|48b8 52m7 +101e8 Errno{36E9} 53|49b8 53m7 +104U14*Arch_PRCtl 105>8 106>8 107<8 108<8 53|57b14 80l8 80t18 +105m8 Code{19|84M9} 53|58b8 71r13 72r49 +106m8 Argument{19|84M9} 53|59b8 65r60 +107m8 Returned{19|84M9} 53|60b8 69m10 74m10 77m10 +108e8 Errno{36E9} 53|61b8 70m10 75m10 78m10 +111N4*O_RDONLY 53|95r60 +112N4*O_WRONLY 53|96r60 +113N4*O_APPEND 53|98r60 +114N4*O_CLOEXEC 53|94r60 +115N4*O_NOFOLLOW 53|97r60 +116N4*O_NONBLOCK 53|99r60 1189r48 1758r46 1760r35 +117U14*Open 118>8 119>8 120>8 121>8 122<8 123<8 53|82b14 185l8 185t12 +118m8 Dir_FD{19|84M9} 53|83b8 128r43 +119m8 Path_Addr{19|84M9} 53|84b8 90r66 +120m8 Path_Len{19|84M9} 53|85b8 111r54 115r13 125r39 +121m8 Flags{19|84M9} 53|86b8 94r50 95r50 96r50 97r50 98r50 99r50 +122m8 Returned{19|84M9} 53|87b8 112m10 116m10 130m13 138m13 169m10 179m10 +. 182m10 +123e8 Errno{36E9} 53|88b8 113m10 117m10 131m13 139m13 170m10 178m10 183m10 +126U14*Close 127>8 128<8 129<8 53|187b14 202l8 202t13 +127m8 File_D{19|84M9} 53|188b8 194r48 195r55 +128m8 Returned{19|84M9} 53|189b8 196m10 199m10 +129e8 Errno{36E9} 53|190b8 197m10 200m10 +132U14*Read 133>8 134>8 135>8 136<8 137<8 53|204b14 280l8 280t12 +133m8 File_D{19|84M9} 53|205b8 215r68 +134m8 Buffer{19|84M9} 53|206b8 211r64 +135m8 Count{19|84M9} 53|207b8 224r53 232r13 235r32 +136m8 Returned{19|84M9} 53|208b8 225m10 229m10 248m19 256m55 259m69 264m69 +. 269m69 273m16 277m55 +137e8 Errno{36E9} 53|209b8 226m10 230m10 247m19 256m65 260m34 265m34 270m34 +. 272m16 277m65 +140U14*Write 141>8 142>8 143>8 144<8 145<8 53|282b14 366l8 366t13 +141m8 File_D{19|84M9} 53|283b8 293r68 +142m8 Buffer{19|84M9} 53|284b8 289r64 +143m8 Count{19|84M9} 53|285b8 302r53 310r13 313r32 +144m8 Returned{19|84M9} 53|286b8 304m10 308m10 326m19 332m19 341m69 345m69 +. 350m69 355m69 359m16 363m55 +145e8 Errno{36E9} 53|287b8 303m10 307m10 325m19 331m19 342m41 346m41 351m34 +. 356m34 358m16 363m65 +148N4*SEEK_SET 53|401r21 +149N4*SEEK_CURRENT 53|403r21 +150N4*SEEK_END 53|405r21 +151U14*Seek 152>8 153>8 154>8 155<8 156<8 53|368b14 429l8 429t12 +152m8 File_D{19|84M9} 53|369b8 382r31 +153m8 Offset{19|84M9} 53|370b8 402r41 404r62 406r62 +154m8 Whence{19|84M9} 53|371b8 400r18 +155m8 Returned{19|84M9} 53|372b8 385m10 417m7 422m7 427m7 +156e8 Errno{36E9} 53|373b8 384m10 416m7 421m7 426m7 +159N4*PROT_NONE 53|5807r14 +160N4*PROT_READ 53|5812r42 +161N4*PROT_WRITE 53|5813r42 +162N4*PROT_EXEC 53|5814r42 +163N4*MAP_PRIVATE +164N4*MAP_SHARED +165N4*MAP_FIXED 53|466r24 +166N4*MAP_ANON 53|479r21 +167N4*MAP_NORESERVE +168U14*Mmap 169>8 170>8 171>8 172>8 173>8 174>8 175<8 176<8 53|431b14 537l8 +. 537t12 +169m8 Hint{19|84M9} 53|432b8 444r66 453r14 465r10 +170m8 Length{19|84M9} 53|433b8 454r14 455r13 458r42 469r67 474r59 483r47 +. 506r32 +171m8 Protection{19|84M9} 53|434b8 441r64 +172m8 Flags{19|84M9} 53|435b8 466r14 479r11 +173m8 File_D{19|84M9} 53|436b8 494r34 +174m8 Offset{19|84M9} 53|437b8 504r32 +175m8 Returned{19|84M9} 53|438b8 489m13 514m13 517m13 525m7 530m7 536m7 +176e8 Errno{36E9} 53|439b8 488m13 513m13 516m13 524m7 529m7 534m7 +179U14*Munmap 180>8 181>8 182<8 183<8 53|539b14 560l8 560t14 +180m8 Address{19|84M9} 53|540b8 547r70 +181m8 Length{19|84M9} 53|541b8 553r52 +182m8 Returned{19|84M9} 53|542b8 552m10 555m10 558m10 +183e8 Errno{36E9} 53|543b8 550m10 554m10 557m10 +186U14*Get_PID 186<23 186<51 53|562b14 566l8 566t15 +186m23 Returned{19|84M9} 53|562b23 565m7 +186e51 Errno{36E9} 53|562b51 564m7 +189U14*Get_PPID 189<24 189<52 53|568b14 573l8 573t16 +189m24 Returned{19|84M9} 53|568b24 572m7 +189e52 Errno{36E9} 53|568b52 571m7 +192U14*Exec 193>8 194>8 195>8 196>8 197>8 198>8 199<8 200<8 53|575b14 614l8 +. 614t12 +193m8 Path_Addr{19|84M9} 53|576b8 595r24 +194m8 Path_Len{19|84M9} 53|577b8 596r24 +195m8 Argv_Addr{19|84M9} 53|578b8 597r24 +196m8 Argv_Len{19|84M9} 53|579b8 598r24 +197m8 Envp_Addr{19|84M9} 53|580b8 599r24 +198m8 Envp_Len{19|84M9} 53|581b8 600r24 +199m8 Returned{19|84M9} 53|582b8 612m10 +200e8 Errno{36E9} 53|583b8 603m24 +203N4*CLONE_PARENT 53|638r51 +204N4*CLONE_THREAD 53|639r51 +205U14*Clone 206>8 207>8 208>8 209>8 210>8 211>8 212>8 213>8 214<8 215<8 +. 53|616b14 711l8 711t13 +206m8 Callback{19|84M9} 53|617b8 664r45 +207m8 Call_Arg{19|84M9} 53|618b8 628r28 +208m8 Stack{19|84M9} 53|619b8 666r28 +209m8 Flags{19|84M9} 53|620b8 638r41 639r41 +210m8 TLS_Addr{19|84M9} 53|621b8 667r28 +211m8 Cluster{19|84M9} 53|622b8 646r13 668r56 690r54 +212r8 GP_State{8|22R15} 53|623b8 687r26 +213a8 FP_State{8|23A15} 53|624b8 688r26 +214m8 Returned{19|84M9} 53|625b8 644m10 648m10 656m13 705m7 710m7 +215e8 Errno{36E9} 53|626b8 642m10 647m10 655m13 704m7 709m7 +218N4*WNOHANG 53|720r61 +219N4*WIFEXITED 53|787r27 +220N4*WIFSIGNALED 53|785r27 +221U14*Wait 222>8 223>8 224>8 225<8 226<8 53|713b14 803l8 803t12 +222m8 Waited_PID{19|84M9} 53|714b8 733r10 754r55 +223m8 Exit_Addr{19|84M9} 53|714b20 718r65 +224m8 Options{19|84M9} 53|714b31 720r49 +225m8 Returned{19|84M9} 53|715b8 772m7 780m13 797m7 802m7 +226e8 Errno{36E9} 53|716b8 771m7 779m13 796m7 801m7 +229N4*AF_INET 53|819r15 +230N4*AF_INET6 53|820r15 +231N4*AF_UNIX 53|821r15 +232N4*SOCK_DGRAM 53|827r15 5264r29 +233N4*SOCK_RAW 53|828r15 5266r29 +234N4*SOCK_STREAM 53|826r15 5262r29 +235N4*SOCK_SEQPACKET +236N4*SOCK_NONBLOCK 53|832r52 2888r59 +237N4*SOCK_CLOEXEC 53|842r27 2887r59 +238N4*SOCK_CLOFORK 53|2889r59 +239U14*Socket 240>8 241>8 242<8 243<8 53|805b14 856l8 856t14 +240m8 Domain{19|84M9} 53|806b8 818r12 +241m8 DataType{19|84M9} 53|807b8 825r12 832r39 842r14 +242m8 Returned{19|84M9} 53|808b8 838m53 838r53 841r19 848m10 855m7 +243e8 Errno{36E9} 53|809b8 843m10 847m10 854m7 +246U14*Set_Hostname 247>8 248>8 249<8 250<8 53|858b14 894l8 894t20 +247m8 Address{19|84M9} 53|859b8 867r63 +248m8 Length{19|84M9} 53|860b8 866r55 879r49 +249m8 Returned{19|84M9} 53|861b8 875m10 881m10 889m10 892m10 +250e8 Errno{36E9} 53|862b8 873m10 880m10 888m10 891m10 +253R9*Time_Spec 256e15 273r23 274r23 275r23 972r21 973r21 53|3136r50 3162r17 +. 3846r43 3880r20 3936r49 3948r17 4008r52 4009r52 4022r24 4023r24 4376r55 +. 4438r45 +254m7*Seconds{19|84M9} 53|953m38 954m38 955m38 969m38 970m38 971m38 3164r58 +. 3901r49 3955m31 3958m31 3966m31 3969m31 3977r31 4028r30 4036r54 4050m20 +. 4079m67 4080m66 4084m44 4085m67 4444r46 4446r46 +255m7*Nanoseconds{19|84M9} 53|953m52 954m52 955m52 969m52 970m52 971m52 3165r35 +. 3901r63 3955m45 3958m45 3966m45 3969m45 3977r45 4029r30 4037r41 4051m20 +. 4080m37 4081m35 4085m38 4086m36 4445r46 4447r46 +257N4*Stat_IFIFO 53|947r37 +258N4*Stat_IFCHR 53|1045r47 +259N4*Stat_IFDIR 53|1041r47 2413r23 +260N4*Stat_IFBLK 53|1047r47 +261N4*Stat_IFREG 53|1039r47 +262N4*Stat_IFLNK 53|1043r47 +263N4*Stat_ISOCK 53|963r37 +264R9*Stat 278e14 279r8 294r8 53|917r20 920r54 +265m7*Device_Number{19|84M9} 280r7 53|945m20 961m20 1016m11 +266m7*Inode_Number{19|84M9} 281r7 53|946m20 962m20 1017m11 +267m7*Mode{19|81M9} 282r7 53|947m20 963m20 1018m11 1039m22 1039r39 1041m22 +. 1041r39 1043m22 1043r39 1045m22 1045r39 1047m22 1047r39 +268m7*Number_Links{19|81M9} 283r7 53|948m20 964m20 1019m11 +269m7*UID{19|81M9} 284r7 53|949m20 965m20 1020m11 +270m7*GID{19|81M9} 285r7 53|950m20 966m20 1021m11 +271m7*Inner_Device{19|84M9} 286r7 53|951m20 967m20 1022m11 +272m7*File_Size{19|84M9} 287r7 53|952m20 968m20 1023m11 +273r7*Access_Time{253R9} 288r7 53|953m20 969m20 1024m11 +274r7*Modify_Time{253R9} 289r7 53|954m20 970m20 1027m11 +275r7*Create_Time{253R9} 290r7 53|955m20 971m20 1030m11 +276m7*Block_Size{19|84M9} 291r7 53|956m20 972m20 1033m11 +277m7*Block_Count{19|84M9} 292r7 53|957m20 973m20 1034m11 +295U14*FStat 296>8 297>8 298>8 299>8 300>8 301<8 302<8 53|896b14 1053l8 1053t13 +296m8 Dir_FD{19|84M9} 53|897b8 931r39 981r41 +297m8 Path_Addr{19|84M9} 53|898b8 909r66 +298m8 Path_Len{19|84M9} 53|899b8 921r54 978r42 +299m8 Stat_Addr{19|84M9} 53|900b8 907r66 +300m8 Flags{19|84M9} 53|901b8 930r11 998r32 +301m8 Returned{19|84M9} 53|902b8 924m10 934m13 984m16 1001m16 1010m10 1052m7 +302e8 Errno{36E9} 53|903b8 923m10 933m13 983m16 1000m16 1009m10 1051m7 +305U14*Chdir 306>8 307<8 308<8 53|1055b14 1083l8 1083t13 +306m8 FD{19|84M9} 53|1056b8 1061r63 +307m8 Returned{19|84M9} 53|1057b8 1068m10 1076m10 1082m7 +308e8 Errno{36E9} 53|1058b8 1067m10 1075m10 1081m7 +311U14*IOCTL 312>8 313>8 314>8 315<8 316<8 53|1085b14 1137l8 1137t13 +312m8 FD{19|84M9} 53|1086b8 1096r64 +313m8 Request{19|84M9} 53|1087b8 1117r32 1123r54 1125r57 +314m8 Argument{19|84M9} 53|1088b8 1092r65 +315m8 Returned{19|84M9} 53|1089b8 1103m10 1107m10 1132m10 1135m10 +316e8 Errno{36E9} 53|1090b8 1102m10 1106m10 1131m10 1134m10 +319U14*Sched_Yield 319<27 319<55 53|1139b14 1145l8 1145t19 +319m27 Returned{19|84M9} 53|1139b27 1143m7 +319e55 Errno{36E9} 53|1139b55 1144m7 +322U14*Delete_Thread_Cluster 323>8 324<8 325<8 53|1147b14 1167l8 1167t29 +323m8 Cluster{19|84M9} 53|1148b8 1158r13 1159r58 +324m8 Returned{19|84M9} 53|1149b8 1157m10 1162m10 1165m10 +325e8 Errno{36E9} 53|1150b8 1155m10 1161m10 1164m10 +328U14*Pipe 329>8 330>8 331<8 332<8 53|1169b14 1211l8 1211t12 +329m8 Result_Addr{19|84M9} 53|1170b8 1175r60 +330m8 Flags{19|84M9} 53|1171b8 1189r38 +331m8 Returned{19|84M9} 53|1172b8 1185m10 1206m10 1209m10 +332e8 Errno{36E9} 53|1173b8 1184m10 1205m10 1208m10 +335U14*Get_UID 335<23 335<51 53|1213b14 1220l8 1220t15 +335m23 Returned{19|84M9} 53|1213b23 1219m7 +335e51 Errno{36E9} 53|1213b51 1218m7 +338N4*RENAME_NOREPLACE 53|1239r50 +339U14*Rename 340>8 341>8 342>8 343>8 344>8 345>8 346>8 347<8 348<8 53|1222b14 +. 1280l8 1280t14 +340m8 Source_FD{19|84M9} 53|1223b8 1266r38 +341m8 Source_Addr{19|84M9} 53|1224b8 1235r65 +342m8 Source_Len{19|84M9} 53|1225b8 1245r53 1251r13 1260r38 +343m8 Target_FD{19|84M9} 53|1226b8 1267r38 +344m8 Target_Addr{19|84M9} 53|1227b8 1237r65 +345m8 Target_Len{19|84M9} 53|1228b8 1246r53 1252r13 1262r38 +346m8 Flags{19|84M9} 53|1229b8 1239r40 +347m8 Returned{19|84M9} 53|1230b8 1249m10 1255m10 1273m13 1278m40 +348e8 Errno{36E9} 53|1231b8 1248m10 1254m10 1272m13 1278m50 +351N4*SC_PAGESIZE 53|1298r15 +352N4*SC_OPEN_MAX 53|1300r15 +353N4*SC_HOST_NAME_MAX 53|1302r15 +354N4*SC_AVPHYS_PAGES 53|1304r15 +355N4*SC_PHYS_PAGES 53|1307r15 +356N4*SC_NPROCESSORS_ONLN 53|1310r15 +357N4*SC_TOTAL_PAGES 53|1312r15 +358N4*SC_LIST_PROCS 53|1336r15 +359N4*SC_LIST_MOUNTS 53|1363r15 +360N4*SC_UNAME 53|1400r15 +361N4*SC_CHILD_MAX 53|1315r15 +362N4*SC_LIST_THREADS 53|1419r15 +363N4*SC_LIST_CLUSTERS 53|1446r15 +364N4*SC_LIST_NETINTER 53|1473r15 +365N4*SC_DUMPLOGS 53|1500r15 +366N4*SC_NGROUPS_MAX 53|1317r15 +367N4*SC_SYMLOOP_MAX 53|1319r15 +368N4*SC_LIST_FILELOCKS 53|1509r15 +369N4*SC_LOADAVG 53|1530r15 +370N4*SC_MEMINFO 53|1540r15 +371N4*SC_FAILURE_POLICIES +373N4*PROC_IS_TRACED 53|1354r60 +374N4*PROC_EXITED 53|1357r60 +375R9*Proc_Info 382e15 383r54 +376a7*Identifier{string} 53|1347m23 +377m7*Id_Len{19|73M9} 53|1348m23 +378m7*Parent_PID{19|73M9} 53|1349m23 +379m7*Process_PID{19|73M9} 53|1350m23 +380m7*UID{19|81M9} 53|1351m23 +381m7*Flags{19|81M9} 53|1352m23 1354m32 1354r51 1357m32 1357r51 +383A9*Proc_Info_Arr(375R9) 53|1340r24 +385R9*Mount_Info 401e14 402r55 53|1366r38 +386m7*FS_Type{19|81M9} 53|1374m46 1375m46 1376m46 +387m7*Flags{19|81M9} 53|1378m28 +388a7*Source{string} 53|1381m32 +389m7*Source_Len{19|81M9} 53|1382m41 +390a7*Location{string} 53|1385m32 +391m7*Location_Len{19|81M9} 53|1386m41 +392m7*Block_Size{19|84M9} 53|1387m55 +393m7*Fragment_Size{19|84M9} 53|1388m58 +394m7*Size_In_Frags{19|84M9} 53|1389m49 +395m7*Free_Blocks{19|84M9} 53|1393m43 1395m43 +396m7*Free_BlocksU{19|84M9} 53|1393m65 1395m65 +397m7*Inode_Count{19|84M9} 53|1390m56 +398m7*Free_Inodes{19|84M9} +399m7*Free_InodesU{19|84M9} +400m7*Max_File_Name{19|84M9} 53|1391m55 +402A9*Mount_Info_Arr(385R9) 53|1367r24 +404R9*UTS_Name 410e14 53|1402r27 +405a7*System_Name{string} 53|1408m20 +406a7*Node_Name{string} 53|1405m45 1406m20 +407a7*Release{string} 53|1410m20 +408a7*Version{string} 53|1412m20 +409a7*Machine{string} 53|1414m20 +412R9*Thread_Info 417e15 418r56 53|1422r38 1449r38 +413m7*Thread_Id{19|73M9} 53|1431m23 +414m7*Niceness{19|73M9} 53|1432m23 1437m30 1439m30 +415m7*Cluster_Id{19|73M9} 53|1433m23 +416m7*Process_PID{19|73M9} 53|1434m23 +418A9*Thread_Info_Arr(412R9) 53|1423r23 +420R9*Cluster_Info 424e15 425r57 +421m7*Cluster_Id{19|73M9} 53|1457m23 +422m7*Cluster_Fl{19|73M9} 53|1458m23 1462m33 1464m33 1467m30 1467r52 +423m7*Cluster_Q{19|73M9} 53|1459m23 +425A9*Cluster_Info_Arr(420R9) 53|1450r22 +427N4*NETINTR_BLOCKED 53|1487r39 +429R9*Interface_Info 437e15 438r54 53|1476r38 +430a7*Name{string} 53|1484m56 1485m27 +431m7*Flags{19|84M9} 53|1487m30 1489m30 +432a7*MAC{37|22A9} 53|1491m27 +433a7*IPv4{37|23A9} 53|1492m27 +434a7*IPv4_Subnet{37|23A9} 53|1493m27 +435a7*IPv6{37|24A9} 53|1494m27 +436a7*IPv6_Subnet{37|24A9} 53|1495m27 +438A9*Interface_Arr(429R9) 53|1477r23 +440R9*Flock_Info 447e14 448r55 53|1512r38 +441m7*PID{19|81M9} 53|1519m27 +442m7*Mode{19|81M9} 53|1520m27 +443m7*Start{19|84M9} 53|1521m27 +444m7*Length{19|84M9} 53|1522m27 +445m7*FS{19|84M9} 53|1523m27 +446m7*Ino{19|84M9} 53|1525m27 +448A9*Flock_Info_Arr(440R9) 53|1513r23 +450A9*Load_Arr(19|81M9) 53|1532r22 +452R9*Mem_Info 460e14 53|1542r30 +453m7*Phys_Total{19|84M9} 53|1550m20 +454m7*Phys_Available{19|84M9} 53|1551m20 +455m7*Phys_Free{19|84M9} 53|1552m20 +456m7*Shared_Usage{19|84M9} 53|1553m20 +457m7*Kernel_Usage{19|84M9} 53|1554m20 +458m7*Table_Usage{19|84M9} 53|1555m20 +459m7*Poison_Usage{19|84M9} 53|1556m20 +462U14*Sysconf 463>8 464>8 465>8 466<8 467<8 53|1282b14 1571l8 1571t15 +463m8 Request{19|84M9} 53|1283b8 1297r12 1335r12 +464m8 Addr{19|84M9} 53|1284b8 1291r61 +465m8 Length{19|84M9} 53|1285b8 1329r49 1339r28 1366r28 1422r28 1449r28 1476r28 +. 1502r45 1512r28 1534r19 +466m8 Returned{19|84M9} 53|1286b8 1331m10 1565m7 1570m7 +467e8 Errno{36E9} 53|1287b8 1330m10 1564m7 1569m7 +470U14*Spawn 471>8 472>8 473>8 474>8 475>8 476>8 477>8 478<8 479<8 53|1573b14 +. 1631l8 1631t13 +471m8 Path_Addr{19|84M9} 53|1574b8 1598r24 +472m8 Path_Len{19|84M9} 53|1575b8 1599r24 +473m8 Argv_Addr{19|84M9} 53|1576b8 1600r24 +474m8 Argv_Len{19|84M9} 53|1577b8 1601r24 +475m8 Envp_Addr{19|84M9} 53|1578b8 1602r24 +476m8 Envp_Len{19|84M9} 53|1579b8 1603r24 +477m8 Caps_Addr{19|84M9} 53|1580b8 1613r10 1616r67 +478m8 Returned{19|84M9} 53|1581b8 1591m10 1609m10 1623m16 1630m7 +479e8 Errno{36E9} 53|1582b8 1590m10 1606m24 1608m10 1622m16 1629m7 +482U14*Get_TID 482<23 482<51 53|1633b14 1637l8 1637t15 +482m23 Returned{19|84M9} 53|1633b23 1636m7 +482e51 Errno{36E9} 53|1633b51 1635m7 +485N4*SCHED_RR 53|1462r47 1660r21 +486N4*SCHED_COOP 53|1464r47 1662r24 +487N4*SCHED_INTR 53|1467r66 1679r53 +488U14*Manage_Thread_Cluster 489>8 490>8 491>8 492>8 493<8 494<8 53|1639b14 +. 1694l8 1694t29 +489m8 Cluster{19|84M9} 53|1640b8 1656r13 1668r10 1671r46 +490m8 Flags{19|84M9} 53|1641b8 1660r11 1662r14 1679r43 +491m8 Quantum{19|84M9} 53|1642b8 1679r32 +492m8 Percentage{19|84M9} 53|1643b8 1683r45 +493m8 Returned{19|84M9} 53|1644b8 1654m10 1688m7 1693m7 +494e8 Errno{36E9} 53|1645b8 1652m10 1687m7 1692m7 +497N4*F_DUPFD 53|1718r15 +498N4*F_DUPFD_CLOEXEC 53|1718r25 1725r48 +499N4*F_GETFD 53|1730r15 +500N4*F_SETFD 53|1738r15 +501N4*F_GETFL 53|1743r15 +502N4*F_SETFL 53|1759r15 +503N4*F_GETPIPE_SZ 53|1775r15 +504N4*F_SETPIPE_SZ 53|1784r15 +505N4*F_GETLK 53|1801r15 1817r29 +506N4*F_SETLK 53|1801r25 +507N4*F_SETLKW 53|1801r35 1848r52 +509N4*FD_CLOEXEC 53|1733r40 1741r31 +510N4*FD_CLOFORK 53|1736r40 1742r31 +512N4*F_RDLCK +513N4*F_UNLCK 53|1827r40 1831r39 +514N4*F_WRLCK 53|1815r41 +516R9*Flock_Data 522e14 53|1804r23 +517m7*Lock_Type{19|73M9} 53|1815r29 1827m27 1831r27 +518m7*Whence{19|73M9} +519m7*Start{19|84M9} 53|1821m44 1835r47 1844r47 +520m7*Length{19|84M9} 53|1822m44 1836r47 1845r47 +521m7*PID{19|81M9} 53|1814r47 1829m24 +524U14*Fcntl 525>8 526>8 527>8 528<8 529<8 53|1696b14 1871l8 1871t13 +525m8 FD{19|84M9} 53|1697b8 1705r70 1731r33 1740r23 +526m8 Command{19|84M9} 53|1698b8 1717r12 1725r38 1817r19 1848r42 +527m8 Argument{19|84M9} 53|1699b8 1721r59 1741r18 1742r18 1760r22 1787r62 +. 1793r62 1803r69 +528m8 Returned{19|84M9} 53|1700b8 1715m7 1723m16 1733m16 1733r28 1736m16 +. 1736r28 1758m13 1778m62 1778r62 1780m62 1780r62 1870m7 +529e8 Errno{36E9} 53|1701b8 1711m10 1727m16 1789m22 1795m22 1808m19 1854m22 +. 1863m7 1867m7 +532U14*Exit_Thread 532<27 532<55 53|1873b14 1881l8 1881t19 +532m27 Returned{19|84M9} 53|1873b27 1877m7 +532e55 Errno{36E9} 53|1873b55 1876m7 +535U14*Get_Random 536>7 537>7 538<7 539<7 53|1883b14 1908l8 1908t18 +536m7 Address{19|84M9} 53|1884b7 1891r62 +537m7 Length{19|84M9} 53|1885b7 1893r63 1900r52 +538m7 Returned{19|84M9} 53|1886b7 1899m10 1902m10 1906m10 +539e7 Errno{36E9} 53|1887b7 1897m10 1901m10 1905m10 +542U14*MProtect 543>7 544>7 545>7 546<7 547<7 53|1910b14 1944l8 1944t16 +543m7 Address{19|84M9} 53|1911b7 1920r70 1928r14 +544m7 Length{19|84M9} 53|1912b7 1929r14 1936r53 +545m7 Protection{19|84M9} 53|1913b7 1919r68 +546m7 Returned{19|84M9} 53|1914b7 1925m10 1932m10 1938m10 1942m10 +547e7 Errno{36E9} 53|1915b7 1923m10 1931m10 1937m10 1941m10 +550N4*MAC_CAP_SCHED 53|1965r56 5904r54 +551N4*MAC_CAP_SPAWN 53|1966r56 5905r54 +552N4*MAC_CAP_ENTROPY 53|1967r56 5906r54 +553N4*MAC_CAP_SYS_MEM 53|1968r56 5907r54 +554N4*MAC_CAP_USE_NET 53|1969r56 5908r54 +555N4*MAC_CAP_SYS_NET 53|1970r56 5909r54 +556N4*MAC_CAP_SYS_MNT 53|1971r56 5910r54 +557N4*MAC_CAP_SYS_PWR 53|1972r56 5911r54 +558N4*MAC_CAP_PTRACE 53|1973r56 5912r54 +559N4*MAC_CAP_SETUID 53|1974r56 5913r54 +560N4*MAC_CAP_SYS_MAC 53|1975r56 5914r54 +561N4*MAC_CAP_CLOCK 53|1976r56 5915r54 +562N4*MAC_CAP_SIGNALALL 53|1977r54 5916r54 +563N4*MAC_CAP_SETGID 53|1978r56 5917r54 +564N4*MAC_CAP_IPC 53|1979r56 5918r54 +565U14*Set_MAC_Capabilities 566>8 567<8 568<8 53|1946b14 1955l8 1955t28 +566m8 Bits{19|84M9} 53|1947b8 1952r61 +567m8 Returned{19|84M9} 53|1948b8 1954m7 +568e8 Errno{36E9} 53|1949b8 1953m7 +571U14*Get_MAC_Capabilities 572<8 573<8 53|1957b14 1983l8 1983t28 +572m8 Returned{19|84M9} 53|1958b8 1982m7 +573e8 Errno{36E9} 53|1959b8 1981m7 +576N4*MAC_PERM_CONTENTS 53|2018r43 +577N4*MAC_PERM_READ 53|2019r43 +578N4*MAC_PERM_WRITE 53|2020r43 +579N4*MAC_PERM_EXEC 53|2021r43 +580N4*MAC_PERM_APPEND 53|2022r43 +581N4*MAC_PERM_FLOCK 53|2023r43 +582U14*Add_MAC_Permissions 583>8 584>8 585>8 586<8 587<8 53|1985b14 2052l8 +. 2052t27 +583m8 Path_Addr{19|84M9} 53|1986b8 1994r64 +584m8 Path_Len{19|84M9} 53|1987b8 2007r51 2011r13 2028r39 +585m8 Flags{19|84M9} 53|1988b8 2018r33 2019r33 2020r33 2021r33 2022r33 2023r33 +586m8 Returned{19|84M9} 53|1989b8 2005m10 2009m10 2013m10 2035m42 2045m13 +. 2051m7 +587e8 Errno{36E9} 53|1990b8 2003m10 2008m10 2012m10 2035m52 2044m13 2047m37 +. 2048m37 +590N4*MAC_DENY 53|2070r15 +591N4*MAC_DENY_AND_SCREAM 53|2071r15 +592N4*MAC_KILL 53|2072r15 +593U14*Set_MAC_Enforcement 594>8 595<8 596<8 53|2054b14 2082l8 2082t27 +594m8 Action{19|84M9} 53|2055b8 2069r12 +595m8 Returned{19|84M9} 53|2056b8 2065m10 2075m13 2081m7 +596e8 Errno{36E9} 53|2057b8 2063m10 2074m13 2080m7 +599N4*MNT_EXT 53|1375r57 2145r21 +600N4*MNT_FAT 53|1376r57 2146r21 +601N4*MNT_DEV 53|1374r57 +602N4*MS_RDONLY 53|2100r60 +603N4*MS_REMOUNT 53|2101r60 +604N4*MS_RELATIME 53|2102r60 +605U14*Mount 606>8 607>8 608>8 609>8 610>8 611>8 612<8 613<8 53|2084b14 2164l8 +. 2164t13 +606m8 Source_Addr{19|84M9} 53|2085b8 2096r66 +607m8 Source_Len{19|84M9} 53|2086b8 2106r53 2112r13 2126r41 +608m8 Target_Addr{19|84M9} 53|2087b8 2097r66 +609m8 Target_Len{19|84M9} 53|2088b8 2107r53 2113r13 2128r41 +610m8 FSType{19|84M9} 53|2089b8 2144r18 +611m8 Flags{19|84M9} 53|2090b8 2100r50 2101r50 2102r50 +612m8 Returned{19|84M9} 53|2091b8 2110m10 2116m10 2121m10 2149m19 2159m10 +. 2162m10 +613e8 Errno{36E9} 53|2092b8 2109m10 2115m10 2119m10 2148m19 2158m10 2161m10 +616N4*MNT_FORCE 53|2177r51 +617U14*Umount 618>8 619>8 620>8 621<8 622<8 53|2166b14 2209l8 2209t14 +618m8 Path_Addr{19|84M9} 53|2167b8 2175r66 +619m8 Path_Len{19|84M9} 53|2168b8 2179r54 2183r13 2196r42 +620m8 Flags{19|84M9} 53|2169b8 2177r41 +621m8 Returned{19|84M9} 53|2170b8 2181m10 2185m10 2190m10 2202m13 2205m13 +622e8 Errno{36E9} 53|2171b8 2180m10 2184m10 2188m10 2201m13 2204m13 +625U14*Readlink 626>8 627>8 628>8 629>8 630>8 631<8 632<8 53|2211b14 2282l8 +. 2282t16 +626m8 Dir_FD{19|84M9} 53|2212b8 2255r38 +627m8 Path_Addr{19|84M9} 53|2213b8 2222r67 +628m8 Path_Len{19|84M9} 53|2214b8 2233r54 2239r13 2249r41 +629m8 Buffer_Addr{19|84M9} 53|2215b8 2223r67 +630m8 Buffer_Len{19|84M9} 53|2216b8 2234r56 2240r13 2251r39 +631m8 Returned{19|84M9} 53|2217b8 2237m10 2243m10 2257m13 2266m13 2274m13 +. 2280m61 +632e8 Errno{36E9} 53|2218b8 2236m10 2242m10 2258m13 2265m13 2272m13 2280m71 +635N4*DT_FIFO +636N4*DT_CHR 53|2340r52 +637N4*DT_DIR 53|2338r52 +638N4*DT_BLK 53|2341r52 +639N4*DT_LNK 53|2339r52 +640N4*DT_REG 53|2337r52 +641R9*Dirent 647e15 648r8 655r52 53|2296r62 2329r33 2330r32 2344r50 +642m7*D_Ino{19|84M9} 649r7 53|2328m20 +643m7*D_Off{19|84M9} 650r7 53|2329m20 +644m7*D_Reclen{19|73M9} 651r7 53|2330m20 +645m7*D_Type{19|70M9} 652r7 53|2331m20 2335m41 +646a7*D_Name{string} 653r7 53|2332m20 2333m41 +655A9*Dirents(641R9)<19|84M9> 53|2301r20 +656U14*GetDEnts 657>8 658>8 659>8 660<8 661<8 53|2284b14 2353l8 2353t16 +657m8 FD{19|84M9} 53|2285b8 2299r69 +658m8 Buffer_Addr{19|84M9} 53|2286b8 2294r65 +659m8 Buffer_Len{19|84M9} 53|2287b8 2296r48 2306r54 +660m8 Returned{19|84M9} 53|2288b8 2307m10 2310m10 2344m13 2347m13 +661e8 Errno{36E9} 53|2289b8 2308m10 2311m10 2345m13 2348m13 +664U14*Sync 664<20 664<48 53|2355b14 2366l8 2366t12 +664m20 Returned{19|84M9} 53|2355b20 2361m10 2364m10 +664e48 Errno{36E9} 53|2355b48 2360m10 2363m10 +667U14*MakeNode 668>8 669>8 670>8 671>8 672>8 673<8 674<8 53|2368b14 2431l8 +. 2431t16 +668m8 Dir_FD{19|84M9} 53|2369b8 2406r38 +669m8 Path_Addr{19|84M9} 53|2370b8 2381r66 +670m8 Path_Len{19|84M9} 53|2371b8 2391r54 2395r13 2402r39 +671m8 Mode{19|84M9} 53|2372b8 2386r53 2413r14 +672m8 Dev{19|84M9} 53|2373b8 2377r28 +673m8 Returned{19|84M9} 53|2374b8 2393m10 2397m10 2408m13 2429m39 +674e8 Errno{36E9} 53|2375b8 2392m10 2396m10 2409m13 2429m49 +677U14*Unlink 678>8 679>8 680>8 681<8 682<8 53|2433b14 2474l8 2474t14 +678m8 Dir_FD{19|84M9} 53|2434b8 2464r43 +679m8 Path_Addr{19|84M9} 53|2435b8 2442r65 +680m8 Path_Len{19|84M9} 53|2436b8 2449r54 2453r13 2460r39 +681m8 Returned{19|84M9} 53|2437b8 2451m10 2455m10 2466m13 2472m40 +682e8 Errno{36E9} 53|2438b8 2450m10 2454m10 2467m13 2472m50 +685U14*Truncate 686>8 687>8 688<8 689<8 53|2476b14 2503l8 2503t16 +686m8 FD{19|84M9} 53|2477b8 2483r66 +687m8 New_Size{19|84M9} 53|2478b8 2497r52 +688m8 Returned{19|84M9} 53|2479b8 2489m10 2498m43 2501m13 +689e8 Errno{36E9} 53|2480b8 2488m10 2498m53 2500m13 +692R9*SockAddr_In 697e15 53|2532r23 2655r23 2920r26 3683r23 3755r23 4145r29 +. 4236r29 +693m7*Sin_Family{19|81M9} +694m7*Sin_Port{19|73M9} 53|2537r55 2660r55 2926m66 3686m46 3758m46 4152r66 +. 4243r66 +695m7*Padding{19|73M9} +696a7*Sin_Addr{37|23A9} 53|2536r33 2659r33 2925m44 3685m51 3757m50 4151r44 +. 4242r44 +698R9*SockAddr_In6 705e15 53|2541r23 2664r23 2931r26 3690r23 3762r23 4157r29 +. 4248r29 +699m7*Sin6_Family{19|81M9} +700m7*Sin6_Port{19|73M9} 53|2546r55 2669r55 2937m66 3693m46 3765m46 4164r66 +. 4255r66 +701m7*Padding{19|73M9} +702m7*Sin6_FlowInfo{19|81M9} +703a7*Sin6_Addr{37|24A9} 53|2545r33 2668r33 2936m44 3692m51 3764m50 4163r44 +. 4254r44 +704m7*Sin6_Scope_ID{19|81M9} +706R9*SockAddr_UNIX 710e15 +707m7*Sun_Family{19|81M9} +708m7*Length{19|81M9} +709m7*Path{41|67M9} +711U14*Bind 712>8 713>8 714>8 715<8 716<8 53|2505b14 2565l8 2565t12 +712m8 Sock_FD{19|84M9} 53|2506b8 2513r64 +713m8 Addr_Addr{19|84M9} 53|2507b8 2514r65 +714m8 Addr_Len{19|84M9} 53|2508b8 2522r70 +715m8 Returned{19|84M9} 53|2509b8 2520m10 2525m10 2560m10 2563m10 +716e8 Errno{36E9} 53|2510b8 2519m10 2524m10 2559m10 2562m10 +719U14*Symlink 720>8 721>8 722>8 723>8 724>8 725>8 726<8 727<8 53|2567b14 +. 2626l8 2626t15 +720m8 Dir_FD{19|84M9} 53|2568b8 2609r38 +721m8 Path_Addr{19|84M9} 53|2569b8 2579r66 +722m8 Path_Len{19|84M9} 53|2570b8 2588r54 2594r13 2603r41 +723m8 Target_Addr{19|84M9} 53|2571b8 2581r66 +724m8 Target_Len{19|84M9} 53|2572b8 2589r54 2595r13 2605r39 +725m8 Mode{19|84M9} 53|2573b8 2621r39 +726m8 Returned{19|84M9} 53|2574b8 2592m10 2598m10 2611m13 2624m40 +727e8 Errno{36E9} 53|2575b8 2591m10 2597m10 2612m13 2624m50 +730U14*Connect 731>8 732>8 733>8 734<8 735<8 53|2628b14 2688l8 2688t15 +731m8 Sock_FD{19|84M9} 53|2629b8 2636r64 +732m8 Addr_Addr{19|84M9} 53|2630b8 2637r65 +733m8 Addr_Len{19|84M9} 53|2631b8 2645r70 +734m8 Returned{19|84M9} 53|2632b8 2643m10 2648m10 2683m10 2686m10 +735e8 Errno{36E9} 53|2633b8 2642m10 2647m10 2682m10 2685m10 +738U14*Open_PTY 739>8 740<8 741<8 53|2690b14 2726l8 2726t16 +739m8 Result_Addr{19|84M9} 53|2691b8 2695r64 +740m8 Returned{19|84M9} 53|2692b8 2706m10 2721m10 2724m10 +741e8 Errno{36E9} 53|2693b8 2705m10 2720m10 2723m10 +744U14*FSync 745>8 746>8 747<8 748<8 53|2728b14 2753l8 2753t13 +745m8 FD{19|84M9} 53|2729b8 2735r63 +746m8 Flags{19|84M9} 53|2730b8 2736r47 +747m8 Returned{19|84M9} 53|2731b8 2741m10 2748m40 2751m13 +748e8 Errno{36E9} 53|2732b8 2740m10 2748m50 2750m13 +751U14*Link 752>8 753>8 754>8 755>8 756>8 757>8 758<8 759<8 53|2755b14 2811l8 +. 2811t12 +752m8 Source_Dir{19|84M9} 53|2756b8 2797r38 +753m8 Source_Addr{19|84M9} 53|2757b8 2767r65 +754m8 Source_Len{19|84M9} 53|2758b8 2776r53 2782r13 2791r38 +755m8 Desto_Dir{19|84M9} 53|2759b8 2798r38 +756m8 Desto_Addr{19|84M9} 53|2760b8 2769r65 +757m8 Desto_Len{19|84M9} 53|2761b8 2777r53 2783r13 2793r39 +758m8 Returned{19|84M9} 53|2762b8 2780m10 2786m10 2803m13 2809m40 +759e8 Errno{36E9} 53|2763b8 2779m10 2785m10 2804m13 2809m50 +762N4*PTRACE_SYSCALL_PIPE 53|2838r15 +763U14*PTrace 764>8 765>8 766>8 767>8 768<8 769<8 53|2813b14 2848l8 2848t14 +764m8 Request{19|84M9} 53|2814b8 2837r12 +765m8 Traced_PID{19|84M9} 53|2815b8 2824r50 +766m8 Traced_Addr{19|84M9} 53|2816b8 2821r28 +767m8 Result_Addr{19|84M9} 53|2817b8 2839r52 +768m8 Returned{19|84M9} 53|2818b8 2828m10 2833m10 2842m13 2847m7 +769e8 Errno{36E9} 53|2819b8 2827m10 2831m10 2841m13 2846m7 +772U14*Listen 773>8 774>8 775<8 776<8 53|2850b14 2874l8 2874t14 +773m8 Sock_FD{19|84M9} 53|2851b8 2857r63 +774m8 Backlog{19|84M9} 53|2852b8 2866r60 +775m8 Returned{19|84M9} 53|2853b8 2861m10 2864m10 2868m13 2871m13 +776e8 Errno{36E9} 53|2854b8 2860m10 2863m10 2867m13 2870m13 +779U14*Sys_Accept 780>8 781>8 782>8 783>8 784<8 785<8 53|2876b14 2979l8 2979t18 +780m8 Sock_FD{19|84M9} 53|2877b8 2886r64 +781m8 Addr_Addr{19|84M9} 53|2878b8 2890r64 +782m8 Addr_Len{19|84M9} 53|2879b8 2892r64 +783m8 Flags{19|84M9} 53|2880b8 2887r49 2888r49 2889r49 +784m8 Returned{19|84M9} 53|2881b8 2900m10 2904m10 2962m13 2967m13 2971m10 +. 2978m7 +785e8 Errno{36E9} 53|2882b8 2899m10 2903m10 2961m13 2966m13 2970m10 2977m7 +788N4*RLIMIT_CORE 53|5928r15 +789N4*RLIMIT_CPU 53|5929r15 +790N4*RLIMIT_FSIZE 53|5930r15 +791N4*RLIMIT_NOFILE 53|5931r15 +792N4*RLIMIT_STACK 53|5932r15 +793N4*RLIMIT_AS 53|5933r15 +794U14*Get_RLimit 795>8 796<8 797<8 53|2981b14 2999l8 2999t18 +795m8 Limit{19|84M9} 53|2982b8 2990r30 +796m8 Returned{19|84M9} 53|2983b8 2993m10 2998m7 +797e8 Errno{36E9} 53|2984b8 2992m10 2997m7 +800U14*Set_RLimit 801>8 802>8 803<8 804<8 53|3001b14 3026l8 3026t18 +801m8 Limit{19|84M9} 53|3002b8 3010r30 +802m8 Data{19|84M9} 53|3003b8 3015r44 +803m8 Returned{19|84M9} 53|3004b8 3019m13 3025m7 +804e8 Errno{36E9} 53|3005b8 3018m13 3024m7 +807N4*F_OK 53|3096r36 +808N4*R_OK 53|3097r36 +809N4*W_OK 53|3098r36 +810N4*X_OK 53|3099r36 +811U14*FAccess 812>8 813>8 814>8 815>8 816>8 817<8 818<8 53|3028b14 3103l8 +. 3103t15 +812m8 Dir_FD{19|84M9} 53|3029b8 3062r38 +813m8 Path_Addr{19|84M9} 53|3030b8 3039r65 +814m8 Path_Len{19|84M9} 53|3031b8 3046r54 3050r13 3059r39 +815m8 Mode{19|84M9} 53|3032b8 3096r27 3097r27 3098r27 3099r27 +816m8 Flags{19|84M9} 53|3033b8 3081r29 3089r11 +817m8 Returned{19|84M9} 53|3034b8 3048m10 3052m10 3065m13 3084m13 3102m34 +818e8 Errno{36E9} 53|3035b8 3047m10 3051m10 3064m13 3083m13 3102m44 +821N4*POLLIN 53|3214r51 3215r61 +822N4*POLLOUT 53|3217r52 3218r61 +823N4*POLLPRI 53|3220r55 3221r61 +824N4*POLLHUP 53|3227r61 +825N4*POLLERR 53|3224r61 +826N4*POLLNVAL 53|3179r40 +827R9*Poll_FD 831e15 832r53 53|3125r61 +828m7*FD{19|81M9} 53|3172r27 3177r60 +829m7*Events{19|73M9} 53|3214r40 3217r41 3220r44 +830m7*Out_Events{19|73M9} 53|3169m23 3179m26 3215m26 3215r47 3218m26 3218r47 +. 3221m26 3221r47 3224m26 3224r47 3227m26 3227r47 3231r26 +832A9*Poll_FDs(827R9)<19|84M9> 53|3161r17 +833U14*PPoll 834>8 835>8 836>8 837>8 838<8 839<8 53|3105b14 3250l8 3250t13 +834m8 FDs_Addr{19|84M9} 53|3106b8 3119r65 +835m8 FDs_Count{19|84M9} 53|3107b8 3125r48 3161r32 +836m8 Timeout{19|84M9} 53|3108b8 3121r65 +837m8 Sigmask{19|84M9} 53|3109b8 3123r65 +838m8 Returned{19|84M9} 53|3110b8 3139m10 3146m13 3249m7 +839e8 Errno{36E9} 53|3111b8 3138m10 3145m13 3248m7 +842U14*Get_EUID 842<24 842<52 53|3252b14 3259l8 3259t16 +842m24 Returned{19|84M9} 53|3252b24 3258m7 +842e52 Errno{36E9} 53|3252b52 3257m7 +845U14*Set_UIDs 846>8 847>8 848<8 849<8 53|3261b14 3292l8 3292t16 +846m8 UID{19|84M9} 53|3262b8 3274r13 3275r58 +847m8 EUID{19|84M9} 53|3263b8 3271r13 3272r68 3279r13 3280r16 3281r71 +848m8 Returned{19|84M9} 53|3264b8 3284m16 3291m7 +849e8 Errno{36E9} 53|3265b8 3283m16 3290m7 +852U14*Fchmod 853>8 854>8 855>8 856>8 857>8 858<8 859<8 53|3294b14 3381l8 +. 3381t14 +853m8 Dir_FD{19|84M9} 53|3295b8 3327r39 3341r41 +854m8 Path_Addr{19|84M9} 53|3296b8 3305r66 +855m8 Path_Len{19|84M9} 53|3297b8 3314r54 3318r13 3338r42 +856m8 Mode{19|84M9} 53|3298b8 3378r32 +857m8 Flags{19|84M9} 53|3299b8 3326r11 3358r32 +858m8 Returned{19|84M9} 53|3300b8 3316m10 3320m10 3331m13 3344m16 3361m16 +. 3368m16 3380m34 +859e8 Errno{36E9} 53|3301b8 3315m10 3319m10 3330m13 3343m16 3360m16 3367m16 +. 3380m44 +862U14*Umask 863>8 864<8 865<8 53|3383b14 3395l8 3395t13 +863m8 Mode{19|84M9} 53|3384b8 3392r43 +864m8 Returned{19|84M9} 53|3385b8 3394m7 +865e8 Errno{36E9} 53|3386b8 3393m7 +867N4*RB_HALT 53|3415r15 +868N4*RB_POWEROFF 53|3416r15 +869N4*RB_RESTART 53|3417r15 +870N4*RB_ERROR_RET 53|3404r48 +871U14*Reboot 872>8 873>8 874<8 875<8 53|3397b14 3435l8 3435t14 +872m8 Command{19|84M9} 53|3398b8 3414r12 +873m8 Flags{19|84M9} 53|3399b8 3404r38 +874m8 Returned{19|84M9} 53|3400b8 3410m10 3420m13 3430m10 +875e8 Errno{36E9} 53|3401b8 3408m10 3419m13 3427m46 3428m46 +878U14*Fchown 879>8 880>8 881>8 882>8 883>8 884>8 885<8 886<8 53|3437b14 +. 3525l8 3525t14 +879m8 Dir_FD{19|84M9} 53|3438b8 3471r39 3485r41 +880m8 Path_Addr{19|84M9} 53|3439b8 3449r66 +881m8 Path_Len{19|84M9} 53|3440b8 3458r54 3462r13 3482r42 +882m8 User{19|84M9} 53|3441b8 3521r24 +883m8 Group{19|84M9} 53|3442b8 3522r24 +884m8 Flags{19|84M9} 53|3443b8 3470r11 3502r32 +885m8 Returned{19|84M9} 53|3444b8 3460m10 3464m10 3475m13 3488m16 3505m16 +. 3512m16 3524m34 +886e8 Errno{36E9} 53|3445b8 3459m10 3463m10 3474m13 3487m16 3504m16 3511m16 +. 3524m44 +889U14*PRead 890>8 891>8 892>8 893>8 894<8 895<8 53|3527b14 3582l8 3582t13 +890m8 File_D{19|84M9} 53|3528b8 3539r68 +891m8 Buffer{19|84M9} 53|3529b8 3535r64 +892m8 Count{19|84M9} 53|3530b8 3545r53 3553r13 3556r32 +893m8 Offset{19|84M9} 53|3531b8 3572r61 +894m8 Returned{19|84M9} 53|3532b8 3547m10 3551m10 3569m19 3574m69 3578m16 +895e8 Errno{36E9} 53|3533b8 3546m10 3550m10 3568m19 3575m41 3577m16 +898U14*PWrite 899>8 900>8 901>8 902>8 903<8 904<8 53|3584b14 3646l8 3646t14 +899m8 File_D{19|84M9} 53|3585b8 3596r68 +900m8 Buffer{19|84M9} 53|3586b8 3592r64 +901m8 Count{19|84M9} 53|3587b8 3602r53 3610r13 3613r32 +902m8 Offset{19|84M9} 53|3588b8 3628r22 3636r62 +903m8 Returned{19|84M9} 53|3589b8 3604m10 3608m10 3626m19 3632m19 3638m69 +. 3642m16 +904e8 Errno{36E9} 53|3590b8 3603m10 3607m10 3625m19 3631m19 3639m41 3641m16 +906U14*Get_Sock_Name 907>8 908>8 909>8 910<8 911<8 53|3648b14 3718l8 3718t21 +907m8 Sock_FD{19|84M9} 53|3649b8 3657r65 +908m8 Addr_Addr{19|84M9} 53|3650b8 3658r66 +909m8 Addr_Len{19|84M9} 53|3651b8 3660r66 +910m8 Returned{19|84M9} 53|3652b8 3666m10 3707m10 3710m10 3717m7 +911e8 Errno{36E9} 53|3653b8 3665m10 3706m10 3709m10 3716m7 +913U14*Get_Peer_Name 914>8 915>8 916>8 917<8 918<8 53|3720b14 3790l8 3790t21 +914m8 Sock_FD{19|84M9} 53|3721b8 3729r65 +915m8 Addr_Addr{19|84M9} 53|3722b8 3730r66 +916m8 Addr_Len{19|84M9} 53|3723b8 3732r66 +917m8 Returned{19|84M9} 53|3724b8 3738m10 3779m10 3782m10 3789m7 +918e8 Errno{36E9} 53|3725b8 3737m10 3778m10 3781m10 3788m7 +920N4*SHUT_RD 53|3809r15 +921N4*SHUT_RDWR 53|3813r15 +922N4*SHUT_WR 53|3811r15 +923U14*Shutdown 924>8 925>8 926<8 927<8 53|3792b14 3828l8 3828t16 +924m8 Sock_FD{19|84M9} 53|3793b8 3799r63 +925m8 How{19|84M9} 53|3794b8 3808r12 +926m8 Returned{19|84M9} 53|3795b8 3804m10 3817m13 3823m10 3826m10 +927e8 Errno{36E9} 53|3796b8 3803m10 3816m13 3822m10 3825m10 +930N4*FUTEX_WAIT 53|3900r18 +931N4*FUTEX_WAKE 53|3908r18 +933R9*Futex_Item 937e14 938r55 53|3845r52 +934m7*Address{19|84M9} 53|3885r46 +935m7*Expected{19|81M9} 53|3895r62 +936m7*Flags{19|81M9} +938A9*Futex_Item_Arr(933R9) 53|3879r20 +939U14*Futex 940>8 941>8 942>8 943>8 944<8 945<8 53|3830b14 3923l8 3923t13 +940m8 Operation{19|84M9} 53|3831b8 3899r15 +941m8 Address{19|84M9} 53|3832b8 3840r61 +942m8 Count{19|84M9} 53|3833b8 3845r43 3871r13 3878r49 +943m8 Timeout{19|84M9} 53|3834b8 3842r61 +944m8 Returned{19|84M9} 53|3835b8 3873m10 3902m19 3905m19 3911m16 3916m7 +. 3922m7 +945e8 Errno{36E9} 53|3836b8 3872m10 3903m19 3906m19 3912m16 3917m7 3921m7 +948N4*CLOCK_REALTIME 53|3956r24 3967r24 3975r24 +949N4*CLOCK_MONOTONIC 53|3953r24 3964r24 4031r27 4041r27 +950N4*CLOCK_GETRES 53|3951r18 +951N4*CLOCK_GETTIME 53|3962r18 +952N4*CLOCK_SETTIME 53|3973r18 +953U14*Clock 954>8 955>8 956>8 957<8 958<8 53|3925b14 3993l8 3993t13 +954m8 Operation{19|84M9} 53|3926b8 3950r15 +955m8 Clock_ID{19|84M9} 53|3927b8 3952r21 3963r21 3974r21 +956m8 Address{19|84M9} 53|3928b8 3934r60 +957m8 Returned{19|84M9} 53|3929b8 3937m10 3943m10 3986m7 3991m7 +958e8 Errno{36E9} 53|3930b8 3938m10 3941m10 3987m7 3992m7 +961N4*TIMER_ABSTIME 53|4027r24 +962U14*Clock_Nanosleep 963>8 964>8 965>8 966>8 967<8 968<8 53|3995b14 4056l8 +. 4056t23 +963m8 Clock_ID{19|84M9} 53|3996b8 4031r16 4041r16 +964m8 Flags{19|84M9} 53|3997b8 4027r14 +965m8 Request_Addr{19|84M9} 53|3998b8 4005r63 +966m8 Remain_Addr{19|84M9} 53|3999b8 4006r63 +967m8 Returned{19|84M9} 53|4000b8 4011m10 4017m10 4053m10 +968e8 Errno{36E9} 53|4001b8 4012m10 4015m10 4054m10 +971R9*RUsage 974e14 53|4068r49 4075r18 +972r7*User_Time{253R9} 53|4080m56 4081m25 4085m57 4086m26 +973r7*System_Time{253R9} 53|4079m55 4080m25 4084m32 4085m26 +976N4*RUSAGE_SELF 53|4078r18 +977N4*RUSAGE_CHILDREN 53|4082r18 +978U14*Get_RUsage 979>8 980>8 981<8 982<8 53|4058b14 4095l8 4095t18 +979m8 Who{19|84M9} 53|4059b8 4077r15 +980m8 Usage_Addr{19|84M9} 53|4060b8 4066r60 +981m8 Returned{19|84M9} 53|4061b8 4069m10 4088m16 4092m10 +982e8 Errno{36E9} 53|4062b8 4070m10 4089m16 4093m10 +984U14*RecvFrom 985>8 986>8 987>8 988>8 989>8 990>8 991<8 992<8 53|4097b14 +. 4186l8 4186t16 +985m8 Sock_FD{19|84M9} 53|4098b8 4115r68 +986m8 Buffer{19|84M9} 53|4099b8 4109r64 +987m8 Count{19|84M9} 53|4100b8 4120r53 4130r13 4133r32 +988m8 Flags{19|84M9} 53|4101b8 4107r28 +989m8 Addr_Addr{19|84M9} 53|4102b8 4111r69 +990m8 Addr_Len{19|84M9} 53|4103b8 4121r67 +991m8 Returned{19|84M9} 53|4104b8 4123m10 4127m10 4184m62 +992e8 Errno{36E9} 53|4105b8 4124m10 4128m10 4184m72 +994U14*SendTo 995>8 996>8 997>8 998>8 999>8 1000>8 1001<8 1002<8 53|4188b14 +. 4277l8 4277t14 +995m8 Sock_FD{19|84M9} 53|4189b8 4206r68 +996m8 Buffer{19|84M9} 53|4190b8 4200r64 +997m8 Count{19|84M9} 53|4191b8 4211r53 4221r13 4224r32 +998m8 Flags{19|84M9} 53|4192b8 4198r28 +999m8 Addr_Addr{19|84M9} 53|4193b8 4202r69 +1000m8 Addr_Len{19|84M9} 53|4194b8 4212r67 +1001m8 Returned{19|84M9} 53|4195b8 4214m10 4218m10 4275m62 +1002e8 Errno{36E9} 53|4196b8 4215m10 4219m10 4275m72 +1004N4*NETINTER_SET_BLOCK 53|4319r15 +1005N4*NETINTER_SET_STATIC_IP4 53|4324r15 +1006N4*NETINTER_SET_STATIC_IP6 53|4330r15 +1007R9*Addr4_NetInterface 1010e15 53|4296r13 +1008a7*IP{37|23A9} 53|4329r28 +1009a7*Sub{37|23A9} 53|4329r36 +1011R9*Addr6_NetInterface 1014e15 53|4297r13 +1012a7*IP{37|24A9} 53|4335r28 +1013a7*Sub{37|24A9} 53|4335r36 +1015U14*Config_NetInterface 1016>8 1017>8 1018>8 1019<8 1020<8 53|4279b14 +. 4353l8 4353t27 +1016m8 InterDev{19|84M9} 53|4280b8 4288r64 +1017m8 Operation{19|84M9} 53|4281b8 4318r12 +1018m8 Arg_Addr{19|84M9} 53|4282b8 4289r65 +1019m8 Returned{19|84M9} 53|4283b8 4302m10 4305m10 4312m10 4341m10 4344m10 +. 4351m7 +1020e8 Errno{36E9} 53|4284b8 4300m10 4306m10 4313m10 4342m10 4345m10 4352m7 +1022U14*UTimes 1023>8 1024>8 1025>8 1026>8 1027>8 1028<8 1029<8 53|4355b14 +. 4451l8 4451t14 +1023m8 Dir_FD{19|84M9} 53|4356b8 4390r39 4404r41 +1024m8 Path_Addr{19|84M9} 53|4357b8 4366r66 +1025m8 Path_Len{19|84M9} 53|4358b8 4375r54 4381r13 4401r42 +1026m8 Time_Addr{19|84M9} 53|4359b8 4367r66 +1027m8 Flags{19|84M9} 53|4360b8 4389r11 4421r32 +1028m8 Returned{19|84M9} 53|4361b8 4379m10 4383m10 4394m13 4407m16 4424m16 +. 4431m16 4449m37 +1029e8 Errno{36E9} 53|4362b8 4378m10 4382m10 4393m13 4406m16 4423m16 4430m16 +. 4449m47 +1031U14*Create_TCluster 1032<8 1033<8 53|4453b14 4475l8 4475t23 +1032m8 Returned{19|84M9} 53|4454b8 4463m10 4470m10 4473m10 +1033e8 Errno{36E9} 53|4455b8 4461m10 4469m10 4472m10 +1035U14*Switch_TCluster 1036>8 1037>8 1038<8 1039<8 53|4477b14 4500l8 4500t23 +1036m8 Cluster{19|84M9} 53|4478b8 4484r50 +1037m8 Thread{19|84M9} 53|4479b8 4485r50 +1038m8 Returned{19|84M9} 53|4480b8 4490m10 4495m10 4498m10 +1039e8 Errno{36E9} 53|4481b8 4488m10 4494m10 4497m10 +1041N4*SIG_BLOCK 53|4544r21 +1042N4*SIG_UNBLOCK 53|4548r21 +1043N4*SIG_SETMASK 53|4546r21 +1044U14*Sigprocmask 1045>8 1046>8 1047>8 1048<8 1049<8 53|4502b14 4565l8 +. 4565t19 +1045m8 How{19|84M9} 53|4503b8 4543r18 +1046m8 Set_Addr{19|84M9} 53|4504b8 4515r62 +1047m8 Old_Addr{19|84M9} 53|4505b8 4516r62 +1048m8 Returned{19|84M9} 53|4506b8 4552m19 4559m7 4564m7 +1049e8 Errno{36E9} 53|4507b8 4551m19 4558m7 4563m7 +1051N4*SIG_ERR +1052N4*SIG_IGN 53|4616r21 +1053N4*SIG_DFL 53|4614r21 +1054R9*Sigaction_Info 1058e14 53|4590r54 4596r19 4605r54 4611r19 +1055m7*Handler{41|67M9} 53|4600m51 4613r34 4621r57 +1056m7*Mask{19|84M9} 53|4599m17 +1057m7*Flags{19|81M9} 53|4598m17 +1059U14*Sigaction 1060>8 1061>8 1062>8 1063<8 1064<8 53|4567b14 4633l8 4633t17 +1060m8 Signal{19|84M9} 53|4568b8 4582r25 +1061m8 Act_Addr{19|84M9} 53|4569b8 4576r62 +1062m8 Old_Addr{19|84M9} 53|4570b8 4577r62 +1063m8 Returned{19|84M9} 53|4571b8 4585m10 4627m7 4632m7 +1064e8 Errno{36E9} 53|4572b8 4584m10 4626m7 4631m7 +1066U14*Send_Signal 1067>8 1068>8 1069<8 1070<8 53|4635b14 4678l8 4678t19 +1067m8 Target{19|84M9} 53|4636b8 4642r51 +1068m8 Signal{19|84M9} 53|4637b8 4647r25 +1069m8 Returned{19|84M9} 53|4638b8 4650m10 4656m10 4660m10 4670m13 4677m7 +1070e8 Errno{36E9} 53|4639b8 4649m10 4655m10 4659m10 4669m13 4676m7 +1072N4*PRIO_PROCESS 53|4697r15 4766r15 +1073N4*PRIO_PGRP 53|4705r15 4774r15 +1074N4*PRIO_USER 53|4705r27 4774r27 +1075N4*PRIO_THREAD 53|4709r15 4778r15 +1076U14*Get_Prio 1077>8 1078>8 1079<8 1080<8 53|4680b14 4735l8 4735t16 +1077m8 Which{19|84M9} 53|4681b8 4696r12 +1078m8 Who{19|84M9} 53|4682b8 4698r16 4699r42 4710r16 4713r40 +1079m8 Returned{19|84M9} 53|4683b8 4693m10 4707m13 4724m10 4726m10 4734m7 +1080e8 Errno{36E9} 53|4684b8 4691m10 4706m13 4729m7 4733m7 +1082U14*Set_Prio 1083>8 1084>8 1085>8 1086<8 1087<8 53|4737b14 4799l8 4799t16 +1083m8 Which{19|84M9} 53|4738b8 4765r12 +1084m8 Who{19|84M9} 53|4739b8 4767r16 4768r42 4779r16 4782r40 +1085m8 Nice{19|84M9} 53|4740b8 4755r10 4756r29 4757r13 4760r63 +1086m8 Returned{19|84M9} 53|4741b8 4751m10 4776m13 4793m7 4798m7 +1087e8 Errno{36E9} 53|4742b8 4749m10 4775m13 4792m7 4797m7 +1089U14*Get_GID 1089<23 1089<51 53|4801b14 4808l8 4808t15 +1089m23 Returned{19|84M9} 53|4801b23 4807m7 +1089e51 Errno{36E9} 53|4801b51 4806m7 +1091U14*Get_EGID 1091<24 1091<52 53|4810b14 4817l8 4817t16 +1091m24 Returned{19|84M9} 53|4810b24 4816m7 +1091e52 Errno{36E9} 53|4810b52 4815m7 +1094U14*Set_GIDs 1095>8 1096>8 1097<8 1098<8 53|4819b14 4850l8 4850t16 +1095m8 GID{19|84M9} 53|4820b8 4832r13 4833r58 +1096m8 EGID{19|84M9} 53|4821b8 4829r13 4830r68 4837r13 4838r16 4839r71 +1097m8 Returned{19|84M9} 53|4822b8 4842m16 4849m7 +1098e8 Errno{36E9} 53|4823b8 4841m16 4848m7 +1101U14*Get_Groups 1102>8 1103>8 1104<8 1105<8 53|4852b14 4879l8 4879t18 +1102m8 Count{19|84M9} 53|4853b8 4862r52 +1103m8 Addr{19|84M9} 53|4854b8 4860r60 +1104m8 Returned{19|84M9} 53|4855b8 4867m10 4874m10 4877m10 +1105e8 Errno{36E9} 53|4856b8 4866m10 4873m10 4876m10 +1108U14*Set_Groups 1109>8 1110>8 1111<8 1112<8 53|4881b14 4913l8 4913t18 +1109m8 Count{19|84M9} 53|4882b8 4891r52 4894r10 +1110m8 Addr{19|84M9} 53|4883b8 4889r60 4894r24 +1111m8 Returned{19|84M9} 53|4884b8 4899m13 4906m13 4912m7 +1112e8 Errno{36E9} 53|4885b8 4898m13 4905m13 4911m7 +1115U14*TTY_Name 1116>8 1117>8 1118>8 1119<8 1120<8 53|4915b14 4960l8 4960t16 +1116m8 FD{19|84M9} 53|4916b8 4926r64 +1117m8 Addr{19|84M9} 53|4917b8 4924r65 +1118m8 Length{19|84M9} 53|4918b8 4928r37 4930r49 4947r22 +1119m8 Returned{19|84M9} 53|4919b8 4932m10 4936m10 4946m45 4946r45 4947r10 +. 4951r21 4954m7 4959m7 +1120e8 Errno{36E9} 53|4920b8 4931m10 4935m10 4953m7 4958m7 +1123N4*POSIX_FADV_NORMAL 53|4985r15 +1124N4*POSIX_FADV_SEQUENTIAL 53|4985r35 +1125N4*POSIX_FADV_NOREUSE 53|4985r59 +1126N4*POSIX_FADV_DONTNEED 53|4989r15 +1127N4*POSIX_FADV_WILLNEED 53|4986r15 +1128N4*POSIX_FADV_RANDOM 53|4986r37 +1129U14*FAdvise 1130>8 1131>8 1132>8 1133>8 1134<8 1135<8 53|4962b14 5001l8 +. 5001t15 +1130m8 FD{19|84M9} 53|4963b8 4973r64 +1131m8 Offset{19|84M9} 53|4964b8 4970r28 +1132m8 Length{19|84M9} 53|4965b8 4971r28 +1133m8 Advice{19|84M9} 53|4966b8 4984r12 +1134m8 Returned{19|84M9} 53|4967b8 4988m13 4991m39 5000m7 +1135e8 Errno{36E9} 53|4968b8 4977m10 4980m10 4987m13 4991m49 4993m13 +1137N4*SHM_RDONLY 53|5016r43 +1138N4*SHM_RND 53|5034r24 +1139U14*SHMAt 1140>8 1141>8 1142>8 1143<8 1144<8 53|5003b14 5066l8 5066t13 +1140m8 ID{19|84M9} 53|5004b8 5012r56 +1141m8 Addr{19|84M9} 53|5005b8 5033r10 5035r40 5036r17 5039r22 +1142m8 Flags{19|84M9} 53|5006b8 5016r33 5034r14 +1143m8 Returned{19|84M9} 53|5007b8 5026m13 5055m13 5058m13 5065m7 +1144e8 Errno{36E9} 53|5008b8 5025m13 5054m13 5057m13 5064m7 +1146R9*IPC_Perms 1154e14 1157r20 +1147m7*IPC_Perm_Key{19|81M9} 53|5118m33 +1148m7*UID{19|81M9} 53|5110r45 5119m33 +1149m7*GID{19|81M9} 53|5111r45 5120m33 +1150m7*CUID{19|81M9} 53|5121m33 +1151m7*CGID{19|81M9} 53|5122m33 +1152m7*Mode{19|81M9} 53|5112r58 5123m33 +1153m7*IPC_Perm_Seq{19|81M9} +1156R9*SHMID_DS 1165e14 53|5098r55 5105r23 +1157r7*SHM_Perm{1146R9} 53|5110r36 5111r36 5112r49 5118m24 5119m24 5120m24 +. 5121m24 5122m24 5123m24 +1158m7*SHM_SegSz{19|84M9} 53|5124m24 +1159m7*SHM_ATime{19|84M9} +1160m7*SHM_DTime{19|84M9} +1161m7*SHM_CTime{19|84M9} +1162m7*SHM_CPID{19|81M9} +1163m7*SHM_LPID{19|81M9} +1164m7*SHM_NAttch{19|84M9} 53|5125m24 +1167N4*IPC_RMID 53|5095r15 +1168N4*IPC_SET 53|5097r15 5107r25 +1169N4*IPC_STAT 53|5097r25 +1170U14*SHMCtl 1171>8 1172>8 1173>8 1174<8 1175<8 53|5068b14 5139l8 5139t14 +1171m8 ID{19|84M9} 53|5069b8 5075r55 +1172m8 CMD{19|84M9} 53|5070b8 5094r12 5107r19 +1173m8 Buffer{19|84M9} 53|5071b8 5078r65 +1174m8 Returned{19|84M9} 53|5072b8 5089m13 5100m16 5133m7 5138m7 +1175e8 Errno{36E9} 53|5073b8 5088m13 5099m16 5132m7 5137m7 +1177U14*SHMDt 1178>8 1179<8 1180<8 53|5141b14 5183l8 5183t13 +1178m8 Address{19|84M9} 53|5142b8 5156r62 5169r60 +1179m8 Returned{19|84M9} 53|5143b8 5174m13 5177m13 5181m10 +1180e8 Errno{36E9} 53|5144b8 5173m13 5176m13 5180m10 +1182N4*IPC_PRIVATE 53|5204r16 +1183N4*IPC_CREAT 53|5207r24 +1184N4*IPC_EXCL +1185N4*IPC_NOWAIT +1186U14*SHMGet 1187>8 1188>8 1189>8 1190<8 1191<8 53|5185b14 5221l8 5221t14 +1187m8 Key{19|84M9} 53|5186b8 5194r56 5204r10 +1188m8 Size{19|84M9} 53|5187b8 5196r54 +1189m8 Flags{19|84M9} 53|5188b8 5195r38 5207r14 +1190m8 Returned{19|84M9} 53|5189b8 5216m10 5219m10 +1191e8 Errno{36E9} 53|5190b8 5215m10 5218m10 +1193N4*SOL_SOCKET 53|5242r22 5302r22 +1195N4*SO_ACCEPTCONN 53|5253r18 +1196N4*SO_ERROR 53|5255r18 +1197N4*SO_SNDBUF 53|5257r18 5310r15 +1198N4*SO_TYPE 53|5259r18 +1200U14*GetSockOpt 1201>8 1202>8 1203>8 1204>8 1205>8 1206<8 1207<8 53|5223b14 +. 5281l8 5281t18 +1201m8 Sock{19|84M9} 53|5224b8 5236r64 +1202m8 Level{19|84M9} 53|5225b8 5242r13 +1203m8 Opt{19|84M9} 53|5226b8 5252r15 +1204m8 Addr{19|84M9} 53|5227b8 5237r65 +1205m8 Len{19|84M9} 53|5228b8 5232r28 +1206m8 Returned{19|84M9} 53|5229b8 5274m7 5280m7 +1207e8 Errno{36E9} 53|5230b8 5240m10 5245m10 5273m7 5278m7 +1209U14*SetSockOpt 1210>8 1211>8 1212>8 1213>8 1214>8 1215<8 1216<8 53|5283b14 +. 5324l8 5324t18 +1210m8 Sock{19|84M9} 53|5284b8 5296r64 +1211m8 Level{19|84M9} 53|5285b8 5302r13 +1212m8 Opt{19|84M9} 53|5286b8 5309r12 +1213m8 Addr{19|84M9} 53|5287b8 5297r65 +1214m8 Len{19|84M9} 53|5288b8 5292r28 +1215m8 Returned{19|84M9} 53|5289b8 5317m7 5323m7 +1216e8 Errno{36E9} 53|5290b8 5300m10 5305m10 5316m7 5321m7 +1218U14*Get_Thread_Name 1219>8 1220>8 1221>8 1222<8 1223<8 53|5326b14 5365l8 +. 5365t23 +1219m8 TID{19|84M9} 53|5327b8 5335r71 +1220m8 Addr{19|84M9} 53|5328b8 5336r60 +1221m8 Length{19|84M9} 53|5329b8 5338r49 5341r13 5347r38 +1222m8 Returned{19|84M9} 53|5330b8 5353m13 5364m7 +1223e8 Errno{36E9} 53|5331b8 5339m10 5354m13 5362m7 +1225U14*Set_Thread_Name 1226>8 1227>8 1228>8 1229<8 1230<8 53|5367b14 5405l8 +. 5405t23 +1226m8 TID{19|84M9} 53|5368b8 5376r71 +1227m8 Addr{19|84M9} 53|5369b8 5377r60 +1228m8 Length{19|84M9} 53|5370b8 5379r49 5382r13 5388r38 +1229m8 Returned{19|84M9} 53|5371b8 5393m13 5404m7 +1230e8 Errno{36E9} 53|5372b8 5380m10 5394m13 5402m7 +1232N4*MEMORY_FAIL_PANIC 53|5429r45 5457r21 +1233N4*MEMORY_FAIL_SOFT_KILL 53|5431r45 5458r21 +1234N4*MEMORY_FAIL_HARD_KILL 53|5433r45 5459r21 +1235N4*OOM_ALLOW_PROC_KILL 53|5438r39 5463r41 +1236R9*Failure_Struct 1239e14 53|5419r18 5420r18 5425r50 5455r50 +1237m7*Memory_Failure{19|84M9} 53|5429m27 5431m27 5433m27 5456r26 +1238m7*OOM_Failure{19|84M9} 53|5438m24 5440m24 5463r25 +1241U14*Failure_Policy 1242>8 1243>8 1244<8 1245<8 53|5407b14 5488l8 5488t22 +1242m8 Old_Addr{19|84M9} 53|5408b8 5417r63 +1243m8 New_Addr{19|84M9} 53|5409b8 5418r63 +1244m8 Returned{19|84M9} 53|5410b8 5451m13 5477m7 5482m7 5487m7 +1245e8 Errno{36E9} 53|5411b8 5449m13 5476m7 5481m7 5486m7 +1249U14*Do_Exit 1249>23 1249>35 53|54s7 5490b14 5505l8 5505t15 5832s13 +1249i23 Proc{51|33I9} 53|5490b23 5500r39 5501r39 5502r39 5503r39 +1249m35 Code{19|70M9} 53|5490b35 5503r45 +1250U14*Do_Exit 1250>23 1250>35 53|5507b14 5522l8 5522t15 5579s13 +1250i23 Proc{51|33I9} 53|5507b23 5517r39 5518r39 5519r39 5520r39 +1250e35 Sig{51|82E9} 53|5507b35 5520r45 +1253U14*Pre_Syscall_Hook 1253>32 53|5524b14 5529l8 5529t24 +1253r32 State{8|22R15} 53|5524b32 5528r36 +1254U14*Post_Syscall_Hook 1254>33 53|5531b14 5536l8 5536t25 +1254r33 State{8|22R15} 53|5531b33 5534r36 +1257V13*Check_Userland_Mappability{boolean} 1258>8 1259>8 1260>8 53|474s14 +. 3866s17 3867s17 3887s20 5982b13 6006l8 6006t34 +1258p8 Map{12|43P9} 53|5983b8 5996r33 +1259m8 Addr{35|35M12} 53|5984b8 5991r10 5997r45 +1260m8 Byte_Count{19|84M9} 53|5985b8 5991r34 5998r48 +1264U14 Do_Remote_Exit 1264>30 1264>42 53|5538b14 5543l8 5543t22 +1264i30 Proc{51|33I9} 53|5538b30 5540r39 5541r39 5542r39 +1264m42 Code{19|70M9} 53|5538b42 5542r45 +1266U14 Common_Syscall_Hook 1267>8 1268>8 53|5528s7 5534s7 5545b14 5596l8 +. 5596t27 +1267i8 Thread{40|27I9} 53|5546b8 5592r45 +1268r8 State{8|22R15} 53|5547b8 5592r55 +1271U14 Translate_Status 1272>8 1273>8 1274<8 1275<8 53|255s16 341s16 1278s10 +. 2035s10 2280s10 2429s10 2472s10 2498s13 2624s10 2748s13 2809s10 3102s7 +. 3380s7 3524s7 3574s16 3638s16 4449s10 4991s13 5598b14 5619l8 5619t24 +1272e8 Status{54|234E9} 53|5599b8 5605r12 +1273m8 Success_Return{19|84M9} 53|5600b8 5608r25 +1274m8 Returned{19|84M9} 53|5601b8 5608m13 5618m7 +1275e8 Errno{36E9} 53|5602b8 5607m13 5610m39 5611m39 5612m39 5613m39 5614m39 +. 5615m39 5616m39 +1277U14 Translate_Status 1278>8 1279>8 1280<8 1281<8 53|276s16 362s16 4184s10 +. 4275s10 5621b14 5637l8 5637t24 +1278e8 Status{27|40E9} 53|5622b8 5628r12 +1279m8 Success_Return{19|84M9} 53|5623b8 5631r25 +1280m8 Returned{19|84M9} 53|5624b8 5631m13 5636m7 +1281e8 Errno{36E9} 53|5625b8 5630m13 5633m32 5634m32 +1283U14 Translate_Status 1284>8 1285>8 1286<8 1287<8 53|259s16 345s16 5639b14 +. 5655l8 5655t24 +1284e8 Status{22|106E9} 53|5640b8 5646r12 +1285m8 Success_Return{19|84M9} 53|5641b8 5649r25 +1286m8 Returned{19|84M9} 53|5642b8 5649m13 5654m7 +1287e8 Errno{36E9} 53|5643b8 5648m13 5651m33 5652m38 +1289U14 Translate_Status 1290>8 1291>8 1292<8 1293<8 53|264s16 269s16 350s16 +. 355s16 5657b14 5672l8 5672t24 +1290e8 Status{25|40E9} 53|5658b8 5664r12 +1291m8 Success_Return{19|84M9} 53|5659b8 5667r25 +1292m8 Returned{19|84M9} 53|5660b8 5667m13 5670m13 +1293e8 Errno{36E9} 53|5661b8 5666m13 5669m13 +1296U14 Exec_Into_Process 1297>8 1298>8 1299>8 1300>8 1301>8 1302>8 1303>8 +. 1304<8 1305<8 53|594s7 1597s7 5674b14 5796l8 5796t25 +1297m8 Path_Addr{19|84M9} 53|5675b8 5689r65 +1298m8 Path_Len{19|84M9} 53|5676b8 5691r42 5706r54 +1299m8 Argv_Addr{19|84M9} 53|5677b8 5701r65 +1300m8 Argv_Len{19|84M9} 53|5678b8 5707r54 5749r40 +1301m8 Envp_Addr{19|84M9} 53|5679b8 5703r65 +1302m8 Envp_Len{19|84M9} 53|5680b8 5708r54 5751r40 +1303i8 Proc{51|33I9} 53|5681b8 5688r64 5713r35 5715r40 5720r43 5721r33 5739r40 +. 5743r39 5764r45 5765r55 5767r26 5768r26 5777r29 +1304b8 Success{boolean} 53|5682b8 5711m10 5716m10 5735m10 5744m10 5788m13 +. 5792m13 +1305e8 Errno{36E9} 53|5683b8 5710m10 5714m10 5734m10 5742m10 5787m13 5791m13 +1308V13 To_String{45|19P9} 1308>24 53|5757s25 5760s24 5798b13 5803l8 5803t17 +1308m24 Addr{41|67M9} 53|5798b24 5799r61 5800r69 +1311V13 Get_Mmap_Prot{12|26R9} 1311>28 53|441s49 1919s53 5805b13 5817l8 5817t21 +1311m28 P{19|84M9} 53|5805b28 5807r10 5812r36 5813r36 5814r36 +1314U14 Execute_MAC_Failure 1314>35 1314>50 53|168s10 535s7 551s10 643s10 +. 874s10 1156s10 1653s10 1898s10 1924s10 2004s10 2064s10 2120s10 2189s10 +. 2273s13 2832s10 3409s10 3942s10 4016s10 4301s10 4462s10 4489s10 4692s10 +. 4750s10 5450s13 5715s10 5743s10 5819b14 5834l8 5834t27 +1314a35 Name{string} 53|5819b35 5829r67 5831r67 +1314i50 Curr_Proc{51|33I9} 53|5819b50 5820r66 5825r29 5832r22 +1317U14 PTY_IOCTL 1318>8 1319>8 1320>8 1321>8 1322<8 53|1123s13 1125s13 5836b14 +. 5897l8 5897t17 +1318p8 P{25|37P9} 53|5837b8 5853r34 5855r34 5857r34 5859r34 5866r45 5868r47 +. 5879r44 5881r46 5887r45 5889r47 +1319b8 Is_Primary{boolean} 53|5838b8 5865r22 5878r22 5886r22 +1320m8 Request{19|84M9} 53|5839b8 5851r12 +1321m8 Argument{41|67M9} 53|5840b8 5845r63 5846r63 5847r63 +1322b8 Success{boolean} 53|5841b8 5850m7 5871m19 5892m19 5895m13 +1325U14 Set_MAC_Capabilities 1325>36 1325>48 53|1620s16 1952s7 5899b14 5919l8 +. 5919t28 +1325i36 Proc{51|33I9} 53|5899b36 5900r61 5903r11 +1325m48 Bits{19|84M9} 53|5899b48 5904r45 5905r45 5906r45 5907r45 5908r45 +. 5909r45 5910r45 5911r45 5912r45 5913r45 5914r45 5915r45 5916r45 5917r45 +. 5918r45 +1328U14 MAC_Syscall_To_Kernel 1329>8 1330<8 1331<8 53|2990s7 3010s7 5921b14 +. 5937l8 5937t29 +1329m8 Val{19|84M9} 53|5922b8 5927r12 +1330b8 Success{boolean} 53|5923b8 5934m57 5936m7 +1331e8 Limit{48|59E9} 53|5924b8 5928m32 5929m32 5930m32 5931m32 5932m32 5933m32 +. 5934m25 +1334U14 Check_Add_File 1335>8 1336>8 1337<8 1338<8 1339>8 53|174s7 838s7 +. 1200s7 1201s7 1720s13 2713s7 2714s7 2958s10 5939b14 5955l8 5955t22 +1335i8 Process{51|33I9} 53|5940b8 5947r39 5948r34 5950r20 +1336p8 File{51|57P9} 53|5941b8 5950r29 +1337b8 Success{boolean} 53|5942b8 5950m39 5953m10 +1338i8 FD{natural} 53|5943b8 5950m35 5952m10 +1339i8 Start{natural} 53|5944b8 5950r48 +1341V13 Check_Userland_Access{boolean} 1342>8 1343>8 1344>8 53|68s14 111s14 +. 224s14 302s14 778s17 879s14 920s14 921s14 1101s14 1183s14 1245s14 1246s14 +. 1329s14 1619s16 1807s23 1900s17 2007s17 2106s14 2107s14 2179s14 2233s14 +. 2234s14 2306s14 2391s14 2449s14 2522s17 2588s14 2589s14 2645s17 2704s14 +. 2776s14 2777s14 2911s17 2912s17 3046s14 3135s14 3136s14 3144s17 3314s14 +. 3458s14 3545s14 3602s14 3668s17 3675s17 3740s17 3747s17 3863s14 3864s14 +. 3886s20 3936s14 4008s14 4009s14 4068s14 4120s14 4121s31 4211s14 4212s31 +. 4320s20 4325s20 4331s20 4375s14 4376s14 4522s17 4535s17 4590s17 4605s17 +. 4865s14 4897s17 4930s14 5098s20 5244s17 5304s17 5338s14 5379s14 5425s13 +. 5455s13 5706s14 5707s14 5708s14 5957b13 5980l8 5980t29 +1342p8 Map{12|43P9} 53|5958b8 5970r33 +1343m8 Addr{35|35M12} 53|5959b8 5971r45 +1344m8 Byte_Count{19|84M9} 53|5960b8 5968r30 +1346U14 Resolve_AT_Directive 1347>8 1348>8 1349<8 1350<8 53|128s10 981s13 +. 1266s10 1267s10 2255s10 2406s10 2464s10 2609s10 2797s10 2798s10 3062s10 +. 3341s13 3485s13 4404s13 6008b14 6028l8 6028t28 +1347i8 Proc{51|33I9} 53|6009b8 6017r27 6019r29 +1348m8 Dir_FD{19|84M9} 53|6010b8 6016r10 6019r35 +1349i8 FS{54|74I9} 53|6011b8 6017m33 6021m13 6024m13 +1350m8 Ino{54|28M9} 53|6012b8 6017m37 6022m13 6025m13 +1352U14 Translate_Signal 1353>8 1354<8 1355<8 53|4582s7 4647s7 6030b14 6044l8 +. 6044t24 +1353m8 Val{19|84M9} 53|6031b8 6037r10 6038r10 6040r42 +1354e8 Sig{51|82E9} 53|6032b8 6040m10 6042m10 +1355b8 Success{boolean} 53|6033b8 6036m7 6039r10 +X 53 userland-syscall.adb +63i7 Proc{51|33I9} 64r59 +64p7 Map{12|43P9} 68r37 +65m7 I_Arg{43|82M9} 66r55 68r42 +66m7 S_Arg{41|67M9} 72r56 +90m7 Path_IAddr{43|82M9} 91r61 111r42 +91m7 Path_SAddr{41|67M9} 126r37 +92i7 Curr_Proc{51|33I9} 93r65 121r43 128r32 149r43 168r39 174r23 177r14 +93p7 Map{12|43P9} 111r37 +94b7 Do_Cloexec{boolean} 177r52 +95b7 Do_Read{boolean} 136r26 155r35 162r15 163r11 +96b7 Do_Write{boolean} 136r35 156r35 162r33 164r11 +97b7 Dont_Follow{boolean} 136r49 +98b7 Do_Append{boolean} 143r13 165r15 +99b7 Do_Block{boolean} 154r35 +100b7 Discard{boolean} 174m45 175r10 +101e7 Success{54|234E9} 135m64 137r13 144m56 +102i7 CWD_FS{54|74I9} 135m44 144r23 149r54 157r35 +103m7 CWD_Ino{54|28M9} 128m60 135r29 +104m7 Opened_Ino{54|28M9} 135m52 144r31 149r62 159r35 +105r7 Opened_Stat{54|41R9} 144m43 146m13 158r35 +106p7 New_Descr{51|57P9} 150m10 167m17 167r17 174r34 181m17 181r17 +107r7 File_Perms{48|42R9} 149m10 163r33 164r33 165r29 +108i7 Returned_FD{natural} 174m54 177r38 179r35 +109m7 User{19|81M9} 121m54 136r20 +124i10 Rela_FS{54|74I9} 128m51 129r13 135r20 +125a10 Path{string} 135r38 +192i7 Curr{51|33I9} 194r42 195r40 +211m7 Buf_IAddr{43|82M9} 212r59 224r42 +212m7 Buf_SAddr{41|67M9} 242r37 +213i7 Proc{51|33I9} 214r65 215r62 238r43 +214p7 Map{12|43P9} 224r37 +215p7 File{51|57P9} 228r13 244r15 246r23 251r26 251r45 251r61 252r43 253r16 +. 253r38 258r22 263r20 268r20 275r33 +216i7 Ret_Count{natural} 252m32 254r51 256r43 258m52 259r57 263m50 264r57 +. 268m52 269r57 275m58 277r43 +217e7 Success1{54|234E9} 252m67 256r20 +218e7 Success2{22|106E9} 258m63 259r34 +219e7 Success4{27|40E9} 275m69 277r20 +220e7 Success5{25|40E9} 263m61 264r34 268m63 269r34 +221m7 User{19|81M9} 238m49 +222i7 Final_Cnt{natural} 233m10 235m10 241r46 +241a10 Data{17|29A9} 252m26 258m46 263m44 268m46 275m52 +289m7 Buf_IAddr{43|82M9} 290r59 302r42 +290m7 Buf_SAddr{41|67M9} 320r37 +291i7 Proc{51|33I9} 292r65 293r62 316r34 329r43 +292p7 Map{12|43P9} 302r37 +293p7 File{51|57P9} 306r13 322r15 324r23 328r22 336r27 336r46 337r27 338r27 +. 339r16 339r38 344r23 349r20 354r20 361r34 +294i7 Ret_Count{natural} 337m53 340r51 341r57 344m53 345r57 349m50 350r57 +. 354m52 355r57 361m59 363r43 +295e7 Success1{54|234E9} 338m51 341r34 +296e7 Success2{22|106E9} 344m64 345r34 +297e7 Success4{27|40E9} 361m70 363r20 +298e7 Success5{25|40E9} 349m61 350r34 354m63 355r34 +299m7 User{19|81M9} 316m40 +300i7 Final_Cnt{natural} 311m10 313m10 319r46 328r56 +319a10 Data{17|29A9} 337r47 344r47 349r44 354r46 361r53 +375i7 Proc{51|33I9} 382r25 389r43 +376p7 File{51|57P9} 382m7 383r10 391r12 393r23 393r42 402r19 404r19 404r41 +. 406r19 411r23 +377r7 Stat_Val{54|41R9} 393m58 395r16 406r41 +378e7 Success{54|234E9} 393m68 394r16 +379m7 User{19|81M9} 389m49 +380m7 Result{19|84M9} 411m13 417r19 +420L6 Invalid_Seek_Error 397r21 413r18 +425L6 Invalid_Value_Error 408r24 +441r7 Perms{12|26R9} 452r14 452r34 484r32 507r32 +442i7 Proc{51|33I9} 443r65 450r32 459r34 469r61 494r28 535r36 +443p7 Map{12|43P9} 458r35 474r42 481r32 503r32 +444m7 Final_Hint{35|35M12} 469m13 474r47 482r44 489r38 505r32 514r38 +445m7 Ignored{41|67M9} 485m32 +446p7 File{51|57P9} 494m10 495r13 499r13 501r32 502r32 +447b7 Success{boolean} 486m32 487r13 +448e7 Status{54|234E9} 508m32 509r16 +523L6 Invalid_Value_Return 457r15 467r18 475r15 496r18 +528L6 No_Memory_Return 461r15 491r18 510r21 +533L6 Bad_MAC_Return 451r15 +545i7 Proc{51|33I9} 546r57 549r32 551r41 +546p7 Map{12|43P9} 553r26 +547m7 Addr{41|67M9} 553r31 +569i7 Parent{51|33I9} 572r41 +585i7 Th{40|27I9} 607r48 +586i7 Proc{51|33I9} 591r39 592r34 601r24 606r59 607r42 611r26 +587p7 Tmp_Map{12|43P9} 592m7 608m34 608r34 611r32 +588b7 Success{boolean} 602m24 604r10 606m10 +630i7 Parent{51|33I9} 641r32 643r40 653m10 653r32 654r13 662r21 672r26 677r26 +. 680r61 685r30 +631i7 Child{51|33I9} 662m10 665r44 669r37 672m34 673r13 678r26 680r26 681r29 +. 685r38 689r42 691r35 693r39 699r19 +632i7 New_TID{40|27I9} 663m10 670r49 686m10 696r10 699r26 +633m7 Ret{19|84M9} 670m10 693m10 705r19 +634a7 Id{string} 677m34 678r33 +635i7 Id_Len{natural} 677m38 678r42 +636b7 Success{boolean} 699m35 700r14 +638b7 Use_Parent{boolean} 652r10 +639b7 Do_Thread{boolean} 661r10 +708L6 Block_Error 674r18 682r18 697r15 701r15 +718m7 Addr{43|82M9} 729r60 778r45 +719i7 Proc{51|33I9} 721r64 735r35 755r63 +720b7 Dont_Hang{boolean} 750r23 764r23 +721p7 Map{12|43P9} 778r40 792m7 793m40 793r40 +722i7 Waited{51|33I9} 741m16 742r19 743r31 754m10 755r13 755r52 760r25 792r30 +. 794r40 797r41 +723a7 Children{51|155A9} 735m41 740r29 741r26 +724i7 Count{natural} 735m51 736r16 740r44 +725b7 Did_Exit{boolean} 743m39 744r22 760m33 761r16 +726b7 Was_Signal{boolean} 743m61 760m55 784r13 +727e7 Cause{51|82E9} 743m73 760m67 785r54 +728m7 Error_Code{19|70M9} 743m49 760m43 787r53 +729m7 Exit_Value{19|81M9} 777r10 785m13 787m13 +740i17 PID_Item{51|33I9} +775L6 Waited_Exited 745r27 762r21 +800L6 Child_Error 737r21 756r18 +811i7 Proc{51|33I9} 838r23 841r13 +812b7 Success{boolean} 838m35 839r10 +813p7 Desc{51|57P9} 837m7 838r29 846m17 846r17 +814p7 New_Sock{27|37P9} 832m7 833r10 837r60 845m17 845r17 +815e7 Dom{27|25E9} 819m27 820m27 821m27 832r27 +816e7 Data{27|30E9} 826m30 827m30 828m30 832r32 +853L6 Invalid_Value_Return 822r32 829r35 834r15 +864i7 Proc{51|33I9} 865r64 872r32 874r47 +865p7 Map{12|43P9} 879r37 +866i7 Len{natural} 869r30 +867m7 IAddr{43|82M9} 868r58 879r42 +868m7 SAddr{41|67M9} 869r59 +869a7 Name{string} 885r32 +870b7 Success{boolean} 885m38 887r14 +905i7 Proc{51|33I9} 906r67 928r43 931r33 981r35 +906p7 Map{12|43P9} 920r37 921r37 +907m7 Stat_IAddr{43|82M9} 908r61 920r42 +908m7 Stat_SAddr{41|67M9} 917r49 +909m7 Path_IAddr{43|82M9} 910r61 921r42 +910m7 Path_SAddr{41|67M9} 979r40 +911p7 File_Desc{51|57P9} 931m10 932r13 938r15 940r23 941r23 +912r7 Stat_Val{54|41R9} 1007m26 1017r41 1018r41 1019r41 1020r28 1021r28 1023r28 +. 1025r15 1026r15 1028r15 1029r15 1031r15 1032r15 1033r41 1034r28 1037r12 +913i7 ID{natural} 1014m7 1016r41 1022r41 +914i7 Rel_FS{54|74I9} 981m49 982r16 989r31 +914i15 FS{54|74I9} 940m16 992m31 1007r17 1014r48 +915m7 D_Ino{54|28M9} 981m57 990r31 +915m14 Ino{54|28M9} 941m16 993m31 1007r21 +916e7 Success{54|234E9} 994m31 999r16 1007m36 1008r10 +917r7 Stat_Buf{52|264R9} 944m16 960m16 1015m7 1039m13 1039r30 1041m13 1041r30 +. 1043m13 1043r30 1045m13 1045r30 1047m13 1047r30 +918m7 User{19|81M9} 928m49 995r31 +978a13 Path{string} 991r31 +1050L6 Success_Return 958r21 974r21 +1060i7 Proc{51|33I9} 1061r57 1072r43 1080r16 +1061p7 Desc{51|57P9} 1066r10 1066r30 1073r17 1073r36 1080r22 1080r41 +1062r7 St{54|41R9} 1073m52 1074r41 +1063e7 Succ{54|234E9} 1073m56 1074r10 +1064m7 User{19|81M9} 1072m49 +1092m7 I_Arg{43|82M9} 1093r60 1101r42 +1093m7 S_Arg{41|67M9} 1117r41 1123r63 1125r66 +1094i7 Proc{51|33I9} 1095r66 1096r58 1111r43 +1095p7 Map{12|43P9} 1101r37 +1096p7 File{51|57P9} 1105r13 1113r12 1115r16 1115r40 1116r32 1116r51 1123r24 +. 1125r24 +1097b7 Succ{boolean} 1118m16 1120m16 1123m70 1125m73 1127m13 1130r10 +1098e7 FSSuc{54|234E9} 1117m48 1118r24 +1099m7 User{19|81M9} 1111m49 +1152i7 Proc{51|33I9} 1154r32 1156r56 +1175m7 Ad{43|82M9} 1178r76 1183r42 +1176i7 Proc{51|33I9} 1177r61 1200r23 1201r23 +1177p7 Map{12|43P9} 1183r37 +1178a7 Res(integer) 1183r46 1200m49 1200r49 1201m49 1201r49 +1179p7 Returned2{22|39P9} 1189m7 1193r31 1198r31 +1180b7 Succ1{boolean} 1200m42 1202r14 +1180b14 Succ2{boolean} 1201m42 1202r27 +1181p7 Reader_Desc{51|57P9} 1190m7 1200r29 1203m17 1203r17 +1181p20 Writer_Desc{51|57P9} 1195m7 1201r29 1204m17 1204r17 +1214i7 Proc{51|33I9} 1217r33 +1215m7 Ret{19|81M9} 1217m39 1219r32 +1233i7 Proc{51|33I9} 1234r64 1265r46 1266r32 1267r32 +1234p7 Map{12|43P9} 1245r37 1246r37 +1235m7 Src_IAddr{43|82M9} 1236r60 1245r42 +1236m7 Src_SAddr{41|67M9} 1261r37 +1237m7 Tgt_IAddr{43|82M9} 1238r60 1246r42 +1238m7 Tgt_SAddr{41|67M9} 1263r37 +1239b7 Do_Keep{boolean} 1277r54 +1240i7 Src_FS{54|74I9} 1266m49 1268r13 1270r13 1277r18 +1240i15 Tgt_FS{54|74I9} 1267m49 1269r13 1270r23 +1241m7 Src_Ino{54|28M9} 1266m57 1277r26 +1241m16 Tgt_Ino{54|28M9} 1267m57 1277r40 +1242e7 Success{54|234E9} 1277m69 1278r28 +1243m7 User{19|81M9} 1265m52 1277r63 +1260a10 Src{string} 1277r35 +1262a10 Tgt{string} 1277r49 +1289i7 Proc{51|33I9} 1290r60 +1290p7 Map{12|43P9} 1329r37 +1291m7 IAddr{43|82M9} 1292r56 1329r42 +1292m7 SAddr{41|67M9} 1340r73 1367r74 1402r60 1423r74 1450r74 1477r72 1503r43 +. 1513r73 1532r55 1542r63 +1293r7 Stats{36|47R9} 1305m45 1306r36 1308m45 1309r36 1313m45 1314r36 1546m48 +. 1550r51 1551r51 1552r51 +1294m7 Result{19|84M9} 1299m13 1301m13 1303m13 1306m13 1309m13 1311m13 1314m13 +. 1316m13 1318m13 1320m13 1361m16 1398m16 1417m16 1444m16 1471m16 1498m16 +. 1507m16 1528m16 1538m16 1557m16 1565r19 +1327L6 Not_Matched 1322r18 +1338i16 Len{natural} 1340r44 1341r47 +1340a16 Procs{52|383A9} 1346m19 1354m22 1354r41 1357m22 1357r41 +1341a16 KProc{51|171A9} 1344m26 1347r38 1348r51 1349r60 1350r60 1351r38 1353r22 +. 1356r22 +1342i16 Ret{natural} 1344m33 1345r30 1361r39 +1345i20 I{integer} 1346r26 1347r45 1348r58 1349r67 1350r67 1351r45 1353r29 +. 1354r29 1354r48 1356r29 1357r29 1357r48 +1365i16 Len{natural} 1367r45 1368r45 +1367a16 Mnts{52|402A9} 1374m37 1375m37 1376m37 1378m19 1381m23 1381r23 1382m32 +. 1382r32 1385m23 1385r23 1386m32 1386r32 1387m46 1387r46 1388m49 1388r49 +. 1389m40 1389r40 1390m47 1390r47 1391m46 1391r46 1393m34 1393r34 1393m56 +. 1393r56 1395m34 1395r34 1395m56 1395r56 +1368a16 KMnts{54|133A9} 1371m26 1373r40 1380r43 1384r23 1387r35 1388r38 1389r29 +. 1390r36 1391r35 1393r23 1395r23 +1369i16 Ret{natural} 1371m33 1372r30 1398r39 +1372i20 I{integer} 1373r47 1374r43 1375r43 1376r43 1378r25 1380r50 1381r29 +. 1382r38 1384r30 1385r29 1386r38 1387r42 1387r52 1388r45 1388r55 1389r36 +. 1389r46 1390r43 1390r53 1391r42 1391r52 1393r30 1393r40 1393r62 1395r30 +. 1395r40 1395r62 +1402r16 UTS{52|404R9} 1405m41 1405r41 1406m16 1408m16 1410m16 1412m16 1414m16 +1403i16 Host_Len{natural} 1405m56 1406r31 +1421i16 Len{natural} 1423r45 1424r58 +1423a16 Ths{52|418A9} 1430m19 1437m22 1439m22 +1424a16 KThs{40|142A9} 1428m26 1431r60 1433r60 1434r51 1435r38 +1425i16 Ret{natural} 1428m32 1429r30 1444r39 +1426i16 N{40|112I12} 1435m19 1436r22 1437r55 1440r42 +1429i20 I{integer} 1430r24 1431r66 1433r66 1434r57 1435r44 1437r27 1439r27 +1448i16 Len{natural} 1450r45 1451r59 +1450a16 Ths{52|425A9} 1456m19 1462m25 1464m25 1467m22 1467r44 +1451a16 KThs{40|150A9} 1454m26 1457r59 1459r50 1460r24 1466r22 +1452i16 Ret{natural} 1454m32 1455r30 1471r39 +1455i20 I{integer} 1456r24 1457r65 1459r56 1460r30 1462r30 1464r30 1466r28 +. 1467r27 1467r49 +1475i16 Len{natural} 1477r43 1478r65 +1477a16 Ths{52|438A9} 1484m48 1484r48 1485m19 1487m22 1489m22 1491m19 1492m19 +. 1493m19 1494m19 1495m19 +1478a16 KThs{39|96A9} 1482m55 1484r31 1486r22 1491r34 1492r35 1493r42 1494r35 +. 1495r42 +1479i16 Ret{natural} 1482m61 1483r30 1498r39 +1480i16 NLen{natural} 1484m72 1485r33 +1483i20 I{integer} 1484r37 1484r53 1485r24 1486r28 1487r27 1489r27 1491r24 +. 1491r40 1492r24 1492r41 1493r24 1493r48 1494r24 1494r41 1495r24 1495r48 +1502a16 Log{string} 1506m40 +1504i16 Ret{natural} 1506m45 1507r39 +1511i16 Len{natural} 1513r44 1514r51 +1513a16 Lks{52|448A9} 1519m19 1520m19 1521m19 1522m19 1523m19 1525m19 +1514a16 KLks{23|94A9} 1517m39 1519r59 1520r41 1521r37 1522r37 1524r58 1525r50 +1515i16 Ret{natural} 1517m45 1518r30 1528r39 +1518i20 I{integer} 1519r24 1519r65 1520r24 1520r47 1521r24 1521r43 1522r24 +. 1522r43 1523r24 1524r64 1525r24 1525r56 +1532a16 Lks{52|450A9} 1534r53 1537m45 1537r45 1537m54 1537r54 1537m63 1537r63 +1542r16 Lks{52|452R9} 1549m16 +1543r16 St{12|191R9} 1547m41 1554r51 1555r51 +1544m16 Shared_Size{19|84M9} 1548m40 1553r38 +1563L6 Success_Return 1325r12 +1568L6 Invalid_Value_Error 1535r24 1560r18 +1584i7 Proc{51|33I9} 1588r23 1595r27 1615r66 +1585b7 Success{boolean} 1605m24 1607r14 +1586i7 Child{51|33I9} 1588m29 1589r10 1595r33 1604r24 1620r38 1630r41 +1615p13 Map{12|43P9} 1619r39 +1616m13 CIAddr{43|82M9} 1617r70 1619r44 +1617m13 Caps{19|84M9} 1620r45 +1647i7 Proc{51|33I9} 1651r32 1653r56 +1648i7 Clsr{40|28I9} 1669m10 1671m10 1674r10 1679r11 1683r30 1688r51 +1649e7 Algo{40|93E9} 1661m10 1663m10 1679r17 +1691L6 Invalid_Value_Error 1657r15 1665r15 1675r15 1681r15 1684r15 +1703i7 Proc{51|33I9} 1704r70 1705r64 1721r17 1724r38 1731r27 1740r17 1814m16 +. 1823m39 1823r39 1829r53 1837r42 1846r42 +1704p7 Map{12|43P9} 1807r46 +1705p7 File{51|57P9} 1710r10 1719r24 1744r18 1746r45 1748r46 1750r40 1752r40 +. 1754r42 1756r27 1761r18 1763r38 1765r39 1767r33 1769r41 1771r43 1773r19 +. 1776r18 1778r29 1780r29 1785r18 1787r29 1793r29 1810r22 1819r39 1820r39 +. 1833r42 1834r42 1839r22 1842r42 1843r42 1850r22 +1706b7 Temp{boolean} 1721m33 1722r16 1731m37 1732r16 1746m19 1748m19 1750m19 +. 1752m64 1754m68 1756m19 1758r29 1760m13 1763r62 1765r63 1767r52 1769r65 +. 1771r69 1773r45 1787m73 1788r26 1793m73 1794r26 1825m39 1826r22 1838m42 +. 1839r50 1849m42 1850r46 1853r26 +1706b13 Temp2{boolean} 1731m43 1735r16 +1707p7 New_File{51|57P9} 1719m30 1719r30 1721r23 +1708i7 Result_FD{natural} 1721m39 1723r55 1724r57 +1803m16 IAddr{43|82M9} 1804r70 1807r51 +1804r16 Lock{52|516R9} 1807r58 1814r42 1815r24 1821m39 1821r39 1822m39 1822r39 +. 1827m22 1829m19 1831r22 1835r42 1836r42 1844r42 1845r42 +1805b16 IW{boolean} 1815m16 1824m39 1824r39 1847r42 +1866L6 Invalid_Return 1782r24 1799r24 1811r24 1860r18 +1869L6 Error_Return 1712r15 1728r21 1790r27 1796r27 1809r24 1855r27 +1889i7 Proc{51|33I9} 1890r63 1896r32 1898r44 +1890p7 Map{12|43P9} 1900r40 +1891m7 IAddr{43|82M9} 1892r57 1900r45 +1892m7 SAddr{41|67M9} 1894r34 +1893a7 Result{16|21A9} 1904m41 1906r22 +1917i7 Proc{51|33I9} 1918r58 1922r32 1924r43 +1918p7 Map{12|43P9} 1936r27 +1919r7 Flags{12|26R9} 1927r14 1927r34 1936r62 +1920m7 Addr{41|67M9} 1936r32 +1961i7 Pro{51|33I9} 1962r61 +1962r7 Caps{48|23R9} 1965r10 1966r10 1967r10 1968r10 1969r10 1970r10 1971r10 +. 1972r10 1973r10 1974r10 1975r10 1976r10 1977r10 1978r10 1979r10 +1963m7 Res{19|84M9} 1965m42 1965r49 1966m42 1966r49 1967m42 1967r49 1968m42 +. 1968r49 1969m42 1969r49 1970m42 1970r49 1971m42 1971r49 1972m42 1972r49 +. 1973m42 1973r49 1974m42 1974r49 1975m42 1975r49 1976m42 1976r49 1977m40 +. 1977r47 1978m42 1978r49 1979m42 1979r49 1982r19 +1992i7 Proc{51|33I9} 1993r63 2002r32 2004r48 2025r43 2039r19 +1993p7 Map{12|43P9} 2007r40 +1994m7 Addr{43|82M9} 2007r45 2029r49 +1995r7 Perms{48|42R9} 2017m7 2039r34 +1996m7 User{19|81M9} 2025m49 2031r46 +1997e7 Status{48|104E9} 2039m41 2042r12 +1998e7 FS_Status{54|234E9} 2031m35 2034r10 2035r28 +1999i7 FS{54|74I9} 2031m26 2039r25 2040r18 +2000m7 Ino{54|28M9} 2031m30 2039r29 2040r22 +2028a10 Path{string} 2031r20 +2059i7 Proc{51|33I9} 2062r32 2064r54 2079r24 +2060e7 Act{48|52E9} 2070m38 2071m38 2072m38 2079r30 +2094i7 Proc{51|33I9} 2095r65 2118r35 2120r40 +2095p7 Map{12|43P9} 2106r37 2107r37 +2096m7 Src_IAddr{43|82M9} 2098r61 2106r42 +2097m7 Tgt_IAddr{43|82M9} 2099r61 2107r42 +2098m7 Src_Addr{41|67M9} 2127r37 +2099m7 Tgt_Addr{41|67M9} 2129r37 +2100b7 Do_RO{boolean} 2138r40 2153r52 +2101b7 Do_Remount{boolean} 2131r13 +2102b7 Do_Relatim{boolean} 2138r47 2153r59 +2103e7 Parsed_Typ{54|73E9} 2145m32 2146m32 2153r40 +2104b7 Success{boolean} 2138m59 2140m19 2153m71 2157r10 +2126a10 Source{string} 2153r24 +2128a10 Target{string} 2136r31 2153r32 +2133i16 Handle{54|74I9} 2136m48 2137r19 2138r32 +2134i16 Matched{natural} 2136m39 +2173i7 Curr_Proc{51|33I9} 2174r67 2187r35 2189r41 +2174p7 Map{12|43P9} 2179r37 +2175m7 Path_IAddr{43|82M9} 2176r61 2179r42 +2176m7 Path_SAddr{41|67M9} 2197r37 +2177b7 Flag_Force{boolean} 2199r29 +2195b10 Success{boolean} 2199m41 2200r13 +2196a10 Path{string} 2199r23 +2220i7 Proc{51|33I9} 2221r66 2254r37 2255r32 2270r43 2273r46 +2221p7 Map{12|43P9} 2233r37 2234r37 +2222m7 Path_IAddr{43|82M9} 2224r62 2233r42 +2223m7 Buffer_IAddr{43|82M9} 2225r62 2234r42 +2224m7 Path_Add{41|67M9} 2250r37 +2225m7 Buffer_Add{41|67M9} 2252r37 +2226i7 R_FS{54|74I9} 2255m46 2256r13 2262r20 +2226i13 CWD_FS{54|74I9} 2262m41 2270r49 2278r34 2279r17 +2227m7 CWD_Ino{54|28M9} 2255m52 2262r26 +2228m7 Opened_Ino{54|28M9} 2262m49 2270r57 2278r42 2279r25 +2229i7 Ret_Count{natural} 2278m60 2280r49 +2230m7 User{19|81M9} 2254m43 2262r69 +2231e7 Status{54|234E9} 2262m61 2264r13 2278m71 2280r28 +2248r10 File_Perms{48|42R9} 2270m10 2271r17 +2249a10 Path{string} 2262r35 +2251a10 Data{string} 2278m54 +2291U17 Free[5|20] +2291U17 Free[5|20] 2351s10 +2294m7 Buff_IAddr{43|82M9} 2295r60 2306r42 +2295m7 Buff_Addr{41|67M9} 2301r68 +2296m7 Buff_Len{19|84M9} 2301r34 2314r66 +2297i7 Proc{51|33I9} 2298r71 2299r63 2313r46 +2298p7 Map{12|43P9} 2306r37 +2299p7 File{51|57P9} 2309r13 2309r33 2316r27 2317r27 2318r36 2324r13 2324r35 +2300p7 Tmp_Buffer{54|64P9} 2314m10 2319r27 2328r32 2333r54 2334r22 2334r55 +. 2336r25 2351m16 2351r16 +2301a7 Buffer{52|655A9} 2327m16 2333m16 2335m16 +2302i7 Read_Len{natural} 2320m27 2324r69 2326r27 2344r38 +2303e7 Success{54|234E9} 2321m27 2323r13 +2304m7 User{19|81M9} 2313m52 +2326i17 I{integer} 2327r37 2328r44 2329r65 2333r37 2333r66 2334r34 2334r67 +. 2335r37 2336r37 +2356b7 Success{boolean} 2358m24 2359r10 +2379i7 Proc{51|33I9} 2380r65 2405r37 2406r32 2419r46 2420r46 +2380p7 Map{12|43P9} 2391r37 +2381m7 Path_IAddr{43|82M9} 2382r61 2391r42 +2382m7 Path_SAddr{41|67M9} 2403r37 +2383i7 CWD_FS{54|74I9} 2406m46 2407r13 2422r26 +2384m7 CWD_Ino{54|28M9} 2406m54 2423r26 +2385e7 Node_Type{54|39E9} 2414m13 2416m13 2425r26 +2386m7 Tmp_Mode{54|32M12} 2426r43 +2387e7 Status{54|234E9} 2428m26 2429r28 +2388m7 Umask{54|32M12} 2419m52 2426r53 +2389m7 User{19|81M9} 2405m43 2420m52 2427r26 +2402a10 Path{string} 2424r26 +2440i7 Curr_Proc{51|33I9} 2441r64 2463r37 2464r32 +2441p7 Map{12|43P9} 2449r37 +2442m7 Path_IAddr{43|82M9} 2443r60 2449r42 +2443m7 Path_SAddr{41|67M9} 2461r37 +2444i7 CWD_FS{54|74I9} 2464m51 2465r13 2471r22 +2445m7 CWD_Ino{54|28M9} 2464m59 2471r30 +2446e7 Success{54|234E9} 2471m51 2472r28 +2447m7 User{19|81M9} 2463m48 2471r45 +2460a10 Path{string} 2471r39 +2482i7 Proc{51|33I9} 2483r60 2493r43 +2483p7 File{51|57P9} 2487r10 2494r12 2497r17 2497r36 +2484e7 Success{54|234E9} 2497m62 2498r31 +2485m7 User{19|81M9} 2493m49 +2512i7 Proc{51|33I9} 2513r58 2522r56 +2513p7 File{51|57P9} 2518r10 2518r30 2529r24 2535r28 2544r28 2554r30 +2514m7 IAddr{43|82M9} 2515r60 2522r63 +2515m7 SAddr{41|67M9} 2532r59 2541r60 2550r54 +2516b7 Succ{boolean} 2534m16 2543m16 2554m16 2558r10 +2532r16 Addr{52|692R9} 2536r28 2537r50 +2541r16 Addr{52|698R9} 2545r28 2546r50 +2550m16 A_SAddr2{41|67M9} 2551r64 2552r66 +2551i16 CLen{natural} 2552r36 +2552a16 Addr{string} 2554r49 +2577i7 Proc{51|33I9} 2578r65 2608r37 2609r32 +2578p7 Map{12|43P9} 2588r37 2589r37 +2579m7 Path_IAddr{43|82M9} 2580r61 2588r42 +2580m7 Path_SAddr{41|67M9} 2604r37 +2581m7 Targ_IAddr{43|82M9} 2582r61 2589r42 +2582m7 Targ_SAddr{41|67M9} 2606r37 +2583i7 CWD_FS{54|74I9} 2609m46 2610r13 2617r21 +2584m7 CWD_Ino{54|28M9} 2609m54 2618r26 +2585e7 Success{54|234E9} 2623m26 2624r28 +2586m7 User{19|81M9} 2608m43 2622r26 +2603a10 Path{string} 2619r26 +2605a10 Targ{string} 2620r26 +2635i7 Proc{51|33I9} 2636r58 2645r56 +2636p7 File{51|57P9} 2641r10 2641r30 2652r24 2658r28 2667r28 2677r33 +2637m7 IAddr{43|82M9} 2638r60 2645r63 +2638m7 SAddr{41|67M9} 2655r59 2664r60 2673r54 +2639b7 Succ{boolean} 2657m16 2666m16 2677m16 2681r10 +2655r16 Addr{52|692R9} 2659r28 2660r50 +2664r16 Addr{52|698R9} 2668r28 2669r50 +2673m16 A_SAddr2{41|67M9} 2674r64 2675r66 +2674i16 CLen{natural} 2675r36 +2675a16 Addr{string} 2677r52 +2695m7 Res_IAddr{43|82M9} 2696r59 2704r42 +2696m7 Res_SAddr{41|67M9} 2702r66 +2697i7 Proc{51|33I9} 2698r63 2713r23 2714r23 +2698p7 Map{12|43P9} 2704r37 +2699p7 Res_PTY{25|37P9} 2710m7 2711r68 2712r70 2716m17 2716r17 2717m17 2717r17 +2700p7 P_Desc{51|57P9} 2711m7 2713r29 2718m17 2718r17 +2700p15 S_Desc{51|57P9} 2712m7 2714r29 2719m17 2719r17 +2701b7 Succ1{boolean} 2713m37 2715r14 +2701b14 Succ2{boolean} 2714m37 2715r27 +2702a7 Result(integer) 2704r53 2713m44 2713r44 2714m44 2714r44 +2734i7 Proc{51|33I9} 2735r57 +2735p7 File{51|57P9} 2739r10 2745r12 2747r38 2747r57 +2736b7 Data{boolean} 2747r73 +2737e7 Succ{54|234E9} 2747m13 2748r31 +2765i7 Proc{51|33I9} 2766r66 2796r37 2797r32 2798r32 +2766p7 Map{12|43P9} 2776r37 2777r37 +2767m7 Src_IAddr{43|82M9} 2768r60 2776r42 +2768m7 Src_SAddr{41|67M9} 2792r37 +2769m7 Dst_IAddr{43|82M9} 2770r60 2777r42 +2770m7 Dst_SAddr{41|67M9} 2794r37 +2771i7 Src_FS{54|74I9} 2797m50 2799r13 2801r13 2808r28 +2771i15 Dst_FS{54|74I9} 2798m50 2800r13 2801r23 +2772m7 Src_Ino{54|28M9} 2797m58 2808r36 +2772m16 Dst_Ino{54|28M9} 2798m58 2808r50 +2773e7 Success{54|234E9} 2808m70 2809r28 +2774m7 User{19|81M9} 2796m43 2808r64 +2791a10 Src{string} 2808r45 +2793a10 Dst{string} 2808r59 +2823i7 Proc{51|33I9} 2826r36 2830r35 2832r41 +2824i7 TProc{51|33I9} 2826r10 2826r56 2839r30 +2856i7 Proc{51|33I9} 2857r57 +2857p7 File{51|57P9} 2859r10 2859r30 2862r23 2866r32 +2884i7 Proc{51|33I9} 2885r62 2886r58 2958r26 2960r27 +2885p7 Map{12|43P9} 2911r40 2912r40 +2886p7 File{51|57P9} 2898r10 2898r30 2902r23 2909r29 2917r27 2923r39 2934r39 +. 2947r46 +2887b7 CExec{boolean} 2960r52 +2888b7 Block{boolean} 2909r52 2924r43 2935r43 2948r50 +2889b7 CloFork{boolean} 2960r59 +2890m7 A_IAddr{43|82M9} 2891r59 2908r10 2911r45 +2891m7 A_SAddr{41|67M9} 2920r62 2931r63 2942r57 +2892m7 AL_IAddr{43|82M9} 2908r25 2912r45 +2893p7 Desc{51|57P9} 2957m10 2958r32 2965m20 2965r20 +2894p7 Sock{27|37P9} 2909m59 2909r59 2927m39 2927r39 2938m39 2938r39 2951m46 +. 2951r46 2956r10 2957r63 2964m20 2964r20 +2895i7 Ret{natural} 2958m44 2960r46 2962r38 +2896b7 Succ{boolean} 2958m38 2959r13 +2920r19 Addr{52|692R9} 2925m39 2925r39 2926m61 2926r61 +2931r19 Addr{52|698R9} 2936m39 2936r39 2937m61 2937r61 +2942m19 A_SAddr2{41|67M9} 2943r58 2944r69 +2943i19 CLen{natural} 2944r39 2950m46 +2944a19 Addr{string} 2949m46 +2976L6 Would_Fault_Error 2914r18 +2986i7 Proc{51|33I9} 2993r46 +2987b7 Success{boolean} 2990m37 2991r10 +2988e7 Resource{48|59E9} 2990m46 2993r52 +3007b7 Success{boolean} 3010m37 3011r10 3016m27 3017r13 +3008e7 Resource{48|59E9} 3010m46 3014r27 +3037i7 Proc{51|33I9} 3038r64 3056r34 3062r32 3069r37 3090r27 +3038p7 Map{12|43P9} 3046r37 +3039m7 Path_IAddr{43|82M9} 3040r60 3046r42 +3040m7 Path_SAddr{41|67M9} 3060r40 +3041i7 Rel_FS{54|74I9} 3062m46 3063r13 3072r28 +3041i15 FS{54|74I9} 3075m28 3094r26 +3042m7 D_Ino{54|28M9} 3062m54 3073r28 +3042m14 Ino{54|28M9} 3076m28 3095r26 +3043e7 Succ{54|234E9} 3077m28 3082r13 3101m26 3102r25 +3044m7 User{19|81M9} 3056m40 3069m43 3078r28 3090m33 3100r26 +3059a10 Path{string} 3074r28 +3113M12 Unsigned_28 3114r67 3115r52 3144r54 3151r26 +3114V16 C1[4|20]{3113M12} +3114V16 C1[4|20]{3113M12} 3154s62 +3115V16 C2[4|20]{51|143A9} +3115V16 C2[4|20]{51|143A9} 3154s39 +3117i7 Proc{51|33I9} 3118r64 3153r33 3154r33 3177r34 3245r30 +3118p7 Map{12|43P9} 3135r37 3136r37 3144r40 +3119m7 FIAddr{43|82M9} 3120r60 3135r42 +3120m7 FSAddr{41|67M9} 3161r67 +3121m7 TIAddr{43|82M9} 3122r60 3136r42 +3122m7 TSAddr{41|67M9} 3162r67 +3123m7 S_IAddr{43|82M9} 3124r60 3143r10 3144r45 3244r10 +3124m7 S_SAddr{41|67M9} 3151r62 +3125m7 Size_FD{19|84M9} 3135r50 +3126i7 Count{natural} 3232m19 3232r28 3237r23 3249r32 +3127p7 File{51|57P9} 3177m16 3178r19 3189r21 3192r26 3196r26 3200r26 3204r26 +. 3207r26 3210r32 3210r51 +3128m7 Curr_Sec{19|84M9} 3236m45 3237r64 +3129m7 Curr_NSec{19|84M9} 3236m55 3238r16 +3130m7 Final_Sec{19|84M9} 3158m39 3164m30 3164r30 3238r27 +3131m7 Final_NSec{19|84M9} 3158m50 3164m41 3164r41 3238r38 +3132a7 Old_Set{51|143A9} 3153m39 3154r66 3245r36 +3133b7 Can_Read{boolean} 3184m16 3193m26 3197m26 3200m50 3204m52 3207m45 +. 3210m67 3214r19 +3133b17 Can_Write{boolean} 3185m16 3193m36 3197m36 3200m60 3204m62 3207m55 +. 3211m25 3217r19 +3133b28 Can_PrioRead{boolean} 3186m16 3201m26 3220r19 +3133b42 Is_Error{boolean} 3187m16 3193m47 3197m47 3208m26 3211m36 3223r19 +3133b52 Is_Broken{boolean} 3188m16 3193m57 3197m57 3207m66 3226r19 +3151m13 Passed_Set{3113M12} 3154r43 +3161a10 FDs{52|832A9} 3168r27 3169m16 3172r20 3177r53 3179m19 3214r33 3215m19 +. 3215r40 3217r34 3218m19 3218r40 3220r37 3221m19 3221r40 3224m19 3224r40 +. 3227m19 3227r40 3231r19 +3162r10 Time{52|253R9} 3164r53 3165r30 +3168r17 Polled=3168:27{52|827R9} +3230L15 End_Iter 3173r24 3180r24 +3253i7 Proc{51|33I9} 3256r43 +3254m7 Ret{19|81M9} 3256m49 3258r32 +3267i7 Proc{51|33I9} 3270r28 3272r49 3275r39 3278r36 3281r52 +3268m7 Curr_UID{19|81M9} 3278m42 3280r36 +3303i7 Proc{51|33I9} 3304r65 3324r34 3327r33 3341r35 3365r46 +3304p7 Map{12|43P9} 3314r37 +3305m7 Path_IAddr{43|82M9} 3306r61 3314r42 +3306m7 Path_SAddr{41|67M9} 3339r40 +3307i7 Rel_FS{54|74I9} 3341m49 3342r16 3349r31 +3307i15 FS{54|74I9} 3334m10 3352m31 3365r52 3376r21 +3308m7 D_Ino{54|28M9} 3341m57 3350r31 +3308m14 Ino{54|28M9} 3335m10 3353m31 3365r56 3377r21 +3309e7 Succ{54|234E9} 3354m31 3359r16 3379m21 3380r25 +3310m7 User{19|81M9} 3324m40 3355r31 +3311p7 File_Desc{51|57P9} 3327m10 3328r13 3328r38 3334r17 3335r17 +3312r7 File_Perms{48|42R9} 3365m13 3366r20 +3338a13 Path{string} 3351r31 +3388i7 Proc{51|33I9} 3391r26 3392r26 +3389m7 Old{54|32M12} 3391m32 3394r32 +3403i7 Proc{51|33I9} 3407r32 3409r41 +3404b7 Do_Ret{boolean} 3425r10 +3405e7 Success{13|19E9} 3415m30 3416m30 3417m30 3426r15 +3447i7 Proc{51|33I9} 3448r65 3468r34 3471r33 3485r35 3509r46 +3448p7 Map{12|43P9} 3458r37 +3449m7 Path_IAddr{43|82M9} 3450r61 3458r42 +3450m7 Path_SAddr{41|67M9} 3483r40 +3451i7 Rel_FS{54|74I9} 3485m49 3486r16 3493r31 +3451i15 FS{54|74I9} 3478m10 3496m31 3509r52 3519r11 +3452m7 D_Ino{54|28M9} 3485m57 3494r31 +3452m14 Ino{54|28M9} 3479m10 3497m31 3509r56 3520r11 +3453e7 Succ{54|234E9} 3498m31 3503r16 3523m11 3524r25 +3454m7 Usr{19|81M9} 3468m40 3499r31 +3455p7 File_Desc{51|57P9} 3471m10 3472r13 3472r38 3478r17 3479r17 +3456r7 File_Perms{48|42R9} 3509m13 3510r20 +3482a13 Path{string} 3495r31 +3535m7 Buf_IAddr{43|82M9} 3536r59 3545r42 +3536m7 Buf_SAddr{41|67M9} 3563r37 +3537i7 Proc{51|33I9} 3538r65 3539r62 3559r43 +3538p7 Map{12|43P9} 3545r37 +3539p7 File{51|57P9} 3549r13 3565r15 3567r23 3572r26 3572r45 3573r43 +3540i7 Ret_Count{natural} 3573m32 3574r57 +3541e7 Success1{54|234E9} 3573m67 3574r34 +3542m7 User{19|81M9} 3559m49 +3543i7 Final_Cnt{natural} 3554m10 3556m10 3562r46 +3562a10 Data{17|29A9} 3573m26 +3592m7 Buf_IAddr{43|82M9} 3593r59 3602r42 +3593m7 Buf_SAddr{41|67M9} 3620r37 +3594i7 Proc{51|33I9} 3595r65 3596r62 3616r34 3629r43 +3595p7 Map{12|43P9} 3602r37 +3596p7 File{51|57P9} 3606r13 3622r15 3624r23 3636r27 3636r46 3637r44 +3597i7 Ret_Count{natural} 3637m33 3638r57 +3598e7 Success1{54|234E9} 3637m68 3638r34 +3599m7 User{19|81M9} 3616m40 +3600i7 Final_Cnt{natural} 3611m10 3613m10 3619r46 3628r44 +3619a10 Data{17|29A9} 3637r27 +3655i7 Proc{51|33I9} 3656r65 3657r59 +3656p7 Map{12|43P9} 3668r40 3675r40 +3657p7 File{51|57P9} 3664r10 3664r30 3680r24 3685r27 3692r27 3701r27 +3658m7 AIAddr{43|82M9} 3659r61 3675r45 +3659m7 ASAddr{41|67M9} 3683r59 3690r60 3697r54 +3660m7 LIAddr{43|82M9} 3661r61 3668r45 +3661m7 LSAddr{41|67M9} 3673r51 +3662b7 Succ{boolean} 3686m57 3693m58 3701m58 3705r10 +3673i10 Length{natural} 3675r66 +3683r16 Addr{52|692R9} 3685m46 3685r46 3686m41 3686r41 +3690r16 Addr{52|698R9} 3692m46 3692r46 3693m41 3693r41 +3697m16 A_SAddr2{41|67M9} 3698r55 3699r66 +3698i16 CLen{natural} 3699r36 3701m52 +3699a16 Addr{string} 3701m46 +3715L6 Would_Fault_Error 3669r15 3676r18 +3727i7 Proc{51|33I9} 3728r65 3729r59 +3728p7 Map{12|43P9} 3740r40 3747r40 +3729p7 File{51|57P9} 3736r10 3736r30 3752r24 3757r26 3764r26 3773r26 +3730m7 AIAddr{43|82M9} 3731r61 3747r45 +3731m7 ASAddr{41|67M9} 3755r59 3762r60 3769r54 +3732m7 LIAddr{43|82M9} 3733r61 3740r45 +3733m7 LSAddr{41|67M9} 3745r51 +3734b7 Succ{boolean} 3758m57 3765m58 3773m57 3777r10 +3745i10 Length{natural} 3747r66 +3755r16 Addr{52|692R9} 3757m45 3757r45 3758m41 3758r41 +3762r16 Addr{52|698R9} 3764m45 3764r45 3765m41 3765r41 +3769m16 A_SAddr2{41|67M9} 3770r55 3771r66 +3770i16 CLen{natural} 3771r36 3773m51 +3771a16 Addr{string} 3773m45 +3787L6 Would_Fault_Error 3741r15 3748r18 +3798i7 Proc{51|33I9} 3799r57 +3799p7 File{51|57P9} 3802r10 3802r30 3810r42 3812r42 3814r42 +3800b7 Succ{boolean} 3810m13 3812m13 3814m13 3821r10 +3838i7 Proc{51|33I9} 3839r60 +3839p7 Map{12|43P9} 3863r37 3864r37 3866r45 3867r45 3886r43 3887r48 +3840m7 IAddr{43|82M9} 3841r56 3863r42 3866r50 +3841m7 SAddr{41|67M9} 3879r70 +3842m7 TIAddr{43|82M9} 3843r56 3864r42 3867r50 +3843m7 TSAddr{41|67M9} 3880r70 +3845m7 Futex_Len{19|84M9} 3863r49 3866r57 +3846m7 Time_Len{19|84M9} 3864r50 3867r58 +3847m7 U32_Len{19|84M9} 3886r52 3887r57 +3878i10 Cnt{natural} 3879r41 3881r48 +3879a10 Items{52|938A9} 3884r19 3885r36 3895r52 +3880r10 Time{52|253R9} 3901r44 3901r58 +3881a10 Futexes{24|32A9} 3895m16 3901r35 3909r32 +3882m10 IA{43|82M9} 3885m13 3886r48 3887r53 3893r76 +3884i14 I{integer} 3885r43 3895r25 3895r59 +3893m16 V{19|81M9} 3895m32 3895r32 +3920L6 Would_Fault_Error 3869r18 3889r21 +3932i7 Proc{51|33I9} 3933r59 3940r35 3942r40 +3933p7 Map{12|43P9} 3936r37 +3934m7 IAddr{43|82M9} 3936r42 3948r63 +3948r10 Spec{52|253R9} 3955m26 3955r26 3955m40 3955r40 3958m26 3958r26 3958m40 +. 3958r40 3966m26 3966r26 3966m40 3966r40 3969m26 3969r26 3969m40 3969r40 +. 3977r26 3977r40 +3990L6 Invalid_Value_Error 3960r27 3971r27 3979r27 3982r21 +4003i7 Proc{51|33I9} 4004r62 4014r35 4016r50 +4004p7 Map{12|43P9} 4008r37 4009r37 +4005m7 ReqIAddr{43|82M9} 4008r42 4022r70 +4006m7 RemIAddr{43|82M9} 4009r42 4023r70 +4022r10 Request{52|253R9} 4028r22 4029r22 4036r46 4037r33 +4023r10 Remaining{52|253R9} 4050m10 4051m10 +4024m10 CSec{19|84M9} 4042m48 4044m43 4046r50 +4024m16 CNSec{19|84M9} 4042m54 4044m49 4046r56 +4025m10 FSec{19|84M9} 4028m13 4032m48 4034m43 4036m33 4036r33 4046r63 +4025m16 FNSec{19|84M9} 4029m13 4032m54 4034m49 4036m39 4036r39 4046r69 +4064i7 Proc{51|33I9} 4065r59 4079r43 4084r20 +4065p7 Map{12|43P9} 4068r37 +4066m7 IAddr{43|82M9} 4068r42 4075r61 +4075r10 Usage{52|971R9} 4079m49 4079r49 4080m19 4080r19 4080m50 4080r50 4081m19 +. 4081r19 4084m26 4084r26 4085m20 4085r20 4085m51 4085r51 4086m20 4086r20 +4109m7 Buf_IAddr{43|82M9} 4110r59 4120r42 +4110m7 Buf_SAddr{41|67M9} 4138r37 +4111m7 AIAddr{43|82M9} 4112r64 4121r11 4121r59 4140r13 +4112m7 ASAddr{41|67M9} 4145r65 4157r66 4169r59 +4113i7 Proc{51|33I9} 4114r65 4115r62 +4114p7 Map{12|43P9} 4120r37 4121r54 +4115p7 File{51|57P9} 4126r13 4126r33 4140r39 4142r30 4148r39 4160r39 4174r39 +. 4182r30 +4116i7 Ret_Count{natural} 4150m39 4162m39 4176m39 4182m55 4184r50 +4117e7 Success{27|40E9} 4153m39 4165m39 4178m39 4182m66 4184r28 +4118i7 Final_Cnt{natural} 4131m10 4133m10 4137r46 +4137a10 Data{17|29A9} 4149m39 4161m39 4175m39 4182m49 +4145r22 Addr{52|692R9} 4151r39 4152r61 +4157r22 Addr{52|698R9} 4163r39 4164r61 +4169m22 A_SAddr{41|67M9} 4170r70 4171r72 +4170i22 CLen{natural} 4171r42 +4171a22 Addr{string} 4177r39 +4200m7 Buf_IAddr{43|82M9} 4201r59 4211r42 +4201m7 Buf_SAddr{41|67M9} 4229r37 +4202m7 AIAddr{43|82M9} 4203r64 4212r11 4212r59 4231r13 +4203m7 ASAddr{41|67M9} 4236r65 4248r66 4260r59 +4204i7 Proc{51|33I9} 4205r65 4206r62 +4205p7 Map{12|43P9} 4211r37 4212r54 +4206p7 File{51|57P9} 4217r13 4217r33 4231r39 4233r30 4239r39 4251r39 4265r39 +. 4273r31 +4207i7 Ret_Count{natural} 4241m39 4253m39 4267m39 4273m56 4275r50 +4208e7 Success{27|40E9} 4244m39 4256m39 4269m39 4273m67 4275r28 +4209i7 Final_Cnt{natural} 4222m10 4224m10 4228r46 +4228a10 Data{17|29A9} 4240r39 4252r39 4266r39 4273r50 +4236r22 Addr{52|692R9} 4242r39 4243r61 +4248r22 Addr{52|698R9} 4254r39 4255r61 +4260m22 A_SAddr{41|67M9} 4261r70 4262r72 +4261i22 CLen{natural} 4262r42 +4262a22 Addr{string} 4268r39 +4286i7 Proc{51|33I9} 4287r64 4288r58 4299r32 4301r50 +4287p7 Map{12|43P9} 4320r43 4325r43 4331r43 +4288p7 File{51|57P9} 4304r13 4304r33 4310r17 4310r36 4316r49 +4289m7 IAddr{43|82M9} 4295r68 4296r68 4297r68 4320r48 4325r48 4331r48 +4290i7 Handl{17|83I9} 4316m7 4323r42 4329r17 4335r17 +4291r7 Stat{54|41R9} 4310m52 4311r32 +4292b7 Suc{boolean} 4323m54 4329m41 4335m41 4337m13 4340r10 +4293e7 Suc2{54|234E9} 4310m58 4311r10 +4295b7 Blk{boolean} 4320r55 4323r49 +4296r7 IP4{52|1007R9} 4325r55 4329r24 4329r32 +4297r7 IP6{52|1011R9} 4331r55 4335r24 4335r32 +4350L6 Would_Fault_Error 4321r21 4326r21 4332r21 +4364i7 Proc{51|33I9} 4365r65 4387r34 4390r33 4404r35 4428r46 +4365p7 Map{12|43P9} 4375r37 4376r37 +4366m7 Path_IAddr{43|82M9} 4375r42 4402r52 +4367m7 Time_IAddr{43|82M9} 4376r42 4439r63 +4368i7 Rel_FS{54|74I9} 4404m49 4405r16 4412r31 +4368i15 FS{54|74I9} 4397m10 4415m31 4428r52 4442r36 +4369m7 D_Ino{54|28M9} 4404m57 4413r31 +4369m14 Ino{54|28M9} 4398m10 4416m31 4428r56 4443r36 +4370e7 Succ{54|234E9} 4417m31 4422r16 4448m36 4449r28 +4371m7 User{19|81M9} 4387m40 4418r31 +4372p7 File_Desc{51|57P9} 4390m10 4391r13 4391r38 4397r17 4398r17 +4373r7 File_Perms{48|42R9} 4428m13 4429r20 +4401a13 Path{string} 4414r31 +4438A15 Time_Arr(52|253R9) 4439r18 +4439a10 Times{4438A15} 4444r36 4445r36 4446r36 4447r36 +4457i7 Proc{51|33I9} 4460r32 4462r50 +4458i7 Result{40|28I9} 4467m7 4468r10 4470r44 +4483i7 Proc{51|33I9} 4487r32 4489r50 +4484i7 Clust{40|28I9} 4491r13 4492r30 +4485i7 Th{40|27I9} 4491r40 4492r37 +4509M12 Unsigned_28 4510r67 4511r52 4541r19 +4510V16 C1[4|20]{4509M12} +4510V16 C1[4|20]{4509M12} 4545s57 4547s61 +4511V16 C2[4|20]{51|143A9} +4511V16 C2[4|20]{51|143A9} 4545s45 4547s45 4549s45 +4513i7 Proc{51|33I9} 4514r61 4519r27 4545r39 4547r39 4549r39 +4514p7 Map{12|43P9} 4522r40 4535r40 +4515m7 S_IAddr{43|82M9} 4534r10 4535r45 4541r67 +4516m7 O_IAddr{43|82M9} 4521r10 4522r45 4528r69 +4517a7 Old_Set{51|143A9} 4519m33 4530r20 4545r61 4547r65 +4528a13 Old{51|143A9} 4530m13 +4541m13 Set{4509M12} 4545r49 4547r49 4549r49 +4562L6 Would_Fault_Error 4524r18 4537r18 +4574i7 Proc{51|33I9} 4575r61 4600r33 4615r39 4617r39 4619r39 4621r39 +4575p7 Map{12|43P9} 4590r40 4605r40 +4576m7 A_IAddr{43|82M9} 4604r10 4605r45 4611r70 +4577m7 O_IAddr{43|82M9} 4589r10 4590r45 4596r70 +4578e7 Actual{51|82E9} 4582m33 4600r39 4615r45 4618r25 4621r45 +4579b7 Success{boolean} 4582m41 4583r14 +4580a7 Mask{51|143A9} 4617m45 4618m19 4619r45 +4596r13 Old{52|1054R9} 4598m13 4599m13 4600m47 4600r47 +4611r13 Act{52|1054R9} 4613r30 4621r53 +4630L6 Would_Fault_Error 4592r18 4607r18 +4641i7 Proc{51|33I9} 4664r32 4665r29 +4642i7 Tgt{51|33I9} 4654r10 4666r19 4667r29 4675r21 +4643b7 Success{boolean} 4647m41 4648r14 +4644e7 Actual{51|82E9} 4647m33 4658r17 4675r26 +4645m7 EUID{19|81M9} 4665m35 4668r13 4668r33 +4645m13 Tgt_UID{19|81M9} 4666m24 4668r21 +4645m22 Tgt_EUID{19|81M9} 4667m34 4668r41 +4686i7 Proc{51|33I9} 4690r32 4692r42 4699m16 4700r19 4704r36 +4687i7 Th{40|27I9} 4711m16 4713m16 4714r19 4718r36 +4688i7 FNice{40|112I12} 4704m13 4718m13 4723r10 4724r35 4726r58 +4732L6 Invalid_Value_Return 4701r24 4715r24 4720r18 +4744i7 Proc{51|33I9} 4748r32 4750r42 4768m16 4769r19 4773r27 +4745i7 Th{40|27I9} 4780m16 4782m16 4783r19 4787r27 +4746i7 FNice{40|112I12} 4756m10 4760m10 4773r33 4787r31 +4796L6 Invalid_Value_Return 4762r15 4770r24 4784r24 4789r18 +4802i7 Proc{51|33I9} 4805r33 +4803m7 Ret{19|81M9} 4805m39 4807r32 +4811i7 Proc{51|33I9} 4814r43 +4812m7 Ret{19|81M9} 4814m49 4816r32 +4825i7 Proc{51|33I9} 4828r28 4830r49 4833r39 4836r36 4839r52 +4826m7 Curr_GID{19|81M9} 4836m42 4838r36 +4858i7 Proc{51|33I9} 4859r59 4871r33 +4859p7 Map{12|43P9} 4865r37 +4860m7 IAddr{43|82M9} 4863r46 4865r42 +4861i7 Ret{natural} 4871m44 4872r10 4874r35 +4862a7 Arr{51|497A9} 4865r49 4871m39 4872r17 +4887i7 Proc{51|33I9} 4888r59 4895r38 4903r36 +4888p7 Map{12|43P9} 4897r40 +4889m7 IAddr{43|82M9} 4892r46 4897r45 +4890b7 Succ{boolean} 4903m47 4904r17 +4891a7 Arr{51|497A9} 4897r52 4903r42 +4922i7 Proc{51|33I9} 4923r64 4926r58 +4923p7 Map{12|43P9} 4930r37 +4924m7 IAddr{43|82M9} 4925r60 4930r42 +4925m7 SAddr{41|67M9} 4928r70 +4926p7 File{51|57P9} 4934r13 4940r12 4941r52 4942r52 +4927p7 Data{25|37P9} 4941m44 4942m44 4946r25 +4928a7 Str{string} 4946m31 4951m7 +4957L6 Invalid_Error 4943r30 4948r15 +4972i7 Proc{51|33I9} 4973r58 +4973p7 File{51|57P9} 4976r10 4979r13 4990r37 4990r56 +4974e7 Tmp{54|234E9} 4990m13 4991r31 +4999L6 Error_Return 4978r15 4981r15 4994r18 +5010K15 Align[29|19] 5035r22 +5011i7 Proc{51|33I9} 5021r32 5022r29 5023r29 5042r36 5047r65 +5012m7 Truncated{19|81M9} 5024r44 5031r28 5053r40 +5013r7 Perms{12|26R9} 5051r32 +5018m7 Ret_Addr{19|84M9} 5031m39 5049r61 +5018m17 Ret_Size{19|84M9} 5031m49 5042r42 5045r10 5050r47 +5018m27 VAddr{19|84M9} 5035m13 5039m13 5042m10 5048r61 5055r25 +5019m7 EUID{19|81M9} 5022m35 5024r55 +5019m13 EGID{19|81M9} 5023m35 5024r61 +5063L6 Invalid_Error 5037r18 +5075m7 Trunc_ID{19|81M9} 5087r44 5096r38 5109r31 5114r46 +5076i7 Proc{51|33I9} 5077r56 5084r32 5085r29 5086r29 +5077p7 Map{12|43P9} 5098r43 +5078m7 IAddr{43|82M9} 5079r60 5098r48 +5079m7 SAddr{41|67M9} 5105r56 +5080r7 Info{26|76R9} 5114m56 5118r49 5119r40 5120r40 5121r41 5122r41 5123r54 +. 5124r37 5125r51 +5081b7 Found{boolean} 5114m62 5115r26 +5082m7 EUID{19|81M9} 5085m35 5087r54 +5082m13 EGID{19|81M9} 5086m35 5087r60 +5105r16 Orig{52|1156R9} 5110r31 5111r31 5112r44 5118m19 5119m19 5120m19 5121m19 +. 5122m19 5123m19 5124m19 5125m19 +5136L6 Invalid_Error 5116r27 5129r18 +5146i7 Proc{51|33I9} 5147r56 +5147p7 Map{12|43P9} 5155r33 5168r31 +5148m7 Phys{41|67M9} 5158m33 5164r62 +5149b7 Is_Mapped{boolean} 5159m33 5166r10 +5149b18 Is_Readable{boolean} 5161m33 +5149b31 Is_Writeable{boolean} 5162m33 +5149b45 Is_Executable{boolean} 5163m33 +5150b7 Is_User_Accessible{boolean} 5160m33 +5151m7 ID{26|25M12} 5164m76 5166r24 5172r40 +5152m7 Size{19|84M9} 5164m70 5170r46 +5192K15 Align[29|19] 5196r38 +5193i7 Proc{51|33I9} 5201r26 5202r26 +5194m7 Truncated{19|81M9} 5209r14 5211r46 +5195m7 Mode{19|84M9} 5206r32 5209r43 +5196m7 AlSz{19|84M9} 5206r14 5209r25 +5197m7 Created_Key{26|25M12} 5205m10 5208m10 5211m10 5214r10 5216r35 +5198m7 EUID{19|81M9} 5201m32 5206r20 5209r31 +5199m7 EGID{19|81M9} 5202m32 5206r26 5209r37 +5234i7 Proc{51|33I9} 5235r64 5236r58 +5235p7 Map{12|43P9} 5244r40 +5236p7 File{51|57P9} 5239r10 5239r30 5254r41 5260r31 +5237m7 IAddr{43|82M9} 5244r45 5250r64 +5250m10 Val{19|81M9} 5254m16 5256m16 5258m16 5262m22 5264m22 5266m22 +5277L6 Invalid_Value_Error 5243r15 5269r21 +5279L6 Generic_Error 5241r15 5246r15 +5294i7 Proc{51|33I9} 5295r64 5296r58 +5295p7 Map{12|43P9} 5304r40 +5296p7 File{51|57P9} 5299r10 5299r30 +5297m7 IAddr{43|82M9} 5304r45 +5320L6 Invalid_Value_Error 5303r15 5313r18 +5322L6 Generic_Error 5301r15 5306r15 +5333i7 Proc{51|33I9} 5334r59 +5334p7 Map{12|43P9} 5338r37 +5335i7 Th{40|27I9} 5350r30 +5336m7 IAddr{43|82M9} 5338r42 5348r49 +5346i10 Ret{natural} 5350m39 5351r13 5351r26 5352r18 +5347a10 Str{string} 5350m34 5351r32 5352m13 +5361L6 Invalid_Value_Error 5342r15 5356r18 +5363L6 Generic_Error 5340r15 +5374i7 Proc{51|33I9} 5375r59 +5375p7 Map{12|43P9} 5379r37 +5376i7 Th{40|27I9} 5391r30 +5377m7 IAddr{43|82M9} 5379r42 5389r49 +5387b10 Suc{boolean} 5391m39 5392r13 +5388a10 Str{string} 5391r34 +5401L6 Invalid_Value_Error 5383r15 5396r18 +5403L6 Generic_Error 5381r15 +5413K15 FAL=5413:36 5426r13 5428r21 5430r21 5432r21 5457r53 5458r53 5459r53 +5415i7 Proc{51|33I9} 5416r62 5448r35 5450r52 +5416p7 Map{12|43P9} 5425r36 5455r36 +5417m7 O_IAddr{43|82M9} 5419r69 5424r10 5425r41 +5418m7 N_IAddr{43|82M9} 5420r69 5447r10 5455r41 +5419r7 Old_Val{52|1236R9} 5429m19 5431m19 5433m19 5438m16 5440m16 +5420r7 New_Val{52|1236R9} 5456r18 5463r17 +5421e7 Pol{49|21E9} 5426m36 5427r18 5457m46 5458m46 5459m46 5469r47 +5422b7 OOM_Kill{boolean} 5436m45 5437r16 5464m16 5466m16 5470r44 +5480L6 Would_Fault_Error 5443r18 5472r18 +5485L6 Invalid_Value_Error 5460r51 +5525i7 Thread{40|27I9} 5527r38 5528r28 +5532i7 Thread{40|27I9} 5534r28 5535r37 +5549R12 Trace_Info 5552e18 5564r23 +5550m10 Thread{19|73M9} +5551r10 State{8|22R15} +5554i7 Proc{51|33I9} 5571r24 5579r22 5584r41 5586r28 +5555p7 File{51|57P9} 5586m10 5587r13 5587r35 5589r33 5593r20 +5556e7 Success{22|106E9} 5593m67 +5557e7 Raised_Signal{51|82E9} 5572m24 5579r28 +5558m7 Signal_Addr{41|67M9} 5573m24 5578r13 +5559b7 No_Signal{boolean} 5574m24 5576r20 +5560b7 Ignore_Signal{boolean} 5575m24 5578r55 +5561i7 Ret_Count{natural} 5593m56 +5562i7 Tracer_FD{natural} 5584m58 5586r47 +5563b7 Is_Traced{boolean} 5584m47 5585r10 +5564r7 TInfo{5549R12} 5565r52 5566m34 5566r34 5592m13 +5565a7 TInfo_Data{17|29A9} 5593r44 +5685U17 Free[5|20] +5685U17 Free[5|20] 5780s13 5783s13 +5686A12 Arg_Arr(19|84M9) 5749r17 5751r17 +5688p7 Map{12|43P9} 5706r37 5707r37 5708r37 5766m10 5767r32 +5689m7 Path_IAddr{43|82M9} 5690r60 5706r42 +5690m7 Path_SAddr{41|67M9} 5692r34 +5691a7 Path{string} 5726r25 5772r29 +5693i7 Path_FS{54|74I9} 5727m25 5739r46 5741r21 5773r29 +5694m7 Path_Ino{54|28M9} 5728m25 5739r55 5741r30 5774r29 +5695i7 Rela_FS{54|74I9} 5721m39 5724r25 +5696m7 Rela_Ino{54|28M9} 5721m48 5725r25 +5697e7 Success2{54|234E9} 5729m25 5733r10 +5698b7 Succ{boolean} 5771m10 5786r13 +5699r7 File_Perms{48|42R9} 5739m7 5740r14 +5700m7 User{19|81M9} 5720m49 5730r25 +5701m7 Argv_IAddr{43|82M9} 5702r60 5707r42 +5702m7 Argv_SAddr{41|67M9} 5750r37 +5703m7 Envp_IAddr{43|82M9} 5704r60 5708r42 +5704m7 Envp_SAddr{41|67M9} 5752r37 +5749a10 Argv{5686A12} 5753r48 5756r19 5757r65 +5751a10 Envp{5686A12} 5754r48 5759r19 5760r64 +5753a10 Args{45|20A9} 5757m13 5768r32 5775r29 5779r21 +5754a10 Env{45|21A9} 5760m13 5776r29 5782r20 +5756i14 I{integer} 5757r19 5757r71 +5759i14 I{integer} 5760r18 5760r70 +5779p14 Arg=5779:21{45|19P9} +5782p14 En=5782:20{45|19P9} +5799i7 Arg_Length{natural} 5800r33 +5800a7 Arg_String{string} 5802r26 +5820m7 Curr_PID{19|81M9} 5824r27 +5821a7 PID_Buffer{31|55A12} 5824m37 5829r36 5831r36 +5822i7 PID_Len{natural} 5824m49 +5845r7 Result_Info{18|44R9} 5853m37 5855r37 +5846r7 Result_Size{18|54R9} 5857m37 5859r37 +5847i7 Action{integer} 5861r18 5863r27 5863r48 5864r27 5864r48 5874r18 5876r27 +. 5877r27 5884r27 5885r27 +5848b7 Do_R{boolean} 5863m19 5866r48 5868r50 5876m19 5879r47 5881r49 5884m19 +. 5887r48 5889r50 +5848b13 Do_T{boolean} 5864m19 5866r54 5868r56 5877m19 5879r53 5881r55 5885m19 +. 5887r54 5889r56 +5900r7 Caps{48|23R9} 5904r12 5905r12 5906r12 5907r12 5908r12 5909r12 5910r12 +. 5911r12 5912r12 5913r12 5914r12 5915r12 5916r12 5917r12 5918r12 +5962K15 Al[29|19] 5968r17 +5963m7 Length{19|84M9} 5968m7 5972r48 +5964m7 Result{41|67M9} 5973m33 +5965b7 Is_Mapped{boolean} 5974m33 +5965b18 Is_Readable{boolean} 5976m33 +5965b31 Is_Writeable{boolean} 5977m33 +5965b45 Is_Executable{boolean} 5978m33 +5966b7 Is_User_Accessible{boolean} 5975m33 5979r14 +5987m7 Result{41|67M9} 5999m33 +5988b7 Is_Mapped{boolean} 6000m33 6005r18 +5988b18 Is_Readable{boolean} 6002m33 +5988b31 Is_Writeable{boolean} 6003m33 +5988b45 Is_Executable{boolean} 6004m33 +5989b7 Is_User_Accessible{boolean} 6001m33 +6014p7 Descr{51|57P9} 6019m10 6020r13 6020r34 6024r20 6025r20 +17A9 Source{51|143A9}<51|82E9> 20r40[3114] 20r40[3115] 20r40[4510] 20r40[4511] +18M9 Target{3113M12} 20r55[3114] 20r55[3115] 20r55[4510] 20r55[4511] +18M9 T{19|84M9} 27r42[5010] 27r52[5010] 35r44[5010] 35r54[5010] 40r50[5010] +. 40r60[5010] 41r49[5010] 27r42[5192] 27r52[5192] 35r44[5192] 35r54[5192] +. 40r50[5192] 40r60[5192] 41r49[5192] 27r42[5962] 27r52[5962] 35r44[5962] +. 35r54[5962] 40r50[5962] 40r60[5962] 41r49[5962] 23r42[5010] 23r52[5010] +. 27r14[5010] 30r44[5010] 30r54[5010] 34r14[5010] 37r50[5010] 37r60[5010] +. 23r42[5192] 23r52[5192] 27r14[5192] 30r44[5192] 30r54[5192] 34r14[5192] +. 37r50[5192] 37r60[5192] 23r42[5962] 23r52[5962] 27r14[5962] 30r44[5962] +. 30r54[5962] 34r14[5962] 37r50[5962] 37r60[5962] +27V13 Align_Up{19|84M9} 5196s44[5192] 5968s20[5962] 29r20[5010] 29r20[5192] +. 29r20[5962] +27m23 Value{19|84M9} 24r61[5010] 24r61[5192] 24r61[5962] +27m30 Alignment{19|84M9} 28r20[5010] 28r40[5010] 28r55[5010] 29r40[5010] +. 28r20[5192] 28r40[5192] 28r55[5192] 29r40[5192] 28r20[5962] 28r40[5962] +. 28r55[5962] 29r40[5962] 25r61[5010] 25r61[5192] 25r61[5962] +35V13 Align_Down{19|84M9} 5035s28[5010] 37r20[5010] 37r20[5192] 37r20[5962] +35m25 Value{19|84M9} 31r61[5010] 31r61[5192] 31r61[5962] +35m32 Alignment{19|84M9} 36r20[5010] 36r40[5010] 36r55[5010] 37r42[5010] +. 36r20[5192] 36r40[5192] 36r55[5192] 37r42[5192] 36r20[5962] 36r40[5962] +. 36r55[5962] 37r42[5962] 32r61[5010] 32r61[5192] 32r61[5962] +40V13 Divide_Round_Up{19|84M9} 42r20[5010] 42r20[5192] 42r20[5962] +40m30 Dividend{19|84M9} 41r21[5010] 41r21[5192] 41r21[5962] 39r15[5010] 39r15[5192] +. 39r15[5962] +40m40 Divisor{19|84M9} 41r33[5010] 41r62[5010] 42r47[5010] 41r33[5192] 41r62[5192] +. 42r47[5192] 41r33[5962] 41r62[5962] 42r47[5962] 39r27[5010] 39r43[5010] +. 39r27[5192] 39r43[5192] 39r27[5962] 39r43[5962] +18P9 Name{54|64P9} 20r50[2291] 20r50[5685] +20p39 X{54|64P9} 21r15[2291] 22r23[2291] 23r11[2291] 21r15[5685] 22r23[5685] +. 23r11[5685] +24m7 Value2{43|82M9} 27r18[5010] 27r18[5192] 27r18[5962] +25m7 Align2{43|82M9} 27r27[5010] 27r48[5010] 27r27[5192] 27r48[5192] 27r27[5962] +. 27r48[5962] +31m7 Value2{43|82M9} 34r17[5010] 34r17[5192] 34r17[5962] +32m7 Align2{43|82M9} 34r33[5010] 34r33[5192] 34r33[5962] +X 54 vfs.ads +24K9*VFS 52|28w6 28r28 1272r25 1349r21 1350r21 53|101r21 102r21 103r21 104r21 +. 105r21 124r20 129r23 135r10 137r24 144r13 217r19 251r16 295r19 336r16 377r18 +. 378r18 393r13 394r27 500r13 509r26 912r20 914r20 915r20 916r20 982r25 988r13 +. 999r27 1007r7 1008r21 1038r15 1040r15 1042r15 1044r15 1046r15 1062r14 1073r7 +. 1074r18 1098r15 1116r16 1118r32 1240r26 1241r26 1242r26 1268r22 1269r22 +. 1320r36 1998r19 1999r19 2000r19 2031r10 2034r23 2040r7 2103r20 2136r16 +. 2137r29 2138r19 2145r46 2146r46 2153r13 2199r10 2226r22 2227r22 2231r22 +. 2256r20 2262r10 2264r23 2278r10 2300r20 2303r20 2314r28 2315r10 2323r23 +. 2358r7 2383r20 2384r20 2387r20 2388r20 2407r22 2426r26 2444r20 2445r20 +. 2446r20 2465r22 2471r10 2484r17 2496r13 2583r20 2584r20 2585r20 2610r22 +. 2616r10 2737r14 2747r21 2771r26 2772r26 2773r26 2799r22 2800r22 3041r20 +. 3042r20 3043r20 3063r22 3071r10 3082r21 3093r7 3210r22 3307r21 3308r21 +. 3309r21 3342r25 3348r13 3359r24 3375r7 3451r21 3452r21 3453r21 3486r25 +. 3492r13 3503r24 3518r7 3541r19 3572r16 3598r19 3636r16 4291r15 4293r15 +. 4310r7 4368r21 4369r21 4370r21 4405r25 4411r13 4422r24 4441r10 4990r20 +. 5599r25 5606r15 5610r15 5611r15 5612r15 5613r15 5614r15 5615r15 5616r15 +. 5733r22 5741r10 6011r21 6012r21 6021r20 54|674e8 +28M9*File_Inode_Number<19|84M9> 52|1350r25 53|103r25 104r25 915r24 1241r30 +. 2000r23 2227r26 2228r22 2384r24 2445r24 2584r24 2772r30 3042r24 3308r25 +. 3452r25 4369r25 5694r20 5696r20 6012r25 +32M12*File_Mode{19|81M9} 53|2386r29 2386r42 2388r24 3378r21 3378r54 3389r14 +. 3392r32 5195r61 +36m7*Seconds_Since_Epoch{19|84M9} 53|1025r36 1028r42 1031r38 +37m7*Additional_Nanoseconds{19|84M9} 53|1026r36 1029r42 1032r38 +39E9*File_Type 53|2385r20 54|40e64 +39n23*File_Regular{39E9} 53|1038r19 2337r27 2416r26 +39n37*File_Directory{39E9} 53|1040r19 1074r60 2338r27 2414r26 +39n53*File_Symbolic_Link{39E9} 53|1042r19 2339r27 +40n23*File_Character_Device{39E9} 53|395r40 1044r19 2340r27 4311r53 +40n46*File_Block_Device{39E9} 53|1046r19 2341r27 +41R9*File_Stat 53|105r25 377r22 912r24 1062r18 4291r19 54|54e14 +42m7*Unique_Identifier{28M9} 53|1017r50 +43e7*Type_Of_File{39E9} 53|395r25 1037r21 1074r44 4311r37 +44m7*Mode{32M12} 53|1018r50 +45m7*UID{19|81M9} 53|1020r37 +46m7*GID{19|81M9} 53|1021r37 +47i7*Hard_Link_Count{positive} 53|1019r50 +48m7*Byte_Size{19|84M9} 53|146m25 158r47 406r50 1023r37 +49i7*IO_Block_Size{natural} 53|1033r50 +50m7*IO_Block_Count{19|84M9} 53|1034r37 +51r7*Creation_Time{35R9} 53|1031r24 1032r24 +52r7*Modification_Time{35R9} 53|1028r24 1029r24 +53r7*Access_Time{35R9} 53|1025r24 1026r24 +58m7*Inode_Number{19|84M9} 53|2328r47 +59a7*Name_Buffer{string} 53|2334r37 +60i7*Name_Len{natural} 53|2333r69 2334r70 +61e7*Type_Of_File{39E9} 53|2336r40 +63A9*Directory_Entities(57R9) 53|2292r11 2314r32 +64P9*Directory_Entities_Acc(63A9) 53|2292r31 2300r24 +70i4*Max_Symlink_Loop{natural} 53|1320r40 +73E9*FS_Type 53|2103r24 54|73e46 +73n23*FS_DEV{73E9} 53|1374r27 +73n31*FS_EXT{73E9} 53|1375r27 2145r50 +73n39*FS_FAT{73E9} 53|1376r27 2146r50 +74I9*FS_Handle 52|1349r25 53|102r25 124r24 914r24 1240r30 1999r23 +. 2133r26 2226r26 2383r24 2444r24 2583r24 2771r30 3041r24 3307r25 3451r25 +. 4368r25 5693r20 5695r20 6011r25 +75i4*Error_Handle{74I9} 53|129r27 982r29 1268r26 1269r26 2137r33 2256r24 +. 2407r26 2465r26 2610r26 2799r26 2800r26 3063r26 3342r29 3486r29 4405r29 +. 6021r24 +104U14*Mount 53|2153s17 +119U14*Unmount 53|2199s14 +126U14*Get_Mount 53|2136s20 +133A9*Mountpoint_Arr(74I9) 53|1368r24 +138U14*List_All 53|1371s16 +144V13*Get_Backing_FS{73E9} 53|1373s24 +156V13*Get_Backing_Device{17|83I9} 53|1014s28 1380s23 1524s38 +162U14*Get_Mount_Point 53|1383s19 +174U14*Remount 53|2138s23 +185U14*Get_Block_Size 53|1387s19 +192U14*Get_Fragment_Size 53|1388s19 +198U14*Get_Size 53|1389s19 +204U14*Get_Inode_Count 53|1390s19 +211U14*Get_Free_Blocks 53|1392s19 1394s19 +230U14*Get_Max_Length 53|1391s19 +234E9*FS_Status 52|1272r29 53|101r25 217r23 295r23 378r22 448r20 916r24 1063r14 +. 1098r19 1242r30 1998r23 2231r26 2303r24 2387r24 2446r24 2484r21 2585r24 +. 2737r18 2773r30 3043r24 3309r25 3453r25 3541r23 3598r23 4293r19 4370r25 +. 4974r15 5599r29 5697r20 54|242e16 +235n8*FS_Success{234E9} 53|137r28 394r31 509r30 999r31 1008r25 1074r22 1118r36 +. 2034r27 2264r27 2323r27 3082r25 3359r28 3503r28 4311r18 4422r28 5606r19 +. 5733r26 +236n8*FS_Invalid_Value{234E9} 53|5611r19 +237n8*FS_Is_Directory{234E9} 53|5610r19 +238n8*FS_Not_Supported{234E9} 53|5612r19 +239n8*FS_Not_Allowed{234E9} 53|5615r19 +240n8*FS_RO_Failure{234E9} 53|5613r19 +241n8*FS_IO_Failure{234E9} 53|5614r19 +242n8*FS_Loop{234E9} 53|5616r19 +255U14*Open 53|135s14 988s17 2262s14 3071s14 3348s17 3492s17 4411s17 5723s7 +276U14*Create_Node 53|2421s10 +294U14*Create_Symbolic_Link 53|2616s14 +312U14*Create_Hard_Link 53|2808s10 +331U14*Rename 53|1277s10 +348U14*Unlink 53|2471s14 +359U14*Close 53|2040s11 2279s10 5741s14 +369U14*Read_Entries 53|2315s14 +384U14*Read_Symbolic_Link 53|2278s14 +400U14*Read 53|251s20 3572s20 +418U14*Write 53|336s20 3636s20 +433U14*Stat 53|144s17 393s17 1007s11 1073s11 4310s11 +445U14*Truncate 53|2496s17 +458U14*IO_Control 53|1116s20 +475U14*Mmap 53|500s17 +492U14*Poll 53|3210s26 +511V13*Synchronize{234E9} 53|2747s25 4990s24 +522U14*Change_Mode 53|3375s11 +535U14*Change_Owner 53|3518s11 +552U14*Check_Access 53|3093s11 +571U14*Change_Access_Times 53|4441s14 +593U14*Open 53|2031s14 +609U14*Synchronize 53|2358s11 +635V13*Apply_Umask{32M12} 53|2426s30 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___userland__syscall__sys_exit 2 ada___userland__syscall__do_exit ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sys_exit 0 +GG EK_GLOBALS ada___userland__syscall__sys_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 5 scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit calls_conditional 3 ada___arch__mmu__make_active ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__arch_prctl 5 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___arch__local__get_current_process ada___arch__hooks__prctl_hook +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__arch_prctl 0 +GG EK_GLOBALS ada___userland__syscall__arch_prctl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___arch__local__get_current_process ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__open 13 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__stat ada___userland__process__close ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__open 0 +GG EK_GLOBALS ada___userland__syscall__open local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 25 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__stat ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__get_file ada___userland__process__set_fd_flags ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__check_permissions ada___userland__process__get_limit ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__close 3 ada___userland__process__is_valid_file ada___userland__process__remove_file ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__close 0 +GG EK_GLOBALS ada___userland__syscall__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___userland__process__is_valid_file ada___userland__process__remove_file ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__read 15 ada___userland__syscall__translate_status ada___userland__syscall__translate_status__2 ada___userland__syscall__translate_status__3 ada___userland__syscall__translate_status__4 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__read_primary ada___ipc__pty__read_secondary vfs__read ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___ipc__fifo__read ada___ipc__socket__read ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__read 0 +GG EK_GLOBALS ada___userland__syscall__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__read_primary ada___ipc__pty__read_secondary vfs__read ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___ipc__fifo__read ada___ipc__socket__read ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__write 16 ada___userland__syscall__translate_status ada___userland__syscall__translate_status__2 ada___userland__syscall__translate_status__3 ada___userland__syscall__translate_status__4 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__write_primary ada___ipc__pty__write_secondary vfs__write ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_limit ada___ipc__fifo__write ada___ipc__socket__write ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__write 0 +GG EK_GLOBALS ada___userland__syscall__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 12 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__write_primary ada___ipc__pty__write_secondary vfs__write ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_limit ada___ipc__fifo__write ada___ipc__socket__write ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__seek 4 vfs__stat ada___userland__process__get_file ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__seek 0 +GG EK_GLOBALS ada___userland__syscall__seek local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 vfs__stat ada___userland__process__get_file ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__mmap 13 ada___userland__syscall__check_userland_mappability ada___userland__syscall__get_mmap_prot ada___userland__syscall__execute_mac_failure ada___system__storage_elements__to_address ada___arch__mmu__map_allocated_range ada___arch__mmu__get_user_mapped_size vfs__mmap ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__bump_alloc_base ada___userland__process__get_capabilities ada___userland__process__get_limit ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__mmap 0 +GG EK_GLOBALS ada___userland__syscall__mmap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 21 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address ada___arch__mmu__map_allocated_range ada___arch__mmu__get_user_mapped_size scheduler__bail vfs__mmap ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__bump_alloc_base ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__get_limit ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__munmap 6 ada___userland__syscall__execute_mac_failure ada___system__storage_elements__to_address ada___arch__mmu__unmap_range ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__munmap 0 +GG EK_GLOBALS ada___userland__syscall__munmap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 14 ada___arch__mmu__make_active ada___arch__mmu__unmap_range scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_pid 2 ada___userland__process__convert ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_pid 0 +GG EK_GLOBALS ada___userland__syscall__get_pid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__convert ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_ppid 3 ada___userland__process__get_parent ada___userland__process__convert ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_ppid 0 +GG EK_GLOBALS ada___userland__syscall__get_ppid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___userland__process__get_parent ada___userland__process__convert ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__exec 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__exec 0 +GG EK_GLOBALS ada___userland__syscall__exec local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 27 ada___system__storage_elements__to_address ada___arch__mmu__fork_table ada___arch__mmu__destroy_table ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__close ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__reassign_process_addresses ada___userland__process__flush_files ada___userland__process__flush_exec_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__set_identifier ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__check_permissions ada___lib__messages__image ada___userland__loader__start_program__2 ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__clone 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__clone 0 +GG EK_GLOBALS ada___userland__syscall__clone local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 26 ada___arch__mmu__fork_table ada___arch__mmu__make_active scheduler__create_user_thread__2 scheduler__create_user_thread__3 scheduler__bail scheduler__convert scheduler__convert__4 ada___userland__process__create_process ada___userland__process__add_thread ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__duplicate_fd_table ada___userland__process__flush_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_parent ada___userland__process__set_identifier ada___userland__process__get_identifier ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__fetch_tcb ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__wait 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__wait 0 +GG EK_GLOBALS ada___userland__syscall__wait local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 13 interfaces__shift_left__3 ada___system__storage_elements__to_address ada___arch__mmu__destroy_table ada___arch__mmu__translate_address scheduler__yield_if_able ada___userland__process__get_children ada___userland__process__delete_process ada___userland__process__get_common_map ada___userland__process__check_exit ada___userland__process__get_parent ada___userland__process__convert ada___userland__process__convert__2 ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__socket 6 ada___userland__syscall__check_add_file ada___userland__process__close ada___userland__process__set_fd_flags ada___ipc__socket__create ada___ipc__socket__close ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__socket 0 +GG EK_GLOBALS ada___userland__syscall__socket local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__set_fd_flags ada___userland__process__get_limit ada___ipc__socket__create ada___ipc__socket__close ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_hostname 7 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address networking__set_hostname ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_hostname 0 +GG EK_GLOBALS ada___userland__syscall__set_hostname local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail networking__set_hostname ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__fstat 11 ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address devices__get_unique_id vfs__get_backing_device vfs__open vfs__stat ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fstat 0 +GG EK_GLOBALS ada___userland__syscall__fstat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address devices__get_unique_id vfs__get_backing_device vfs__open vfs__stat ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__chdir 5 vfs__stat ada___userland__process__get_file ada___userland__process__set_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__chdir 0 +GG EK_GLOBALS ada___userland__syscall__chdir local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 vfs__stat ada___userland__process__get_file ada___userland__process__set_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__ioctl 8 ada___userland__syscall__pty_ioctl ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__io_control ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ioctl 0 +GG EK_GLOBALS ada___userland__syscall__ioctl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 17 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__get_termios ada___ipc__pty__set_termios ada___ipc__pty__get_winsize ada___ipc__pty__set_winsize ada___ipc__pty__flush_primary ada___ipc__pty__flush_secondary ada___ipc__pty__start_primary ada___ipc__pty__start_secondary ada___ipc__pty__stop_primary ada___ipc__pty__stop_secondary vfs__io_control ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__sched_yield 1 scheduler__yield_if_able +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sched_yield 0 +GG EK_GLOBALS ada___userland__syscall__sched_yield local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 scheduler__yield_if_able calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__delete_thread_cluster 5 ada___userland__syscall__execute_mac_failure scheduler__delete_cluster scheduler__convert__4 ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__delete_thread_cluster 0 +GG EK_GLOBALS ada___userland__syscall__delete_thread_cluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 14 ada___arch__mmu__make_active scheduler__bail scheduler__delete_cluster scheduler__convert__4 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__pipe 7 ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__close ada___userland__process__get_common_map ada___ipc__fifo__create ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pipe 0 +GG EK_GLOBALS ada___userland__syscall__pipe local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 9 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__get_common_map ada___userland__process__get_limit ada___ipc__fifo__create ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_uid 2 ada___userland__process__get_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_uid 0 +GG EK_GLOBALS ada___userland__syscall__get_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_uid calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__rename 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__rename ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__rename 0 +GG EK_GLOBALS ada___userland__syscall__rename local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__rename ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__sysconf 32 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___arch__mmu__get_statistics devices__fetch_name devices__get_unique_id scheduler__get_niceness scheduler__get_load_averages scheduler__convert scheduler__convert__2 scheduler__list_all scheduler__list_all__2 vfs__list_all vfs__get_backing_fs vfs__get_backing_device vfs__get_mount_point vfs__get_block_size vfs__get_fragment_size vfs__get_size vfs__get_inode_count vfs__get_free_blocks vfs__get_max_length networking__get_hostname ada___userland__process__list_all ada___userland__process__get_common_map ada___userland__process__convert ada___lib__messages__dump_logs ada___arch__local__get_current_process ada___memory__physical__get_statistics ada___arch__hooks__get_active_core_count ada___ipc__filelock__list_all ada___ipc__shm__get_total_size ada___networking__interfaces__list_interfaces +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sysconf 0 +GG EK_GLOBALS ada___userland__syscall__sysconf local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 ada___lib__messages__message_state proper_output 1 ada___lib__messages__message_state refined_proof_in 0 refined_input 1 ada___lib__messages__message_state refined_output 1 ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 31 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___arch__mmu__get_statistics devices__fetch_name devices__get_unique_id scheduler__get_niceness scheduler__get_load_averages scheduler__convert scheduler__convert__2 scheduler__list_all scheduler__list_all__2 vfs__list_all vfs__get_backing_fs vfs__get_backing_device vfs__get_mount_point vfs__get_block_size vfs__get_fragment_size vfs__get_size vfs__get_inode_count vfs__get_free_blocks vfs__get_max_length networking__get_hostname ada___userland__process__list_all ada___userland__process__get_common_map ada___userland__process__convert ada___arch__local__get_current_process ada___memory__physical__get_statistics ada___arch__hooks__get_active_core_count ada___ipc__filelock__list_all ada___ipc__shm__get_total_size ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___lib__messages__message_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__spawn 9 ada___userland__syscall__exec_into_process ada___userland__syscall__set_mac_capabilities__2 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__create_process ada___userland__process__duplicate_fd_table ada___userland__process__get_common_map ada___userland__process__convert ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__spawn 0 +GG EK_GLOBALS ada___userland__syscall__spawn local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 1 ada___userland__process__create_process calls_conditional 28 ada___system__storage_elements__to_address ada___arch__mmu__fork_table ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__close ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__reassign_process_addresses ada___userland__process__duplicate_fd_table ada___userland__process__flush_files ada___userland__process__flush_exec_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__set_identifier ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__set_capabilities ada___userland__process__check_permissions ada___lib__messages__image ada___userland__loader__start_program__2 ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_tid 2 scheduler__convert ada___arch__local__get_current_thread +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_tid 0 +GG EK_GLOBALS ada___userland__syscall__get_tid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 scheduler__convert ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__manage_thread_cluster 8 ada___userland__syscall__execute_mac_failure scheduler__set_scheduling_algorithm scheduler__set_time_slice scheduler__create_cluster scheduler__convert__2 scheduler__convert__4 ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__manage_thread_cluster 0 +GG EK_GLOBALS ada___userland__syscall__manage_thread_cluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 17 ada___arch__mmu__make_active scheduler__bail scheduler__set_scheduling_algorithm scheduler__set_time_slice scheduler__create_cluster scheduler__convert__2 scheduler__convert__4 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__fcntl 26 ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__is_primary_blocking ada___ipc__pty__set_primary_blocking ada___ipc__pty__is_secondary_blocking ada___ipc__pty__set_secondary_blocking ada___userland__process__duplicate ada___userland__process__get_file ada___userland__process__get_fd_flags ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__convert__2 ada___ipc__fifo__is_read_blocking ada___ipc__fifo__is_write_blocking ada___ipc__fifo__set_read_blocking ada___ipc__fifo__set_write_blocking ada___ipc__fifo__get_size ada___ipc__fifo__set_size ada___ipc__socket__is_blocking ada___ipc__socket__set_blocking ada___arch__local__get_current_process ada___ipc__filelock__could_acquire_lock ada___ipc__filelock__acquire_lock ada___ipc__filelock__release_lock +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fcntl 0 +GG EK_GLOBALS ada___userland__syscall__fcntl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 28 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__is_primary_blocking ada___ipc__pty__set_primary_blocking ada___ipc__pty__is_secondary_blocking ada___ipc__pty__set_secondary_blocking ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__duplicate ada___userland__process__get_file ada___userland__process__get_fd_flags ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__convert__2 ada___userland__process__get_limit ada___ipc__fifo__is_read_blocking ada___ipc__fifo__is_write_blocking ada___ipc__fifo__set_read_blocking ada___ipc__fifo__set_write_blocking ada___ipc__fifo__get_size ada___ipc__fifo__set_size ada___ipc__socket__is_blocking ada___ipc__socket__set_blocking ada___arch__local__get_current_process ada___ipc__filelock__could_acquire_lock ada___ipc__filelock__acquire_lock ada___ipc__filelock__release_lock FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__exit_thread 4 scheduler__bail ada___userland__process__remove_thread ada___arch__local__get_current_thread ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__exit_thread 0 +GG EK_GLOBALS ada___userland__syscall__exit_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 scheduler__bail ada___userland__process__remove_thread calls_conditional 2 ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_random 7 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___cryptography__random__fill_data +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_random 0 +GG EK_GLOBALS ada___userland__syscall__get_random local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__mprotect 7 ada___userland__syscall__get_mmap_prot ada___userland__syscall__execute_mac_failure ada___system__storage_elements__to_address ada___arch__mmu__remap_range ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__mprotect 0 +GG EK_GLOBALS ada___userland__syscall__mprotect local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 14 ada___arch__mmu__make_active ada___arch__mmu__remap_range scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_mac_capabilities 2 ada___userland__syscall__set_mac_capabilities__2 ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_mac_capabilities 0 +GG EK_GLOBALS ada___userland__syscall__set_mac_capabilities local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__set_capabilities calls_conditional 2 ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_mac_capabilities 2 ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_mac_capabilities 0 +GG EK_GLOBALS ada___userland__syscall__get_mac_capabilities local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__add_mac_permissions 11 ada___userland__syscall__translate_status ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__close vfs__open__2 ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_capabilities ada___userland__process__add_entity ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__add_mac_permissions 0 +GG EK_GLOBALS ada___userland__syscall__add_mac_permissions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 19 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__close vfs__open__2 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__add_entity ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_mac_enforcement 4 ada___userland__syscall__execute_mac_failure ada___userland__process__set_enforcement ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_mac_enforcement 0 +GG EK_GLOBALS ada___userland__syscall__set_mac_enforcement local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 13 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__set_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__mount 9 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__mount__2 vfs__get_mount vfs__remount ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__mount 0 +GG EK_GLOBALS ada___userland__syscall__mount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 18 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__mount__2 vfs__get_mount vfs__remount ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__umount 7 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__unmount ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__umount 0 +GG EK_GLOBALS ada___userland__syscall__umount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__unmount ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__readlink 12 ada___userland__syscall__translate_status ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__close vfs__read_symbolic_link ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__readlink 0 +GG EK_GLOBALS ada___userland__syscall__readlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 21 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__close vfs__read_symbolic_link ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__check_permissions ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__getdents__free 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__getdents__free 0 +GG EK_GLOBALS ada___userland__syscall__getdents__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 3 ada___userland__syscall__getdents ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__getdents 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__getdents 0 +GG EK_GLOBALS ada___userland__syscall__getdents local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 7 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__read_entries ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__sync 1 vfs__synchronize__3 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sync 0 +GG EK_GLOBALS ada___userland__syscall__sync local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 vfs__synchronize__3 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__makenode 10 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__create_node vfs__apply_umask ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_umask ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__makenode 0 +GG EK_GLOBALS ada___userland__syscall__makenode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__create_node vfs__apply_umask ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__get_umask ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__unlink 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__unlink ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__unlink 0 +GG EK_GLOBALS ada___userland__syscall__unlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__unlink ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__truncate 5 ada___userland__syscall__translate_status vfs__truncate ada___userland__process__get_file ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__truncate 0 +GG EK_GLOBALS ada___userland__syscall__truncate local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 vfs__truncate ada___userland__process__get_file ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__bind 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__bind 0 +GG EK_GLOBALS ada___userland__syscall__bind local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__bind ada___ipc__socket__bind__2 ada___ipc__socket__bind__3 ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__symlink 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__create_symbolic_link ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__symlink 0 +GG EK_GLOBALS ada___userland__syscall__symlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__create_symbolic_link ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__connect 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__connect 0 +GG EK_GLOBALS ada___userland__syscall__connect local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__connect ada___ipc__socket__connect__2 ada___ipc__socket__connect__3 ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__open_pty 8 ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__create ada___ipc__pty__close ada___userland__process__close ada___userland__process__get_common_map ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__open_pty 0 +GG EK_GLOBALS ada___userland__syscall__open_pty local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__create ada___ipc__pty__close ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__get_common_map ada___userland__process__get_limit ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__fsync 4 ada___userland__syscall__translate_status vfs__synchronize__2 ada___userland__process__get_file ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fsync 0 +GG EK_GLOBALS ada___userland__syscall__fsync local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 vfs__synchronize__2 ada___userland__process__get_file ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__link 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__create_hard_link ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__link 0 +GG EK_GLOBALS ada___userland__syscall__link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__create_hard_link ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__ptrace 6 ada___userland__syscall__execute_mac_failure ada___userland__process__set_traced_info ada___userland__process__get_parent ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ptrace 0 +GG EK_GLOBALS ada___userland__syscall__ptrace local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 15 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__set_traced_info ada___userland__process__issue_exit ada___userland__process__get_parent ada___userland__process__convert ada___userland__process__convert__2 ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__listen 4 ada___userland__process__get_file ada___ipc__socket__get_type ada___ipc__socket__listen ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__listen 0 +GG EK_GLOBALS ada___userland__syscall__listen local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 ada___userland__process__get_file ada___ipc__socket__get_type ada___ipc__socket__listen ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__sys_accept 16 ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__close ada___userland__process__get_file ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__close ada___ipc__socket__accept_connection ada___ipc__socket__accept_connection__2 ada___ipc__socket__accept_connection__3 ada___ipc__socket__accept_connection__4 ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sys_accept 0 +GG EK_GLOBALS ada___userland__syscall__sys_accept local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 17 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__get_file ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___userland__process__get_limit ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__close ada___ipc__socket__accept_connection ada___ipc__socket__accept_connection__2 ada___ipc__socket__accept_connection__3 ada___ipc__socket__accept_connection__4 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_rlimit 3 ada___userland__syscall__mac_syscall_to_kernel ada___userland__process__get_limit ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_rlimit 0 +GG EK_GLOBALS ada___userland__syscall__get_rlimit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__get_limit ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_rlimit 3 ada___userland__syscall__mac_syscall_to_kernel ada___userland__process__set_limit ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_rlimit 0 +GG EK_GLOBALS ada___userland__syscall__set_rlimit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__set_limit ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__faccess 10 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__check_access ada___userland__process__get_common_map ada___userland__process__get_uid ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__faccess 0 +GG EK_GLOBALS ada___userland__syscall__faccess local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__open vfs__check_access ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_uid ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__ppoll__c1 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ppoll__c1 0 +GG EK_GLOBALS ada___userland__syscall__ppoll__c1 local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___userland__syscall__ppoll ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__ppoll__c2 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ppoll__c2 0 +GG EK_GLOBALS ada___userland__syscall__ppoll__c2 local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___userland__syscall__ppoll ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__ppoll 17 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__poll_primary ada___ipc__pty__poll_secondary scheduler__yield_if_able vfs__poll ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___ipc__fifo__poll_reader ada___ipc__fifo__poll_writer ada___ipc__socket__poll ada___arch__clocks__get_monotonic_time ada___lib__time__increment ada___lib__time__is_greater_equal ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ppoll 2 ada___userland__syscall__ppoll__c1 ada___userland__syscall__ppoll__c2 +GG EK_GLOBALS ada___userland__syscall__ppoll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 ada___arch__clocks__monotonic_clock_state proper_output 1 ada___arch__clocks__monotonic_clock_state refined_proof_in 0 refined_input 1 ada___arch__clocks__monotonic_clock_state refined_output 1 ada___arch__clocks__monotonic_clock_state calls_proof 0 calls 0 calls_conditional 16 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__poll_primary ada___ipc__pty__poll_secondary scheduler__yield_if_able vfs__poll ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___ipc__fifo__poll_reader ada___ipc__fifo__poll_writer ada___ipc__socket__poll ada___lib__time__increment ada___lib__time__is_greater_equal ada___arch__local__get_current_process FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__clocks__monotonic_clock_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_euid 2 ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_euid 0 +GG EK_GLOBALS ada___userland__syscall__get_euid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_effective_uid calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_uids 5 ada___userland__process__get_uid ada___userland__process__set_uid ada___userland__process__set_effective_uid ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_uids 0 +GG EK_GLOBALS ada___userland__syscall__set_uids local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___userland__process__get_uid ada___userland__process__set_uid ada___userland__process__set_effective_uid ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__fchmod 11 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__change_mode ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fchmod 0 +GG EK_GLOBALS ada___userland__syscall__fchmod local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__open vfs__change_mode ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__umask 3 ada___userland__process__get_umask ada___userland__process__set_umask ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__umask 0 +GG EK_GLOBALS ada___userland__syscall__umask local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___userland__process__get_umask ada___userland__process__set_umask calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__reboot 7 ada___userland__syscall__execute_mac_failure ada___userland__process__get_capabilities ada___lib__panic__hard_panic ada___arch__local__get_current_process ada___arch__power__halt ada___arch__power__reboot ada___arch__power__poweroff +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__reboot 0 +GG EK_GLOBALS ada___userland__syscall__reboot local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 15 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process ada___arch__power__halt ada___arch__power__reboot ada___arch__power__poweroff FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__fchown 11 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__change_owner ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fchown 0 +GG EK_GLOBALS ada___userland__syscall__fchown local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__open vfs__change_owner ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__pread 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__read ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pread 0 +GG EK_GLOBALS ada___userland__syscall__pread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 7 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__read ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__pwrite 9 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__write ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_limit ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pwrite 0 +GG EK_GLOBALS ada___userland__syscall__pwrite local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__write ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_limit ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_sock_name 10 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_bound ada___ipc__socket__get_bound__2 ada___ipc__socket__get_bound__3 ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_sock_name 0 +GG EK_GLOBALS ada___userland__syscall__get_sock_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 9 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_bound ada___ipc__socket__get_bound__2 ada___ipc__socket__get_bound__3 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_peer_name 10 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_peer ada___ipc__socket__get_peer__2 ada___ipc__socket__get_peer__3 ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_peer_name 0 +GG EK_GLOBALS ada___userland__syscall__get_peer_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 9 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_peer ada___ipc__socket__get_peer__2 ada___ipc__socket__get_peer__3 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shutdown 3 ada___userland__process__get_file ada___ipc__socket__shutdown ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shutdown 0 +GG EK_GLOBALS ada___userland__syscall__shutdown local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___userland__process__get_file ada___ipc__socket__shutdown ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__futex 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__futex 0 +GG EK_GLOBALS ada___userland__syscall__futex local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___arch__local__get_current_process ada___ipc__futex__wait ada___ipc__futex__wake FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__clock 11 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__clocks__get_monotonic_resolution ada___arch__clocks__get_monotonic_time ada___arch__clocks__get_real_time_resolution ada___arch__clocks__get_real_time ada___arch__clocks__set_real_time ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__clock 0 +GG EK_GLOBALS ada___userland__syscall__clock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 15 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__clock_nanosleep 11 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address scheduler__yield_if_able ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__clocks__get_monotonic_time ada___arch__clocks__get_real_time ada___lib__time__increment ada___lib__time__is_greater_equal ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__clock_nanosleep 0 +GG EK_GLOBALS ada___userland__syscall__clock_nanosleep local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 18 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__yield_if_able scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___lib__time__increment ada___lib__time__is_greater_equal ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_rusage 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_runtime_times ada___userland__process__get_children_runtimes ada___userland__process__get_common_map ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_rusage 0 +GG EK_GLOBALS ada___userland__syscall__get_rusage local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_runtime_times ada___userland__process__get_children_runtimes ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__recvfrom 13 ada___userland__syscall__translate_status__2 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__read ada___ipc__socket__read__2 ada___ipc__socket__read__3 ada___ipc__socket__read__4 ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__recvfrom 0 +GG EK_GLOBALS ada___userland__syscall__recvfrom local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__read ada___ipc__socket__read__2 ada___ipc__socket__read__3 ada___ipc__socket__read__4 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__sendto 13 ada___userland__syscall__translate_status__2 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__write ada___ipc__socket__write__2 ada___ipc__socket__write__3 ada___ipc__socket__write__4 ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sendto 0 +GG EK_GLOBALS ada___userland__syscall__sendto local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__write ada___ipc__socket__write__2 ada___ipc__socket__write__3 ada___ipc__socket__write__4 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__config_netinterface 12 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address devices__from_unique_id vfs__stat ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___networking__interfaces__block ada___networking__interfaces__modify_addresses ada___networking__interfaces__modify_addresses__2 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__config_netinterface 0 +GG EK_GLOBALS ada___userland__syscall__config_netinterface local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 21 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address devices__from_unique_id scheduler__bail vfs__stat ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process ada___networking__interfaces__block ada___networking__interfaces__modify_addresses ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__utimes 11 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__change_access_times ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__utimes 0 +GG EK_GLOBALS ada___userland__syscall__utimes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__open vfs__change_access_times ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__create_tcluster 5 ada___userland__syscall__execute_mac_failure scheduler__create_cluster scheduler__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__create_tcluster 0 +GG EK_GLOBALS ada___userland__syscall__create_tcluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 14 ada___arch__mmu__make_active scheduler__bail scheduler__create_cluster scheduler__convert__2 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__switch_tcluster 6 ada___userland__syscall__execute_mac_failure scheduler__switch_cluster scheduler__convert__3 scheduler__convert__4 ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__switch_tcluster 0 +GG EK_GLOBALS ada___userland__syscall__switch_tcluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 15 ada___arch__mmu__make_active scheduler__bail scheduler__switch_cluster scheduler__convert__3 scheduler__convert__4 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__sigprocmask__c1 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sigprocmask__c1 0 +GG EK_GLOBALS ada___userland__syscall__sigprocmask__c1 local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___userland__syscall__sigprocmask ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__sigprocmask__c2 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sigprocmask__c2 0 +GG EK_GLOBALS ada___userland__syscall__sigprocmask__c2 local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___userland__syscall__sigprocmask ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__sigprocmask 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sigprocmask 2 ada___userland__syscall__sigprocmask__c1 ada___userland__syscall__sigprocmask__c2 +GG EK_GLOBALS ada___userland__syscall__sigprocmask local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_masked_signals calls_conditional 5 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__set_masked_signals ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__sigaction 10 ada___userland__syscall__check_userland_access ada___userland__syscall__translate_signal ada___system__storage_elements__to_address ada___system__storage_elements__to_integer ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___userland__process__get_signal_handler ada___userland__process__set_signal_handler ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sigaction 0 +GG EK_GLOBALS ada___userland__syscall__sigaction local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___userland__process__get_signal_handler ada___userland__process__set_signal_handler ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__send_signal 7 ada___userland__syscall__translate_signal ada___userland__process__get_uid ada___userland__process__get_effective_uid ada___userland__process__raise_signal ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__send_signal 0 +GG EK_GLOBALS ada___userland__syscall__send_signal local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___userland__process__get_uid ada___userland__process__get_effective_uid ada___userland__process__raise_signal ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_prio 8 ada___userland__syscall__execute_mac_failure scheduler__get_niceness scheduler__convert__3 ada___userland__process__get_niceness ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_thread ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_prio 0 +GG EK_GLOBALS ada___userland__syscall__get_prio local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___arch__mmu__make_active scheduler__bail scheduler__get_niceness scheduler__convert__3 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_niceness ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__convert__2 ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_prio 8 ada___userland__syscall__execute_mac_failure scheduler__set_niceness scheduler__convert__3 ada___userland__process__set_niceness ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_thread ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_prio 0 +GG EK_GLOBALS ada___userland__syscall__set_prio local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___arch__mmu__make_active scheduler__bail scheduler__set_niceness scheduler__convert__3 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__set_niceness ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__convert__2 ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_gid 2 ada___userland__process__get_gid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_gid 0 +GG EK_GLOBALS ada___userland__syscall__get_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_gid calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_egid 2 ada___userland__process__get_effective_gid ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_egid 0 +GG EK_GLOBALS ada___userland__syscall__get_egid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_effective_gid calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_gids 5 ada___userland__process__get_gid ada___userland__process__set_gid ada___userland__process__set_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_gids 0 +GG EK_GLOBALS ada___userland__syscall__set_gids local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___userland__process__get_gid ada___userland__process__set_gid ada___userland__process__set_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_groups 5 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_supplementary_groups ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_groups 0 +GG EK_GLOBALS ada___userland__syscall__get_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__get_supplementary_groups ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_groups 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__set_supplementary_groups ada___userland__process__empty_supplementary_groups ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_groups 0 +GG EK_GLOBALS ada___userland__syscall__set_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__set_supplementary_groups ada___userland__process__empty_supplementary_groups ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__tty_name 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__get_name ada___userland__process__get_file ada___userland__process__get_common_map ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__tty_name 0 +GG EK_GLOBALS ada___userland__syscall__tty_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__get_name ada___userland__process__get_file ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__fadvise 4 ada___userland__syscall__translate_status vfs__synchronize__2 ada___userland__process__get_file ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fadvise 0 +GG EK_GLOBALS ada___userland__syscall__fadvise local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 vfs__synchronize__2 ada___userland__process__get_file ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmat__align__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat__align__align_up 0 +GG EK_GLOBALS ada___userland__syscall__shmat__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmat__align ada___userland__syscall__shmat ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmat__align__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat__align__align_down 0 +GG EK_GLOBALS ada___userland__syscall__shmat__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmat__align ada___userland__syscall__shmat ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmat__align__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat__align__divide_round_up 0 +GG EK_GLOBALS ada___userland__syscall__shmat__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmat__align ada___userland__syscall__shmat ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmat__align 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat__align 0 +GG EK_GLOBALS ada___userland__syscall__shmat__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__syscall__shmat ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmat 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat 0 +GG EK_GLOBALS ada___userland__syscall__shmat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__map_range ada___userland__process__get_common_map ada___userland__process__bump_alloc_base ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___ipc__shm__get_address ada___ipc__shm__check_permissions ada___ipc__shm__modify_attachment FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmctl 11 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___ipc__shm__check_permissions ada___ipc__shm__mark_refcounted ada___ipc__shm__modify_permissions ada___ipc__shm__fetch_information +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmctl 0 +GG EK_GLOBALS ada___userland__syscall__shmctl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___ipc__shm__check_permissions ada___ipc__shm__mark_refcounted ada___ipc__shm__modify_permissions ada___ipc__shm__fetch_information FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmdt 8 ada___system__storage_elements__to_address ada___system__storage_elements__to_integer ada___arch__mmu__translate_address ada___arch__mmu__unmap_range ada___userland__process__get_common_map ada___arch__local__get_current_process ada___ipc__shm__get_segment_and_size ada___ipc__shm__modify_attachment +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmdt 0 +GG EK_GLOBALS ada___userland__syscall__shmdt local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___arch__mmu__translate_address ada___ipc__shm__get_segment_and_size calls_conditional 4 ada___arch__mmu__unmap_range ada___userland__process__get_common_map ada___arch__local__get_current_process ada___ipc__shm__modify_attachment FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmget__align__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget__align__align_up 0 +GG EK_GLOBALS ada___userland__syscall__shmget__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmget__align ada___userland__syscall__shmget ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmget__align__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget__align__align_down 0 +GG EK_GLOBALS ada___userland__syscall__shmget__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmget__align ada___userland__syscall__shmget ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmget__align__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget__align__divide_round_up 0 +GG EK_GLOBALS ada___userland__syscall__shmget__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmget__align ada___userland__syscall__shmget ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmget__align 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget__align 0 +GG EK_GLOBALS ada___userland__syscall__shmget__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__syscall__shmget ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__shmget 8 ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid ada___arch__local__get_current_process ada___ipc__shm__create_segment ada___ipc__shm__create_unkeyed_segment ada___ipc__shm__get_segment ada___userland__syscall__shmget__align ada___userland__syscall__shmget__align__align_up +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget 0 +GG EK_GLOBALS ada___userland__syscall__shmget local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid calls_conditional 4 ada___arch__local__get_current_process ada___ipc__shm__create_segment ada___ipc__shm__create_unkeyed_segment ada___ipc__shm__get_segment FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__getsockopt 7 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_type ada___ipc__socket__is_listening ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__getsockopt 0 +GG EK_GLOBALS ada___userland__syscall__getsockopt local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 7 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_type ada___ipc__socket__is_listening ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__setsockopt 4 ada___userland__syscall__check_userland_access ada___userland__process__get_file ada___userland__process__get_common_map ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__setsockopt 0 +GG EK_GLOBALS ada___userland__syscall__setsockopt local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_thread_name 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address scheduler__get_name scheduler__convert__3 ada___userland__process__get_common_map ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_thread_name 0 +GG EK_GLOBALS ada___userland__syscall__get_thread_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address scheduler__get_name scheduler__convert__3 ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_thread_name 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address scheduler__set_name scheduler__convert__3 ada___userland__process__get_common_map ada___arch__local__get_current_process +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_thread_name 0 +GG EK_GLOBALS ada___userland__syscall__set_thread_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address scheduler__set_name scheduler__convert__3 ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__failure_policy 10 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___userland__memory_failure__get_system_policy ada___userland__memory_failure__set_system_policy ada___userland__oom_failure__get_killing_config ada___userland__oom_failure__configure_killing +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__failure_policy 0 +GG EK_GLOBALS ada___userland__syscall__failure_policy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 19 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process ada___userland__memory_failure__get_system_policy ada___userland__memory_failure__set_system_policy ada___userland__oom_failure__get_killing_config ada___userland__oom_failure__configure_killing FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__do_exit 8 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___lib__messages__put_line ada___arch__local__get_current_thread +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__do_exit 0 +GG EK_GLOBALS ada___userland__syscall__do_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 5 scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit calls_conditional 2 ada___arch__mmu__make_active ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__do_exit__2 8 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit__2 ada___lib__messages__put_line ada___arch__local__get_current_thread +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__do_exit__2 0 +GG EK_GLOBALS ada___userland__syscall__do_exit__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 5 scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit__2 calls_conditional 2 ada___arch__mmu__make_active ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__pre_syscall_hook 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pre_syscall_hook 0 +GG EK_GLOBALS ada___userland__syscall__pre_syscall_hook local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___arch__mmu__make_active scheduler__yield_if_able scheduler__bail scheduler__signal_kernel_entry scheduler__convert ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_traced_info ada___userland__process__issue_exit__2 ada___userland__process__get_raised_signal_actions ada___ipc__fifo__is_empty ada___ipc__fifo__write ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__post_syscall_hook 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__post_syscall_hook 0 +GG EK_GLOBALS ada___userland__syscall__post_syscall_hook local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___arch__mmu__make_active scheduler__yield_if_able scheduler__bail scheduler__signal_kernel_exit scheduler__convert ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_traced_info ada___userland__process__issue_exit__2 ada___userland__process__get_raised_signal_actions ada___ipc__fifo__is_empty ada___ipc__fifo__write ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_mappability 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_mappability 0 +GG EK_GLOBALS ada___userland__syscall__check_userland_mappability local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___system__storage_elements__to_address ada___arch__mmu__translate_address TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__do_remote_exit 3 ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__do_remote_exit 0 +GG EK_GLOBALS ada___userland__syscall__do_remote_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 3 ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__common_syscall_hook 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__common_syscall_hook 0 +GG EK_GLOBALS ada___userland__syscall__common_syscall_hook local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 15 ada___arch__mmu__make_active scheduler__yield_if_able scheduler__bail scheduler__convert ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_traced_info ada___userland__process__issue_exit__2 ada___userland__process__get_raised_signal_actions ada___ipc__fifo__is_empty ada___ipc__fifo__write ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__translate_status 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_status 0 +GG EK_GLOBALS ada___userland__syscall__translate_status local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__translate_status__2 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_status__2 0 +GG EK_GLOBALS ada___userland__syscall__translate_status__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__translate_status__3 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_status__3 0 +GG EK_GLOBALS ada___userland__syscall__translate_status__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__translate_status__4 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_status__4 0 +GG EK_GLOBALS ada___userland__syscall__translate_status__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__exec_into_process__free 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__exec_into_process__free 0 +GG EK_GLOBALS ada___userland__syscall__exec_into_process__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 3 ada___userland__syscall__exec_into_process ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__exec_into_process 18 ada___userland__syscall__to_string ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___arch__mmu__fork_table vfs__open vfs__close ada___userland__process__reassign_process_addresses ada___userland__process__flush_exec_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__set_identifier ada___userland__process__get_effective_uid ada___userland__process__get_capabilities ada___userland__process__check_permissions ada___userland__loader__start_program__2 ada___userland__syscall__exec_into_process__free +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__exec_into_process 0 +GG EK_GLOBALS ada___userland__syscall__exec_into_process local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 25 ada___system__storage_elements__to_address ada___arch__mmu__fork_table ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__close ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__reassign_process_addresses ada___userland__process__flush_files ada___userland__process__flush_exec_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__set_identifier ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__check_permissions ada___lib__messages__image ada___userland__loader__start_program__2 ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__mmu__kernel_table LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__to_string 1 lib__c_string_length +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__to_string 0 +GG EK_GLOBALS ada___userland__syscall__to_string local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__get_mmap_prot 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_mmap_prot 0 +GG EK_GLOBALS ada___userland__syscall__get_mmap_prot local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__execute_mac_failure 5 ada___userland__syscall__do_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___lib__messages__put_line ada___lib__messages__image +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__execute_mac_failure 0 +GG EK_GLOBALS ada___userland__syscall__execute_mac_failure local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 1 ada___lib__messages__image calls_conditional 9 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__pty_ioctl 10 ada___ipc__pty__get_termios ada___ipc__pty__set_termios ada___ipc__pty__get_winsize ada___ipc__pty__set_winsize ada___ipc__pty__flush_primary ada___ipc__pty__flush_secondary ada___ipc__pty__start_primary ada___ipc__pty__start_secondary ada___ipc__pty__stop_primary ada___ipc__pty__stop_secondary +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pty_ioctl 0 +GG EK_GLOBALS ada___userland__syscall__pty_ioctl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___ipc__pty__get_termios ada___ipc__pty__set_termios ada___ipc__pty__get_winsize ada___ipc__pty__set_winsize ada___ipc__pty__flush_primary ada___ipc__pty__flush_secondary ada___ipc__pty__start_primary ada___ipc__pty__start_secondary ada___ipc__pty__stop_primary ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__set_mac_capabilities__2 2 ada___userland__process__get_capabilities ada___userland__process__set_capabilities +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_mac_capabilities__2 0 +GG EK_GLOBALS ada___userland__syscall__set_mac_capabilities__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__set_capabilities calls_conditional 1 ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__mac_syscall_to_kernel 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__mac_syscall_to_kernel 0 +GG EK_GLOBALS ada___userland__syscall__mac_syscall_to_kernel local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__check_add_file 3 ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__get_limit +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_add_file 0 +GG EK_GLOBALS ada___userland__syscall__check_add_file local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access__al__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access__al__align_up 0 +GG EK_GLOBALS ada___userland__syscall__check_userland_access__al__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__check_userland_access__al ada___userland__syscall__check_userland_access ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access__al__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access__al__align_down 0 +GG EK_GLOBALS ada___userland__syscall__check_userland_access__al__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__check_userland_access__al ada___userland__syscall__check_userland_access ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access__al__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access__al__divide_round_up 0 +GG EK_GLOBALS ada___userland__syscall__check_userland_access__al__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__check_userland_access__al ada___userland__syscall__check_userland_access ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access__al 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access__al 0 +GG EK_GLOBALS ada___userland__syscall__check_userland_access__al local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__syscall__check_userland_access ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access 0 +GG EK_GLOBALS ada___userland__syscall__check_userland_access local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___system__storage_elements__to_address ada___arch__mmu__translate_address TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__resolve_at_directive 2 ada___userland__process__get_file ada___userland__process__get_cwd +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__resolve_at_directive 0 +GG EK_GLOBALS ada___userland__syscall__resolve_at_directive local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__get_file ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall__translate_signal 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_signal 0 +GG EK_GLOBALS ada___userland__syscall__translate_signal local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___userland__syscall 0 +GG EK_PROOF_DEPENDENCIES ada___userland__syscall 0 +GG EK_GLOBALS ada___userland__syscall local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__symlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__connect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__config_netinterface FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__3 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__socket FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sysconf FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__open_pty FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__utimes FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__4 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_hostname FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__spawn FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fsync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__create_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__link FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__create_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_program FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__switch_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_tid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__to_string FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__create_unkeyed_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_program__2 FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ptrace FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_mmap_prot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__manage_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmget__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__syscall__shmget BODY_PART +GG EK_FLOW_SCOPE ada___ipc__shm__get_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__execute_mac_failure FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__get_segment_and_size FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_elf FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pty_ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__listen FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__syscall__exec_into_process__freeGP202833 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__get_address FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sys_accept FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__loader__start_shebang FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__check_permissions FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__syscall__shmget__align__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmget__align VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART +GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mac_syscall_to_kernel FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__mark_refcounted FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigaction FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__modify_attachment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_add_file FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__modify_permissions FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process__freeGP202833 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__exec_into_process BODY_PART +GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__send_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmget__align__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmget__align VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fcntl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__resolve_at_directive FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography +GG EK_FLOW_SCOPE ada___userland__syscall__get_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmget__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmget__align VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__exit_thread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__faccess FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__fetch_information FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__translate_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__memory_failure TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_random FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fstat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__get_total_size FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__memory_failure__get_system_policy FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__shm__check_and_maybe_free FALSE FALSE FALSE FALSE TRUE ada___ipc__shm PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__memory_failure__set_system_policy FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mprotect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__memory_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_egid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__chdir FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_gids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__power TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access__al TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__syscall__check_userland_access BODY_PART +GG EK_FLOW_SCOPE ada___arch__power__halt FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART +GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__power__reboot FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sched_yield FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__power__poweroff FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__ppoll FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__delete_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure__get_killing_config FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__tty_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pipe FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure__configure_killing FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__oom_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_euid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access__al__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__check_userland_access__al VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__futex TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_uids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE config TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__rename FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fchmod FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fadvise FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__futex__wait FALSE FALSE FALSE FALSE TRUE ada___ipc__futex VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access__al__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__check_userland_access__al VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__add_mac_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__futex__wake FALSE FALSE FALSE FALSE TRUE ada___ipc__futex VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__umask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory +GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART +GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access__al__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__check_userland_access__al VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__reboot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART +GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__fchown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sys_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__syscall__getdents__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__syscall__getdents__freeGP83398 VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__arch_prctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces TRUE FALSE FALSE FALSE FALSE networking +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__register_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__umount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pwrite FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__readlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__open FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_sock_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__getdents__freeGP83398 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__getdents BODY_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmat__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__syscall__shmat BODY_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmdt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__close FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_peer_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__block FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces +GG EK_FLOW_SCOPE ada___userland__syscall__read FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___ipc__filelock__could_acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE ada___userland__syscall__shmget FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__write FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shutdown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmat__align__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmat__align VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc +GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__seek FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__getsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ppoll__c1 FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___userland__syscall__ppoll__c1GP112594 VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmat__align__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmat__align VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__futex FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__setsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__getdents FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ppoll__c1GP112594 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__ppoll BODY_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__shmat__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmat__align VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ppoll__c2 FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___userland__syscall__ppoll__c2GP112674 VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__mmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__clock FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__makenode FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__set_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask__c1 FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___userland__syscall__sigprocmask__c1GP163663 VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__munmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__ppoll__c2GP112674 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__ppoll BODY_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__clock_nanosleep FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__unlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_pid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_ppid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__truncate FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask__c1GP163663 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__sigprocmask BODY_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__exec FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask__c2 FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___userland__syscall__sigprocmask__c2GP163743 VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__list_all FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__failure_policy FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_conversion FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__filelock__inner_could_acquire FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock PRIVATE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__get_rusage FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__do_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__recvfrom FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__do_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask__c2GP163743 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__sigprocmask BODY_PART +GG EK_FLOW_SCOPE ada___userland__syscall__clone FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__pre_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__post_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__sendto FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_mappability FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__do_remote_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___userland__syscall__common_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland +GG EK_FLOW_SCOPE ada___userland__syscall__wait FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__syscall__bind FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART +GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART +GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_REMOTE_STATES 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-syscall.cswi b/obj/gnatprove/phase1/userland-syscall.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/userland-syscall.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland.ali b/obj/gnatprove/phase1/userland.ali index c7b8ac0..44e4ee2 100644 --- a/obj/gnatprove/phase1/userland.ali +++ b/obj/gnatprove/phase1/userland.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/userland.cswi b/obj/gnatprove/phase1/userland.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/userland.cswi +++ b/obj/gnatprove/phase1/userland.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/vfs-dev.adb.stderr b/obj/gnatprove/phase1/vfs-dev.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/vfs-dev.adb.stdout b/obj/gnatprove/phase1/vfs-dev.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/vfs-dev.ali b/obj/gnatprove/phase1/vfs-dev.ali new file mode 100644 index 0000000..e5d731b --- /dev/null +++ b/obj/gnatprove/phase1/vfs-dev.ali @@ -0,0 +1,487 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RR NO_DELAY +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RR NO_TASKING +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U vfs.dev%b vfs-dev.adb adc56e17 OO PK IU +Z system%s system.ads system.ali +Z system.storage_elements%s s-stoele.ads s-stoele.ali +W vfs%s vfs.adb vfs.ali + +U vfs.dev%s vfs-dev.ads 8f7f7e04 OO PK IU +W system%s system.ads system.ali +W vfs%s vfs.adb vfs.ali + +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D vfs.ads 20250222165738 63b4365d vfs%s +D vfs-dev.ads 20250222165738 f8e32356 vfs.dev%s +D vfs-dev.adb 20250222165738 55264d41 vfs.dev%b +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 arch.ads +20K9*Arch 52e9 11|97r18 100r18 12|284r18 287r18 +X 2 arch-mmu.ads +22K14*MMU 250e13 11|97r23 100r23 12|284r23 287r23 +26R9*Page_Permissions 32e14 11|100r27 12|287r27 +43P9*Page_Table_Acc(42R9) 11|97r27 12|284r27 +X 3 devices.ads +22K9*Devices 279e12 12|105r27 118r20 130r7 139r32 143r16 147r13 237r35 238r35 +. 243r13 266r24 293r10 310r7 315r20 318r7 320r17 336r10 +29A9*Operation_Data(4|70M9) 11|67r26 76r22 12|163r26 186r22 +34A9*UUID(4|70M9) 12|266r32 +83I9*Device_Handle 11|21r23 12|24r23 169r23 192r23 212r22 267r28 +. 291r22 308r22 334r22 +84A9*Device_List(83I9) 12|118r28 315r28 +88i4*Max_Name_Length{natural} 12|105r35 +123V13*Fetch{34A9} 12|270s28 +130U14*Fetch_Name 12|147s21 +141U14*List 12|130s15 318s15 +150V13*Is_Block_Device{boolean} 12|143s24 243s21 +152V13*Get_Block_Count{4|84M9} 12|238s43 +154V13*Get_Block_Size{natural} 12|237s43 +161V13*Get_Unique_ID{natural} 12|139s40 +165V13*From_Unique_ID{83I9} 12|169s40 192s40 212s39 267s45 291s39 308s39 +. 334s39 +171V13*Synchronize{boolean} 12|320s25 336s18 +193U14*Read 12|172s7 +210U14*Write 12|195s7 +224V13*IO_Control{boolean} 12|272s19 +236V13*Mmap{boolean} 12|293s18 +249U14*Poll 12|310s15 +X 4 interfac.ads +70M9*Unsigned_8 +81M9*Unsigned_32 +84M9*Unsigned_64 11|35r62 37r65 39r56 41r64 45r33 46r33 50r33 51r33 53r57 +. 66r22 75r22 90r17 99r18 12|56r62 62r65 68r56 74r64 82r33 83r33 93r33 94r33 +. 102r57 105r14 139r19 162r22 185r22 242r25 254r17 286r18 +X 7 memory.ads +19K9*Memory 36e11 11|98r18 12|285r18 +35M12*Virtual_Address{9|82M9} 11|98r25 12|285r25 +X 8 system.ads +37K9*System 155e11 11|17w6 24r27 28r23 33r35 35r35 37r38 39r29 41r36 44r29 +. 49r29 53r34 56r20 64r22 73r22 82r18 88r17 91r17 95r18 104r20 110r33 113r20 +. 12|27r27 34r20 39r23 51r35 53r13 56r35 62r38 68r29 74r36 81r29 92r29 102r34 +. 109r20 160r22 183r22 206r18 252r17 255r17 282r18 301r20 313r33 328r20 +67M9*Address 11|24r34 28r30 33r42 35r42 37r45 39r36 41r43 44r36 49r36 53r41 +. 56r27 64r29 73r29 82r25 88r24 91r24 95r25 104r27 110r40 113r27 12|27r34 +. 34r20 39r30 51r42 56r42 62r45 68r36 74r43 81r36 92r36 102r41 109r27 160r29 +. 183r29 206r25 252r24 255r24 282r25 301r27 313r40 328r27 +69m4*Null_Address{67M9} 12|53r20 +X 9 s-stoele.ads +82M9*Integer_Address +X 10 vfs.ads +24K9*VFS 674e8 11|19r9 116r5 12|17r14 342r5 +28M9*File_Inode_Number<4|84M9> 11|25r27 57r20 65r22 74r22 83r18 89r17 96r18 +. 105r20 114r20 12|28r27 110r20 161r22 184r22 207r18 253r17 283r18 302r20 +. 329r20 +32M12*File_Mode{4|81M9} +39n37*File_Directory{39E9} 12|217r35 +40n23*File_Character_Device{39E9} 12|142r33 231r35 +40n46*File_Block_Device{39E9} 12|145r19 244r31 +41R9*File_Stat 54e14 11|84r22 12|208r22 +42m7*Unique_Identifier{28M9} 12|216m14 230m14 +43e7*Type_Of_File{39E9} 12|217m14 231m14 244m15 +44m7*Mode{32M12} 12|218m14 232m14 +45m7*UID{4|81M9} 12|219m14 233m14 +46m7*GID{4|81M9} 12|220m14 234m14 +47i7*Hard_Link_Count{positive} 12|221m14 235m14 +48m7*Byte_Size{4|84M9} 12|222m14 236m14 242m12 +49i7*IO_Block_Size{natural} 12|223m14 237m14 242r40 +50m7*IO_Block_Count{4|84M9} 12|224m14 238m14 242r59 +51r7*Creation_Time{35R9} 12|225m14 239m14 +52r7*Modification_Time{35R9} 12|226m14 240m14 +53r7*Access_Time{35R9} 12|227m14 241m14 +58m7*Inode_Number{4|84M9} 12|138m17 +59a7*Name_Buffer{string} 12|140m17 149m49 +60i7*Name_Len{natural} 12|141m17 150m49 +61e7*Type_Of_File{39E9} 12|142m17 144m48 +63A9*Directory_Entities(57R9) 11|59r24 12|112r24 +234E9*FS_Status 242e16 11|61r24 70r26 79r26 85r22 92r21 101r22 110r56 115r36 +. 12|114r24 166r26 189r26 209r22 256r21 288r22 313r56 330r36 +235n8*FS_Success{234E9} 12|156r18 179r32 202r32 248r18 271r28 273r26 294r20 +. 324r14 337r17 +236n8*FS_Invalid_Value{234E9} 12|124r23 263r20 +241n8*FS_IO_Failure{234E9} 12|179r48 202r48 275r26 296r20 321r20 339r17 +X 11 vfs-dev.ads +19K13*Dev 10|24k9 11|116l9 116e12 12|17b18 342l9 342t12 +20U14*Probe 21>8 22>8 23>8 24<8 25<8 12|23b14 36l8 36t13 +21i8 Handle{3|83I9} 12|24b8 30r28 +22b8 Do_Read_Only{boolean} 12|25b8 31r28 +23b8 Do_Relatime{boolean} 12|26b8 32r28 +24m8 Data_Addr{8|67M9} 12|27b8 34m7 +25m8 Root_Ino{10|28M9} 12|28b8 35m7 +27U14*Remount 28>8 29>8 30>8 31<8 12|38b14 49l8 49t15 +28m8 FS{8|67M9} 12|39b8 44r28 +29b8 Do_Read_Only{boolean} 12|40b8 45r28 +30b8 Do_Relatime{boolean} 12|41b8 46r28 +31b8 Success{boolean} 12|42b8 48m7 +33U14*Unmount 33=23 12|51b14 54l8 54t15 +33m23 FS{8|67M9} 12|51b23 53m7 +35U14*Get_Block_Size 35>30 35<51 12|56b14 60l8 60t22 +35m30 FS{8|67M9} 12|56b30 57r28 +35m51 Size{4|84M9} 12|56b51 59m7 +37U14*Get_Fragment_Size 37>33 37<54 12|62b14 66l8 66t25 +37m33 FS{8|67M9} 12|62b33 63r28 +37m54 Size{4|84M9} 12|62b54 65m7 +39U14*Get_Size 39>24 39<45 12|68b14 72l8 72t16 +39m24 FS{8|67M9} 12|68b24 69r28 +39m45 Size{4|84M9} 12|68b45 71m7 +41U14*Get_Inode_Count 41>31 41<52 12|74b14 78l8 78t23 +41m31 FS{8|67M9} 12|74b31 75r28 +41m52 Count{4|84M9} 12|74b52 77m7 +43U14*Get_Free_Blocks 44>8 45<8 46<8 12|80b14 89l8 89t23 +44m8 FS{8|67M9} 12|81b8 85r28 +45m8 Free_Blocks{4|84M9} 12|82b8 87m7 +46m8 Free_Unpriviledged{4|84M9} 12|83b8 88m7 +48U14*Get_Free_Inodes 49>8 50<8 51<8 12|91b14 100l8 100t23 +49m8 FS{8|67M9} 12|92b8 96r28 +50m8 Free_Inodes{4|84M9} 12|93b8 98m7 +51m8 Free_Unpriviledged{4|84M9} 12|94b8 99m7 +53V13*Get_Max_Length{4|84M9} 53>29 12|102b13 106l8 106t22 +53m29 FS{8|67M9} 12|102b29 103r28 +55U14*Read_Entries 56>8 57>8 58>8 59<8 60<8 61<8 12|108b14 157l8 157t20 +56m8 FS_Data{8|67M9} 12|109b8 116r28 +57m8 Ino{10|28M9} 12|110b8 122r10 +58i8 Offset{natural} 12|111b8 132r22 +59a8 Entities{10|63A9} 12|112b8 133r28 137m13 137r23 144m16 144r26 149m17 +. 149r17 149r27 150m17 150r17 150r27 +60i8 Ret_Count{natural} 12|113b8 123m10 128m7 133r16 151m13 151r26 +61e8 Success{10|234E9} 12|114b8 124m10 156m7 +63U14*Read 64>8 65>8 66>8 67<8 68<8 69>8 70<8 12|159b14 180l8 180t12 +64m8 FS_Data{8|67M9} 12|160b8 168r28 +65m8 Ino{10|28M9} 12|161b8 169r65 +66m8 Offset{4|84M9} 12|162b8 174r26 +67a8 Data{3|29A9} 12|163b8 175m26 +68i8 Ret_Count{natural} 12|164b8 176m26 +69b8 Is_Blocking{boolean} 12|165b8 178r26 +70e8 Success{10|234E9} 12|166b8 179m7 +72U14*Write 73>8 74>8 75>8 76>8 77<8 78>8 79<8 12|182b14 203l8 203t13 +73m8 FS_Data{8|67M9} 12|183b8 191r28 +74m8 Ino{10|28M9} 12|184b8 192r65 +75m8 Offset{4|84M9} 12|185b8 197r26 +76a8 Data{3|29A9} 12|186b8 198r26 +77i8 Ret_Count{natural} 12|187b8 199m26 +78b8 Is_Blocking{boolean} 12|188b8 201r26 +79e8 Success{10|234E9} 12|189b8 202m7 +81U14*Stat 82>8 83>8 84<8 85<8 12|205b14 249l8 249t12 +82m8 Data{8|67M9} 12|206b8 211r28 +83m8 Ino{10|28M9} 12|207b8 212r64 214r10 230r35 +84r8 S{10|41R9} 12|208b8 215m10 229m10 242m10 242r38 242r57 244m13 +85e8 Success{10|234E9} 12|209b8 248m7 +87U14*IO_Control 88>8 89>8 90>8 91>8 92<8 12|251b14 279l8 279t18 +88m8 Data{8|67M9} 12|252b8 258r28 +89m8 Ino{10|28M9} 12|253b8 262r10 267r70 +90m8 Req{4|84M9} 12|254b8 269r16 272r36 +91m8 Arg{8|67M9} 12|255b8 266r61 272r41 +92e8 Status{10|234E9} 12|256b8 263m10 271m16 273m16 275m16 +94U14*Mmap 95>8 96>8 97>8 98>8 99>8 100>8 101<8 12|281b14 298l8 298t12 +95m8 Data{8|67M9} 12|282b8 290r28 +96m8 Ino{10|28M9} 12|283b8 291r64 +97p8 Map{2|43P9} 12|284b8 293r29 +98m8 Address{7|35M12} 12|285b8 293r34 +99m8 Length{4|84M9} 12|286b8 293r43 +100r8 Flags{2|26R9} 12|287b8 293r51 +101e8 Status{10|234E9} 12|288b8 294m10 296m10 +103U14*Poll 104>8 105>8 106<8 107<8 108<8 12|300b14 311l8 311t12 +104m8 Data{8|67M9} 12|301b8 307r28 +105m8 Ino{10|28M9} 12|302b8 308r64 +106b8 Can_Read{boolean} 12|303b8 310m26 +107b8 Can_Write{boolean} 12|304b8 310m36 +108b8 Is_Error{boolean} 12|305b8 310m47 +110V13*Synchronize{10|234E9} 110>26 12|313b13 325l8 325t19 +110m26 Data{8|67M9} 12|313b26 314r28 +112V13*Synchronize{10|234E9} 113>8 114>8 115>8 12|327b13 341l8 341t19 +113m8 Data{8|67M9} 12|328b8 332r28 +114m8 Ino{10|28M9} 12|329b8 334r64 +115b8 Data_Only{boolean} 12|330b8 333r28 +X 12 vfs-dev.adb +20N4 Root_Inode 35r20 122r17 214r16 216r35 262r16 +21N4 Device_Permissions 218r35 232r35 +118a7 Buffer{3|84A9} 130m21 139r55 143r41 148r17 +119i7 Idx{natural} 129m7 137r40 144r43 149r44 150r44 152m13 152r32 +120i7 Buffer_Len{natural} 130m29 131r21 +131i11 I{integer} 132r13 139r63 143r49 148r25 +169i7 Dev{3|83I9} 173r26 +170b7 Succ{boolean} 177m26 179r22 +192i7 Dev{3|83I9} 196r26 +193b7 Succ{boolean} 200m26 202r22 +212i7 Dev{3|83I9} 237r59 238r60 243r38 +260N7 DEV_UUID 269r22 +266a13 Arg_UUID{3|34A9} 270m16 +267i13 Dev{3|83I9} 270r35 272r31 +291i7 Dev{3|83I9} 293r24 +308i7 Dev{3|83I9} 310r21 +315a7 Buffer{3|84A9} 318m21 320r38 +316i7 Buffer_Len{natural} 318m29 319r21 +319i11 I{integer} 320r46 +334i7 Dev{3|83I9} 336r31 + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___vfs__dev__probe 1 ada___system__storage_elements__to_address +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__probe 0 +GG EK_GLOBALS ada___vfs__dev__probe local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__remount 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__remount 0 +GG EK_GLOBALS ada___vfs__dev__remount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__unmount 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__unmount 0 +GG EK_GLOBALS ada___vfs__dev__unmount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__get_block_size 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_block_size 0 +GG EK_GLOBALS ada___vfs__dev__get_block_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__get_fragment_size 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_fragment_size 0 +GG EK_GLOBALS ada___vfs__dev__get_fragment_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__get_size 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_size 0 +GG EK_GLOBALS ada___vfs__dev__get_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__get_inode_count 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_inode_count 0 +GG EK_GLOBALS ada___vfs__dev__get_inode_count local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__get_free_blocks 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_free_blocks 0 +GG EK_GLOBALS ada___vfs__dev__get_free_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__get_free_inodes 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_free_inodes 0 +GG EK_GLOBALS ada___vfs__dev__get_free_inodes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__get_max_length 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_max_length 0 +GG EK_GLOBALS ada___vfs__dev__get_max_length local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__read_entries 4 devices__fetch_name devices__list devices__is_block_device devices__get_unique_id +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__read_entries 0 +GG EK_GLOBALS ada___vfs__dev__read_entries local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 devices__fetch_name devices__list devices__is_block_device devices__get_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__read 2 devices__from_unique_id devices__read +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__read 0 +GG EK_GLOBALS ada___vfs__dev__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 devices__read calls_conditional 1 devices__from_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__write 2 devices__from_unique_id devices__write +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__write 0 +GG EK_GLOBALS ada___vfs__dev__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 devices__write calls_conditional 1 devices__from_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__stat 4 devices__is_block_device devices__get_block_count devices__get_block_size devices__from_unique_id +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__stat 0 +GG EK_GLOBALS ada___vfs__dev__stat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 devices__is_block_device devices__get_block_count devices__get_block_size devices__from_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__io_control 3 devices__fetch__3 devices__from_unique_id devices__io_control +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__io_control 0 +GG EK_GLOBALS ada___vfs__dev__io_control local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__fetch__3 devices__from_unique_id devices__io_control FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__mmap 2 devices__from_unique_id devices__mmap +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__mmap 0 +GG EK_GLOBALS ada___vfs__dev__mmap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 devices__from_unique_id devices__mmap FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__poll 2 devices__from_unique_id devices__poll +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__poll 0 +GG EK_GLOBALS ada___vfs__dev__poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 devices__poll calls_conditional 1 devices__from_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__synchronize 2 devices__list devices__synchronize +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__synchronize 0 +GG EK_GLOBALS ada___vfs__dev__synchronize local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 devices__list calls_conditional 1 devices__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev__synchronize__2 2 devices__from_unique_id devices__synchronize +GG EK_PROOF_DEPENDENCIES ada___vfs__dev__synchronize__2 0 +GG EK_GLOBALS ada___vfs__dev__synchronize__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 devices__from_unique_id devices__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__dev 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__dev 0 +GG EK_GLOBALS ada___vfs__dev local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___vfs__dev__read FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__write FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev TRUE FALSE FALSE FALSE FALSE vfs +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__io_control FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__mmap FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___vfs__dev__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__poll FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__dev__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__synchronize FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__dev__synchronize__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__dev__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/vfs-dev.cswi b/obj/gnatprove/phase1/vfs-dev.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/vfs-dev.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/vfs-ext.adb.stderr b/obj/gnatprove/phase1/vfs-ext.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/vfs-ext.adb.stdout b/obj/gnatprove/phase1/vfs-ext.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/vfs-ext.ali b/obj/gnatprove/phase1/vfs-ext.ali new file mode 100644 index 0000000..f16b8a7 --- /dev/null +++ b/obj/gnatprove/phase1/vfs-ext.ali @@ -0,0 +1,1516 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RV NO_RECURSION +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U vfs.ext%b vfs-ext.adb af4da9f3 OO PK IU +W ada%s ada.ads ada.ali +W ada.characters%s a-charac.ads a-charac.ali +W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W lib.messages%s lib-messages.adb lib-messages.ali +W lib.panic%s lib-panic.adb lib-panic.ali +W system%s system.ads system.ali +W system.address_to_access_conversions%s s-atacco.ads s-atacco.ali +Z system.storage_elements%s s-stoele.ads s-stoele.ali +W vfs%s vfs.adb vfs.ali + +U vfs.ext%s vfs-ext.ads 1b408ae8 OO PK IU +W lib%s lib.adb lib.ali +W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali +W system%s system.ads system.ali +W vfs%s vfs.adb vfs.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-charac.ads 20240507065137 2d3ec45b ada.characters%s +D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s +D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b +D lib-messages.ads 20250222165738 4282fa77 lib.messages%s +D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-atacco.ads 20240507065137 5868e3ba system.address_to_access_conversions%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D vfs.ads 20250222165738 63b4365d vfs%s +D vfs-ext.ads 20250222165738 f0d56b8d vfs.ext%s +D vfs-ext.adb 20250222165738 c4998d1f vfs.ext%b +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 22|21r6 22r6 26r26 27r26 28r26 29r26 318r24 +X 2 a-charac.ads +16K13*Characters 18e19 22|22r10 318r28 +X 3 a-chlat1.ads +16K24*Latin_1 294e27 22|22w21 318r39 +23e4*NUL{character} 22|318r47 +X 4 a-uncdea.ads +20u15*Unchecked_Deallocation 22|21w10 26r30 27r30 28r30 29r30 +X 8 devices.ads +22K9*Devices 279e12 22|69r10 1229r10 1527r10 1534r10 1565r10 1572r10 1619r10 +. 1626r10 1683r13 1690r13 1697r13 1707r10 1714r10 1724r7 1770r10 1849r10 +. 2007r13 2023r16 2032r13 2048r16 2060r13 2087r10 2103r13 2113r10 2140r7 +. 2179r10 2210r10 2285r10 2320r10 +29A9*Operation_Data(9|70M9) 21|118r24 126r20 439r26 449r22 22|30r8 +. 229r19 231r19 798r24 848r20 1427r22 1456r19 1475r22 1523r20 1555r21 1599r21 +. 1655r36 1657r29 1659r26 1739r26 1797r22 1961r36 1963r29 1965r21 2162r17 +. 2268r17 2374r21 2461r21 +30P9*Operation_Data_Acc(29A9) 22|30r24 2161r20 2267r20 2367r20 2458r36 +83I9*Device_Handle 21|22r23 366r31 409r26 22|33r23 1516r26 +154V13*Get_Block_Size{natural} 22|909s52 933s35 2226s45 +156V13*Is_Read_Only{boolean} 22|69s18 +171V13*Synchronize{boolean} 22|1229s18 +193U14*Read 22|1534s18 1572s18 1626s18 1683s21 1690s21 1697s21 1707s18 1714s18 +. 1724s15 1770s18 2007s21 2032s21 2087s18 2179s18 2285s18 +210U14*Write 22|1527s18 1565s18 1619s18 1849s18 2023s24 2048s24 2060s21 2103s21 +. 2113s18 2140s15 2210s18 2320s18 +X 9 interfac.ads +70M9*Unsigned_8 21|230r33 231r33 354r21 355r21 495r22 507r38 509r49 22|218r29 +. 2363r22 2512r38 2523r49 +73M9*Unsigned_16 21|207r33 208r33 209r33 210r33 211r33 212r33 217r33 218r33 +. 220r33 221r33 232r33 286r59 291r34 292r34 293r34 310r29 311r29 317r29 318r29 +. 353r21 511r52 513r37 517r35 22|124r43 217r28 274r43 275r34 331r29 1109r55 +. 1156r22 1157r22 2402r35 2420r38 2534r52 2545r37 2559r35 2561r22 2561r37 +81M9*Unsigned_32 21|61r19 69r19 70r19 79r26 89r26 96r19 158r17 159r17 194r33 +. 195r33 196r33 197r33 198r33 199r33 200r33 201r33 202r33 203r33 204r33 205r33 +. 206r33 213r33 214r33 215r33 216r33 219r33 222r33 223r33 224r33 229r33 235r33 +. 236r33 237r33 288r34 289r34 290r34 308r56 312r29 313r29 314r29 315r29 316r29 +. 319r29 320r29 321r29 323r29 324r29 325r29 326r29 352r21 370r31 371r31 384r25 +. 387r29 389r29 417r27 424r26 432r22 432r42 446r22 456r22 464r22 465r22 466r22 +. 472r22 473r22 474r22 480r21 481r25 486r24 493r22 494r22 503r22 504r22 517r15 +. 536r22 22|213r19 221r36 224r36 247r29 399r19 400r19 425r26 430r48 447r29 +. 465r29 532r26 537r50 538r50 556r27 567r27 633r19 638r34 654r27 710r30 771r30 +. 812r30 870r30 887r25 918r30 929r35 930r35 971r30 991r32 1004r39 1032r17 +. 1047r30 1062r39 1101r30 1112r33 1127r17 1128r17 1149r30 1160r33 1203r30 +. 1210r38 1211r38 1214r33 1249r25 1252r29 1254r29 1355r32 1547r27 1553r21 +. 1562r27 1590r26 1595r39 1597r21 1616r31 1644r22 1644r42 1646r31 1647r40 +. 1648r31 1649r31 1650r31 1651r31 1652r31 1653r31 1746r24 1769r35 1794r22 +. 1803r24 1848r35 1878r22 1895r26 1896r26 1903r22 1904r22 1905r22 1908r17 +. 1946r22 1947r22 1948r22 1951r31 1952r40 1953r31 1954r31 1955r31 1956r31 +. 1957r31 1958r31 1959r31 2154r21 2155r25 2160r20 2199r34 2199r56 2226r32 +. 2261r24 2266r20 2304r34 2304r56 2361r22 2362r22 2454r22 2455r22 2559r15 +. 2588r22 2588r37 2589r22 2589r37 2617r22 2625r13 +84M9*Unsigned_64 21|35r62 37r65 39r56 41r64 45r33 46r33 50r33 51r33 53r57 +. 117r20 125r20 139r19 145r17 165r29 166r29 167r29 168r29 225r33 226r33 233r33 +. 234r33 395r20 401r22 403r22 405r26 410r26 437r22 438r22 447r22 448r22 457r22 +. 458r22 492r22 502r22 519r65 523r21 22|142r62 146r15 150r65 154r15 158r56 +. 162r15 167r64 171r16 177r33 178r33 183r22 184r29 190r33 191r33 196r22 197r29 +. 201r57 541r50 698r23 699r23 700r23 740r28 797r20 847r20 907r43 909r23 909r39 +. 910r14 935r36 936r36 937r36 950r19 955r22 1022r17 1175r29 1176r29 1177r29 +. 1178r29 1186r17 1187r17 1260r32 1263r32 1422r20 1445r22 1447r22 1449r26 +. 1454r19 1500r30 1505r38 1517r26 1567r27 1574r27 1621r27 1628r27 1685r30 +. 1692r30 1699r30 1709r27 1716r27 1726r24 1737r22 1738r22 1744r24 1745r24 +. 1747r24 1759r38 1760r43 1761r45 1762r27 1762r55 1764r25 1765r26 1772r27 +. 1773r27 1795r22 1796r22 1801r24 1802r24 1804r24 1807r19 1813r29 1820r37 +. 1838r38 1839r43 1840r45 1841r27 1841r55 1843r25 1844r26 1851r27 1852r27 +. 1879r22 1880r22 1883r25 1884r37 1886r25 1887r34 1888r31 2009r30 2025r32 +. 2034r30 2050r33 2062r30 2089r27 2105r30 2115r27 2142r24 2181r27 2212r27 +. 2287r27 2322r27 2360r22 2368r20 2370r20 2371r20 2398r17 2399r26 2453r22 +. 2572r65 2575r29 2576r29 2578r17 2584r21 +141V13*Shift_Left{81M9} 22|84s28 85s28 +166V13*Shift_Left{84M9} 22|2575s17 2576s17 +171V13*Shift_Right{84M9} 22|1884s10 1887s10 2589s50 +X 10 lib.ads +19K9*Lib 35e8 21|18r6 365r39 22|17r6 18r6 19r6 74r10 79r28 110r7 113r7 121r7 +. 145r7 147r7 153r7 155r7 161r7 164r7 170r7 172r7 182r7 185r7 195r7 198r7 +. 234r7 388r7 408r7 416r7 434r7 518r7 544r7 621r7 642r7 682r7 704r7 752r7 +. 767r7 790r7 807r7 840r7 856r7 897r7 907r28 914r7 943r7 958r7 1015r7 1034r7 +. 1073r7 1088r7 1120r7 1140r7 1168r7 1190r7 1222r7 2605r13 2607r13 2610r13 +. 2612r13 +X 11 lib-alignment.ads +19k13*Alignment 43e18 22|19w10 907r32 +X 13 lib-messages.ads +21K13*Messages 103e17 22|17w10 74r14 2605r17 2607r17 +41U14*Put_Line 22|74s23 2605s26 2607s26 +X 14 lib-panic.ads +21K13*Panic 39e14 22|18w10 2610r17 2612r17 +32U14*Hard_Panic 22|2610s23 2612s23 +X 15 lib-synchronization.ads +20K13*Synchronization 66e24 21|18w10 365r43 22|79r32 110r11 113r11 121r11 +. 145r11 147r11 153r11 155r11 161r11 164r11 170r11 172r11 182r11 185r11 195r11 +. 198r11 234r11 388r11 408r11 416r11 434r11 518r11 544r11 621r11 642r11 682r11 +. 704r11 752r11 767r11 790r11 807r11 840r11 856r11 897r11 914r11 943r11 958r11 +. 1015r11 1034r11 1073r11 1088r11 1120r11 1140r11 1168r11 1190r11 1222r11 +22R9*Binary_Semaphore 57e14 21|365r59 +23r4*Unlocked_Semaphore{22R9} 22|79r48 +27U14*Seize 22|110s27 121s27 145s27 153s27 161s27 170s27 182s27 195s27 234s27 +. 408s27 434s27 544s27 642s27 704s27 767s27 807s27 856s27 914s27 958s27 1034s27 +. 1088s27 1140s27 1190s27 +31U14*Release 22|113s27 147s27 155s27 164s27 172s27 185s27 198s27 388s27 +. 416s27 518s27 621s27 682s27 752s27 790s27 840s27 897s27 943s27 1015s27 +. 1073s27 1120s27 1168s27 1222s27 +X 17 system.ads +37K9*System 155e11 21|17w6 25r27 28r23 33r35 35r35 37r38 39r29 41r36 44r29 +. 49r29 53r34 56r19 65r19 74r26 83r26 93r19 100r20 108r20 115r20 123r20 131r18 +. 137r19 143r17 146r17 150r17 156r17 163r29 171r33 174r20 22|20r6 25r26 36r27 +. 103r23 117r35 139r13 142r35 150r38 158r29 167r36 176r29 189r29 201r34 208r19 +. 395r19 420r26 526r26 630r19 689r20 757r20 795r20 845r20 902r18 948r19 1020r17 +. 1023r17 1078r17 1125r17 1173r29 1226r33 1237r20 +67M9*Address 21|25r34 28r30 33r42 35r42 37r45 39r36 41r43 44r36 49r36 53r41 +. 56r26 65r26 74r33 83r33 93r26 100r27 108r27 115r27 123r27 131r25 137r26 +. 143r24 146r24 150r24 156r24 163r36 171r40 174r27 22|36r34 103r30 117r42 +. 142r42 150r45 158r36 167r43 176r36 189r36 201r41 208r26 395r26 420r33 526r33 +. 630r26 689r27 757r27 795r27 845r27 902r25 948r26 1020r24 1023r24 1078r24 +. 1125r24 1173r36 1226r40 1237r27 +69m4*Null_Address{67M9} 22|50r23 62r23 139r20 +X 18 s-atacco.ads +39k16*Address_To_Access_Conversions 65e41 22|20w13 25r33 +X 19 s-stoele.ads +82M9*Integer_Address +X 20 vfs.ads +24K9*VFS 674e8 21|20r9 542r5 22|24r14 2644r5 +28M9*File_Inode_Number<9|84M9> 21|57r19 66r19 75r26 77r26 84r26 86r26 94r19 +. 101r20 109r20 116r20 124r20 132r18 138r19 144r17 151r17 157r17 164r29 175r20 +. 22|209r19 396r19 421r26 423r26 527r26 529r26 631r19 690r20 758r20 796r20 +. 846r20 903r18 949r19 1021r17 1079r17 1126r17 1174r29 1238r20 +32M12*File_Mode{9|81M9} 21|60r19 152r17 22|212r19 928r35 1080r17 +39E9*File_Type 40e64 21|59r19 507r57 509r31 511r34 513r57 516r15 22|211r19 +. 803r23 1086r17 1259r32 1455r19 2512r57 2523r31 2534r34 2545r57 2558r15 +39n23*File_Regular{39E9} 22|511r40 614r40 823r15 878r63 976r54 1484r26 2515r32 +. 2526r15 2540r15 2551r34 2553r34 +39n37*File_Directory{39E9} 22|307r16 717r63 824r15 1275r26 1291r58 1300r26 +. 1323r28 2516r32 2527r15 2538r15 2549r34 2565r15 +39n53*File_Symbolic_Link{39E9} 22|776r59 1368r56 2519r32 2541r15 2552r34 +. 2567r15 +40n23*File_Character_Device{39E9} 22|2517r32 2528r15 2537r15 2548r34 2564r15 +40n46*File_Block_Device{39E9} 22|2518r32 2529r15 2539r15 2550r34 2566r15 +41R9*File_Stat 54e14 21|133r22 22|904r22 +42m7*Unique_Identifier{28M9} 22|926m14 +43e7*Type_Of_File{39E9} 22|927m14 +44m7*Mode{32M12} 22|928m14 +45m7*UID{9|81M9} 22|929m14 +46m7*GID{9|81M9} 22|930m14 +47i7*Hard_Link_Count{positive} 22|931m14 +48m7*Byte_Size{9|84M9} 22|932m14 +49i7*IO_Block_Size{natural} 22|933m14 +50m7*IO_Block_Count{9|84M9} 22|934m14 +51r7*Creation_Time{35R9} 22|935m14 +52r7*Modification_Time{35R9} 22|936m14 +53r7*Access_Time{35R9} 22|937m14 +57R9*Directory_Entity 62e14 21|404r26 22|701r23 1261r32 1448r26 +58m7*Inode_Number{9|84M9} 22|1355r52 1500m14 +59a7*Name_Buffer{string} 22|1352r23 1504m17 +60i7*Name_Len{natural} 22|1352r48 1502m14 +61e7*Type_Of_File{39E9} 22|1503m14 +63A9*Directory_Entities(57R9) 21|103r24 22|692r24 +234E9*FS_Status 242e16 21|62r23 71r23 80r30 90r30 97r23 105r24 112r24 120r24 +. 128r24 134r22 140r23 147r21 153r21 160r21 169r33 171r56 176r36 22|214r23 +. 401r23 426r30 533r30 634r23 694r24 761r24 800r24 850r24 905r22 951r23 1024r21 +. 1081r21 1129r21 1179r33 1226r56 1239r36 +235n8*FS_Success{234E9} 22|385r34 515r34 618r35 679r34 707r20 783r45 837r32 +. 894r32 938r21 1012r34 1057r26 1066r43 1116r37 1164r37 1218r37 1230r17 +236n8*FS_Invalid_Value{234E9} 22|240r20 256r20 412r20 440r20 474r20 550r20 +. 580r20 648r20 663r20 719r21 787r23 880r21 979r20 1068r26 +237n8*FS_Is_Directory{234E9} 22|824r44 +238n8*FS_Not_Supported{234E9} 22|414r20 825r44 +239n8*FS_Not_Allowed{234E9} 22|260r20 478r20 585r20 667r20 +240n8*FS_RO_Failure{234E9} 22|237r20 410r20 437r20 547r20 645r20 860r21 961r20 +. 1041r20 1095r20 1143r20 1193r20 +241n8*FS_IO_Failure{234E9} 22|269r20 303r20 385r50 456r20 490r20 501r20 515r50 +. 602r23 618r51 679r50 715r21 783r61 817r21 837r48 875r21 894r48 940r21 1012r50 +. 1052r20 1066r59 1106r20 1116r53 1154r20 1164r53 1208r20 1218r53 1232r17 +629V13*Is_Absolute{boolean} 22|1269s10 +X 21 vfs-ext.ads +20K13*EXT 20|24k9 21|542l9 542e12 22|24b18 2644l9 2644t12 +21U14*Probe 22>8 23>8 24>8 25<8 22|32b14 100l8 100t13 +22i8 Handle{8|83I9} 22|33b8 44r30 69r32 80r28 +23b8 Do_Read_Only{boolean} 22|34b8 68r10 +24b8 Do_Relatime{boolean} 22|35b8 83r28 +25m8 Data_Addr{17|67M9} 22|36b8 50m10 62m10 99m7 +27U14*Remount 28>8 29>8 30>8 31<8 22|102b14 115l8 115t15 +28m8 FS{17|67M9} 22|103b8 108r70 +29b8 Do_Read_Only{boolean} 22|104b8 111r28 +30b8 Do_Relatime{boolean} 22|105b8 112r28 +31b8 Success{boolean} 22|106b8 114m7 +33U14*Unmount 33=23 22|117b14 140l8 140t15 +33m23 FS{17|67M9} 22|117b23 118r64 139m7 +35U14*Get_Block_Size 35>30 35<51 22|142b14 148l8 148t22 +35m30 FS{17|67M9} 22|142b30 143r70 +35m51 Size{9|84M9} 22|142b51 146m7 +37U14*Get_Fragment_Size 37>33 37<54 22|150b14 156l8 156t25 +37m33 FS{17|67M9} 22|150b33 151r70 +37m54 Size{9|84M9} 22|150b54 154m7 +39U14*Get_Size 39>24 39<45 22|158b14 165l8 165t16 +39m24 FS{17|67M9} 22|158b24 159r70 +39m45 Size{9|84M9} 22|158b45 162m7 +41U14*Get_Inode_Count 41>31 41<52 22|167b14 173l8 173t23 +41m31 FS{17|67M9} 22|167b31 168r70 +41m52 Count{9|84M9} 22|167b52 171m7 +43U14*Get_Free_Blocks 44>8 45<8 46<8 22|175b14 186l8 186t23 +44m8 FS{17|67M9} 22|176b8 180r70 +45m8 Free_Blocks{9|84M9} 22|177b8 183m7 +46m8 Free_Unpriviledged{9|84M9} 22|178b8 184m7 +48U14*Get_Free_Inodes 49>8 50<8 51<8 22|188b14 199l8 199t23 +49m8 FS{17|67M9} 22|189b8 193r71 +50m8 Free_Inodes{9|84M9} 22|190b8 196m7 +51m8 Free_Unpriviledged{9|84M9} 22|191b8 197m7 +53V13*Get_Max_Length{9|84M9} 53>29 22|201b13 205l8 205t22 +53m29 FS{17|67M9} 22|201b29 202r28 +55U14*Create_Node 56>8 57>8 58>8 59>8 60>8 61>8 62<8 22|207b14 392l8 392t19 +56m8 FS{17|67M9} 22|208b8 216r74 +57m8 Relative{20|28M9} 22|209b8 247r42 +58a8 Path{string} 22|210b8 239r13 248r29 +59e8 Typ{20|39E9} 22|211b8 217r60 218r57 307r10 +60m8 Mode{20|32M12} 22|212b8 274r56 +61m8 User{9|81M9} 22|213b8 258r36 275r47 +62e8 Status{20|234E9} 22|214b8 237m10 240m10 256m10 260m10 269m10 303m10 +. 385m7 +64U14*Create_Symbolic_Link 65>8 66>8 67>8 68>8 69>8 70>8 71<8 22|394b14 417l8 +. 417t28 +65m8 FS{17|67M9} 22|395b8 406r70 +66m8 Relative{20|28M9} 22|396b8 404r28 +67a8 Path{string} 22|397b8 411r13 +68a8 Target{string} 22|398b8 411r32 +69m8 Mode{9|81M9} 22|399b8 403r28 +70m8 User{9|81M9} 22|400b8 405r28 +71e8 Status{20|234E9} 22|401b8 410m10 412m10 414m10 +73U14*Create_Hard_Link 74>8 75>8 76>8 77>8 78>8 79>8 80<8 22|419b14 523l8 +. 523t24 +74m8 FS{17|67M9} 22|420b8 428r70 +75m8 Relative_Path{20|28M9} 22|421b8 447r42 +76a8 Path{string} 22|422b8 439r13 448r29 +77m8 Relative_Target{20|28M9} 22|423b8 465r42 +78a8 Target{string} 22|424b8 439r32 466r29 +79m8 User{9|81M9} 22|425b8 476r36 +80e8 Status{20|234E9} 22|426b8 437m10 440m10 456m10 474m10 478m10 490m10 +. 501m10 515m7 +82U14*Rename 83>8 84>8 85>8 86>8 87>8 88>8 89>8 90<8 22|525b14 627l8 627t14 +83m8 FS{17|67M9} 22|526b8 535r70 +84m8 Relative_Source{20|28M9} 22|527b8 556r40 +85a8 Source{string} 22|528b8 549r13 557r27 +86m8 Relative_Target{20|28M9} 22|529b8 567r40 +87a8 Target{string} 22|530b8 549r34 568r27 +88b8 Keep{boolean} 22|531b8 579r54 +89m8 User{9|81M9} 22|532b8 582r36 +90e8 Status{20|234E9} 22|533b8 547m10 550m10 580m10 585m10 602m13 618m7 +92U14*Unlink 93>8 94>8 95>8 96>8 97<8 22|629b14 686l8 686t14 +93m8 FS{17|67M9} 22|630b8 636r70 +94m8 Relative{20|28M9} 22|631b8 654r40 +95a8 Path{string} 22|632b8 647r13 655r27 +96m8 User{9|81M9} 22|633b8 665r36 +97e8 Status{20|234E9} 22|634b8 645m10 648m10 663m10 667m10 679m7 +99U14*Read_Entries 100>8 101>8 102>8 103<8 104<8 105<8 22|688b14 754l8 754t20 +100m8 FS_Data{17|67M9} 22|689b8 696r68 +101m8 Ino{20|28M9} 22|690b8 710r43 +102i8 Offset{natural} 22|691b8 740r41 +103a8 Entities{20|63A9} 22|692b8 741r28 742m16 742r26 +104i8 Ret_Count{natural} 22|693b8 706m7 741r16 742r43 746m13 746r26 +105e8 Success{20|234E9} 22|694b8 707m7 715m10 719m10 +107U14*Read_Symbolic_Link 108>8 109>8 110<8 111<8 112<8 22|756b14 792l8 792t26 +108m8 FS_Data{17|67M9} 22|757b8 763r68 +109m8 Ino{20|28M9} 22|758b8 771r43 +110a8 Path{string} 22|759b8 781m27 785m10 +111i8 Ret_Count{natural} 22|760b8 768m7 782m27 783r25 786m10 +112e8 Success{20|234E9} 22|761b8 783m10 787m10 +114U14*Read 115>8 116>8 117>8 118<8 119<8 120<8 22|794b14 842l8 842t12 +115m8 FS_Data{17|67M9} 22|795b8 802r68 +116m8 Ino{20|28M9} 22|796b8 812r43 +117m8 Offset{9|84M9} 22|797b8 832r25 +118a8 Data{8|29A9} 22|798b8 833m25 +119i8 Ret_Count{natural} 22|799b8 809m7 834m25 +120e8 Success{20|234E9} 22|800b8 817m10 824m33 825m33 837m7 +122U14*Write 123>8 124>8 125>8 126>8 127<8 128<8 22|844b14 899l8 899t13 +123m8 FS_Data{17|67M9} 22|845b8 852r68 +124m8 Ino{20|28M9} 22|846b8 870r43 887r38 +125m8 Offset{9|84M9} 22|847b8 889r25 +126a8 Data{8|29A9} 22|848b8 890r25 +127i8 Ret_Count{natural} 22|849b8 858m7 891m25 +128e8 Success{20|234E9} 22|850b8 860m10 875m10 880m10 894m7 +130U14*Stat 131>8 132>8 133<8 134<8 22|901b14 945l8 945t12 +131m8 Data{17|67M9} 22|902b8 908r70 +132m8 Ino{20|28M9} 22|903b8 918r43 926r35 +133r8 S{20|41R9} 22|904b8 925m10 +134e8 Success{20|234E9} 22|905b8 938m10 940m10 +136U14*Truncate 137>8 138>8 139>8 140<8 22|947b14 1017l8 1017t16 +137m8 Data{17|67M9} 22|948b8 953r68 +138m8 Ino{20|28M9} 22|949b8 971r43 991r45 1004r52 +139m8 New_Size{9|84M9} 22|950b8 984r25 987r28 993r32 1000r36 +140e8 Status{20|234E9} 22|951b8 961m10 979m10 1012m7 +142U14*IO_Control 143>8 144>8 145>8 146>8 147<8 22|1019b14 1075l8 1075t18 +143m8 Data{17|67M9} 22|1020b8 1029r73 +144m8 Ino{20|28M9} 22|1021b8 1047r43 1062r52 +145m8 Req{9|84M9} 22|1022b8 1054r15 +146m8 Arg{17|67M9} 22|1023b8 1032r53 +147e8 Status{20|234E9} 22|1024b8 1041m10 1052m10 1057m16 1066m16 1068m16 +149U14*Change_Mode 150>8 151>8 152>8 153<8 22|1077b14 1122l8 1122t19 +150m8 Data{17|67M9} 22|1078b8 1083r73 +151m8 Ino{20|28M9} 22|1079b8 1101r43 1112r46 +152m8 Mode{20|32M12} 22|1080b8 1109r68 +153e8 Status{20|234E9} 22|1081b8 1095m10 1106m10 1116m10 +155U14*Change_Owner 156>8 157>8 158>8 159>8 160<8 22|1124b14 1170l8 1170t20 +156m8 Data{17|67M9} 22|1125b8 1131r73 +157m8 Ino{20|28M9} 22|1126b8 1149r43 1160r46 +158m8 Owner{9|81M9} 22|1127b8 1156r35 +159m8 Group{9|81M9} 22|1128b8 1157r35 +160e8 Status{20|234E9} 22|1129b8 1143m10 1154m10 1164m10 +162U14*Change_Access_Times 163>8 164>8 165>8 166>8 167>8 168>8 169<8 22|1172b14 +. 1224l8 1224t27 +163m8 Data{17|67M9} 22|1173b8 1184r73 +164m8 Ino{20|28M9} 22|1174b8 1203r43 1214r46 +165m8 Access_Seconds{9|84M9} 22|1175b8 1186r37 1210r51 +166m8 Access_Nanoseconds{9|84M9} 22|1176b8 1181r28 +167m8 Modify_Seconds{9|84M9} 22|1177b8 1187r37 1211r51 +168m8 Modify_Nanoseconds{9|84M9} 22|1178b8 1182r28 +169e8 Status{20|234E9} 22|1179b8 1193m10 1208m10 1218m10 +171V13*Synchronize{20|234E9} 171>26 22|1226b13 1234l8 1234t19 1244s14 +171m26 Data{17|67M9} 22|1226b26 1227r73 +173V13*Synchronize{20|234E9} 174>8 175>8 176>8 22|1236b13 1245l8 1245t19 +174m8 Data{17|67M9} 22|1237b8 1244r27 +175m8 Ino{20|28M9} 22|1238b8 1241r28 +176b8 Data_Only{boolean} 22|1239b8 1242r28 +180N4 State_Clean 22|70r34 +181N4 Policy_Ignore 22|2604r15 +182N4 Policy_Remount_RO 22|2606r15 +183N4 Policy_Panic 22|2609r15 +184N4 EXT_Signature 22|55r27 +185N4 Main_Superblock_Offset 22|45r30 129r33 +186N4 Required_Compression 22|58r37 +187N4 Required_Directory_Types 22|1479r50 +188N4 Required_Journal_Replay 22|59r37 +189N4 Required_Journal_Device 22|60r37 +190N4 RO_Sparse_Superblocks 22|88r41 +191N4 RO_64bit_Filesize 22|90r41 +192N4 RO_Binary_Trees 22|72r38 +193R9 Superblock 238e15 239r8 367r31 411r33 22|38r17 1518r33 1523r41 +194m7*Inode_Count{9|81M9} 240r7 22|171r40 2270r35 +195m7*Block_Count{9|81M9} 241r7 22|162r39 2164r35 +196m7*Reserved_Count{9|81M9} 242r7 +197m7*Unallocated_Block_Count{9|81M9} 243r7 22|183r46 184r53 2221m24 2222r27 +198m7*Unallocated_Inode_Count{9|81M9} 244r7 22|196r46 197r53 2331m24 2332r27 +199m7*Block_Containing_Super{9|81M9} 245r7 +200m7*Block_Size_Log{9|81M9} 246r7 22|56r14 84r59 1885r51 1889r51 +201m7*Fragment_Size_Log{9|81M9} 247r7 22|56r35 85r59 +202m7*Blocks_Per_Group{9|81M9} 248r7 22|2198r52 +203m7*Fragments_Per_Group{9|81M9} 249r7 +204m7*Inodes_Per_Group{9|81M9} 250r7 22|354r54 1602r60 1603r58 2303r52 +205m7*Last_Mount_Epoch{9|81M9} 251r7 +206m7*Last_Write_Epoch{9|81M9} 252r7 +207m7*Mounts_Since_Check{9|73M9} 253r7 22|71r14 124r21 126m21 126r54 +208m7*Max_Mounts_Since_Check{9|73M9} 254r7 22|71r39 +209m7*Signature{9|73M9} 255r7 22|55r14 +210m7*Filesystem_State{9|73M9} 256r7 22|70r14 +211m7*Error_Policy{9|73M9} 257r7 22|2603r23 +212m7*Minor_Version{9|73M9} 258r7 +213m7*Last_Check_Epoch{9|81M9} 259r7 +214m7*Interval_Between_Checks{9|81M9} 260r7 +215m7*Operating_System_ID{9|81M9} 261r7 +216m7*Major_Version{9|81M9} 262r7 22|57r14 +217m7*Reserved_Blocks_User_ID{9|73M9} 263r7 +218m7*Reserved_Blocks_Group{9|73M9} 264r7 +219m7*First_Non_Reserved{9|81M9} 265r7 22|2305r49 +220m7*Inode_Size{9|73M9} 266r7 22|1616r55 +221m7*Block_Group_Of_Super{9|73M9} 267r7 +222m7*Optional_Features{9|81M9} 268r7 +223m7*Required_Features{9|81M9} 269r7 22|58r15 59r15 60r15 1479r28 +224m7*RO_If_Not_Features{9|81M9} 270r7 22|72r15 88r18 90r18 +225m7*FS_ID_High{9|84M9} 271r7 +226m7*FS_ID_Low{9|84M9} 272r7 +227a7*Volume_Name{string} 273r7 +228a7*Last_Mountpoint{string} 274r7 +229m7*Compression_Algorithm{9|81M9} 275r7 +230m7*Preallocate_Files{9|70M9} 276r7 +231m7*Preallocate_Dirs{9|70M9} 277r7 +232m7*Unused{9|73M9} 278r7 +233m7*Journal_ID_High{9|84M9} 279r7 +234m7*Journal_ID_Low{9|84M9} 280r7 +235m7*Journal_Inode{9|81M9} 281r7 +236m7*Journal_Device{9|81M9} 282r7 +237m7*Head_Of_Orphan_Inodes{9|81M9} 283r7 +286A9 Descriptor_Padding(9|73M9) 294r34 +287R9 Block_Group_Descriptor 295e15 296r8 418r34 22|223r36 1548r34 1552r41 +. 1596r26 2159r20 2265r20 +288m7*Block_Usage_Bitmap_Block{9|81M9} 297r7 22|2181r45 2212r45 +289m7*Inode_Usage_Bitmap_Block{9|81M9} 298r7 22|2287r45 2322r45 +290m7*Inode_Table_Block{9|81M9} 299r7 22|1615r34 +291m7*Unallocated_Blocks{9|73M9} 300r7 22|2175r18 2223m15 2223r42 +292m7*Unallocated_Inodes{9|73M9} 301r7 22|2281r18 2333m15 2333r42 +293m7*Directory_Count{9|73M9} 302r7 22|361m21 361r51 +294a7*Padding{286A9} 303r7 +306N4 Flags_Immutable 528r23 +307N4 Flags_Append_Only 531r23 +308A9 Inode_Block_Arr(9|81M9) 322r29 327r29 +309R9 Inode 328e15 329r8 349r29 372r31 388r29 390r29 394r20 402r22 425r33 +. 431r22 436r22 445r29 455r29 463r29 471r29 479r28 491r29 501r29 519r29 522r28 +. 527r33 530r35 537r22 22|28r54 222r53 431r65 539r67 540r67 639r51 697r40 +. 764r40 804r40 853r40 911r31 954r39 1030r34 1084r34 1132r34 1185r34 1253r29 +. 1255r29 1421r20 1446r22 1591r33 1599r42 1643r22 1736r22 1793r29 1877r29 +. 1902r29 1945r29 2153r28 2359r29 2452r29 2572r29 2583r28 2618r22 +310m7*Permissions{9|73M9} 330r7 22|274m11 717r47 776r44 821r57 878r47 927r56 +. 928r51 976r38 1108r51 1109m15 1291r42 1363r60 2626r45 2627r45 2628r45 2633r45 +. 2634r45 2635r45 +311m7*UID{9|73M9} 331r7 22|275m11 929r53 1156m15 2625r31 +312m7*Size_Low{9|81M9} 332r7 22|276m11 2576r46 2578r34 2592m14 2596m14 +313m7*Access_Time_Epoch{9|81M9} 333r7 22|277m11 937r54 1210m15 +314m7*Creation_Time_Epoch{9|81M9} 334r7 22|278m11 935r54 +315m7*Modified_Time_Epoch{9|81M9} 335r7 22|279m11 936r54 1211m15 +316m7*Deleted_Time_Epoch{9|81M9} 336r7 22|280m11 +317m7*GID{9|73M9} 337r7 22|281m11 930r53 1157m15 +318m7*Hard_Link_Count{9|73M9} 338r7 22|282m11 368m23 368r55 369m23 369r55 +. 493m18 493r48 931r50 +319m7*Sectors{9|81M9} 339r7 22|283m11 2225m21 2225r43 +320m7*Flags{9|81M9} 340r7 528r13 531r13 22|284m11 1056r31 1059m21 +321m7*OS_Specific_Value_1{9|81M9} 341r7 22|285m11 +322a7*Blocks{308A9} 342r7 22|286m11 1428m38 1666r28 1685r54 1709r51 1726r48 +. 1972m21 1991r27 1998m27 2009r54 2025r56 2071r24 2078m24 2089r51 2105r54 +. 2124r21 2131m21 2142r48 +323m7*Generation_Number{9|81M9} 343r7 22|287m11 +324m7*EAB{9|81M9} 344r7 22|288m11 +325m7*Size_High{9|81M9} 345r7 22|289m11 2575r46 2593m14 +326m7*Fragment_Address{9|81M9} 346r7 22|290m11 +327a7*OS_Specific_Value_2{308A9} 347r7 22|291m11 +349P9 Inode_Acc(309R9) 22|28r64 222r36 431r48 539r50 540r50 639r34 697r23 +. 764r23 804r23 853r23 911r14 954r22 1030r17 1084r17 1132r17 1185r17 +351R9 Directory_Entry 356e15 357r8 22|225r36 1453r19 1456r40 1478r38 2388r21 +. 2393r19 2397r18 2411r26 2416r31 2480r19 2482r20 +352m7*Inode_Index{9|81M9} 358r7 22|330m14 1468r14 1500r47 2419m23 2485r20 +353m7*Entry_Count{9|73M9} 359r7 22|331m14 1505r55 2399r43 2402m20 2420m23 +. 2440r45 2486m21 2486r41 2486r59 2502r46 +354m7*Name_Length{9|70M9} 360r7 22|332m14 1474r48 2398r34 2421m23 +355m7*Dir_Type{9|70M9} 361r7 22|333m14 1481r43 2422m23 +364R9 EXT_Data 375e14 376r36 22|25r64 27r54 78r19 +365r7*Mutex{15|22R9} 22|79m11 110m39 113m41 121m39 145m39 147m41 153m39 155m41 +. 161m39 164m41 170m39 172m41 182m39 185m41 195m39 198m41 234m39 388m41 408m39 +. 416m41 434m39 518m41 544m39 621m41 642m39 682m41 704m37 752m39 767m37 790m39 +. 807m37 840m39 856m37 897m39 914m37 943m39 958m37 1015m39 1034m37 1073m39 +. 1088m37 1120m39 1140m37 1168m39 1190m37 1222m39 +366i7*Handle{8|83I9} 22|80m11 128r38 909r71 933r54 1229r39 1566r32 1573r32 +. 1620r32 1627r32 1684r38 1691r38 1698r38 1708r35 1715r35 1725r32 1771r35 +. 1850r35 2008r38 2024r40 2033r38 2049r40 2061r38 2088r35 2104r38 2114r35 +. 2141r32 2180r35 2211r35 2226r69 2286r35 2321r35 +367r7*Super{193R9} 22|81m11 124r15 126m15 126r48 130m38 162r33 171r34 183r40 +. 184r47 196r40 197r47 354r48 1479r22 1602r54 1603r52 1616r49 1885r45 1889r45 +. 2164r29 2198r46 2221m18 2222r21 2270r29 2303r46 2305r43 2331m18 2332r21 +. 2603r17 +368b7*Is_Read_Only{boolean} 22|82m11 111m12 123r19 236r15 409r15 436r15 546r15 +. 644r15 859r13 960r13 1040r13 1094r13 1142r13 1192r13 2608m18 +369b7*Do_Relatime{boolean} 22|83m11 112m12 +370m7*Block_Size{9|81M9} 22|84m11 146r33 163r15 331r47 1553r41 1558r15 1615r59 +. 1647r63 1686r38 1692r69 1699r68 1710r48 1716r65 1726r70 1760r64 1761r66 +. 1764r46 1765r47 1773r48 1839r64 1840r66 1843r46 1844r47 1852r48 1884r58 +. 1887r55 1888r52 1952r63 2010r38 2026r40 2034r69 2051r54 2062r68 2090r48 +. 2106r51 2115r65 2142r70 2162r55 2182r48 2213r48 2225r62 2268r55 2288r48 +. 2323r48 +371m7*Fragment_Size{9|81M9} 22|85m11 154r33 163r33 +372r7*Root{309R9} 22|96m35 1271r31 1273r31 +373b7*Has_Sparse_Superblock{boolean} 22|87m11 +374b7*Has_64bit_Filesizes{boolean} 22|89m11 219m43 508r59 590r44 674r59 729r59 +. 780r59 831r57 888r57 924r41 983r49 1000r49 1274r55 1299r55 1362r58 1821r36 +376P9 EXT_Data_Acc(364R9) 383r25 400r22 416r27 423r26 430r22 435r22 444r22 +. 454r22 462r22 470r22 478r21 485r20 490r22 500r22 533r36 22|27r64 39r17 +. 108r23 108r39 118r17 118r33 143r23 143r39 151r23 151r39 159r23 159r39 168r23 +. 168r39 180r23 180r39 193r24 193r40 216r27 216r43 406r23 406r39 428r23 428r39 +. 535r23 535r39 636r23 636r39 696r21 696r37 763r21 763r37 802r21 802r37 852r21 +. 852r37 908r23 908r39 953r21 953r37 1029r26 1029r42 1083r26 1083r42 1131r26 +. 1131r42 1184r26 1184r42 1227r26 1227r42 1248r25 1444r22 1546r27 1589r26 +. 1642r22 1735r22 1792r22 1876r22 1901r22 1944r22 2152r21 2260r20 2358r22 +. 2451r22 2601r36 +378N4 Root_Inode 22|1270r26 1272r26 +379N4 Max_File_Name_Size 22|204r14 +381P9 String_Acc(string) 386r29 22|26r64 220r36 429r48 536r50 637r34 1251r29 +382U14 Inner_Open_Inode 383>8 384>8 385>8 386<8 387<8 388<8 389<8 390<8 391<8 +. 22|245s7 445s7 463s7 554s7 565s7 652s7 1247b14 1378s19 1418l8 1418t24 +383p8 Data{376P9} 22|1248b8 1271r26 1273r26 1274r50 1285r33 1299r50 1335r32 +. 1357r39 1362r53 1379r23 +384m8 Relative{9|81M9} 22|1249b8 1286r33 1296r26 1297r26 +385a8 Path{string} 22|1250b8 1269r23 1277r13 1281r21 1282r21 1283r13 1302r13 +. 1306r21 1307r21 1312r23 1314r26 1314r45 1317r44 1343r29 1353r16 1368r28 +. 1381r52 1381r68 1415r10 1415r53 1416r40 1416r60 +386p8 Last_Component{381P9} 22|1251b8 1267m7 1382m23 1416m10 +387m8 Target_Index{9|81M9} 22|1252b8 1270m10 1296m10 1330r26 1355m16 1358r39 +. 1383m23 1404m7 1409m7 +388r8 Target_Inode{309R9} 22|1253b8 1271m10 1274r36 1287m33 1291r29 1298r26 +. 1299r36 1331r26 1359m39 1362r39 1363r47 1370r23 1384m23 +389m8 Parent_Index{9|81M9} 22|1254b8 1272m10 1297m10 1330m10 1380r23 1385m23 +. 1410m7 +390r8 Parent_Inode{309R9} 22|1255b8 1273m10 1298m10 1331m10 1337r32 1386m23 +391b8 Success{boolean} 22|1256b8 1289m33 1290r17 1341m32 1342r20 1361m39 +. 1364r23 1387m23 1400m7 1405m7 1411m7 +393U14 Inner_Read_Symbolic_Link 394>8 395>8 396<8 397<8 22|778s10 1369s19 +. 1420b14 1441l8 1441t32 +394r8 Ino{309R9} 22|1421b8 1428r34 +395m8 File_Size{9|84M9} 22|1422b8 1430r32 +396a8 Path{string} 22|1423b8 1427r43 1432m10 1438m10 1438r16 +397i8 Ret_Count{natural} 22|1424b8 1433m10 1440m7 +399U14 Inner_Read_Entry 400>8 401>8 402>8 403>8 404<8 405<8 406<8 22|727s10 +. 1334s13 1443b14 1513l8 1513t24 +400p8 FS_Data{376P9} 22|1444b8 1460r25 1479r14 1488r28 +401m8 Inode_Sz{9|84M9} 22|1445b8 1462r25 1490r28 +402r8 File_Ino{309R9} 22|1446b8 1461r25 1489r28 +403m8 Inode_Index{9|84M9} 22|1447b8 1463r25 1478r23 1505r24 +404r8 Entity{20|57R9} 22|1448b8 1499m10 1504m10 +405m8 Next_Index{9|84M9} 22|1449b8 1505m10 1511m7 +406b8 Success{boolean} 22|1450b8 1466m25 1467r15 1494m28 1495r17 1506m10 +. 1512m7 +408U14 RW_Superblock 409>8 410>8 411=8 412>8 413<8 22|43s7 127s10 1515b14 +. 1543l8 1543t21 +409i8 Handle{8|83I9} 22|1516b8 1528r27 1535r27 +410m8 Offset{9|84M9} 22|1517b8 1529r27 1536r27 +411r8 Super{193R9} 22|1518b8 1524m34 1524r34 +412b8 Write_Operation{boolean} 22|1519b8 1526r10 +413b8 Success{boolean} 22|1520b8 1532m27 1539m27 1542m7 1542r18 +415U14 RW_Block_Group_Descriptor 416>8 417>8 418=8 419>8 420<8 22|355s10 +. 362s10 1545b14 1586l8 1586t33 1605s7 2165s10 2237s10 2271s10 2335s10 +416p8 Data{376P9} 22|1546b8 1553r36 1558r10 1566r27 1573r27 1583r25 +417m8 Descriptor_Index{9|81M9} 22|1547b8 1562r54 +418r8 Result{287R9} 22|1548b8 1556m34 1556r34 +419b8 Write_Operation{boolean} 22|1549b8 1564r10 +420b8 Success{boolean} 22|1550b8 1570m27 1577m27 1580r10 1581m10 1584m10 +422U14 RW_Inode 423>8 424>8 425=8 426>8 427<8 22|93s7 372s7 378s7 483s7 494s7 +. 708s7 769s7 810s7 868s7 916s7 969s7 1002s16 1045s7 1060s16 1099s7 1110s10 +. 1147s7 1158s10 1201s7 1212s10 1284s10 1356s16 1588b14 1639l8 1639t16 1826s10 +. 1935s7 1999s16 2079s13 2132s10 2227s10 +423p8 Data{376P9} 22|1589b8 1602r49 1603r47 1606r31 1615r54 1616r44 1620r27 +. 1627r27 1636r25 +424m8 Inode_Index{9|81M9} 22|1590b8 1602r28 1603r28 +425r8 Result{309R9} 22|1591b8 1600m34 1600r34 +426b8 Write_Operation{boolean} 22|1592b8 1618r10 +427b8 Success{boolean} 22|1593b8 1610m31 1611r14 1624m27 1631m27 1633r10 +. 1634m10 1637m10 +429V13 Get_Block_Index{9|81M9} 430>8 431>8 432>8 22|1641b13 1732l8 1732t23 +. 1768s25 1847s25 1911s21 +430p8 FS_Data{376P9} 22|1642b8 1647r55 1684r30 1686r30 1691r30 1692r61 1698r30 +. 1699r60 1708r27 1710r40 1715r27 1716r57 1725r24 1726r62 +431r8 Inode_Data{309R9} 22|1643b8 1666r17 1685r43 1709r40 1726r37 +432m8 Searched{9|81M9} 22|1644b8 1646r46 1666r45 1668r28 +434U14 Read_From_Inode 435>8 436>8 437>8 438>8 439<8 440<8 441<8 22|828s7 +. 1459s7 1487s10 1734b14 1789l8 1789t23 2375s7 2462s7 +435p8 FS_Data{376P9} 22|1735b8 1760r56 1761r58 1764r38 1765r39 1769r14 1771r27 +. 1773r40 1780r28 +436r8 Inode_Data{309R9} 22|1736b8 1769r23 +437m8 Inode_Size{9|84M9} 22|1737b8 1750r19 1754r36 1755r34 +438m8 Offset{9|84M9} 22|1738b8 1744r39 1750r10 1754r13 1755r47 1759r29 +439a8 Data{8|29A9} 22|1739b8 1743r39 1754r22 1774m27 1774r27 1774r33 1775r33 +440i8 Ret_Count{natural} 22|1740b8 1751m10 1777m27 1787m7 +441b8 Success{boolean} 22|1741b8 1752m10 1778m27 1779r17 1788m7 +443U14 Write_To_Inode 444>8 445=8 446>8 447>8 448>8 449>8 450<8 451<8 22|309s10 +. 319s10 334s10 344s10 884s7 1791b14 1873l8 1873t22 2425s19 2487s16 +444p8 FS_Data{376P9} 22|1792b8 1809r29 1821r28 1827r33 1839r56 1840r58 1843r38 +. 1844r39 1848r14 1850r27 1852r40 1870r22 +445r8 Inode_Data{309R9} 22|1793b8 1810m29 1819m28 1829m33 1848r23 +446m8 Inode_Num{9|81M9} 22|1794b8 1811r29 1828r33 +447m8 Inode_Size{9|84M9} 22|1795b8 1807r47 +448m8 Offset{9|84M9} 22|1796b8 1801r39 1807r10 1812r29 1820r28 1838r29 +449a8 Data{8|29A9} 22|1797b8 1807r32 1813r42 1820r50 1837r26 1841r40 1853r27 +. 1853r33 1854r33 1865r20 +450i8 Ret_Count{natural} 22|1798b8 1856m27 1865m7 1871m7 +451b8 Success{boolean} 22|1799b8 1814m29 1815r17 1822m28 1823r17 1831m33 +. 1832r17 1857m27 1858r17 1866m7 1872m7 +453U14 Grow_Inode 454>8 455=8 456>8 457>8 458>8 459<8 22|988s13 1808s10 1875b14 +. 1898l8 1898t18 +454p8 FS_Data{376P9} 22|1876b8 1884r50 1885r37 1887r47 1888r44 1889r37 1892r26 +455r8 Inode_Data{309R9} 22|1877b8 1893m26 +456m8 Inode_Num{9|81M9} 22|1878b8 1894r26 +457m8 Start{9|84M9} 22|1879b8 1884r23 1887r24 +458m8 Count{9|84M9} 22|1880b8 1888r23 +459b8 Success{boolean} 22|1881b8 1897m26 +461U14 Assign_Inode_Blocks 462>8 463=8 464>8 465>8 466>8 467<8 22|1891s7 +. 1900b14 1941l8 1941t27 +462p8 FS_Data{376P9} 22|1901b8 1911r38 1914r31 1923r32 1936r30 +463r8 Inode_Data{309R9} 22|1902b8 1911r47 1915m31 1924m32 1938m30 +464m8 Inode_Num{9|81M9} 22|1903b8 1916r31 1925r32 1937r30 +465m8 Start_Blk{9|81M9} 22|1904b8 1911r59 1926r32 +466m8 Block_Count{9|81M9} 22|1905b8 1910r21 +467b8 Success{boolean} 22|1906b8 1918m31 1919r20 1928m32 1929r20 1940m30 +469U14 Wire_Inode_Blocks 470>8 471=8 472>8 473>8 474>8 475<8 22|1922s13 1943b14 +. 2149l8 2149t25 +470p8 FS_Data{376P9} 22|1944b8 1952r55 1993r34 2000r39 2008r30 2010r30 2017r34 +. 2024r32 2026r32 2033r30 2034r61 2042r34 2049r32 2051r46 2061r30 2062r60 +. 2073r31 2080r36 2088r27 2090r40 2097r31 2104r30 2106r43 2114r27 2115r57 +. 2126r28 2133r33 2141r24 2142r62 +471r8 Inode_Data{309R9} 22|1945b8 1972m10 1991r16 1994m34 1998m16 2002m39 +. 2009r43 2018m34 2025r45 2043m34 2071r13 2074m31 2078m13 2082m36 2089r40 +. 2098m31 2105r43 2124r10 2127m28 2131m10 2135m33 2142r37 +472m8 Inode_Num{9|81M9} 22|1946b8 1995r34 2001r39 2019r34 2044r34 2075r31 +. 2081r36 2099r31 2128r28 2134r33 +473m8 Block_Index{9|81M9} 22|1947b8 1951r46 +474m8 Wired_Block{9|81M9} 22|1948b8 1953r46 1972r58 +475b8 Success{boolean} 22|1949b8 1973m10 2067m13 2120m10 2147m7 +477U14 Allocate_Block_For_Inode 478>8 479=8 480>8 481<8 482<8 22|1913s13 +. 1992s16 2016s16 2041s16 2072s13 2096s13 2125s10 2151b14 2257l8 2257t32 +478p8 FS_Data{376P9} 22|2152b8 2162r47 2164r21 2166r34 2180r27 2182r40 2198r38 +. 2211r27 2213r40 2221r10 2222r13 2225r54 2226r61 2228r33 2238r34 +479r8 Inode_Data{309R9} 22|2153b8 2225m10 2225r32 2230m33 +480m8 Inode_Num{9|81M9} 22|2154b8 2229r33 +481m8 Ret_Block{9|81M9} 22|2155b8 2246m10 2255m7 +482b8 Success{boolean} 22|2156b8 2170m34 2171r17 2185m27 2186r17 2216m27 +. 2217r17 2232m33 2233r17 2242m34 2243r17 2248m10 2256m7 +484U14 Allocate_Inode 485>8 486<8 487<8 22|264s7 2259b14 2355l8 2355t22 +485p8 FS_Data{376P9} 22|2260b8 2268r47 2270r21 2272r34 2286r27 2288r40 2303r38 +. 2305r35 2321r27 2323r40 2331r10 2332r13 2336r34 +486m8 Inode_Num{9|81M9} 22|2261b8 2344m10 2352m7 +487b8 Success{boolean} 22|2262b8 2276m34 2277r17 2291m27 2292r17 2326m27 +. 2327r17 2340m34 2341r17 2346m10 2354m7 +489U14 Add_Directory_Entry 490>8 491=8 492>8 493>8 494>8 495>8 496>8 497<8 +. 22|293s7 505s7 608s7 2357b14 2448l8 2448t27 +490p8 FS_Data{376P9} 22|2358b8 2376r25 2426r37 +491r8 Inode_Data{309R9} 22|2359b8 2377r25 2428m37 +492m8 Inode_Size{9|84M9} 22|2360b8 2374r51 2378r25 2391r31 2429r37 +493m8 Inode_Index{9|81M9} 22|2361b8 2427r37 +494m8 Added_Index{9|81M9} 22|2362b8 2419r38 +495m8 Dir_Type{9|70M9} 22|2363b8 2422r38 +496a8 Name{string} 22|2364b8 2388r49 2414r43 2421r38 2423r31 +497b8 Success{boolean} 22|2365b8 2382m25 2383r14 2384m10 2406m19 2433m37 +. 2434r26 2435m22 2444m7 +499U14 Delete_Directory_Entry 500>8 501=8 502>8 503>8 504>8 505<8 22|594s10 +. 671s7 2450b14 2510l8 2510t30 +500p8 FS_Data{376P9} 22|2451b8 2463r25 2488r34 +501r8 Inode_Data{309R9} 22|2452b8 2464r25 2490m34 +502m8 Inode_Size{9|84M9} 22|2453b8 2461r51 2465r25 2478r31 2491r34 +503m8 Inode_Index{9|81M9} 22|2454b8 2489r34 +504m8 Added_Index{9|81M9} 22|2455b8 2485r34 +505b8 Success{boolean} 22|2456b8 2469m25 2470r14 2471m10 2495m34 2496r23 +. 2497m19 2506m7 +507V13 Get_Dir_Type{20|39E9} 507>27 22|1481s25 2512b13 2521l8 2521t20 +507m27 Dir_Type{9|70M9} 22|2512b27 2514r12 +509V13 Get_Dir_Type{9|70M9} 509>27 22|218s43 511s26 614s26 2523b13 2532l8 +. 2532t20 +509e27 T{20|39E9} 22|2523b27 2525r12 +511V13 Get_Permissions{9|73M9} 511>30 22|217s43 1109s30 2534b13 2543l8 2543t23 +511e30 T{20|39E9} 22|2534b30 2536r12 +513V13 Get_Inode_Type{20|39E9} 513>29 22|717s13 776s10 821s23 878s13 927s35 +. 976s10 1108s30 1291s13 1363s31 2545b13 2555l8 2555t22 +513m29 Perms{9|73M9} 22|2545b29 2547r12 +515V13 Get_Inode_Type{9|73M9} 516>8 517>8 22|2557b13 2570l8 2570t22 +516e8 T{20|39E9} 22|2558b8 2563r12 +517m8 Mode{9|81M9} 22|2559b8 2561r50 +519V13 Get_Size{9|84M9} 519>23 519>36 22|296s26 313s29 323s29 338s29 348s29 +. 508s26 589s29 674s26 729s27 780s27 831s25 888s25 924s18 983s23 1274s26 +. 1299s26 1362s29 2572b13 2580l8 2580t16 +519r23 Ino{309R9} 22|2572b23 2575r42 2576r42 2578r30 +519b36 Is_64_Bits{boolean} 22|2572b36 2574r10 +521U14 Set_Size 522=8 523>8 524>8 525<8 22|1000s13 1818s10 2582b14 2599l8 +. 2599t16 +522r8 Ino{309R9} 22|2583b8 2592m10 2593m10 2596m10 +523m8 New_Size{9|84M9} 22|2584b8 2588r50 2589r63 +524b8 Is_64_Bits{boolean} 22|2585b8 2591r10 +525b8 Success{boolean} 22|2586b8 2594m10 2597m10 +527V13 Is_Immutable{boolean} 527>27 22|877s13 977s10 +527r27 Ino{309R9} 528r9 +530V13 Is_Append_Only{boolean} 530>29 +530r29 Ino{309R9} 531r9 +533U14 Act_On_Policy 533>29 533>50 22|134s13 1583s10 1636s10 1780s13 1870s7 +. 2601b14 2614l8 2614t21 +533p29 Data{376P9} 22|2601b29 2603r12 2608r13 +533a50 Message{string} 22|2601b50 2605r36 2607r36 2610r35 +535V13 Check_User_Access{boolean} 536>8 537>8 538>8 539>8 540>8 22|258s17 +. 476s17 582s17 665s17 2616b13 2643l8 2643t25 +536m8 User{9|81M9} 22|2617b8 2624r10 2625r38 +537r8 Inod{309R9} 22|2618b8 2625r26 2626r40 2627r40 2628r40 2633r40 2634r40 +. 2635r40 +538b8 Check_Read{boolean} 541r19 22|2619b8 2626r17 2633r17 +539b8 Check_Write{boolean} 541r33 22|2620b8 2627r17 2634r17 +540b8 Check_Exec{boolean} 22|2621b8 2628r17 2635r17 +X 22 vfs-ext.adb +25K14 Conv[18|39] 99r20 99r37 108r53 118r47 143r53 151r53 159r53 168r53 180r53 +. 193r54 216r57 406r53 428r53 535r53 636r53 696r51 763r51 802r51 852r51 908r53 +. 953r51 1029r56 1083r56 1131r56 1184r56 1227r56 +26U14 Free[4|20] +26U14*Free[4|20] 391s7 459s7 522s7 564s7 626s7 685s7 +27U14 Free[4|20] +27U14*Free[4|20] 138s7 +28U14 Free[4|20] +28U14*Free[4|20] 389s7 390s7 519s7 520s7 521s7 622s7 623s7 624s7 625s7 683s7 +. 684s7 753s7 791s7 841s7 898s7 944s7 1016s7 1074s7 1121s7 1169s7 1223s7 +29U14 Free[4|20] +29U14*Free[4|20] 2247s10 2254s7 2345s10 2353s7 2447s7 2509s7 +38r7 Sup{21|193R9} 46m30 46r30 55r10 56r10 56r31 57r10 58r11 59r11 60r11 +. 70r10 71r10 71r35 72r11 81r28 84r55 85r55 88r14 90r14 +39p7 Data{21|376P9} 78m7 94r30 96r30 99r58 +40b7 Success{boolean} 48m30 49r14 98m30 +41b7 Is_RO{boolean} 67m7 73r10 82r28 +108p7 Data{21|376P9} 110r34 111r7 112r7 113r36 +118p7 Data{21|376P9} 121r34 123r14 124r10 126r10 126r43 128r33 130r33 134r28 +. 138m13 138r13 +119b7 Success{boolean} 132m33 133r17 +143p7 Data{21|376P9} 145r34 146r28 147r36 +151p7 Data{21|376P9} 153r34 154r28 155r36 +159p7 Data{21|376P9} 161r34 162r28 163r10 163r28 164r36 +168p7 Data{21|376P9} 170r34 171r29 172r36 +180p7 Data{21|376P9} 182r34 183r35 184r42 185r36 +193p7 Data{21|376P9} 195r34 196r35 197r42 198r36 +216p7 Data{21|376P9} 219r38 234r34 236r10 246r29 265r24 294r26 310r29 320r29 +. 331r42 335r29 345r29 354r43 356r34 363r34 373r30 379r30 388r36 +217m7 Perms{9|73M9} 274r34 +218m7 Dir_Type{9|70M9} 299r26 308r39 333r29 +219b7 Has_64bit_Sz{boolean} +220p7 Last_Component{21|381P9} 249m29 249r29 300r26 391m13 391r13 +221m7 Target_Index{9|81M9} 250m29 255r51 266m24 298r26 308r18 312r29 322r29 +. 337r29 347r29 354r24 374r30 +221m21 Parent_Index{9|81M9} 252m29 255r26 297r26 330r29 380r30 +222p7 Target_Inode{21|349P9} 251r29 273r7 311r29 313r39 321r29 323r39 336r29 +. 338r39 346r29 348r39 369r10 369r42 375r30 389m13 389r13 +222p21 Parent_Inode{21|349P9} 253r29 258r42 295r26 296r36 368r10 368r42 381r30 +. 390m13 390r13 +223r7 Descriptor{21|287R9} 358m34 358r34 361m10 361r40 365m34 365r34 +224m7 Desc_Index{9|81M9} 354m10 357r34 364r34 +225r7 Ent{21|351R9} 229r40 230m34 230r34 308m10 329m10 349r35 +226a7 Name{string} 232m34 232r34 318m10 343m10 +227i7 Temp{natural} 316m29 326m29 341m29 351m29 +228b7 Success{boolean} 254m29 255r10 267m24 268r14 301m26 302r14 317m29 327m29 +. 342m29 352m29 360m34 367m34 377m30 383m30 385r21 +229a7 Ent_Data{8|29A9} 315r29 340r29 +231a7 Name_Data{8|29A9} 325r29 350r29 +387L6 Cleanup 238r15 241r15 257r15 261r15 270r15 304r15 +406p7 Data{21|376P9} 408r34 409r10 416r36 +428p7 Data{21|376P9} 434r34 436r10 446r29 464r29 484r30 495r30 506r26 508r54 +. 518r36 +429p7 Last_Component{21|381P9} 449m29 449r29 459m13 459r13 467m29 467r29 +. 512r26 522m13 522r13 +430m7 Path_Index{9|81M9} 450m29 485r30 496r30 510r26 +430m19 Target_Index{9|81M9} 468m29 473r51 +430m33 Parent_Index{9|81M9} 452m29 470m29 473r26 509r26 +431p7 Path_Inode{21|349P9} 451r29 486r30 493r7 493r37 497r30 519m13 519r13 +431p19 Target_Inode{21|349P9} 469r29 520m13 520r13 +431p33 Parent_Inode{21|349P9} 453r29 471r29 476r42 507r26 508r36 521m13 521r13 +432b7 Success{boolean} 454m29 455r14 472m29 473r10 488m30 489r14 499m30 500r14 +. 513m26 515r21 +517L6 Cleanup 438r15 441r15 457r15 475r15 479r15 491r15 502r15 +535p7 Data{21|376P9} 544r34 546r10 555r27 566r27 590r39 595r29 609r26 621r36 +536p7 Last_Component{21|381P9} 558m31 558r31 564m13 564r13 569m31 569r31 +. 615r26 626m13 626r13 +537m7 Source_Index{9|81M9} 559m27 +537m21 Target_Index{9|81M9} 570m27 599r29 613r26 +538m7 Source_Parent_Index{9|81M9} 561m27 +538m28 Target_Parent_Index{9|81M9} 572m27 579r26 598r29 612r26 +539p7 Source_Inode{21|349P9} 560r27 622m13 622r13 +539p21 Target_Inode{21|349P9} 571r27 623m13 623r13 +540p7 Source_Parent_Inode{21|349P9} 562r27 624m13 624r13 +540p28 Target_Parent_Inode{21|349P9} 573r27 582r42 589r39 596r29 610r26 625m13 +. 625r13 +541m7 Target_Parent_Size{9|84M9} 589m7 597r29 611r26 +542b7 Success1{boolean} 563m27 579r14 600m29 601r17 616m26 618r21 +542b17 Success2{boolean} 574m27 579r63 593r10 +620L6 Cleanup 548r15 551r15 581r15 586r15 603r18 +636p7 Data{21|376P9} 642r34 644r10 653r27 672r26 674r54 682r36 +637p7 Last_Component{21|381P9} 656m31 656r31 685m13 685r13 +638m7 Path_Index{9|81M9} 657m27 676r26 +638m19 Parent_Index{9|81M9} 659m27 675r26 +639p7 Path_Inode{21|349P9} 658r27 683m13 683r13 +639p19 Parent_Inode{21|349P9} 660r27 665r42 673r26 674r36 684m13 684r13 +640b7 Success{boolean} 661m27 662r14 677m26 679r21 +681L6 Cleanup 646r15 649r15 664r15 668r15 +696p7 FS{21|376P9} 704r34 709r30 728r29 729r56 752r36 +697p7 Fetched_Inode{21|349P9} 711r30 717r29 729r37 730r29 753m13 753r13 +698m7 Curr_Index{9|84M9} 723m7 731r29 739m10 +699m7 Next_Index{9|84M9} 724m7 733m29 739r24 +700m7 Entry_Count{9|84M9} 725m7 740r13 748m10 748r25 +701r7 Entity{20|57R9} 732m29 742r57 +702b7 Succ{boolean} 713m30 714r14 734m29 735r17 +751L6 Cleanup 716r15 720r15 +763p7 FS{21|376P9} 767r34 770r30 780r56 790r36 +764p7 Fetched_Inode{21|349P9} 772r30 776r26 779r27 780r37 791m13 791r13 +765b7 Succ{boolean} 774m30 775r10 +802p7 FS{21|376P9} 807r34 811r30 829r25 831r54 840r36 +803e7 Fetched_Type{20|39E9} 821m7 822r12 +804p7 Fetched_Inode{21|349P9} 813r30 821r39 830r25 831r35 841m13 841r13 +805b7 Succ{boolean} 815m30 816r14 835m25 837r22 +839L6 Cleanup 818r15 824r67 825r67 +852p7 FS{21|376P9} 856r34 859r10 869r30 885r25 888r54 897r36 +853p7 Fetched_Inode{21|349P9} 871r30 877r27 878r29 886r25 888r35 898m13 898r13 +854b7 Succ{boolean} 873m30 874r14 892m25 894r22 +896L6 Cleanup 861r15 876r15 881r15 +907K15 Align[11|19] 934r35 +908p7 FS{21|376P9} 909r68 914r34 917r30 924r38 933r51 943r36 +909m7 Blk{9|84M9} 934r64 +910m7 Size{9|84M9} 924m10 932r35 934r58 +911p7 Inod{21|349P9} 919r30 924r28 927r51 928r46 929r48 930r48 931r45 935r49 +. 936r49 937r49 944m13 944r13 +912b7 Succ{boolean} 921m30 923r10 +953p7 FS{21|376P9} 958r34 960r10 970r30 983r46 989r32 1000r46 1003r39 1015r36 +954p7 Fetched{21|349P9} 972r30 976r26 977r24 983r33 990r32 1000r23 1005r39 +. 1016m13 1016r13 +955m7 Fetched_Size{9|84M9} 983m7 984r10 987r13 +956b7 Success{boolean} 974m30 975r14 985m10 994m32 996m13 999r13 1000m70 +. 1001r16 1007m39 1012r21 +1014L6 Cleanup 962r15 980r15 +1026N7 EXT_GETFLAGS 1055r18 +1027N7 EXT_SETFLAGS 1058r18 +1029p7 FS{21|376P9} 1034r34 1040r10 1046r30 1061r39 1073r36 +1030p7 Inod{21|349P9} 1048r30 1056r26 1059r16 1063r39 1074m13 1074r13 +1031b7 Success{boolean} 1050m30 1051r14 1065m39 1066r30 +1032m7 Flags{9|81M9} 1056m16 1059r30 +1072L6 Cleanup 1042r15 +1083p7 FS{21|376P9} 1088r34 1094r10 1100r30 1111r33 1120r36 +1084p7 Inod{21|349P9} 1102r30 1108r46 1109r10 1113r33 1121m13 1121r13 +1085b7 Success{boolean} 1104m30 1105r14 1115m33 1116r24 +1086e7 Typ{20|39E9} 1108m10 1109r47 +1119L6 Cleanup 1096r15 +1131p7 FS{21|376P9} 1140r34 1142r10 1148r30 1159r33 1168r36 +1132p7 Inod{21|349P9} 1150r30 1156r10 1157r10 1161r33 1169m13 1169r13 +1133b7 Success{boolean} 1152m30 1153r14 1163m33 1164r24 +1167L6 Cleanup 1144r15 +1184p7 FS{21|376P9} 1190r34 1192r10 1202r30 1213r33 1222r36 +1185p7 Inod{21|349P9} 1204r30 1210r10 1211r10 1215r33 1223m13 1223r13 +1186m7 AS=1186:37{9|84M9} +1187m7 MS=1187:37{9|84M9} +1188b7 Success{boolean} 1206m30 1207r14 1217m33 1218r24 +1221L6 Cleanup 1194r15 +1227p7 FS_Data{21|376P9} 1229r31 +1258i7 Name_Start{natural} 1268m7 1327m10 1415r24 1415r39 1416r46 +1259e7 Target_Type{20|39E9} 1275m10 1300m10 1323r13 1363m16 1368r42 +1260m7 Target_Sz{9|84M9} 1274m10 1299m10 1336r32 1362m16 1371r23 +1261r7 Entity{20|57R9} 1339m32 1352r16 1352r41 1355r45 +1262i7 First_I{natural} 1281m10 1306m10 1317r13 1317r34 1319m13 1319r24 1327r26 +. 1353r22 1396m10 +1262i16 Last_I{natural} 1282m10 1307m10 1312r13 1314r16 1314r51 1315m13 1315r23 +. 1317r23 1318m13 1318r24 1343r19 1353r33 1368r19 1381r58 1395m10 1395r21 +. 1396r21 +1263m7 Curr_Index{9|84M9} 1328m10 1338r32 1350m13 +1263m19 Next_Index{9|84M9} 1329m10 1340m32 1350r27 +1264a7 Symlink{string} 1372m23 1381r23 +1265i7 Symlink_Len{natural} 1373m23 1374r22 1381r37 +1313L9 Retry_Component 1320r18 +1394L9 Next_Iteration 1390r21 +1399L6 Perfect_Hit_Return 1278r18 1303r18 +1403L6 Target_Miss_Parent_Hit_Return 1344r24 +1408L6 Absolute_Miss_Return 1293r18 1309r15 1324r18 1346r24 1365r24 1375r27 +1414L6 Fix_Last_Component 1401r12 1406r12 +1426i7 Final_Length{natural} 1430m7 1431r10 1437r21 1440r20 +1427a7 Str_Data{8|29A9} 1438r54 +1437i11 I{integer} 1438r29 1438r64 +1452i7 Ret_Count{natural} 1465m25 1467r26 1493m28 1495r28 +1453r7 Dir{21|351R9} 1457m34 1457r34 1468r10 1474r44 1481r39 1500r43 1505r51 +1454m7 Tmp_Index{9|84M9} 1478m10 1483m13 1483r26 1491r28 +1455e7 Tmp_Type{20|39E9} 1481m13 1484m13 1503r30 +1456a7 Dir_Data{8|29A9} 1464m25 1467r39 +1474a10 Dir_Name{string} 1475r43 1476m37 1476r37 1502r30 1504r35 1504r55 +1475a10 Name_Data{8|29A9} 1492m28 1495r41 +1510L6 Error_Return 1470r15 1496r18 +1522i7 Ret_Count{natural} 1531m27 1538m27 1542r31 +1523a7 Super_Data{8|29A9} 1530r27 1537m27 1542r43 +1552i7 Descr_Size{natural} 1555r42 1562r40 +1553m7 Offset{9|81M9} 1559m10 1559r20 1562m7 1562r17 1567r40 1574r40 +1554i7 Ret_Count{natural} 1569m27 1576m27 1580r23 +1555a7 Result_Data{8|29A9} 1568r27 1575m27 1580r35 +1595m7 Table_Index{9|81M9} 1602m7 1616r17 +1595m20 Descriptor_Index{9|81M9} 1603m7 1607r31 +1596r7 Block_Descriptor{21|287R9} 1608m31 1608r31 1615r17 +1597m7 Offset{9|81M9} 1615m7 1621r40 1628r40 +1598i7 Ret_Count{natural} 1623m27 1630m27 1633r23 +1599a7 Result_Data{8|29A9} 1622r27 1629m27 1633r35 +1646m7 Adjusted_Block{9|81M9} 1665r10 1668m10 1671r10 1672m10 1672r29 1673r29 +. 1674r29 1678m13 1678r39 1679r39 1680r39 1727r39 +1647m7 Block_Level{9|81M9} 1671r28 1672r46 1673r46 1674r48 1677r29 1678r57 +. 1679r56 1680r58 +1648m7 Block_Index{9|81M9} 1660m34 1660r34 1704r20 1721r17 1731r14 +1649m7 Single_Index{9|81M9} 1673m10 1677r13 1710r61 +1650m7 Indirect_Offset{9|81M9} 1674m10 1680m13 1700r30 1717r40 +1651m7 Indirect_Block{9|81M9} 1658m34 1658r34 1675m10 1699r43 1716r40 +1652m7 Double_Indirect{9|81M9} 1679m13 1686r51 1692r43 +1653m7 Single_Indirect_Index{9|81M9} 1656m34 1656r34 1681m13 1693r45 +1655a7 Single_Indirect_Index_Data{8|29A9} 1687m30 +1657a7 Indirect_Block_Data{8|29A9} 1694m30 1711m27 +1659a7 Block_Index_Data{8|29A9} 1701m30 1718m27 1728m24 +1662i7 Discard_1{natural} 1688m30 1695m30 1702m30 1712m27 1719m27 1729m24 +1663b7 Discard_2{boolean} 1689m30 1696m30 1703m30 1713m27 1720m27 1730m24 +1743i7 Final_Count{natural} 1755m10 1758r26 1762r40 1787r20 +1744m7 Final_Offset{9|84M9} 1759m10 1760r28 1761m10 1761r28 1764r60 1765r61 +. 1773r62 +1745m7 Block_Searched{9|84M9} 1760m10 1769r48 +1746m7 Block_Index{9|81M9} 1768m10 1772r40 +1747m7 Step_Size{9|84M9} 1762m10 1764r13 1765m13 1776r42 1784r46 +1748i7 Bytes_Read{natural} 1758r13 1759r51 1762r68 1774r46 1775r46 1784m10 +. 1784r24 +1801m7 Final_Offset{9|84M9} 1838m10 1839r28 1840m10 1840r28 1843r60 1844r61 +. 1852r62 +1802m7 Block_Searched{9|84M9} 1839m10 1848r48 +1803m7 Block_Index{9|81M9} 1847m10 1851r40 +1804m7 Step_Size{9|84M9} 1841m10 1843r13 1844m13 1855r42 1862r46 +1805i7 Bytes_Read{natural} 1837r13 1838r51 1841r68 1853r46 1854r46 1862m10 +. 1862r24 +1869L6 Error_Return 1816r18 1824r18 1833r18 1859r18 +1883m7 Offset{9|84M9} 1895r39 +1886m7 BCount{9|84M9} 1896r39 +1908m7 Ret_Blk{9|81M9} 1911m10 1912r13 1917m31 1927r32 +1910m11 I{9|81M9} 1911r71 1926r44 +1951m7 Adjusted_Block{9|81M9} 1971r10 1972r38 1976m10 1976r28 1979r10 1980m10 +. 1980r29 1981r29 1982r29 1986m13 1986r39 1987r39 1988r39 2143r39 +1952m7 Block_Level{9|81M9} 1979r28 1980r46 1981r46 1982r48 1985r29 1986r57 +. 1987r56 1988r58 +1953m7 DBlock{9|81M9} 1966m34 1966r34 +1954m7 Single_Index{9|81M9} 1981m10 1985r13 2090r61 2107r43 +1955m7 Indirect_Offset{9|81M9} 1982m10 1988m13 2063r30 2116r40 +1956m7 Indirect_Block{9|81M9} 1964m34 1964r34 1983m10 2040r16 2057m16 2062r43 +. 2095r13 2100m31 2115r40 +1957m7 Double_Indirect{9|81M9} 1987m13 2010r51 2026r53 2034r43 2050r46 +1958m7 Single_Indirect_Index{9|81M9} 1962m34 1962r34 1989m13 2015r16 2020m34 +. 2035r45 2052r46 +1959m7 Temp{9|81M9} 1996m34 1998r42 2045m34 2057r34 2076m31 2078r39 2129m28 +. 2131r36 +1961a7 Single_Indirect_Index_Data{8|29A9} 2011m30 2027r32 +1963a7 Indirect_Block_Data{8|29A9} 2036m30 2053r32 2091m27 2108r30 +1965a7 DBlock_Data{8|29A9} 2064r30 2117r27 2144r24 +1968i7 Discard_1{natural} 2012m30 2028m32 2037m30 2054m32 2065m30 2092m27 +. 2109m30 2118m27 2145m24 +1969b7 Discard_2{boolean} 1997m34 2004m39 2013m30 2021m34 2029m32 2038m30 +. 2046m34 2055m32 2066m30 2077m31 2084m36 2093m27 2101m31 2110m30 2119m27 +. 2130m28 2137m33 2146m24 +2158i7 Ret_Count{natural} 2184m27 2215m27 +2159r7 Desc{21|287R9} 2168m34 2168r34 2175r13 2181r40 2212r40 2223m10 2223r37 +. 2240m34 2240r34 +2160m7 Curr_Block{9|81M9} 2190m10 2198m19 2206r13 2246r23 +2161p7 Bitmap{8|30P9} 2183r27 2191r19 2192r16 2196r20 2197r19 2197r33 2214r27 +. 2247m16 2247r16 2254m13 2254r13 +2164m11 I{9|81M9} 2167r34 2198r34 2239r34 +2191i14 J{integer} 2192r24 2196r28 2197r27 2197r41 2199r47 +2195i17 Bit{integer} 2196r40 2197r52 2199r69 +2203L12 Next_Next_Iteration 2193r21 +2205L9 End_Search_Loop 2200r24 +2250L6 Next_Iteration 2176r18 2207r18 +2253L6 Error_Return 2172r18 2187r18 2218r18 2234r18 2244r18 +2264i7 Ret_Count{natural} 2290m27 2325m27 +2265r7 Desc{21|287R9} 2274m34 2274r34 2281r13 2287r40 2322r40 2333m10 2333r37 +. 2338m34 2338r34 +2266m7 Curr_Block{9|81M9} 2296m10 2303m19 2305r22 2306r22 2316r13 2344r23 +2267p7 Bitmap{8|30P9} 2289r27 2297r19 2298r16 2302r20 2308r22 2308r36 2324r27 +. 2345m16 2345r16 2353m13 2353r13 +2270m11 I{9|81M9} 2273r34 2303r34 2337r34 +2297i14 J{integer} 2298r24 2302r28 2304r47 2308r30 2308r44 +2301i17 Bit{integer} 2302r40 2304r69 2308r55 +2313L12 Next_Next_Iteration 2299r21 +2315L9 End_Search_Loop 2309r27 +2348L6 Next_Iteration 2282r18 2317r18 +2351L6 Error_Return 2278r18 2293r18 2328r18 2342r18 +2367p7 Buffer{8|30P9} 2374m7 2380r25 2383r38 2394r40 2394r48 2403r28 2404r19 +. 2412r22 2412r30 2415r22 2415r30 2431r37 2434r50 2447m13 2447r13 +2368m7 Required{9|84M9} 2388m7 2401r29 +2369i7 Offset{natural} 2389m7 2391r13 2394r63 2403r19 2403r43 2412r45 2415r45 +. 2440m13 2440r23 +2370m7 Contracted{9|84M9} 2396m13 2399r58 2402r48 2403r61 2413r44 2415r63 +2371m7 Available{9|84M9} 2399m13 2401r16 2420r51 +2372i7 Ret_Count{natural} 2381m25 2383r25 2432m37 2434r37 +2393r13 Ent{21|351R9} 2398r30 2399r39 2402m16 2440r41 +2411r19 Ent2{21|351R9} 2418m19 +2414a19 Name_Buf{string} 2423m19 +2446L6 Cleanup 2385r15 2407r24 2437r24 +2458p7 Buffer{8|30P9} 2461m7 2467r25 2470r38 2481r40 2481r48 2483r40 2483r48 +. 2493r34 2496r47 2509m13 2509r13 +2459i7 Offset{natural} 2475m7 2478r13 2481r63 2501r24 2502m13 2502r24 +2459i15 Offset2{natural} 2476m7 2483r63 2501m13 +2459i24 Ret_Count{natural} 2468m25 2470r25 2494m34 2496r34 +2480r13 Ent{21|351R9} 2485r16 2486r55 2502r42 +2482r13 Ent2{21|351R9} 2486m16 2486r36 +2508L6 Cleanup 2472r15 2499r21 +2561m7 Ret{9|73M9} 2564r47 2565r47 2566r47 2567r47 2568r47 +2588m7 L32{9|81M9} 2592r27 2596r26 +2589m7 H32{9|81M9} 2593r27 2597r26 +18M9 T{9|84M9} 27r42[907] 27r52[907] 35r44[907] 35r54[907] 40r50[907] 40r60[907] +. 41r49[907] 23r42[907] 23r52[907] 27r14[907] 30r44[907] 30r54[907] 34r14[907] +. 37r50[907] 37r60[907] +27V13 Align_Up{9|84M9} 29r20[907] +27m23 Value{9|84M9} 24r61[907] +27m30 Alignment{9|84M9} 28r20[907] 28r40[907] 28r55[907] 29r40[907] 25r61[907] +35V13 Align_Down{9|84M9} 37r20[907] +35m25 Value{9|84M9} 31r61[907] +35m32 Alignment{9|84M9} 36r20[907] 36r40[907] 36r55[907] 37r42[907] 32r61[907] +40V13 Divide_Round_Up{9|84M9} 934s41[907] 42r20[907] +40m30 Dividend{9|84M9} 41r21[907] 39r15[907] +40m40 Divisor{9|84M9} 41r33[907] 41r62[907] 42r47[907] 39r27[907] 39r43[907] +37R9 Object{21|364R9} 43r7[25] 47r38[25] +47P9*Object_Pointer(21|364R9) 99r42[25] 48r8[25] 50r31[25] 57r56[25] 59r33[25] +57V13*To_Pointer{18|47P9[25]} 108s58[25] 118s52[25] 143s58[25] 151s58[25] +. 159s58[25] 168s58[25] 180s58[25] 193s59[25] 216s62[25] 406s58[25] 428s58[25] +. 535s58[25] 636s58[25] 696s56[25] 763s56[25] 802s56[25] 852s56[25] 908s58[25] +. 953s56[25] 1029s61[25] 1083s61[25] 1131s61[25] 1184s61[25] 1227s61[25] +. 62r30[25] +59V13*To_Address{17|67M9} 99s25[25] 63r30[25] +18P9*Name{21|381P9} 20r50[26] 20r50[27] 20r50[28] 20r50[29] +20p39 X{21|381P9} 21r15[26] 22r23[26] 23r11[26] 21r15[27] 22r23[27] 23r11[27] +. 21r15[28] 22r23[28] 23r11[28] 21r15[29] 22r23[29] 23r11[29] +24m7 Value2{19|82M9} 27r18[907] +25m7 Align2{19|82M9} 27r27[907] 27r48[907] +31m7 Value2{19|82M9} 34r17[907] +32m7 Align2{19|82M9} 34r33[907] + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___vfs__ext__probe 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__probe 0 +GG EK_GLOBALS ada___vfs__ext__probe local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 5 interfaces__shift_left__3 devices__is_read_only devices__read devices__write ada___lib__messages__put_line FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__remount 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__remount 0 +GG EK_GLOBALS ada___vfs__ext__remount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__unmount 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__unmount 0 +GG EK_GLOBALS ada___vfs__ext__unmount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__read devices__write ada___lib__synchronization__seize FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_block_size 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_block_size 0 +GG EK_GLOBALS ada___vfs__ext__get_block_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_fragment_size 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_fragment_size 0 +GG EK_GLOBALS ada___vfs__ext__get_fragment_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_size 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_size 0 +GG EK_GLOBALS ada___vfs__ext__get_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_inode_count 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_inode_count 0 +GG EK_GLOBALS ada___vfs__ext__get_inode_count local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_free_blocks 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_free_blocks 0 +GG EK_GLOBALS ada___vfs__ext__get_free_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_free_inodes 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_free_inodes 0 +GG EK_GLOBALS ada___vfs__ext__get_free_inodes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_max_length 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_max_length 0 +GG EK_GLOBALS ada___vfs__ext__get_max_length local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__create_node 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__create_node 0 +GG EK_GLOBALS ada___vfs__ext__create_node local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 6 vfs__is_absolute devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__create_symbolic_link 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__create_symbolic_link 0 +GG EK_GLOBALS ada___vfs__ext__create_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__create_hard_link 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__create_hard_link 0 +GG EK_GLOBALS ada___vfs__ext__create_hard_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 6 vfs__is_absolute devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__rename 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__rename 0 +GG EK_GLOBALS ada___vfs__ext__rename local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 6 vfs__is_absolute devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__unlink 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__unlink 0 +GG EK_GLOBALS ada___vfs__ext__unlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 6 vfs__is_absolute devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__read_entries 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__read_entries 0 +GG EK_GLOBALS ada___vfs__ext__read_entries local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__read_symbolic_link 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__read_symbolic_link 0 +GG EK_GLOBALS ada___vfs__ext__read_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__read 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__read 0 +GG EK_GLOBALS ada___vfs__ext__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__write 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__write 0 +GG EK_GLOBALS ada___vfs__ext__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 5 devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__stat__align__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat__align__align_up 0 +GG EK_GLOBALS ada___vfs__ext__stat__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__ext__stat__align ada___vfs__ext__stat ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__stat__align__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat__align__align_down 0 +GG EK_GLOBALS ada___vfs__ext__stat__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__ext__stat__align ada___vfs__ext__stat ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__stat__align__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat__align__divide_round_up 0 +GG EK_GLOBALS ada___vfs__ext__stat__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__ext__stat__align ada___vfs__ext__stat ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__stat__align 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat__align 0 +GG EK_GLOBALS ada___vfs__ext__stat__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___vfs__ext__stat ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__stat 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat 0 +GG EK_GLOBALS ada___vfs__ext__stat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 5 devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__truncate 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__truncate 0 +GG EK_GLOBALS ada___vfs__ext__truncate local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 5 devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__io_control 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__io_control 0 +GG EK_GLOBALS ada___vfs__ext__io_control local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__change_mode 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__change_mode 0 +GG EK_GLOBALS ada___vfs__ext__change_mode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__change_owner 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__change_owner 0 +GG EK_GLOBALS ada___vfs__ext__change_owner local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__change_access_times 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__change_access_times 0 +GG EK_GLOBALS ada___vfs__ext__change_access_times local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__synchronize 2 devices__synchronize ada___vfs__ext__conv__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__synchronize 0 +GG EK_GLOBALS ada___vfs__ext__synchronize local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__synchronize__2 1 ada___vfs__ext__synchronize +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__synchronize__2 0 +GG EK_GLOBALS ada___vfs__ext__synchronize__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__inner_open_inode 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__inner_open_inode 0 +GG EK_GLOBALS ada___vfs__ext__inner_open_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 3 vfs__is_absolute devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__inner_read_symbolic_link 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__inner_read_symbolic_link 0 +GG EK_GLOBALS ada___vfs__ext__inner_read_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__inner_read_entry 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__inner_read_entry 0 +GG EK_GLOBALS ada___vfs__ext__inner_read_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__rw_superblock 2 devices__read devices__write +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__rw_superblock 0 +GG EK_GLOBALS ada___vfs__ext__rw_superblock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__rw_block_group_descriptor 3 ada___vfs__ext__act_on_policy devices__read devices__write +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__rw_block_group_descriptor 0 +GG EK_GLOBALS ada___vfs__ext__rw_block_group_descriptor local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 2 devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__rw_inode 4 ada___vfs__ext__rw_block_group_descriptor ada___vfs__ext__act_on_policy devices__read devices__write +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__rw_inode 0 +GG EK_GLOBALS ada___vfs__ext__rw_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 2 devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_block_index 1 devices__read +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_block_index 0 +GG EK_GLOBALS ada___vfs__ext__get_block_index local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__read_from_inode 3 ada___vfs__ext__get_block_index ada___vfs__ext__act_on_policy devices__read +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__read_from_inode 0 +GG EK_GLOBALS ada___vfs__ext__read_from_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__write_to_inode 6 ada___vfs__ext__rw_inode ada___vfs__ext__get_block_index ada___vfs__ext__grow_inode ada___vfs__ext__set_size ada___vfs__ext__act_on_policy devices__write +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__write_to_inode 0 +GG EK_GLOBALS ada___vfs__ext__write_to_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__grow_inode 2 ada___vfs__ext__assign_inode_blocks interfaces__shift_right__4 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__grow_inode 0 +GG EK_GLOBALS ada___vfs__ext__grow_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__assign_inode_blocks 4 ada___vfs__ext__rw_inode ada___vfs__ext__get_block_index ada___vfs__ext__wire_inode_blocks ada___vfs__ext__allocate_block_for_inode +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__assign_inode_blocks 0 +GG EK_GLOBALS ada___vfs__ext__assign_inode_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__wire_inode_blocks 4 ada___vfs__ext__rw_inode ada___vfs__ext__allocate_block_for_inode devices__read devices__write +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__wire_inode_blocks 0 +GG EK_GLOBALS ada___vfs__ext__wire_inode_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__allocate_block_for_inode 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__allocate_block_for_inode 0 +GG EK_GLOBALS ada___vfs__ext__allocate_block_for_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__allocate_inode 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__allocate_inode 0 +GG EK_GLOBALS ada___vfs__ext__allocate_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 2 devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__add_directory_entry 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__add_directory_entry 0 +GG EK_GLOBALS ada___vfs__ext__add_directory_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__delete_directory_entry 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__delete_directory_entry 0 +GG EK_GLOBALS ada___vfs__ext__delete_directory_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_dir_type 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_dir_type 0 +GG EK_GLOBALS ada___vfs__ext__get_dir_type local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_dir_type__2 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_dir_type__2 0 +GG EK_GLOBALS ada___vfs__ext__get_dir_type__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_permissions 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_permissions 0 +GG EK_GLOBALS ada___vfs__ext__get_permissions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_inode_type 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_inode_type 0 +GG EK_GLOBALS ada___vfs__ext__get_inode_type local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_inode_type__2 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_inode_type__2 0 +GG EK_GLOBALS ada___vfs__ext__get_inode_type__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__get_size__2 1 interfaces__shift_left__4 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_size__2 0 +GG EK_GLOBALS ada___vfs__ext__get_size__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__set_size 1 interfaces__shift_right__4 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__set_size 0 +GG EK_GLOBALS ada___vfs__ext__set_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__is_immutable 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__is_immutable 0 +GG EK_GLOBALS ada___vfs__ext__is_immutable local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__is_append_only 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__is_append_only 0 +GG EK_GLOBALS ada___vfs__ext__is_append_only local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__act_on_policy 2 ada___lib__messages__put_line ada___lib__panic__hard_panic +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__act_on_policy 0 +GG EK_GLOBALS ada___vfs__ext__act_on_policy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__check_user_access 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__check_user_access 0 +GG EK_GLOBALS ada___vfs__ext__check_user_access local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__conv__to_pointer 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__conv__to_pointer 0 +GG EK_GLOBALS ada___vfs__ext__conv__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__ext__conv ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__conv__to_address 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__conv__to_address 0 +GG EK_GLOBALS ada___vfs__ext__conv__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__ext__conv ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__conv 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__conv 0 +GG EK_GLOBALS ada___vfs__ext__conv local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__free 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__free 0 +GG EK_GLOBALS ada___vfs__ext__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__free__2 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__free__2 0 +GG EK_GLOBALS ada___vfs__ext__free__2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__free__3 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__free__3 0 +GG EK_GLOBALS ada___vfs__ext__free__3 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext__free__4 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__ext__free__4 0 +GG EK_GLOBALS ada___vfs__ext__free__4 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__ext 1 ada___vfs__ext__conv +GG EK_PROOF_DEPENDENCIES ada___vfs__ext 0 +GG EK_GLOBALS ada___vfs__ext local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 1 ada___vfs__ext__conv local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE ada___vfs__ext__rw_block_group_descriptor FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__address_to_access_conversions TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__read_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__rw_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__read FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_block_index FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__freeGP1161 TRUE FALSE FALSE FALSE TRUE ada___vfs__ext BODY_PART +GG EK_FLOW_SCOPE ada___vfs__ext__read_from_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__write FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__stat__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___vfs__ext__stat BODY_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__write_to_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__free__4 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__ext__freeGP1236 VISIBLE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__stat__align__align_up FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__stat__align VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__truncate FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__grow_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__io_control FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__freeGP1236 TRUE FALSE FALSE FALSE TRUE ada___vfs__ext BODY_PART +GG EK_FLOW_SCOPE ada___vfs__ext__assign_inode_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__conv TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___vfs__ext BODY_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__stat__align__align_down FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__stat__align VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext TRUE FALSE FALSE FALSE FALSE vfs +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters +GG EK_FLOW_SCOPE ada___vfs__ext__change_mode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__wire_inode_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__ext__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__change_owner FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__stat__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__stat__align VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__allocate_block_for_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE ada___vfs__ext__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__change_access_times FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__conv__to_pointer FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__conv VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__allocate_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__conv__to_address FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__conv VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__add_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__synchronize FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__synchronize__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__ext__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___vfs__ext__delete_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__ext__freeGP1007 VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_dir_type FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_dir_type__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__create_node FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_permissions FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_type FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_type__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__get_size__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__create_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__freeGP1007 TRUE FALSE FALSE FALSE TRUE ada___vfs__ext BODY_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__set_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib +GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__inner_open_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__is_immutable FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__ext__create_hard_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__free__2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__ext__freeGP1083 VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__is_append_only FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__act_on_policy FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__inner_read_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__rename FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__check_user_access FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__inner_read_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__freeGP1083 TRUE FALSE FALSE FALSE TRUE ada___vfs__ext BODY_PART +GG EK_FLOW_SCOPE ada___vfs__ext__unlink FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__rw_superblock FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__ext__free__3 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__ext__freeGP1161 VISIBLE_PART +GG EK_REMOTE_STATES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/vfs-ext.cswi b/obj/gnatprove/phase1/vfs-ext.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/vfs-ext.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/vfs-fat.adb.stderr b/obj/gnatprove/phase1/vfs-fat.adb.stderr new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/vfs-fat.adb.stdout b/obj/gnatprove/phase1/vfs-fat.adb.stdout new file mode 100644 index 0000000..e69de29 diff --git a/obj/gnatprove/phase1/vfs-fat.ali b/obj/gnatprove/phase1/vfs-fat.ali new file mode 100644 index 0000000..90794c8 --- /dev/null +++ b/obj/gnatprove/phase1/vfs-fat.ali @@ -0,0 +1,698 @@ +V "GNAT Lib v14" +A -x +A ada +A -gnatA +A -g +A -g +A -O2 +A -pipe +A -gnaty +A -Wall +A -Wextra +A -fno-stack-protector +A -fno-stack-check +A -fdata-sections +A -ffunction-sections +A -gnateDIroncladName="Ironclad" +A -gnateDVersion="g4411615" +A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +A -gnateDArchName="riscv64-limine" +A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +A -gnateDALLOCONLY=False +A -fno-pie +A -fno-pic +A -mno-relax +A -march=rv64imac_zicsr_zifencei +A -mabi=lp64 +A -gnatc +P GP + +RN +RV NO_ALLOCATORS +RR NO_DELAY +RV NO_DIRECT_BOOLEAN_OPERATORS +RR NO_DISPATCH +RR NO_EXCEPTION_PROPAGATION +RR NO_FINALIZATION +RR NO_FLOATING_POINT +RR NO_IMPLICIT_DYNAMIC_CODE +RV NO_LOCAL_ALLOCATORS +RR NO_PROTECTED_TYPES +RR NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RR NO_TASKING +RV NO_UNCHECKED_DEALLOCATION +RV NO_DEFAULT_INITIALIZATION +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS +RV NO_IMPLEMENTATION_ATTRIBUTES +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE +RR NO_OBSOLESCENT_FEATURES + +U vfs.fat%b vfs-fat.adb 21e714da OO PK IU +W ada%s ada.ads ada.ali +W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali +W lib%s lib.adb lib.ali +W lib.alignment%s lib-alignment.adb lib-alignment.ali +W system%s system.ads system.ali +W system.address_to_access_conversions%s s-atacco.ads s-atacco.ali +W system.storage_elements%s s-stoele.ads s-stoele.ali +W vfs%s vfs.adb vfs.ali + +U vfs.fat%s vfs-fat.ads 3d3f4adc OO PK IU +W vfs%s vfs.adb vfs.ali + +D ada.ads 20240507065137 76789da1 ada%s +D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s +D arch.ads 20250222165738 7fd82c9e arch%s +D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s +D devices.ads 20250222165738 f45ecf09 devices%s +D interfac.ads 20240507065137 9111f9c1 interfaces%s +D lib.ads 20250222165738 8d95f6f9 lib%s +D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s +D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b +D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s +D memory.ads 20250222165738 335640bf memory%s +D system.ads 20240507065137 14286b0f system%s +D s-atacco.ads 20240507065137 5868e3ba system.address_to_access_conversions%s +D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s +D vfs.ads 20250222165738 63b4365d vfs%s +D vfs-fat.ads 20250222165738 5e8b7c81 vfs.fat%s +D vfs-fat.adb 20250222165738 409a5a7b vfs.fat%b +D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 +G a Z +X 1 ada.ads +16K9*Ada 20e8 17|19r6 25r28 26r28 +X 2 a-uncdea.ads +20u15*Unchecked_Deallocation 17|19w10 25r32 26r32 +X 5 devices.ads +22K9*Devices 279e12 17|42r7 340r10 385r32 410r7 436r10 +29A9*Operation_Data(6|70M9) 16|72r24 17|39r19 299r24 402r21 427r23 +83I9*Device_Handle 16|19r23 190r24 17|29r23 +154V13*Get_Block_Size{natural} 17|373s52 385s40 +156V13*Is_Read_Only{boolean} 17|52s29 +193U14*Read 17|42s15 340s18 410s15 436s18 +X 6 interfac.ads +70M9*Unsigned_8 16|87r52 92r31 94r31 97r31 110r31 111r31 112r31 161r28 162r28 +. 163r28 238r36 +73M9*Unsigned_16 16|91r31 93r31 95r31 96r31 98r31 99r31 100r31 104r31 105r31 +. 107r31 108r31 117r31 164r28 165r28 166r28 167r28 168r28 169r28 170r28 +81M9*Unsigned_32 16|101r31 102r31 103r31 106r31 113r31 171r28 193r24 194r24 +. 195r24 200r23 208r18 215r24 216r28 228r45 232r30 233r30 234r30 17|54r29 +. 55r29 56r29 57r29 145r20 196r39 197r30 240r17 307r24 308r33 309r10 338r37 +. 369r43 373r23 373r39 374r23 395r18 408r34 421r24 422r28 +84M9*Unsigned_64 16|32r57 34r60 36r51 38r58 42r33 43r33 47r33 48r33 50r57 +. 71r20 90r31 209r18 228r65 229r11 234r50 17|85r57 91r60 97r51 103r58 111r33 +. 112r33 122r33 123r33 131r57 147r20 179r24 241r17 262r21 275r22 282r19 298r20 +. 306r24 310r24 322r33 323r34 328r32 329r23 330r13 330r39 332r35 384r32 386r32 +. 396r18 400r21 425r23 429r18 432r10 438r37 +141V13*Shift_Left{81M9} 17|196s27 +X 7 lib.ads +19K9*Lib 35e8 17|20r6 369r28 +X 8 lib-alignment.ads +19k13*Alignment 43e18 17|20w10 369r32 +X 12 system.ads +37K9*System 155e11 16|21r27 25r23 30r35 32r34 34r37 36r28 38r35 41r29 46r29 +. 50r34 53r18 58r26 61r20 69r20 77r18 17|17r6 17r35 18r6 23r28 24r28 31r27 +. 46r23 66r23 78r35 82r13 85r34 91r37 97r28 103r35 110r29 121r29 131r34 138r18 +. 221r26 230r20 296r20 364r18 +67M9*Address 16|21r34 25r30 30r42 32r41 34r44 36r35 38r42 41r36 46r36 50r41 +. 53r25 58r33 61r27 69r27 77r25 17|31r34 66r30 78r42 85r41 91r44 97r35 103r42 +. 110r36 121r36 131r41 138r25 221r33 230r27 296r27 364r25 +69m4*Null_Address{67M9} 17|46r30 82r20 +X 13 s-atacco.ads +39k16*Address_To_Access_Conversions 65e41 17|18w13 23r35 24r35 +X 14 s-stoele.ads +40K16*Storage_Elements 90e28 17|17w13 17r42 +82M9*Integer_Address 17|224r42 239r42 305r42 372r42 +84V13*To_Address{12|67M9} 17|224s30 239s30 305s30 372s30 +87V13*To_Integer{82M9} 17|211s33 +X 15 vfs.ads +24K9*VFS 674e8 16|17r9 241r5 17|22r14 505r5 +28M9*File_Inode_Number<6|84M9> 16|55r22 58r48 62r20 70r20 78r18 17|140r22 +. 211r14 221r48 231r20 297r20 365r18 378r32 +39E9*File_Type 40e64 16|201r23 238r55 17|146r20 +39n23*File_Regular{39E9} 16|240r13 17|317r29 +39n37*File_Directory{39E9} 16|239r58 17|146r35 168r27 249r29 +41R9*File_Stat 54e14 16|79r22 17|366r22 +42m7*Unique_Identifier{28M9} 17|378m11 +43e7*Type_Of_File{39E9} 17|379m11 +44m7*Mode{32M12} 17|380m11 +45m7*UID{6|81M9} 17|381m11 +46m7*GID{6|81M9} 17|382m11 +47i7*Hard_Link_Count{positive} 17|383m11 +48m7*Byte_Size{6|84M9} 17|384m11 +49i7*IO_Block_Size{natural} 17|385m11 +50m7*IO_Block_Count{6|84M9} 17|386m11 +51r7*Creation_Time{35R9} 17|387m11 +52r7*Modification_Time{35R9} 17|388m11 +53r7*Access_Time{35R9} 17|389m11 +58m7*Inode_Number{6|84M9} 17|281m32 +59a7*Name_Buffer{string} 17|283m32 +60i7*Name_Len{natural} 17|285m32 +61e7*Type_Of_File{39E9} 17|286m32 +63A9*Directory_Entities(57R9) 16|64r24 17|233r24 +234E9*FS_Status 242e16 16|56r22 66r24 74r24 80r22 17|141r22 235r24 301r24 +. 367r22 +235n8*FS_Success{234E9} 17|213r18 254r18 326r18 390r18 +236n8*FS_Invalid_Value{234E9} 17|218r18 250r21 318r21 +241n8*FS_IO_Failure{234E9} 17|258r24 348r24 355r24 +X 16 vfs-fat.ads +17K13*FAT 15|24k9 16|241l9 241e12 17|22b18 505l9 505t12 +18U14*Probe 19>8 20>8 21<8 17|28b14 63l8 63t13 +19i8 Handle{5|83I9} 17|29b8 42r21 51r29 52r43 +20b8 Do_Read_Only{boolean} 17|30b8 33r28 +21m8 Data_Addr{12|67M9} 17|31b8 46m10 62m7 +24U14*Remount 25>8 26>8 27>8 28<8 17|65b14 76l8 76t15 +25m8 FS{12|67M9} 17|66b8 71r28 +26b8 Do_Read_Only{boolean} 17|67b8 72r28 +27b8 Do_Relatime{boolean} 17|68b8 73r28 +28b8 Success{boolean} 17|69b8 75m7 +30U14*Unmount 30=23 17|78b14 83l8 83t15 +30m23 FS{12|67M9} 17|78b23 79r63 82m7 +32V13*Get_Block_Size{6|84M9} 32>29 17|85b13 89l8 89t22 +32m29 FS{12|67M9} 17|85b29 86r28 +34V13*Get_Fragment_Size{6|84M9} 34>32 17|91b13 95l8 95t25 +34m32 FS{12|67M9} 17|91b32 92r28 +36V13*Get_Size{6|84M9} 36>23 17|97b13 101l8 101t16 +36m23 FS{12|67M9} 17|97b23 98r28 +38V13*Get_Inode_Count{6|84M9} 38>30 17|103b13 107l8 107t23 +38m30 FS{12|67M9} 17|103b30 104r28 +40U14*Get_Free_Blocks 41>8 42<8 43<8 17|109b14 118l8 118t23 +41m8 FS{12|67M9} 17|110b8 114r28 +42m8 Free_Blocks{6|84M9} 17|111b8 116m7 +43m8 Free_Unpriviledged{6|84M9} 17|112b8 117m7 +45U14*Get_Free_Inodes 46>8 47<8 48<8 17|120b14 129l8 129t23 +46m8 FS{12|67M9} 17|121b8 125r28 +47m8 Free_Inodes{6|84M9} 17|122b8 127m7 +48m8 Free_Unpriviledged{6|84M9} 17|123b8 128m7 +50V13*Get_Max_Length{6|84M9} 50>29 17|131b13 135l8 135t22 +50m29 FS{12|67M9} 17|131b29 132r28 +52U14*Open 53>8 54>8 55<8 56<8 17|137b14 219l8 219t12 +53m8 FS{12|67M9} 17|138b8 143r72 +54a8 Path{string} 17|139b8 153r10 157r18 158r18 161r23 164r26 164r45 193r33 +55m8 Ino{15|28M9} 17|140b8 211m7 217m7 +56e8 Success{15|234E9} 17|141b8 213m7 218m7 +58U14*Close 58>21 58>42 17|221b14 227l8 227t13 +58m21 FS{12|67M9} 17|221b21 222r28 +58m42 Ino{15|28M9} 17|221b42 224r59 +60U14*Read_Entries 61>8 62>8 63>8 64<8 65<8 66<8 17|229b14 293l8 293t20 +61m8 FS_Data{12|67M9} 17|230b8 237r70 +62m8 Ino{15|28M9} 17|231b8 239r59 +63i8 Offset{natural} 17|232b8 275r35 +64a8 Entities{15|63A9} 17|233b8 278r28 280r24 281m16 283m16 285m16 286m16 +65i8 Ret_Count{natural} 17|234b8 248m7 278r16 280r41 288m13 288r26 +66e8 Success{15|234E9} 17|235b8 250m10 254m7 258m13 +68U14*Read 69>8 70>8 71>8 72<8 73<8 74<8 17|295b14 361l8 361t12 +69m8 FS_Data{12|67M9} 17|296b8 303r70 +70m8 Ino{15|28M9} 17|297b8 305r59 +71m8 Offset{6|84M9} 17|298b8 310r39 322r10 323r69 +72a8 Data{5|29A9} 17|299b8 313r39 322r19 343m27 343r27 343r33 344r33 +73i8 Ret_Count{natural} 17|300b8 316m7 327r13 329r36 343r46 344r46 359m10 +. 359r23 +74e8 Success{15|234E9} 17|301b8 318m10 326m7 348m13 355m13 +76U14*Stat 77>8 78>8 79<8 80<8 17|363b14 391l8 391t12 +77m8 Data{12|67M9} 17|364b8 370r72 +78m8 Ino{15|28M9} 17|365b8 372r59 +79r8 S{15|41R9} 17|366b8 377m7 +80e8 Success{15|234E9} 17|367b8 390m7 +84N4 Sector_Size 229r34 17|309r53 429r59 +85N4 Boot_Signature 17|44r31 +87A9 FAT32_Bytes(6|70M9) 89r31 109r31 116r31 +88R9 BIOS_Parameter_Block 118e15 119r8 192r24 17|36r19 +89a7*Infinite_Loop{87A9} 120r7 +90m7*OEM_Identifier{6|84M9} 121r7 +91m7*Bytes_Per_Sector{6|73M9} 122r7 +92m7*Sectors_Per_Cluster{6|70M9} 123r7 17|179r46 262r41 309r30 338r57 408r56 +93m7*Reserved_Sectors{6|73M9} 124r7 17|55r45 56r45 +94m7*FAT_Count{6|70M9} 125r7 17|57r45 +95m7*Root_Entry_Count{6|73M9} 126r7 +96m7*Sector_Count{6|73M9} 127r7 17|54r45 +97m7*Media_Descriptor_Type{6|70M9} 128r7 +98m7*Sectors_Per_FAT_Old{6|73M9} 129r7 +99m7*Sectors_Per_Track{6|73M9} 130r7 +100m7*Head_Count{6|73M9} 131r7 +101m7*Hidden_Sector_Count{6|81M9} 132r7 +102m7*Large_Sector_Count{6|81M9} 133r7 17|59r34 +103m7*Sectors_Per_FAT{6|81M9} 134r7 17|57r61 429r40 +104m7*Flags{6|73M9} 135r7 +105m7*FAT_Version_Number{6|73M9} 136r7 +106m7*Root_Entry_Cluster{6|81M9} 137r7 17|145r44 +107m7*FSInfo_Sector{6|73M9} 138r7 +108m7*Backup_MBR_Sector{6|73M9} 139r7 +109a7*Reserved{87A9} 140r7 +110m7*Drive_Number{6|70M9} 141r7 +111m7*NT_FLags{6|70M9} 142r7 +112m7*Signature{6|70M9} 143r7 +113m7*Volume_ID_Serial{6|81M9} 144r7 +114a7*Volume_Label{string} 145r7 +115a7*System_Identifier{string} 146r7 +116a7*Boot_Code{87A9} 147r7 +117m7*Boot_Signature{6|73M9} 148r7 17|44r13 +151N4 Directory_Read_Only +152N4 Directory_Hidden +153N4 Directory_System +154N4 Directory_Volume_ID +155N4 Directory_Directory 239r27 +156N4 Directory_Archive +157N4 Directory_LFN 17|192r36 192r54 276r33 276r51 +158R9 Directory_Entry 172e15 173r8 202r23 210r22 221r15 224r17 17|148r20 +. 242r17 397r22 402r42 452r15 470r17 +159a7*File_Name{string} 174r7 17|478r20 495r17 500r17 +160a7*File_Extension{string} 175r7 17|485r20 496r17 +161m7*Attributes{6|70M9} 176r7 17|187r20 192r21 195r44 270r17 276r18 286r62 +162m7*Reserved_NT{6|70M9} 177r7 +163m7*Creation_Time_1{6|70M9} 178r7 +164m7*Creation_Time_2{6|73M9} 179r7 +165m7*Creation_Time_3{6|73M9} 180r7 +166m7*Access_Time{6|73M9} 181r7 +167m7*First_Cluster_High{6|73M9} 182r7 17|196r56 +168m7*Modification_Time{6|73M9} 183r7 +169m7*Modification_Date{6|73M9} 184r7 +170m7*First_Cluster_Low{6|73M9} 185r7 17|197r47 282r36 +171m7*Size{6|81M9} 186r7 17|322r60 323r61 375r47 384r59 +189R9 FAT_Data 196e14 197r36 17|23r66 25r56 50r19 +190i7*Handle{5|83I9} 17|51m11 341r30 373r71 385r59 411r29 437r32 +191b7*Is_Read_Only{boolean} 17|52m11 +192r7*BPB{88R9} 17|53m11 145r40 179r42 262r37 309r26 338r53 408r52 429r36 +193m7*Sector_Count{6|81M9} 17|54m11 58r15 59m15 +194m7*FAT_Offset{6|81M9} 17|55m11 430r45 +195m7*Cluster_Offset{6|81M9} 17|56m11 337r40 407r39 +197P9 FAT_Data_Acc(189R9) 207r18 214r24 17|25r66 35r19 79r14 79r30 143r23 +. 143r39 237r21 237r37 303r21 303r37 370r23 370r39 394r18 420r24 +199R9 FAT_File 203e14 204r36 17|24r66 26r56 210r21 +200m7*Begin_Cluster{6|81M9} 17|240r37 307r44 378r56 +201e7*Inner_Type{15|39E9} 17|249r15 317r15 379r37 +202r7*FS_Entry{158R9} 17|322r51 323r52 375r38 384r50 +204P9 FAT_File_Acc(199R9) 17|26r66 144r20 223r14 223r30 238r23 238r39 304r24 +. 304r40 371r23 371r39 +206U14 Read_Directory_Entry 207>8 208>8 209>8 210<8 211<8 17|174s13 256s10 +. 393b14 417l8 417t28 +207p8 Data{197P9} 17|394b8 407r34 408r47 411r24 +208m8 Cluster{6|81M9} 17|395b8 406r34 +209m8 Index{6|84M9} 17|396b8 412r33 +210r8 Result{158R9} 17|397b8 403m26 403r26 +211b8 Success{boolean} 17|398b8 415m24 416m7 416r18 +213U14 Get_Next_Cluster 214>8 215>8 216<8 217<8 17|181s16 264s13 353s10 419b14 +. 448l8 448t24 +214p8 Data{197P9} 17|420b8 429r31 430r40 437r27 +215m8 Cluster_Index{6|81M9} 17|421b8 432r23 438r50 +216m8 Returned{6|81M9} 17|422b8 427m63 427r63 433m10 445r24 +217b8 Success{boolean} 17|423b8 434m10 441m27 442r17 443m13 445m13 +219V13 Are_Paths_Equal{boolean} 220>8 221>8 17|193s16 450b13 467l8 467t23 +220a8 Base{string} 17|451b8 455r34 +221r8 Ent{158R9} 17|452b8 465r21 +223U14 Compose_Path 224>8 225<8 226<8 17|279s16 465s7 469b14 504l8 504t20 +224r8 Ent{158R9} 17|470b8 478r16 479r13 485r16 486r13 495r13 496r13 500r13 +225a8 Result{string} 17|471b8 494m10 494r18 494r34 499m10 499r18 499r34 +226i8 Length{natural} 17|472b8 503m7 +228V13 Sector_To_Disk_Offset{6|84M9} 228>36 235s8 17|430s17 +228m36 Sector{6|81M9} 229r24 +231V13 Cluster_To_Disk_Offset{6|84M9} 232>8 233>8 234>8 17|335s28 405s17 +232m8 Cluster{6|81M9} 235r48 +233m8 Cluster_Begin{6|81M9} 235r31 +234m8 Sectors_Per_Cluster{6|81M9} 236r31 +238V13 Get_Type{15|39E9} 238>23 17|195s30 286s48 +238m23 Attributes{6|70M9} 239r12 +X 17 vfs-fat.adb +23K14 Conv_1[13|39] 62r20 62r39 79r44 143r53 237r51 303r51 370r53 +24K14 Conv_2[13|39] 212r11 212r30 224r11 239r11 305r11 372r11 +25U14 Free_1[2|20] +25U14*Free_1[2|20] 81s7 +26U14 Free_2[2|20] +26U14*Free_2[2|20] 226s7 +35p7 Data{16|197P9} 50m7 58r10 59r10 62r62 +36r7 BP{16|88R9} 39r40 40m34 40r34 44r10 53r29 54r42 55r42 56r42 57r42 57r58 +. 59r31 +37i7 Ret_Count{natural} 42m41 43r25 +38b7 Success{boolean} 42m52 43r14 +39a7 BP_Data{5|29A9} 42m32 43r38 +79p7 Data{16|197P9} 81m15 81r15 +143p7 Data{16|197P9} 145r35 174r35 179r37 181r34 +144p7 Result{16|204P9} 210m7 212r53 +145m7 Cluster{6|81M9} 174r41 181r40 181m49 196m16 210r31 +146e7 Inner_Type{15|39E9} 168r13 195m16 210r40 +147m7 Index{6|84M9} 172m10 174r50 179r16 180m16 201m13 201r22 +148r7 Ent{16|158R9} 174m57 187r16 192r17 193r63 195r40 196r52 197r43 210r52 +149i7 First_I{natural} 157m7 193r39 206m10 +150i7 Last_I{natural} 158m7 161r13 164r16 164r51 165m13 165r23 193r50 205m10 +. 205r21 206r21 +151b7 Success2{boolean} 174m62 175r20 181m58 182r23 +204L9 Next_Iteration 198r21 +209L6 End_Return 154r15 +216L6 Error_Return 169r18 176r21 183r24 188r21 +223p7 File{16|204P9} 226m15 226r15 +237p7 FS{16|197P9} 256r32 262r34 264r31 +238p7 File{16|204P9} 240r32 249r10 +240m7 Cluster{6|81M9} 256r36 264r35 264m44 +241m7 Index{6|84M9} 256r45 262r13 263m13 275r13 291m10 291r19 +242r7 Ent{16|158R9} 256m52 270r13 276r14 279r30 282r32 286r58 +243a7 Composed{string} 279m35 284r19 +244i7 Composed_Len{natural} 279m45 283r50 284r34 285r48 +245i7 Temp{natural} 280m16 281r26 283r26 285r26 286r26 +246b7 Success2{boolean} 256m57 257r17 264m53 265r20 +303p7 FS{16|197P9} 309r23 337r37 338r50 341r27 353r28 +304p7 File{16|204P9} 307r39 317r10 322r46 323r47 +306m7 Cluster_Offset{6|84M9} 335m10 342r27 +307m7 Cluster{6|81M9} 336r37 353r32 353m41 +308m7 Cluster_Sz{6|81M9} 330r52 332r48 +310m7 Final_Offset{6|84M9} 330r66 332r62 342r44 352m10 +311i7 Step_Size{natural} 328m10 330r26 332m13 344r62 359r35 +312i7 Discard{natural} 345m27 +313i7 Final_Count{natural} 323m10 327r25 328r45 +314b7 Succ{boolean} 346m27 347r17 353m50 354r17 +369K15 Align[8|19] 375r10 +370p7 FS{16|197P9} 373r68 385r56 +371p7 File{16|204P9} 375r33 378r51 379r32 384r45 +373m7 Blk{6|81M9} 375r53 +374m7 Cnt{6|81M9} 386r45 +400m7 Offset{6|84M9} 405m7 412r24 +401i7 Ret_Count{natural} 414m24 416r30 +402a7 Result_Data{5|29A9} 413m24 416r42 +425m7 Limit{6|84M9} 429m7 432r41 +425m14 Offset{6|84M9} 430m7 438r27 +426i7 Ret_Count{natural} 440m27 442r28 +427a7 Returned_Data{5|29A9} 439m27 442r41 +454N7 Offset 461r53 +455a7 Base_Copy{string} 459r16 460r13 461m13 461r48 466r14 +456a7 Composed{string} 465m26 466r26 +457i7 Composed_Len{natural} 465m36 466r41 +459e11 C=459:16{character} +474i7 Ret{natural} 493m10 494r49 498m10 499r49 503r17 +475i7 Ent_Name_Len{natural} 482m10 482r26 493r17 495r33 498r17 500r33 +476i7 Ent_Ext_Len{natural} 489m10 489r25 492r10 493r36 496r38 +478e11 C{character} +485e11 C{character} +37R9 Object{16|189R9} 43r7[23] 47r38[23] 43r7[24] 47r38[24] +47P9*Object_Pointer(16|189R9) 62r46[23] 212r37[24] 48r8[23] 50r31[23] 57r56[23] +. 59r33[23] 48r8[24] 50r31[24] 57r56[24] 59r33[24] +57V13*To_Pointer{13|47P9[23]} 79s51[23] 143s60[23] 224s18[24] 237s58[23] +. 239s18[24] 303s58[23] 305s18[24] 370s60[23] 372s18[24] 62r30[23] 62r30[24] +59V13*To_Address{12|67M9} 62s27[23] 212s18[24] +18P9*Name{16|197P9} 20r50[25] 20r50[26] +20p39 X{16|197P9} 21r15[25] 22r23[25] 23r11[25] 21r15[26] 22r23[26] 23r11[26] +18M9 T{6|81M9} 27r42[369] 27r52[369] 35r44[369] 35r54[369] 40r50[369] 40r60[369] +. 41r49[369] 23r42[369] 23r52[369] 27r14[369] 30r44[369] 30r54[369] 34r14[369] +. 37r50[369] 37r60[369] +27V13 Align_Up{6|81M9} 29r20[369] +27m23 Value{6|81M9} 24r61[369] +27m30 Alignment{6|81M9} 28r20[369] 28r40[369] 28r55[369] 29r40[369] 25r61[369] +35V13 Align_Down{6|81M9} 37r20[369] +35m25 Value{6|81M9} 31r61[369] +35m32 Alignment{6|81M9} 36r20[369] 36r40[369] 36r55[369] 37r42[369] 32r61[369] +40V13 Divide_Round_Up{6|81M9} 375s16[369] 42r20[369] +40m30 Dividend{6|81M9} 41r21[369] 39r15[369] +40m40 Divisor{6|81M9} 41r33[369] 41r62[369] 42r47[369] 39r27[369] 39r43[369] +24m7 Value2{14|82M9} 27r18[369] +25m7 Align2{14|82M9} 27r27[369] 27r48[369] +31m7 Value2{14|82M9} 34r17[369] +32m7 Align2{14|82M9} 34r33[369] + +QQ SPARKVERSION 0.0w +GG EK_DIRECT_CALLS ada___vfs__fat__probe 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__probe 0 +GG EK_GLOBALS ada___vfs__fat__probe local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 devices__is_read_only devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__remount 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__remount 0 +GG EK_GLOBALS ada___vfs__fat__remount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__unmount 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__unmount 0 +GG EK_GLOBALS ada___vfs__fat__unmount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__get_block_size 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_block_size 0 +GG EK_GLOBALS ada___vfs__fat__get_block_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__get_fragment_size 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_fragment_size 0 +GG EK_GLOBALS ada___vfs__fat__get_fragment_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__get_size 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_size 0 +GG EK_GLOBALS ada___vfs__fat__get_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__get_inode_count 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_inode_count 0 +GG EK_GLOBALS ada___vfs__fat__get_inode_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__get_free_blocks 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_free_blocks 0 +GG EK_GLOBALS ada___vfs__fat__get_free_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__get_free_inodes 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_free_inodes 0 +GG EK_GLOBALS ada___vfs__fat__get_free_inodes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__get_max_length 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_max_length 0 +GG EK_GLOBALS ada___vfs__fat__get_max_length local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__open 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__open 0 +GG EK_GLOBALS ada___vfs__fat__open local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 interfaces__shift_left__3 devices__read ada___system__storage_elements__to_integer FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__close 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__close 0 +GG EK_GLOBALS ada___vfs__fat__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__storage_elements__to_address FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__read_entries 7 ada___vfs__fat__read_directory_entry ada___vfs__fat__get_next_cluster ada___vfs__fat__compose_path ada___vfs__fat__get_type ada___system__storage_elements__to_address ada___vfs__fat__conv_1__to_pointer ada___vfs__fat__conv_2__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__read_entries 0 +GG EK_GLOBALS ada___vfs__fat__read_entries local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__read 6 ada___vfs__fat__get_next_cluster ada___vfs__fat__cluster_to_disk_offset devices__read ada___system__storage_elements__to_address ada___vfs__fat__conv_1__to_pointer ada___vfs__fat__conv_2__to_pointer +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__read 0 +GG EK_GLOBALS ada___vfs__fat__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__stat__align__align_up 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat__align__align_up 0 +GG EK_GLOBALS ada___vfs__fat__stat__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__fat__stat__align ada___vfs__fat__stat ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__stat__align__align_down 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat__align__align_down 0 +GG EK_GLOBALS ada___vfs__fat__stat__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__fat__stat__align ada___vfs__fat__stat ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__stat__align__divide_round_up 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat__align__divide_round_up 0 +GG EK_GLOBALS ada___vfs__fat__stat__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__fat__stat__align ada___vfs__fat__stat ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__stat__align 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat__align 0 +GG EK_GLOBALS ada___vfs__fat__stat__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___vfs__fat__stat ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__stat 6 devices__get_block_size ada___system__storage_elements__to_address ada___vfs__fat__conv_1__to_pointer ada___vfs__fat__conv_2__to_pointer ada___vfs__fat__stat__align ada___vfs__fat__stat__align__divide_round_up +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat 0 +GG EK_GLOBALS ada___vfs__fat__stat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__get_block_size FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__read_directory_entry 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__read_directory_entry 0 +GG EK_GLOBALS ada___vfs__fat__read_directory_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__get_next_cluster 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_next_cluster 0 +GG EK_GLOBALS ada___vfs__fat__get_next_cluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__are_paths_equal 1 ada___vfs__fat__compose_path +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__are_paths_equal 0 +GG EK_GLOBALS ada___vfs__fat__are_paths_equal local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__compose_path 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__compose_path 0 +GG EK_GLOBALS ada___vfs__fat__compose_path local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__sector_to_disk_offset 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__sector_to_disk_offset 0 +GG EK_GLOBALS ada___vfs__fat__sector_to_disk_offset local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__cluster_to_disk_offset 1 ada___vfs__fat__sector_to_disk_offset +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__cluster_to_disk_offset 0 +GG EK_GLOBALS ada___vfs__fat__cluster_to_disk_offset local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__get_type 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_type 0 +GG EK_GLOBALS ada___vfs__fat__get_type local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__conv_1__to_pointer 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_1__to_pointer 0 +GG EK_GLOBALS ada___vfs__fat__conv_1__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__fat__conv_1 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__conv_1__to_address 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_1__to_address 0 +GG EK_GLOBALS ada___vfs__fat__conv_1__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__fat__conv_1 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__conv_1 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_1 0 +GG EK_GLOBALS ada___vfs__fat__conv_1 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__conv_2__to_pointer 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_2__to_pointer 0 +GG EK_GLOBALS ada___vfs__fat__conv_2__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__fat__conv_2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__conv_2__to_address 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_2__to_address 0 +GG EK_GLOBALS ada___vfs__fat__conv_2__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__fat__conv_2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__conv_2 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_2 0 +GG EK_GLOBALS ada___vfs__fat__conv_2 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__free_1 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__free_1 0 +GG EK_GLOBALS ada___vfs__fat__free_1 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat__free_2 0 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat__free_2 0 +GG EK_GLOBALS ada___vfs__fat__free_2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_DIRECT_CALLS ada___vfs__fat 2 ada___vfs__fat__conv_1 ada___vfs__fat__conv_2 +GG EK_PROOF_DEPENDENCIES ada___vfs__fat 0 +GG EK_GLOBALS ada___vfs__fat local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 2 ada___vfs__fat__conv_1 ada___vfs__fat__conv_2 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 +GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__fat__get_type FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__free_1 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__fat__free_1GP1076 VISIBLE_PART +GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___vfs__fat__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART +GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__conv_1__to_pointer FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__conv_1 VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__stat__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___vfs__fat__stat BODY_PART +GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada +GG EK_FLOW_SCOPE ada___vfs__fat__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__conv_1__to_address FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__conv_1 VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART +GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART +GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__free_1GP1076 TRUE FALSE FALSE FALSE TRUE ada___vfs__fat BODY_PART +GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__stat__align__align_up FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__stat__align VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__open FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch +GG EK_FLOW_SCOPE ada___vfs__fat__free_2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__fat__free_2GP1156 VISIBLE_PART +GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__close FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__conv_2 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___vfs__fat BODY_PART +GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__stat__align__align_down FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__stat__align VISIBLE_PART +GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART +GG EK_FLOW_SCOPE ada___system__address_to_access_conversions TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__read_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__read FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_next_cluster FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__free_2GP1156 TRUE FALSE FALSE FALSE TRUE ada___vfs__fat BODY_PART +GG EK_FLOW_SCOPE ada___vfs__fat__stat__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__stat__align VISIBLE_PART +GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__conv_2__to_pointer FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__conv_2 VISIBLE_PART +GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__are_paths_equal FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system +GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__conv_2__to_address FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__conv_2 VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib +GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat TRUE FALSE FALSE FALSE FALSE vfs +GG EK_FLOW_SCOPE ada___vfs__fat__compose_path FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__sector_to_disk_offset FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__conv_1 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___vfs__fat BODY_PART +GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__cluster_to_disk_offset FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART +GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART +GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard +GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART +GG EK_FLOW_SCOPE ada___vfs__fat__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART +GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/vfs-fat.cswi b/obj/gnatprove/phase1/vfs-fat.cswi new file mode 100644 index 0000000..2ba9819 --- /dev/null +++ b/obj/gnatprove/phase1/vfs-fat.cswi @@ -0,0 +1,28 @@ +20250224202256 +-c +-x +ada +-gnatA +-g +-O2 +-pipe +-gnaty +-Wall +-Wextra +-fno-stack-protector +-fno-stack-check +-fdata-sections +-ffunction-sections +-gnateDIroncladName="Ironclad" +-gnateDVersion="g4411615" +-gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" +-gnateDArchName="riscv64-limine" +-ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. +-gnateDALLOCONLY=False +-fno-pie +-fno-pic +-mno-relax +-march=rv64imac_zicsr_zifencei +-mabi=lp64 +-gnatc +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/vfs.ali b/obj/gnatprove/phase1/vfs.ali index d48ca0c..9416390 100644 --- a/obj/gnatprove/phase1/vfs.ali +++ b/obj/gnatprove/phase1/vfs.ali @@ -14,7 +14,7 @@ A -fno-stack-check A -fdata-sections A -ffunction-sections A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g2867970" +A -gnateDVersion="g4411615" A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" A -gnateDArchName="riscv64-limine" A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. diff --git a/obj/gnatprove/phase1/vfs.cswi b/obj/gnatprove/phase1/vfs.cswi index ccc3360..2ba9819 100644 --- a/obj/gnatprove/phase1/vfs.cswi +++ b/obj/gnatprove/phase1/vfs.cswi @@ -1,4 +1,4 @@ -20250222171636 +20250224202256 -c -x ada @@ -14,7 +14,7 @@ ada -fdata-sections -ffunction-sections -gnateDIroncladName="Ironclad" --gnateDVersion="g2867970" +-gnateDVersion="g4411615" -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -gnateDArchName="riscv64-limine" -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. @@ -25,4 +25,4 @@ ada -march=rv64imac_zicsr_zifencei -mabi=lp64 -gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/691ca296.tmp +-gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index aefa03b..6d94371 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -210,8 +210,7 @@ package body Arch.Context is begin -- Always start with a zeroed FP context. Ctx := (others => 0); - pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, - "FP context zeroed"); + pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, "FP context zeroed"); -- Set up the FP routine pointers once. Setup_FP_Routines; -- Save the current FP context using the chosen routine. @@ -231,8 +230,7 @@ package body Arch.Context is procedure Destroy_FP_Context (Ctx : in out FP_Context) is begin Ctx := (others => 0); - pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, - "FP context destroyed"); + pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, "FP context destroyed"); end Destroy_FP_Context; ---------------------------------------------------------------------------- From 1b5fc74b30c0f42b77069d81937ff20f36823b89 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:26:20 -0500 Subject: [PATCH 61/99] fixing make errors --- source/arch/riscv64-limine/arch-context.adb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index aefa03b..6d94371 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -210,8 +210,7 @@ package body Arch.Context is begin -- Always start with a zeroed FP context. Ctx := (others => 0); - pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, - "FP context zeroed"); + pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, "FP context zeroed"); -- Set up the FP routine pointers once. Setup_FP_Routines; -- Save the current FP context using the chosen routine. @@ -231,8 +230,7 @@ package body Arch.Context is procedure Destroy_FP_Context (Ctx : in out FP_Context) is begin Ctx := (others => 0); - pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, - "FP context destroyed"); + pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, "FP context destroyed"); end Destroy_FP_Context; ---------------------------------------------------------------------------- From dd04881947001e64754638d2cd1c246bba48cdec Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 26 Feb 2025 16:39:56 -0500 Subject: [PATCH 62/99] Add consolidation/opimizations to improve performance and reduce register calls. --- source/arch/riscv64-limine/arch-context.adb | 348 +++++++++++--------- 1 file changed, 189 insertions(+), 159 deletions(-) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index 6d94371..801f6e5 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -1,6 +1,6 @@ ------------------------------------------------------------------ -- arch-context.adb: Architecture-specific context switching. --- Copyright (C) 2024 streaksu +-- (RISC-V 64-bit version) -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -15,116 +15,225 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . ------------------------------------------------------------------ - pragma SPARK_Mode (On); with System; use System; with Interfaces; use Interfaces; with System.Machine_Code; -with Arch.Interrupts; -with Arch.CPU; +with Arch.CPU; use Arch.CPU; +with Arch.Interrupts; use Arch.Interrupts; package body Arch.Context is pragma Warnings (Off, "SPARK_Mode is enabled"); ---------------------------------------------------------------------------- - -- Extension Constants + -- Package-Level Constant for misa ---------------------------------------------------------------------------- - F_Extension_Bit : constant Unsigned_64 := 16#20#; -- Bit 5: F extension - D_Extension_Bit : constant Unsigned_64 := 16#40#; -- Bit 6: D extension + -- Read misa once at elaboration time. Since misa is immutable during runtime, + -- this value is safe to reuse for all extension checks. + MISA_Value : constant Unsigned_64 := Get_CSR(16#301#); ---------------------------------------------------------------------------- - -- Function Pointer Types for FP Routines + -- Internal General-Purpose Context Record (64-bit) ---------------------------------------------------------------------------- - type FP_Save_Routine_Type is access procedure (Ctx : in out FP_Context); - type FP_Load_Routine_Type is access procedure (Ctx : FP_Context); + type GP_Context_Type is record + SP : Unsigned_64; + SEPC : Unsigned_64; + SSTATUS : Unsigned_64; + A0 : Unsigned_64; + end record; - FP_Save_Routine : FP_Save_Routine_Type; - FP_Load_Routine : FP_Load_Routine_Type; + ---------------------------------------------------------------------------- + -- Conversion Functions + -- (Converts between our 64-bit internal context and the external GP_Context, + -- defined in Arch.Interrupts as a 32-bit record.) + ---------------------------------------------------------------------------- + function To_GP_Context_Type(Frame : GP_Context) return GP_Context_Type is + begin + return ( + SP => Unsigned_64(Frame.R2), -- x2: Stack Pointer + SEPC => Get_CSR(16#141#), -- SEPC CSR (0x141) + SSTATUS => Get_CSR(16#100#), -- SSTATUS CSR (0x100) + A0 => Unsigned_64(Frame.R10) -- x10: Return value (e.g., fork) + ); + end To_GP_Context_Type; + + function To_Frame(Ctx : GP_Context_Type) return GP_Context is + begin + return ( + R2 => Unsigned_32(Ctx.SP and 16#FFFFFFFF#), + R10 => Unsigned_32(Ctx.A0 and 16#FFFFFFFF#), + others => 0 + ); + end To_Frame; ---------------------------------------------------------------------------- - -- No-Op FP Routines (if no FP support) + -- CSR Access and Extension Detection ---------------------------------------------------------------------------- - procedure FP_Save_NoOp (Ctx : in out FP_Context) is + function Get_CSR(CSR_Number : Unsigned_64) return Unsigned_64 is + Value : Unsigned_64; begin - null; - end FP_Save_NoOp; + Asm("csrr %0, %1", + Outputs => Unsigned_64'Asm_Output("=r", Value), + Inputs => Unsigned_64'Asm_Input("i", CSR_Number), + Volatile => True); + pragma Assert(Value /= 0, "CSR must return a non-zero value"); + return Value; + end Get_CSR; - procedure FP_Load_NoOp (Ctx : FP_Context) is + -- Return the current hart ID from the mhartid CSR. + function Get_Hart_ID return Unsigned_64 is + Hart : Unsigned_64; begin - null; - end FP_Load_NoOp; + Asm("csrr %0, mhartid", + Outputs => Unsigned_64'Asm_Output("=r", Hart), + Volatile => True); + return Hart; + end Get_Hart_ID; + + -- Uses the stored MISA_Value to check for a specific extension. + function Has_Extension(Feature_Bit : Unsigned_64) return Boolean is + begin + return (MISA_Value and Feature_Bit) /= 0; + end Has_Extension; + + -- Constants for FP Extensions. + F_Extension_Bit : constant Unsigned_64 := 16#20#; -- F extension (bit 5) + D_Extension_Bit : constant Unsigned_64 := 16#40#; -- D extension (bit 6) + Q_Extension_Bit : constant Unsigned_64 := 16#80#; -- Q extension (bit 7, if implemented) ---------------------------------------------------------------------------- - -- Double-Precision FP Routines (using fsd/fld) + -- General-Purpose Context Switching Routines ---------------------------------------------------------------------------- - procedure Save_FP_Context_D (Ctx : in out FP_Context) is - FP_Ptr : System.Address := FP_Context'Address (Ctx); + procedure Init_GP_Context + (Ctx : out GP_Context; + Stack : System.Address; + Start_Addr : System.Address) is + Ctx_Impl : GP_Context_Type; + Current_Hart : Unsigned_64 := Get_Hart_ID; + Stack_Int : Integer := To_Integer(Stack); + Start_Int : Integer := To_Integer(Start_Addr); begin - -- Save registers f0 .. f31 using fsd (8 bytes per register) - System.Machine_Code.Asm ("fsd f0, 0(%0)", - Inputs => System.Address'Asm_Input ("r", FP_Ptr), - Volatile => True); - -- (Unroll similar calls for registers f1 .. f30) - System.Machine_Code.Asm ("fsd f31,248(%0)", - Inputs => System.Address'Asm_Input ("r", FP_Ptr), - Volatile => True); - -- Zero any remaining bytes in the FP context buffer. - for Offset in 256 .. FP_Context'Length - 1 loop - Ctx(Offset + 1) := 0; + pragma Assume(Stack /= System.Null_Address and Start_Addr /= System.Null_Address); + pragma Assert(Stack_Int mod 16 = 0, "Stack address must be 16-byte aligned"); + Ctx_Impl.SP := Unsigned_64(Stack_Int); + Ctx_Impl.SEPC := Unsigned_64(Start_Int); + Ctx_Impl.SSTATUS := Get_CSR(16#100#); -- SSTATUS CSR + Ctx_Impl.A0 := 0; + Ctx := To_Frame(Ctx_Impl); + pragma Assert(Ctx.R2 = Unsigned_32(Stack_Int and 16#FFFFFFFF#), + "Stack pointer correctly set"); + -- Optionally, update per-core local data using Arch.CPU with Current_Hart. + end Init_GP_Context; + + procedure Load_GP_Context(Ctx : GP_Context) with No_Return is + Ctx_Impl : GP_Context_Type := To_GP_Context_Type(Ctx); + begin + Asm("csrw sepc, %0; csrw sstatus, %1; mv sp, %2; sret", + Inputs => (Unsigned_64'Asm_Input("r", Ctx_Impl.SEPC), + Unsigned_64'Asm_Input("r", Ctx_Impl.SSTATUS), + Unsigned_64'Asm_Input("r", Ctx_Impl.SP)), + Clobber => "memory", + Volatile => True); + loop + null; end loop; - end Save_FP_Context_D; + end Load_GP_Context; - procedure Load_FP_Context_D (Ctx : FP_Context) is - FP_Ptr : System.Address := FP_Context'Address (Ctx); + procedure Success_Fork_Result(Ctx : in out GP_Context) is + Ctx_Impl : GP_Context_Type := To_GP_Context_Type(Ctx); begin - System.Machine_Code.Asm ("fld f0, 0(%0)", - Inputs => System.Address'Asm_Input ("r", FP_Ptr), - Volatile => True); - -- (Unroll similar calls for registers f1 .. f30) - System.Machine_Code.Asm ("fld f31,248(%0)", - Inputs => System.Address'Asm_Input ("r", FP_Ptr), - Volatile => True); - end Load_FP_Context_D; + Ctx_Impl.A0 := 0; -- Child process: fork returns 0 in x10. + Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; -- Advance SEPC to skip fork-return. + Ctx := To_Frame(Ctx_Impl); + pragma Assert(Ctx.R10 = 0, "Forked process must return zero"); + end Success_Fork_Result; + + procedure Save_Core_Context(Ctx : out Core_Context) is + Temp : Unsigned_64; + Current_Hart : Unsigned_64 := Get_Hart_ID; + begin + -- For riscv64, no extra core state is needed beyond GP registers. + Temp := 0; + Ctx := Temp; + pragma Assert(Ctx = 0, "Core context saved as zero on riscv64"); + -- Optionally, update Arch.CPU.Core_Locals(Current_Hart) if required. + end Save_Core_Context; ---------------------------------------------------------------------------- - -- Single-Precision FP Routines (using fsw/flw) + -- Floating-Point Context Routines (Dispatch via Function Pointers) ---------------------------------------------------------------------------- - procedure Save_FP_Context_F (Ctx : in out FP_Context) is - FP_Ptr : System.Address := FP_Context'Address (Ctx); + type FP_Save_Routine_Type is access procedure (Ctx : in out FP_Context); + type FP_Load_Routine_Type is access procedure (Ctx : FP_Context); + + FP_Save_Routine : FP_Save_Routine_Type; + FP_Load_Routine : FP_Load_Routine_Type; + + -- No-op routines if FP support is absent. + procedure FP_Save_NoOp(Ctx : in out FP_Context) is + begin + null; + end FP_Save_NoOp; + + procedure FP_Load_NoOp(Ctx : FP_Context) is begin - -- Save registers f0 .. f31 using fsw (4 bytes per register) - System.Machine_Code.Asm ("fsw f0, 0(%0)", - Inputs => System.Address'Asm_Input ("r", FP_Ptr), - Volatile => True); - -- (Unroll similar calls for registers f1 .. f30) - System.Machine_Code.Asm ("fsw f31,124(%0)", - Inputs => System.Address'Asm_Input ("r", FP_Ptr), - Volatile => True); - -- Zero the rest of the FP context area. + null; + end FP_Load_NoOp; + + -- Single-Precision FP routines (for F extension only; 4 bytes per register). + procedure Save_FP_Context_F(Ctx : in out FP_Context) is + FP_Ptr : System.Address := FP_Context'Address(Ctx); + begin + for Reg in 0 .. 31 loop + Asm("fsw f" & Reg'Image & ", " & (Reg * 4)'Image & "(%0)", + Inputs => System.Address'Asm_Input("r", FP_Ptr), + Volatile => True); + end loop; for Offset in 128 .. FP_Context'Length - 1 loop Ctx(Offset + 1) := 0; end loop; end Save_FP_Context_F; - procedure Load_FP_Context_F (Ctx : FP_Context) is - FP_Ptr : System.Address := FP_Context'Address (Ctx); + procedure Load_FP_Context_F(Ctx : FP_Context) is + FP_Ptr : System.Address := FP_Context'Address(Ctx); begin - System.Machine_Code.Asm ("flw f0, 0(%0)", - Inputs => System.Address'Asm_Input ("r", FP_Ptr), - Volatile => True); - -- (Unroll similar calls for registers f1 .. f30) - System.Machine_Code.Asm ("flw f31,124(%0)", - Inputs => System.Address'Asm_Input ("r", FP_Ptr), - Volatile => True); + for Reg in 0 .. 31 loop + Asm("flw f" & Reg'Image & ", " & (Reg * 4)'Image & "(%0)", + Inputs => System.Address'Asm_Input("r", FP_Ptr), + Volatile => True); + end loop; end Load_FP_Context_F; + -- Double-Precision FP routines (if D extension is available; 8 bytes per register). + procedure Save_FP_Context_D(Ctx : in out FP_Context) is + FP_Ptr : System.Address := FP_Context'Address(Ctx); + begin + for Reg in 0 .. 31 loop + Asm("fsd f" & Reg'Image & ", " & (Reg * 8)'Image & "(%0)", + Inputs => System.Address'Asm_Input("r", FP_Ptr), + Volatile => True); + end loop; + for Offset in 256 .. FP_Context'Length - 1 loop + Ctx(Offset + 1) := 0; + end loop; + end Save_FP_Context_D; + + procedure Load_FP_Context_D(Ctx : FP_Context) is + FP_Ptr : System.Address := FP_Context'Address(Ctx); + begin + for Reg in 0 .. 31 loop + Asm("fld f" & Reg'Image & ", " & (Reg * 8)'Image & "(%0)", + Inputs => System.Address'Asm_Input("r", FP_Ptr), + Volatile => True); + end loop; + end Load_FP_Context_D; + ---------------------------------------------------------------------------- - -- Setup FP Routines at Initialization + -- Setup FP Routines (Dispatch Based on Detected FP Extensions) ---------------------------------------------------------------------------- procedure Setup_FP_Routines is begin - if Has_Extension (F_Extension_Bit) then - if Has_Extension (D_Extension_Bit) then + if (MISA_Value and F_Extension_Bit) /= 0 then + if (MISA_Value and D_Extension_Bit) /= 0 then FP_Save_Routine := FP_Save_Routine_Type'(Save_FP_Context_D'Access); FP_Load_Routine := FP_Load_Routine_Type'(Load_FP_Context_D'Access); else @@ -138,111 +247,32 @@ package body Arch.Context is end Setup_FP_Routines; ---------------------------------------------------------------------------- - -- General-Purpose Context Switching Routines - ---------------------------------------------------------------------------- - type GP_Context_Type is record - SP : Unsigned_64; - SEPC : Unsigned_64; - SSTATUS : Unsigned_64; - A0 : Unsigned_64; - end record; - - function To_GP_Context_Type (Frame : GP_Context) return GP_Context_Type is - begin - return (SP => Unsigned_64 (Frame.R2), - SEPC => Get_CSR (16#141#), - SSTATUS => Get_CSR (16#100#), - A0 => Unsigned_64 (Frame.R10)); - end To_GP_Context_Type; - - function To_Frame (Ctx : GP_Context_Type) return GP_Context is - begin - return (R2 => Unsigned_32 (Ctx.SP and 16#FFFFFFFF#), - R10 => Unsigned_32 (Ctx.A0 and 16#FFFFFFFF#), - others => 0); - end To_Frame; - - procedure Init_GP_Context - (Ctx : out GP_Context; - Stack : System.Address; - Start_Addr : System.Address) - is - Ctx_Impl : GP_Context_Type; - begin - pragma Assume (Stack /= System.Null_Address and Start_Addr /= System.Null_Address); - Ctx_Impl.SP := Unsigned_64 (To_Integer (Stack)); - Ctx_Impl.SEPC := Unsigned_64 (To_Integer (Start_Addr)); - Ctx_Impl.SSTATUS := Get_CSR (16#100#); - Ctx_Impl.A0 := 0; - Ctx := To_Frame (Ctx_Impl); - pragma Assert (Ctx.R2 = Unsigned_32 (To_Integer (Stack) and 16#FFFFFFFF#), - "Stack pointer correctly set"); - end Init_GP_Context; - - procedure Load_GP_Context (Ctx : GP_Context) with No_Return is - Ctx_Impl : GP_Context_Type := To_GP_Context_Type (Ctx); - begin - System.Machine_Code.Asm ( - "csrw sepc, %0; csrw sstatus, %1; mv sp, %2; sret", - Inputs => (Unsigned_64'Asm_Input ("r", Ctx_Impl.SEPC), - Unsigned_64'Asm_Input ("r", Ctx_Impl.SSTATUS), - Unsigned_64'Asm_Input ("r", Ctx_Impl.SP)), - Clobber => "memory", - Volatile => True); - loop - null; - end loop; - end Load_GP_Context; - - procedure Success_Fork_Result (Ctx : in out GP_Context) is - Ctx_Impl : GP_Context_Type := To_GP_Context_Type (Ctx); - begin - Ctx_Impl.A0 := 0; - Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; - Ctx := To_Frame (Ctx_Impl); - pragma Assert (Ctx.R10 = 0, "Return value must be zero for forked process"); - end Success_Fork_Result; - - ---------------------------------------------------------------------------- - -- Floating-Point Context Routines (Dispatch via function pointers) + -- Public Floating-Point Context Routines ---------------------------------------------------------------------------- - procedure Init_FP_Context (Ctx : out FP_Context) is + procedure Init_FP_Context(Ctx : out FP_Context) is begin - -- Always start with a zeroed FP context. Ctx := (others => 0); - pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, "FP context zeroed"); - -- Set up the FP routine pointers once. + pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, + "FP context must be zeroed at init"); Setup_FP_Routines; - -- Save the current FP context using the chosen routine. - FP_Save_Routine.all (Ctx); + FP_Save_Routine.all(Ctx); end Init_FP_Context; - procedure Save_FP_Context (Ctx : in out FP_Context) is + procedure Save_FP_Context(Ctx : in out FP_Context) is begin - FP_Save_Routine.all (Ctx); + FP_Save_Routine.all(Ctx); end Save_FP_Context; - procedure Load_FP_Context (Ctx : FP_Context) is + procedure Load_FP_Context(Ctx : FP_Context) is begin - FP_Load_Routine.all (Ctx); + FP_Load_Routine.all(Ctx); end Load_FP_Context; - procedure Destroy_FP_Context (Ctx : in out FP_Context) is + procedure Destroy_FP_Context(Ctx : in out FP_Context) is begin Ctx := (others => 0); - pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, "FP context destroyed"); + pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, + "FP context successfully destroyed"); end Destroy_FP_Context; - ---------------------------------------------------------------------------- - -- Core Context Routine - ---------------------------------------------------------------------------- - procedure Save_Core_Context (Ctx : out Core_Context) is - Temp : Unsigned_64; - begin - -- For riscv64, no extra core state needs saving. - Temp := 0; - Ctx := Temp; - pragma Assert (Ctx = 0, "Core context saved as zero on riscv64"); - end Save_Core_Context; - end Arch.Context; From 72523762f1b3e6b9cde9e39e8143755d7eecac0b Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:18:50 -0500 Subject: [PATCH 63/99] more optmizations and improvements for encapsulation and improved testing. --- source/arch/riscv64-limine/arch-context.adb | 175 +++++++++----------- 1 file changed, 77 insertions(+), 98 deletions(-) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index 801f6e5..bf978bf 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -26,14 +26,11 @@ package body Arch.Context is pragma Warnings (Off, "SPARK_Mode is enabled"); ---------------------------------------------------------------------------- - -- Package-Level Constant for misa + -- Package Specific Type Declarations ---------------------------------------------------------------------------- - -- Read misa once at elaboration time. Since misa is immutable during runtime, - -- this value is safe to reuse for all extension checks. - MISA_Value : constant Unsigned_64 := Get_CSR(16#301#); ---------------------------------------------------------------------------- - -- Internal General-Purpose Context Record (64-bit) + -- Internal Type Declaration ---------------------------------------------------------------------------- type GP_Context_Type is record SP : Unsigned_64; @@ -43,21 +40,23 @@ package body Arch.Context is end record; ---------------------------------------------------------------------------- - -- Conversion Functions - -- (Converts between our 64-bit internal context and the external GP_Context, - -- defined in Arch.Interrupts as a 32-bit record.) + -- Package-Level Constant: Cached misa Value + ---------------------------------------------------------------------------- + MISA_Value : constant Unsigned_64 := Get_CSR(16#301#); + + ---------------------------------------------------------------------------- + -- FP Extension Constants + ---------------------------------------------------------------------------- + F_Extension_Bit : constant Unsigned_64 := 16#20#; -- F extension (bit 5) + D_Extension_Bit : constant Unsigned_64 := 16#40#; -- D extension (bit 6) + Q_Extension_Bit : constant Unsigned_64 := 16#80#; -- Q extension (bit 7), if implemented + + ---------------------------------------------------------------------------- + -- Public - Routines as declared in arch-context.ads ---------------------------------------------------------------------------- - function To_GP_Context_Type(Frame : GP_Context) return GP_Context_Type is - begin - return ( - SP => Unsigned_64(Frame.R2), -- x2: Stack Pointer - SEPC => Get_CSR(16#141#), -- SEPC CSR (0x141) - SSTATUS => Get_CSR(16#100#), -- SSTATUS CSR (0x100) - A0 => Unsigned_64(Frame.R10) -- x10: Return value (e.g., fork) - ); - end To_GP_Context_Type; function To_Frame(Ctx : GP_Context_Type) return GP_Context is + pragma Inline; begin return ( R2 => Unsigned_32(Ctx.SP and 16#FFFFFFFF#), @@ -66,63 +65,36 @@ package body Arch.Context is ); end To_Frame; - ---------------------------------------------------------------------------- - -- CSR Access and Extension Detection - ---------------------------------------------------------------------------- - function Get_CSR(CSR_Number : Unsigned_64) return Unsigned_64 is - Value : Unsigned_64; - begin - Asm("csrr %0, %1", - Outputs => Unsigned_64'Asm_Output("=r", Value), - Inputs => Unsigned_64'Asm_Input("i", CSR_Number), - Volatile => True); - pragma Assert(Value /= 0, "CSR must return a non-zero value"); - return Value; - end Get_CSR; - - -- Return the current hart ID from the mhartid CSR. - function Get_Hart_ID return Unsigned_64 is - Hart : Unsigned_64; - begin - Asm("csrr %0, mhartid", - Outputs => Unsigned_64'Asm_Output("=r", Hart), - Volatile => True); - return Hart; - end Get_Hart_ID; - - -- Uses the stored MISA_Value to check for a specific extension. - function Has_Extension(Feature_Bit : Unsigned_64) return Boolean is + function To_GP_Context_Type(Frame : GP_Context) return GP_Context_Type is + pragma Inline; begin - return (MISA_Value and Feature_Bit) /= 0; - end Has_Extension; - - -- Constants for FP Extensions. - F_Extension_Bit : constant Unsigned_64 := 16#20#; -- F extension (bit 5) - D_Extension_Bit : constant Unsigned_64 := 16#40#; -- D extension (bit 6) - Q_Extension_Bit : constant Unsigned_64 := 16#80#; -- Q extension (bit 7, if implemented) + return ( + SP => Unsigned_64(Frame.R2), + SEPC => Get_CSR(16#141#), + SSTATUS => Get_CSR(16#100#), + A0 => Unsigned_64(Frame.R10) + ); + end To_GP_Context_Type; - ---------------------------------------------------------------------------- - -- General-Purpose Context Switching Routines - ---------------------------------------------------------------------------- procedure Init_GP_Context (Ctx : out GP_Context; Stack : System.Address; Start_Addr : System.Address) is - Ctx_Impl : GP_Context_Type; - Current_Hart : Unsigned_64 := Get_Hart_ID; - Stack_Int : Integer := To_Integer(Stack); - Start_Int : Integer := To_Integer(Start_Addr); + Ctx_Impl : GP_Context_Type; + Current_Hart: Unsigned_64 := Get_Hart_ID; + Stack_Int : Integer := To_Integer(Stack); + Start_Int : Integer := To_Integer(Start_Addr); begin pragma Assume(Stack /= System.Null_Address and Start_Addr /= System.Null_Address); pragma Assert(Stack_Int mod 16 = 0, "Stack address must be 16-byte aligned"); Ctx_Impl.SP := Unsigned_64(Stack_Int); Ctx_Impl.SEPC := Unsigned_64(Start_Int); - Ctx_Impl.SSTATUS := Get_CSR(16#100#); -- SSTATUS CSR + Ctx_Impl.SSTATUS := Get_CSR(16#100#); Ctx_Impl.A0 := 0; Ctx := To_Frame(Ctx_Impl); pragma Assert(Ctx.R2 = Unsigned_32(Stack_Int and 16#FFFFFFFF#), "Stack pointer correctly set"); - -- Optionally, update per-core local data using Arch.CPU with Current_Hart. + -- Optionally: update per-core local data via Arch.CPU using Current_Hart. end Init_GP_Context; procedure Load_GP_Context(Ctx : GP_Context) with No_Return is @@ -142,25 +114,55 @@ package body Arch.Context is procedure Success_Fork_Result(Ctx : in out GP_Context) is Ctx_Impl : GP_Context_Type := To_GP_Context_Type(Ctx); begin - Ctx_Impl.A0 := 0; -- Child process: fork returns 0 in x10. - Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; -- Advance SEPC to skip fork-return. + Ctx_Impl.A0 := 0; + Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; Ctx := To_Frame(Ctx_Impl); pragma Assert(Ctx.R10 = 0, "Forked process must return zero"); end Success_Fork_Result; procedure Save_Core_Context(Ctx : out Core_Context) is - Temp : Unsigned_64; + Temp : Unsigned_64; Current_Hart : Unsigned_64 := Get_Hart_ID; begin - -- For riscv64, no extra core state is needed beyond GP registers. Temp := 0; Ctx := Temp; pragma Assert(Ctx = 0, "Core context saved as zero on riscv64"); - -- Optionally, update Arch.CPU.Core_Locals(Current_Hart) if required. + -- Optionally: update Arch.CPU.Core_Locals(Current_Hart) if additional CPU bookkeeping is required. end Save_Core_Context; + procedure Init_FP_Context(Ctx : out FP_Context) is + begin + Ctx := (others => 0); + pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, + "FP context must be zeroed at init"); + Setup_FP_Routines; + FP_Save_Routine.all(Ctx); + end Init_FP_Context; + + procedure Save_FP_Context(Ctx : in out FP_Context) is + begin + FP_Save_Routine.all(Ctx); + end Save_FP_Context; + + procedure Load_FP_Context(Ctx : FP_Context) is + begin + FP_Load_Routine.all(Ctx); + end Load_FP_Context; + + procedure Destroy_FP_Context(Ctx : in out FP_Context) is + begin + Ctx := (others => 0); + pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, + "FP context successfully destroyed"); + end Destroy_FP_Context; + + ---------------------------------------------------------------------------- + -- End Public Section + ---------------------------------------------------------------------------- + +private ---------------------------------------------------------------------------- - -- Floating-Point Context Routines (Dispatch via Function Pointers) + -- FP Context Dispatch: Types and Variables ---------------------------------------------------------------------------- type FP_Save_Routine_Type is access procedure (Ctx : in out FP_Context); type FP_Load_Routine_Type is access procedure (Ctx : FP_Context); @@ -168,7 +170,9 @@ package body Arch.Context is FP_Save_Routine : FP_Save_Routine_Type; FP_Load_Routine : FP_Load_Routine_Type; - -- No-op routines if FP support is absent. + ---------------------------------------------------------------------------- + -- No-Op FP Routines (when no FP support) + ---------------------------------------------------------------------------- procedure FP_Save_NoOp(Ctx : in out FP_Context) is begin null; @@ -179,7 +183,9 @@ package body Arch.Context is null; end FP_Load_NoOp; - -- Single-Precision FP routines (for F extension only; 4 bytes per register). + ---------------------------------------------------------------------------- + -- Single-Precision FP Routines (F Extension only; 4 bytes per register) + ---------------------------------------------------------------------------- procedure Save_FP_Context_F(Ctx : in out FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin @@ -203,7 +209,9 @@ package body Arch.Context is end loop; end Load_FP_Context_F; - -- Double-Precision FP routines (if D extension is available; 8 bytes per register). + ---------------------------------------------------------------------------- + -- Double-Precision FP Routines (D Extension; 8 bytes per register) + ---------------------------------------------------------------------------- procedure Save_FP_Context_D(Ctx : in out FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin @@ -228,7 +236,7 @@ package body Arch.Context is end Load_FP_Context_D; ---------------------------------------------------------------------------- - -- Setup FP Routines (Dispatch Based on Detected FP Extensions) + -- Setup FP Routines (Dispatch Based on Cached MISA Value) ---------------------------------------------------------------------------- procedure Setup_FP_Routines is begin @@ -246,33 +254,4 @@ package body Arch.Context is end if; end Setup_FP_Routines; - ---------------------------------------------------------------------------- - -- Public Floating-Point Context Routines - ---------------------------------------------------------------------------- - procedure Init_FP_Context(Ctx : out FP_Context) is - begin - Ctx := (others => 0); - pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, - "FP context must be zeroed at init"); - Setup_FP_Routines; - FP_Save_Routine.all(Ctx); - end Init_FP_Context; - - procedure Save_FP_Context(Ctx : in out FP_Context) is - begin - FP_Save_Routine.all(Ctx); - end Save_FP_Context; - - procedure Load_FP_Context(Ctx : FP_Context) is - begin - FP_Load_Routine.all(Ctx); - end Load_FP_Context; - - procedure Destroy_FP_Context(Ctx : in out FP_Context) is - begin - Ctx := (others => 0); - pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, - "FP context successfully destroyed"); - end Destroy_FP_Context; - end Arch.Context; From 7196a9e677da59e319d9f9ad81b06435eafe28e4 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:26:47 -0500 Subject: [PATCH 64/99] Organized code better. --- source/arch/riscv64-limine/arch-context.adb | 55 +++++++++++---------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index bf978bf..08eb2f7 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -40,7 +40,7 @@ package body Arch.Context is end record; ---------------------------------------------------------------------------- - -- Package-Level Constant: Cached misa Value + -- Package-Level Constant - Cached misa Value ---------------------------------------------------------------------------- MISA_Value : constant Unsigned_64 := Get_CSR(16#301#); @@ -49,33 +49,11 @@ package body Arch.Context is ---------------------------------------------------------------------------- F_Extension_Bit : constant Unsigned_64 := 16#20#; -- F extension (bit 5) D_Extension_Bit : constant Unsigned_64 := 16#40#; -- D extension (bit 6) - Q_Extension_Bit : constant Unsigned_64 := 16#80#; -- Q extension (bit 7), if implemented + Q_Extension_Bit : constant Unsigned_64 := 16#80#; -- Q extension (bit 7), for potential future use ---------------------------------------------------------------------------- - -- Public - Routines as declared in arch-context.ads + -- Start Package Specification Section ---------------------------------------------------------------------------- - - function To_Frame(Ctx : GP_Context_Type) return GP_Context is - pragma Inline; - begin - return ( - R2 => Unsigned_32(Ctx.SP and 16#FFFFFFFF#), - R10 => Unsigned_32(Ctx.A0 and 16#FFFFFFFF#), - others => 0 - ); - end To_Frame; - - function To_GP_Context_Type(Frame : GP_Context) return GP_Context_Type is - pragma Inline; - begin - return ( - SP => Unsigned_64(Frame.R2), - SEPC => Get_CSR(16#141#), - SSTATUS => Get_CSR(16#100#), - A0 => Unsigned_64(Frame.R10) - ); - end To_GP_Context_Type; - procedure Init_GP_Context (Ctx : out GP_Context; Stack : System.Address; @@ -157,10 +135,33 @@ package body Arch.Context is end Destroy_FP_Context; ---------------------------------------------------------------------------- - -- End Public Section + -- End Package Specification Section ---------------------------------------------------------------------------- -private + ---------------------------------------------------------------------------- + -- Helper Functions Section + ---------------------------------------------------------------------------- + function To_Frame(Ctx : GP_Context_Type) return GP_Context is + pragma Inline; + begin + return ( + R2 => Unsigned_32(Ctx.SP and 16#FFFFFFFF#), + R10 => Unsigned_32(Ctx.A0 and 16#FFFFFFFF#), + others => 0 + ); + end To_Frame; + + function To_GP_Context_Type(Frame : GP_Context) return GP_Context_Type is + pragma Inline; + begin + return ( + SP => Unsigned_64(Frame.R2), + SEPC => Get_CSR(16#141#), + SSTATUS => Get_CSR(16#100#), + A0 => Unsigned_64(Frame.R10) + ); + end To_GP_Context_Type; + ---------------------------------------------------------------------------- -- FP Context Dispatch: Types and Variables ---------------------------------------------------------------------------- From 96b5d886cc5427f37f80204c04c91c3760be781b Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:28:08 -0500 Subject: [PATCH 65/99] Modified comment headers to be clearer. --- source/arch/riscv64-limine/arch-context.adb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index 08eb2f7..90397d0 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -139,7 +139,7 @@ package body Arch.Context is ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- - -- Helper Functions Section + -- Start Helper Functions Section ---------------------------------------------------------------------------- function To_Frame(Ctx : GP_Context_Type) return GP_Context is pragma Inline; @@ -255,4 +255,8 @@ package body Arch.Context is end if; end Setup_FP_Routines; + ---------------------------------------------------------------------------- + -- End Helper Functions Section + ---------------------------------------------------------------------------- + end Arch.Context; From 9b5e90e6011b75587517dd880c4985c53c3b63a3 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:29:21 -0500 Subject: [PATCH 66/99] Added more comments. --- source/arch/riscv64-limine/arch-context.adb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index 90397d0..18a892b 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -141,6 +141,10 @@ package body Arch.Context is ---------------------------------------------------------------------------- -- Start Helper Functions Section ---------------------------------------------------------------------------- + + ---------------------------------------------------------------------------- + -- To_Frame and To_GP_Context_Type: Conversion Functions + ---------------------------------------------------------------------------- function To_Frame(Ctx : GP_Context_Type) return GP_Context is pragma Inline; begin From 4d3c7d53b5e03a016c0a4904239212ab46732d5a Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 14:31:49 -0500 Subject: [PATCH 67/99] made sure each prodcure has a header comment. Updated Save_Core_Context to support multi-core riscv64 processors. --- source/arch/riscv64-limine/arch-context.adb | 142 ++++++++++---------- 1 file changed, 72 insertions(+), 70 deletions(-) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index 18a892b..e984d90 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -16,6 +16,8 @@ -- along with this program. If not, see . ------------------------------------------------------------------ pragma SPARK_Mode (On); +pragma Warnings (Off, "SPARK_Mode is enabled"); + with System; use System; with Interfaces; use Interfaces; with System.Machine_Code; @@ -23,15 +25,9 @@ with Arch.CPU; use Arch.CPU; with Arch.Interrupts; use Arch.Interrupts; package body Arch.Context is - pragma Warnings (Off, "SPARK_Mode is enabled"); - - ---------------------------------------------------------------------------- - -- Package Specific Type Declarations - ---------------------------------------------------------------------------- - ---------------------------------------------------------------------------- - -- Internal Type Declaration - ---------------------------------------------------------------------------- + --Package Variables, Constants, and Types + ------------------------------------------ type GP_Context_Type is record SP : Unsigned_64; SEPC : Unsigned_64; @@ -39,75 +35,85 @@ package body Arch.Context is A0 : Unsigned_64; end record; - ---------------------------------------------------------------------------- - -- Package-Level Constant - Cached misa Value - ---------------------------------------------------------------------------- MISA_Value : constant Unsigned_64 := Get_CSR(16#301#); - ---------------------------------------------------------------------------- - -- FP Extension Constants - ---------------------------------------------------------------------------- F_Extension_Bit : constant Unsigned_64 := 16#20#; -- F extension (bit 5) D_Extension_Bit : constant Unsigned_64 := 16#40#; -- D extension (bit 6) - Q_Extension_Bit : constant Unsigned_64 := 16#80#; -- Q extension (bit 7), for potential future use + Q_Extension_Bit : constant Unsigned_64 := 16#80#; -- Q extension (bit 7, if implemented) + + type FP_Save_Routine_Type is access procedure (Ctx : in out FP_Context); + type FP_Load_Routine_Type is access procedure (Ctx : FP_Context); - ---------------------------------------------------------------------------- - -- Start Package Specification Section - ---------------------------------------------------------------------------- + FP_Save_Routine : FP_Save_Routine_Type; + FP_Load_Routine : FP_Load_Routine_Type; + + -- Public Sectiom + ------------------------------------------ + + -- Initialize the general-purpose context procedure Init_GP_Context (Ctx : out GP_Context; Stack : System.Address; Start_Addr : System.Address) is - Ctx_Impl : GP_Context_Type; - Current_Hart: Unsigned_64 := Get_Hart_ID; - Stack_Int : Integer := To_Integer(Stack); - Start_Int : Integer := To_Integer(Start_Addr); + Ctx_Impl : GP_Context_Type; + Current_Hart : Unsigned_64 := Get_Hart_ID; + Stack_Int : Integer := To_Integer(Stack); + Start_Int : Integer := To_Integer(Start_Addr); begin pragma Assume(Stack /= System.Null_Address and Start_Addr /= System.Null_Address); pragma Assert(Stack_Int mod 16 = 0, "Stack address must be 16-byte aligned"); + pragma Assert(Start_Int /= 0, "Start address must be nonzero"); Ctx_Impl.SP := Unsigned_64(Stack_Int); Ctx_Impl.SEPC := Unsigned_64(Start_Int); Ctx_Impl.SSTATUS := Get_CSR(16#100#); Ctx_Impl.A0 := 0; Ctx := To_Frame(Ctx_Impl); - pragma Assert(Ctx.R2 = Unsigned_32(Stack_Int and 16#FFFFFFFF#), - "Stack pointer correctly set"); - -- Optionally: update per-core local data via Arch.CPU using Current_Hart. + pragma Assert(Ctx.R2 = Unsigned_32(Stack_Int and 16#FFFFFFFF#), "Stack pointer correctly set"); + pragma Assert(Ctx.R10 = 0, "Initial fork return value must be zero"); end Init_GP_Context; + -- Load the general-purpose context procedure Load_GP_Context(Ctx : GP_Context) with No_Return is Ctx_Impl : GP_Context_Type := To_GP_Context_Type(Ctx); begin + pragma Assert(Ctx_Impl.SP /= 0, "SP must not be zero"); + pragma Assert(Ctx_Impl.SEPC /= 0, "SEPC must not be zero"); + pragma Assert(Ctx_Impl.SSTATUS /= 0, "SSTATUS must not be zero"); Asm("csrw sepc, %0; csrw sstatus, %1; mv sp, %2; sret", Inputs => (Unsigned_64'Asm_Input("r", Ctx_Impl.SEPC), Unsigned_64'Asm_Input("r", Ctx_Impl.SSTATUS), Unsigned_64'Asm_Input("r", Ctx_Impl.SP)), Clobber => "memory", Volatile => True); - loop - null; - end loop; + loop null; end loop; end Load_GP_Context; + -- Show that the forked process has returned successfully procedure Success_Fork_Result(Ctx : in out GP_Context) is Ctx_Impl : GP_Context_Type := To_GP_Context_Type(Ctx); + Old_SEPC : Unsigned_64 := Ctx_Impl.SEPC; begin Ctx_Impl.A0 := 0; - Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; + Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; -- Advance by 4 bytes (size of one instruction) Ctx := To_Frame(Ctx_Impl); pragma Assert(Ctx.R10 = 0, "Forked process must return zero"); + pragma Assert(Ctx_Impl.SEPC > Old_SEPC, "SEPC should have advanced"); end Success_Fork_Result; + -- Save the Core Context procedure Save_Core_Context(Ctx : out Core_Context) is - Temp : Unsigned_64; - Current_Hart : Unsigned_64 := Get_Hart_ID; + Current_Hart : constant Unsigned_64 := Get_Hart_ID; + -- Map the current hart ID (assumed to start at 0) to a 1-based index in Core_Locals. + Core_Index : constant Positive := Positive(Integer(Current_Hart) + 1); begin - Temp := 0; - Ctx := Temp; - pragma Assert(Ctx = 0, "Core context saved as zero on riscv64"); - -- Optionally: update Arch.CPU.Core_Locals(Current_Hart) if additional CPU bookkeeping is required. + pragma Assert(Core_Index <= Core_Count, "Core index out of bounds"); + -- Save the entire per-core state (User_Stack, Kernel_Stack, Hart_ID, etc.) from Core_Locals. + Ctx := Core_Locals(Core_Index); + pragma Assert(Ctx.Hart_ID = Current_Hart, "Saved core context must have the current hart ID"); + pragma Assert(Ctx.Number = Core_Index, "Saved core context must have the correct core number"); end Save_Core_Context; + -- Initialize the floating-point context procedure Init_FP_Context(Ctx : out FP_Context) is begin Ctx := (others => 0); @@ -115,39 +121,41 @@ package body Arch.Context is "FP context must be zeroed at init"); Setup_FP_Routines; FP_Save_Routine.all(Ctx); + pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, "FP context should remain zero after Init_FP_Context"); end Init_FP_Context; + -- Save the floating-point context procedure Save_FP_Context(Ctx : in out FP_Context) is begin FP_Save_Routine.all(Ctx); end Save_FP_Context; + -- Load the floating-point context procedure Load_FP_Context(Ctx : FP_Context) is begin FP_Load_Routine.all(Ctx); end Load_FP_Context; + -- Destroy the floating-point context procedure Destroy_FP_Context(Ctx : in out FP_Context) is begin Ctx := (others => 0); - pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, - "FP context successfully destroyed"); + pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, "FP context successfully destroyed"); end Destroy_FP_Context; - ---------------------------------------------------------------------------- - -- End Package Specification Section - ---------------------------------------------------------------------------- + ------------------------------------------ + -- End Public Section - ---------------------------------------------------------------------------- - -- Start Helper Functions Section - ---------------------------------------------------------------------------- + -- Internal Section + ------------------------------------------ - ---------------------------------------------------------------------------- - -- To_Frame and To_GP_Context_Type: Conversion Functions - ---------------------------------------------------------------------------- + -- Convert a GP_Context_Type record to a GP_Context record function To_Frame(Ctx : GP_Context_Type) return GP_Context is pragma Inline; begin + -- Ensure that only lower 32 bits of SP and A0 are used. + pragma Assert(Ctx.SP <= 16#FFFFFFFF#, "Internal SP exceeds 32 bits"); + pragma Assert(Ctx.A0 <= 16#FFFFFFFF#, "Internal A0 exceeds 32 bits"); return ( R2 => Unsigned_32(Ctx.SP and 16#FFFFFFFF#), R10 => Unsigned_32(Ctx.A0 and 16#FFFFFFFF#), @@ -155,9 +163,12 @@ package body Arch.Context is ); end To_Frame; + -- Convert a GP_Context record to a GP_Context_Type record function To_GP_Context_Type(Frame : GP_Context) return GP_Context_Type is pragma Inline; begin + pragma Assert(Frame.R2 <= 16#FFFFFFFF#, "Frame.R2 invalid"); + pragma Assert(Frame.R10 <= 16#FFFFFFFF#, "Frame.R10 invalid"); return ( SP => Unsigned_64(Frame.R2), SEPC => Get_CSR(16#141#), @@ -166,34 +177,23 @@ package body Arch.Context is ); end To_GP_Context_Type; - ---------------------------------------------------------------------------- - -- FP Context Dispatch: Types and Variables - ---------------------------------------------------------------------------- - type FP_Save_Routine_Type is access procedure (Ctx : in out FP_Context); - type FP_Load_Routine_Type is access procedure (Ctx : FP_Context); - - FP_Save_Routine : FP_Save_Routine_Type; - FP_Load_Routine : FP_Load_Routine_Type; - - ---------------------------------------------------------------------------- - -- No-Op FP Routines (when no FP support) - ---------------------------------------------------------------------------- + -- No-op save and load routines for when the F, D, and Q extensions are not present procedure FP_Save_NoOp(Ctx : in out FP_Context) is begin null; end FP_Save_NoOp; + -- No-op save and load routines for when the F, D, and Q extensions are not present procedure FP_Load_NoOp(Ctx : FP_Context) is begin null; end FP_Load_NoOp; - ---------------------------------------------------------------------------- - -- Single-Precision FP Routines (F Extension only; 4 bytes per register) - ---------------------------------------------------------------------------- + -- Save the single-precision floating-point registers of the context procedure Save_FP_Context_F(Ctx : in out FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin + pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop Asm("fsw f" & Reg'Image & ", " & (Reg * 4)'Image & "(%0)", Inputs => System.Address'Asm_Input("r", FP_Ptr), @@ -204,9 +204,11 @@ package body Arch.Context is end loop; end Save_FP_Context_F; + -- Load the single-precision floating-point registers to the context procedure Load_FP_Context_F(Ctx : FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin + pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop Asm("flw f" & Reg'Image & ", " & (Reg * 4)'Image & "(%0)", Inputs => System.Address'Asm_Input("r", FP_Ptr), @@ -214,12 +216,11 @@ package body Arch.Context is end loop; end Load_FP_Context_F; - ---------------------------------------------------------------------------- - -- Double-Precision FP Routines (D Extension; 8 bytes per register) - ---------------------------------------------------------------------------- + -- Save the double-precision floating-point registers of the context procedure Save_FP_Context_D(Ctx : in out FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin + pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop Asm("fsd f" & Reg'Image & ", " & (Reg * 8)'Image & "(%0)", Inputs => System.Address'Asm_Input("r", FP_Ptr), @@ -230,9 +231,11 @@ package body Arch.Context is end loop; end Save_FP_Context_D; + -- Load the double-precision floating-point registers to the context procedure Load_FP_Context_D(Ctx : FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin + pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop Asm("fld f" & Reg'Image & ", " & (Reg * 8)'Image & "(%0)", Inputs => System.Address'Asm_Input("r", FP_Ptr), @@ -240,9 +243,7 @@ package body Arch.Context is end loop; end Load_FP_Context_D; - ---------------------------------------------------------------------------- - -- Setup FP Routines (Dispatch Based on Cached MISA Value) - ---------------------------------------------------------------------------- + -- Set the FP save and load routines based on the MISA register procedure Setup_FP_Routines is begin if (MISA_Value and F_Extension_Bit) /= 0 then @@ -257,10 +258,11 @@ package body Arch.Context is FP_Save_Routine := FP_Save_Routine_Type'(FP_Save_NoOp'Access); FP_Load_Routine := FP_Load_Routine_Type'(FP_Load_NoOp'Access); end if; + pragma Assert(FP_Save_Routine /= null and FP_Load_Routine /= null, + "FP dispatch routines must be set"); end Setup_FP_Routines; - ---------------------------------------------------------------------------- - -- End Helper Functions Section - ---------------------------------------------------------------------------- + ------------------------------------------ + -- End Internal Section end Arch.Context; From 1e91d35913bf7ad8ac2ccc5055cc190a8e1f8c5e Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 15:27:20 -0500 Subject: [PATCH 68/99] adding and correcting AUnit tests. --- source/arch/riscv64-limine/arch-context.adb | 51 ++++++++++++++++-- source/tests/riscv64/GP_Context_Tests.adb | 58 +++++++++++++++++++++ 2 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 source/tests/riscv64/GP_Context_Tests.adb diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index e984d90..bab5423 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -26,7 +26,7 @@ with Arch.Interrupts; use Arch.Interrupts; package body Arch.Context is - --Package Variables, Constants, and Types + --Start Package Body Specific Variables, Constants, and Types ------------------------------------------ type GP_Context_Type is record SP : Unsigned_64; @@ -47,7 +47,13 @@ package body Arch.Context is FP_Save_Routine : FP_Save_Routine_Type; FP_Load_Routine : FP_Load_Routine_Type; - -- Public Sectiom + ------------------------------------------ + --End Package Body Specific Variables, Constants, and Types + + -- Start Public Sectiom + ------------------------------------------ + + -- Start General-Purpose Section ------------------------------------------ -- Initialize the general-purpose context @@ -88,6 +94,12 @@ package body Arch.Context is loop null; end loop; end Load_GP_Context; + ------------------------------------------ + -- End General-Purpose Section + + -- Start Core and Fork Section + ------------------------------------------ + -- Show that the forked process has returned successfully procedure Success_Fork_Result(Ctx : in out GP_Context) is Ctx_Impl : GP_Context_Type := To_GP_Context_Type(Ctx); @@ -113,6 +125,12 @@ package body Arch.Context is pragma Assert(Ctx.Number = Core_Index, "Saved core context must have the correct core number"); end Save_Core_Context; + ------------------------------------------ + -- End Core and Fork Section + + -- Start Floating-Point Section + ------------------------------------------ + -- Initialize the floating-point context procedure Init_FP_Context(Ctx : out FP_Context) is begin @@ -143,12 +161,18 @@ package body Arch.Context is pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, "FP context successfully destroyed"); end Destroy_FP_Context; + ------------------------------------------ + -- End Floating-Point Section + ------------------------------------------ -- End Public Section - -- Internal Section + -- Start Internal Section ------------------------------------------ + -- Start Conversion Section + ------------------------------------------ + -- Convert a GP_Context_Type record to a GP_Context record function To_Frame(Ctx : GP_Context_Type) return GP_Context is pragma Inline; @@ -177,6 +201,15 @@ package body Arch.Context is ); end To_GP_Context_Type; + ------------------------------------------ + -- End Conversion Section + + -- Start Floating-Point Section + ------------------------------------------ + + -- No-op FP Section + ------------------------------------------ + -- No-op save and load routines for when the F, D, and Q extensions are not present procedure FP_Save_NoOp(Ctx : in out FP_Context) is begin @@ -189,6 +222,9 @@ package body Arch.Context is null; end FP_Load_NoOp; + -- Single Precision FP Section + ------------------------------------------ + -- Save the single-precision floating-point registers of the context procedure Save_FP_Context_F(Ctx : in out FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); @@ -216,6 +252,9 @@ package body Arch.Context is end loop; end Load_FP_Context_F; + -- Double Precision FP Section + ------------------------------------------ + -- Save the double-precision floating-point registers of the context procedure Save_FP_Context_D(Ctx : in out FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); @@ -243,6 +282,9 @@ package body Arch.Context is end loop; end Load_FP_Context_D; + -- FP Routine Selection Section + ------------------------------------------ + -- Set the FP save and load routines based on the MISA register procedure Setup_FP_Routines is begin @@ -262,6 +304,9 @@ package body Arch.Context is "FP dispatch routines must be set"); end Setup_FP_Routines; + ------------------------------------------ + -- End Floating-Point Section + ------------------------------------------ -- End Internal Section diff --git a/source/tests/riscv64/GP_Context_Tests.adb b/source/tests/riscv64/GP_Context_Tests.adb new file mode 100644 index 0000000..69ce8b3 --- /dev/null +++ b/source/tests/riscv64/GP_Context_Tests.adb @@ -0,0 +1,58 @@ +with AUnit.Framework; +with Arch.Context; +with Arch.Interrupts; use Arch.Interrupts; +with Interfaces; use Interfaces; + +procedure GP_Context_Tests is + + package Test is new AUnit.Framework.Test_Case ("GP_Context_Tests"); + + -- A constant dummy Frame with known values for testing. + Dummy_Frame : constant Frame := + (R0 => 0, + R1 => 1, + R2 => 16#1000#, -- Stack pointer value for testing. + R3 => 3, + R4 => 4, + R5 => 5, + R6 => 6, + R7 => 7, + R8 => 8, + R9 => 9, + R10 => 10, -- Return register value. + R11 => 11, + R12 => 12, + R13 => 13, + R14 => 14, + R15 => 15); + +begin + Test ("To_GP_Context_Type") is + declare + Internal : Arch.Context.GP_Context_Type := + Arch.Context.To_GP_Context_Type (Dummy_Frame); + begin + Test.Check_Equal (16#1000#, Internal.SP, "SP from Frame.R2 should be 0x1000"); + Test.Check_Equal (10, Internal.A0, "A0 from Frame.R10 should be 10"); + -- SEPC and SSTATUS are read from hardware; we check that they are nonzero. + Test.Check_True (Internal.SEPC /= 0, "SEPC must be nonzero"); + Test.Check_True (Internal.SSTATUS /= 0, "SSTATUS must be nonzero"); + end; + + Test ("To_Frame") is + declare + Internal : Arch.Context.GP_Context_Type := + (SP => 16#12345678#, + SEPC => 16#DEADBEEF#, + SSTATUS => 16#CAFEBABE#, + A0 => 16#ABCDEF00#); + External : Frame := Arch.Context.To_Frame (Internal); + begin + Test.Check_Equal (16#12345678#, External.R2, "R2 must be lower 32 bits of SP"); + Test.Check_Equal (16#ABCDEF00#, External.R10, "R10 must be lower 32 bits of A0"); + Test.Check_Equal (0, External.R0, "R0 should be zero"); + Test.Check_Equal (0, External.R15, "R15 should be zero"); + end; + + Test.Run; +end GP_Context_Tests; From b130551d05be1e188732027c629a0a96792c29a5 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:10:59 -0500 Subject: [PATCH 69/99] added new test cases and updated the test suite and harness to support these new test cases. --- source/tests/riscv64/CSR_Extension_Tests.adb | 42 +++++++++ source/tests/riscv64/Context_Test_Suite.adb | 21 +++++ ..._test_suite.ads => Context_Test_Suite.ads} | 4 +- source/tests/riscv64/Core_Context_Tests.adb | 35 ++++++++ source/tests/riscv64/FP_Context_Tests.adb | 54 ++++++++++++ source/tests/riscv64/GP_Context_Tests.adb | 86 ++++++++++++------- .../riscv64/Success_Fork_Result_Tests.adb | 36 ++++++++ source/tests/riscv64/arch_rv64_test_suite.adb | 4 +- source/tests/riscv64/rvf64_test_suite.adb | 14 --- 9 files changed, 248 insertions(+), 48 deletions(-) create mode 100644 source/tests/riscv64/CSR_Extension_Tests.adb create mode 100644 source/tests/riscv64/Context_Test_Suite.adb rename source/tests/riscv64/{rv64_test_suite.ads => Context_Test_Suite.ads} (62%) create mode 100644 source/tests/riscv64/Core_Context_Tests.adb create mode 100644 source/tests/riscv64/FP_Context_Tests.adb create mode 100644 source/tests/riscv64/Success_Fork_Result_Tests.adb delete mode 100644 source/tests/riscv64/rvf64_test_suite.adb diff --git a/source/tests/riscv64/CSR_Extension_Tests.adb b/source/tests/riscv64/CSR_Extension_Tests.adb new file mode 100644 index 0000000..548a5f0 --- /dev/null +++ b/source/tests/riscv64/CSR_Extension_Tests.adb @@ -0,0 +1,42 @@ +with AUnit.Framework; +with Arch.Context; use Arch.Context; + +procedure CSR_Extension_Tests is + + package Test is new AUnit.Framework.Test_Case("CSR_Extension_Tests"); + + ------------------------------------------------------------------- + -- Test to verify that the cached MISA_Value is nonzero. + ------------------------------------------------------------------- + procedure Test_MISA_Value is + begin + Test.Check_True(MISA_Value /= 0, "Cached MISA_Value must be nonzero"); + end Test_MISA_Value; + + ------------------------------------------------------------------- + -- Test to verify FP extension bit detection based on MISA_Value. + ------------------------------------------------------------------- + procedure Test_FP_Extension_Bits is + begin + if (MISA_Value and F_Extension_Bit) /= 0 then + Test.Check_True(Has_Extension(F_Extension_Bit), + "F extension should be detected"); + else + Test.Check_True(not Has_Extension(F_Extension_Bit), + "F extension should not be detected"); + end if; + + if (MISA_Value and D_Extension_Bit) /= 0 then + Test.Check_True(Has_Extension(D_Extension_Bit), + "D extension should be detected"); + else + Test.Check_True(not Has_Extension(D_Extension_Bit), + "D extension should not be detected"); + end if; + end Test_FP_Extension_Bits; + +begin + Test.Register(Test_MISA_Value'Access); + Test.Register(Test_FP_Extension_Bits'Access); + Test.Run; +end CSR_Extension_Tests; diff --git a/source/tests/riscv64/Context_Test_Suite.adb b/source/tests/riscv64/Context_Test_Suite.adb new file mode 100644 index 0000000..7bb8820 --- /dev/null +++ b/source/tests/riscv64/Context_Test_Suite.adb @@ -0,0 +1,21 @@ +with AUnit.Test_Suites; +with CSR_Extension_Tests; +with Core_Context_Tests; +with FP_Context_Tests; +with GP_Context_Tests; + +package body Context_Test_Suite is + use AUnit.Test_Suites; + + Result : aliased Test_Suite; + + function Suite return Access_Test_Suite is + begin + Add_Test (Result'Access, CSR_Extension_Tests.Test_Case'Access); + Add_Test (Result'Access, Core_Context_Tests.Test_Case'Access); + Add_Test (Result'Access, FP_Context_Tests.Test_Case'Access); + Add_Test (Result'Access, GP_Context_Tests.Test_Case'Access); + Add_Test (Result'Access, Success_Fork_Result_Tests.Test_Case'Access); + return Result'Access; + end Suite; +end Context_Test_Suite; \ No newline at end of file diff --git a/source/tests/riscv64/rv64_test_suite.ads b/source/tests/riscv64/Context_Test_Suite.ads similarity index 62% rename from source/tests/riscv64/rv64_test_suite.ads rename to source/tests/riscv64/Context_Test_Suite.ads index c553a11..bbcf01b 100644 --- a/source/tests/riscv64/rv64_test_suite.ads +++ b/source/tests/riscv64/Context_Test_Suite.ads @@ -1,5 +1,5 @@ with AUnit.Test_Suites; -package RV64_Test_Suite is +package Context_Test_Suite is function Suite return AUnit.Test_Suites.Access_Test_Suite; -end RV64_Test_Suite; \ No newline at end of file +end Context_Test_Suite; \ No newline at end of file diff --git a/source/tests/riscv64/Core_Context_Tests.adb b/source/tests/riscv64/Core_Context_Tests.adb new file mode 100644 index 0000000..52ffa99 --- /dev/null +++ b/source/tests/riscv64/Core_Context_Tests.adb @@ -0,0 +1,35 @@ +with AUnit.Framework; +with Arch.Context; use Arch.Context; +with Arch.CPU; use Arch.CPU; + +procedure Core_Context_Tests is + + package Test is new AUnit.Framework.Test_Case("Core_Context_Tests"); + + ------------------------------------------------------------------- + -- Test that Save_Core_Context saves the correct per-core state. + ------------------------------------------------------------------- + procedure Test_Save_Core_Context is + Saved_Core : Core_Context; + Current_Hart : Unsigned_64; + Core_Index : Positive; + begin + Current_Hart := Get_Hart_ID; + Core_Index := Positive(Integer(Current_Hart) + 1); + pragma Assert(Core_Index <= Core_Count, "Test: Core index out of bounds"); + Save_Core_Context(Saved_Core); + Test.Check_Equal(Core_Locals(Core_Index).User_Stack, + Saved_Core.User_Stack, + "Saved core context must have the correct User_Stack"); + Test.Check_Equal(Core_Locals(Core_Index).Hart_ID, + Saved_Core.Hart_ID, + "Saved core context must have the correct Hart_ID"); + Test.Check_Equal(Core_Locals(Core_Index).Number, + Saved_Core.Number, + "Saved core context must have the correct core number"); + end Test_Save_Core_Context; + +begin + Test.Register(Test_Save_Core_Context'Access); + Test.Run; +end Core_Context_Tests; diff --git a/source/tests/riscv64/FP_Context_Tests.adb b/source/tests/riscv64/FP_Context_Tests.adb new file mode 100644 index 0000000..8053330 --- /dev/null +++ b/source/tests/riscv64/FP_Context_Tests.adb @@ -0,0 +1,54 @@ +with AUnit.Framework; +with Arch.Context; use Arch.Context; +with Interfaces; use Interfaces; + +procedure FP_Context_Tests is + + package Test is new AUnit.Framework.Test_Case("FP_Context_Tests"); + + -- Dummy FP context (assumed to be an array of Unsigned_8) + Dummy_FP_Context : FP_Context; + + ------------------------------------------------------------------- + -- Test FP context initialization zeroes all elements. + ------------------------------------------------------------------- + procedure Test_Init_FP_Context is + I : Integer; + begin + Init_FP_Context(Dummy_FP_Context); + for I in FP_Context'Range loop + Test.Check_Equal(0, Dummy_FP_Context(I), + "FP context element " & I'Image & " should be zero after initialization"); + end loop; + end Test_Init_FP_Context; + + ------------------------------------------------------------------- + -- Test FP context destruction zeroes all elements. + ------------------------------------------------------------------- + procedure Test_Destroy_FP_Context is + I : Integer; + begin + Init_FP_Context(Dummy_FP_Context); + Destroy_FP_Context(Dummy_FP_Context); + for I in FP_Context'Range loop + Test.Check_Equal(0, Dummy_FP_Context(I), + "FP context element " & I'Image & " should be zero after destruction"); + end loop; + end Test_Destroy_FP_Context; + + ------------------------------------------------------------------- + -- Test FP dispatch routines are set. + ------------------------------------------------------------------- + procedure Test_FP_Dispatch is + begin + Setup_FP_Routines; + Test.Check_True(FP_Save_Routine /= null, "FP_Save_Routine must not be null"); + Test.Check_True(FP_Load_Routine /= null, "FP_Load_Routine must not be null"); + end Test_FP_Dispatch; + +begin + Test.Register(Test_Init_FP_Context'Access); + Test.Register(Test_Destroy_FP_Context'Access); + Test.Register(Test_FP_Dispatch'Access); + Test.Run; +end FP_Context_Tests; diff --git a/source/tests/riscv64/GP_Context_Tests.adb b/source/tests/riscv64/GP_Context_Tests.adb index 69ce8b3..d595106 100644 --- a/source/tests/riscv64/GP_Context_Tests.adb +++ b/source/tests/riscv64/GP_Context_Tests.adb @@ -2,16 +2,18 @@ with AUnit.Framework; with Arch.Context; with Arch.Interrupts; use Arch.Interrupts; with Interfaces; use Interfaces; +with Memory.Physical; +with System; procedure GP_Context_Tests is - package Test is new AUnit.Framework.Test_Case ("GP_Context_Tests"); + package Test is new AUnit.Framework.Test_Case("GP_Context_Tests"); - -- A constant dummy Frame with known values for testing. + -- Dummy_Frame: a constant Frame with known values for testing conversion routines. Dummy_Frame : constant Frame := (R0 => 0, R1 => 1, - R2 => 16#1000#, -- Stack pointer value for testing. + R2 => 16#1000#, -- Example stack pointer. R3 => 3, R4 => 4, R5 => 5, @@ -19,40 +21,64 @@ procedure GP_Context_Tests is R7 => 7, R8 => 8, R9 => 9, - R10 => 10, -- Return register value. + R10 => 10, -- Example return register. R11 => 11, R12 => 12, R13 => 13, R14 => 14, R15 => 15); -begin - Test ("To_GP_Context_Type") is - declare - Internal : Arch.Context.GP_Context_Type := - Arch.Context.To_GP_Context_Type (Dummy_Frame); - begin - Test.Check_Equal (16#1000#, Internal.SP, "SP from Frame.R2 should be 0x1000"); - Test.Check_Equal (10, Internal.A0, "A0 from Frame.R10 should be 10"); - -- SEPC and SSTATUS are read from hardware; we check that they are nonzero. - Test.Check_True (Internal.SEPC /= 0, "SEPC must be nonzero"); - Test.Check_True (Internal.SSTATUS /= 0, "SSTATUS must be nonzero"); - end; + ------------------------------------------------------------------- + -- Test case for converting an external Frame to an internal context. + ------------------------------------------------------------------- + procedure Test_To_GP_Context_Type is + Internal : Arch.Context.GP_Context_Type; + begin + Internal := Arch.Context.To_GP_Context_Type(Dummy_Frame); + Test.Check_Equal(16#1000#, Internal.SP, "SP from Frame.R2 should be 0x1000"); + Test.Check_Equal(10, Internal.A0, "A0 from Frame.R10 should be 10"); + -- SEPC and SSTATUS are fetched via CSR; check that they are nonzero. + Test.Check_True(Internal.SEPC /= 0, "SEPC must be nonzero"); + Test.Check_True(Internal.SSTATUS /= 0, "SSTATUS must be nonzero"); + end Test_To_GP_Context_Type; + + ------------------------------------------------------------------- + -- Test case for converting an internal context back to an external Frame. + ------------------------------------------------------------------- + procedure Test_To_Frame is + Internal : Arch.Context.GP_Context_Type := + (SP => 16#12345678#, + SEPC => 16#DEADBEEF#, + SSTATUS => 16#CAFEBABE#, + A0 => 16#ABCDEF00#); + External : Frame; + begin + External := Arch.Context.To_Frame(Internal); + Test.Check_Equal(16#12345678#, External.R2, "External R2 must equal lower 32 bits of SP"); + Test.Check_Equal(16#ABCDEF00#, External.R10, "External R10 must equal lower 32 bits of A0"); + Test.Check_Equal(0, External.R0, "R0 should be zero"); + Test.Check_Equal(0, External.R15, "R15 should be zero"); + end Test_To_Frame; - Test ("To_Frame") is - declare - Internal : Arch.Context.GP_Context_Type := - (SP => 16#12345678#, - SEPC => 16#DEADBEEF#, - SSTATUS => 16#CAFEBABE#, - A0 => 16#ABCDEF00#); - External : Frame := Arch.Context.To_Frame (Internal); - begin - Test.Check_Equal (16#12345678#, External.R2, "R2 must be lower 32 bits of SP"); - Test.Check_Equal (16#ABCDEF00#, External.R10, "R10 must be lower 32 bits of A0"); - Test.Check_Equal (0, External.R0, "R0 should be zero"); - Test.Check_Equal (0, External.R15, "R15 should be zero"); - end; + ------------------------------------------------------------------- + -- Test case for initializing GP context. + ------------------------------------------------------------------- + procedure Test_Init_GP_Context is + Ctx : GP_Context; + Stack : System.Address := Memory.Physical.Alloc(4096); + Dummy_Start : constant System.Address := System.Address'Value(16#4000#); + Internal : Arch.Context.GP_Context_Type; + begin + Init_GP_Context(Ctx, Stack, Dummy_Start); + Internal := Arch.Context.To_GP_Context_Type(Ctx); + Test.Check_True(Internal.SP /= 0, "SP must be set by Init_GP_Context"); + Test.Check_True(Internal.SEPC /= 0, "SEPC must be nonzero after init"); + Test.Check_Equal(0, Internal.A0, "A0 should be initialized to zero"); + end Test_Init_GP_Context; +begin + Test.Register(Test_To_GP_Context_Type'Access); + Test.Register(Test_To_Frame'Access); + Test.Register(Test_Init_GP_Context'Access); Test.Run; end GP_Context_Tests; diff --git a/source/tests/riscv64/Success_Fork_Result_Tests.adb b/source/tests/riscv64/Success_Fork_Result_Tests.adb new file mode 100644 index 0000000..2deaa03 --- /dev/null +++ b/source/tests/riscv64/Success_Fork_Result_Tests.adb @@ -0,0 +1,36 @@ +with AUnit.Framework; +with Arch.Context; use Arch.Context; +with Arch.Interrupts; use Arch.Interrupts; +with Interfaces; use Interfaces; +with Memory.Physical; +with System; + +procedure Success_Fork_Result_Tests is + package Test is new AUnit.Framework.Test_Case("Success_Fork_Result_Tests"); + + -- Test_Success_Fork verifies that Success_Fork_Result properly sets A0 to 0 + -- and advances SEPC by 4 bytes. + procedure Test_Success_Fork is + Ctx : GP_Context; + Dummy_Stack : System.Address := Memory.Physical.Alloc(4096); + -- Provide a nonzero dummy start address. + Dummy_Start : constant System.Address := System.Address'Value(16#30000#); + Old_Internal, New_Internal : GP_Context_Type; + begin + -- Initialize the GP context. + Init_GP_Context(Ctx, Dummy_Stack, Dummy_Start); + Old_Internal := To_GP_Context_Type(Ctx); + Test.Check_True(Old_Internal.SEPC /= 0, "Precondition: Old SEPC must be nonzero"); + + -- Perform the fork result adjustment. + Success_Fork_Result(Ctx); + + New_Internal := To_GP_Context_Type(Ctx); + Test.Check_Equal(0, New_Internal.A0, "Forked process should return 0 in A0"); + Test.Check_Equal(Old_Internal.SEPC + 4, New_Internal.SEPC, "SEPC should be advanced by 4 bytes after fork"); + end Test_Success_Fork; + +begin + Test.Register(Test_Success_Fork'Access); + Test.Run; +end Success_Fork_Result_Tests; diff --git a/source/tests/riscv64/arch_rv64_test_suite.adb b/source/tests/riscv64/arch_rv64_test_suite.adb index 4853bfc..76a5319 100644 --- a/source/tests/riscv64/arch_rv64_test_suite.adb +++ b/source/tests/riscv64/arch_rv64_test_suite.adb @@ -1,5 +1,5 @@ -- Import tests and suites to run -with RV64_Test_Suite; +with Context_Test_Suite; with AUnit.Tests; package body Arch_RV64_Test_Suite is use Test_Suites; @@ -11,7 +11,7 @@ package body Arch_RV64_Test_Suite is function Suite return Access_Test_Suite is Result : Access_Test_Suite := AUnit.Test_Suites.New_Suite; begin - Result.Add_Test (RV64_Test_Suite.Suite); + Result.Add_Test (Context_Test_Suite.Suite); return Result; end Suite; end Arch_RV64_Test_Suite; \ No newline at end of file diff --git a/source/tests/riscv64/rvf64_test_suite.adb b/source/tests/riscv64/rvf64_test_suite.adb deleted file mode 100644 index 689486c..0000000 --- a/source/tests/riscv64/rvf64_test_suite.adb +++ /dev/null @@ -1,14 +0,0 @@ -with AUnit.Test_Suites; -with Test_Context; - -package body RV64_Test_Suite is - use AUnit.Test_Suites; - - Result : aliased Test_Suite; - - function Suite return Access_Test_Suite is - begin - Add_Test (Result'Access, Test_Context.Test_Case'Access); - return Result'Access; - end Suite; -end RV64_Test_Suite; \ No newline at end of file From 9358db6bf91422a39f8a3ff2abaedc25647116a9 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:19:13 -0500 Subject: [PATCH 70/99] correcting syntax errors in the test suite. --- source/tests/obj/test_harness.adb.stderr | 3 +++ source/tests/riscv64/arch_rv64_test_suite.adb | 1 + source/tests/riscv64/arch_rv64_test_suite.ads | 6 ++++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source/tests/obj/test_harness.adb.stderr b/source/tests/obj/test_harness.adb.stderr index e69de29..a1c7b91 100644 --- a/source/tests/obj/test_harness.adb.stderr +++ b/source/tests/obj/test_harness.adb.stderr @@ -0,0 +1,3 @@ +test_harness.adb:3:06: error: file "arch_rv64_test_suite.ads" does not contain expected unit +test_harness.adb:3:06: error: expected unit "Arch_Rv64_Test_Suite (spec)" +test_harness.adb:3:06: error: found unit "Composite_Suite (spec)" diff --git a/source/tests/riscv64/arch_rv64_test_suite.adb b/source/tests/riscv64/arch_rv64_test_suite.adb index 76a5319..cbbdb9a 100644 --- a/source/tests/riscv64/arch_rv64_test_suite.adb +++ b/source/tests/riscv64/arch_rv64_test_suite.adb @@ -1,6 +1,7 @@ -- Import tests and suites to run with Context_Test_Suite; with AUnit.Tests; + package body Arch_RV64_Test_Suite is use Test_Suites; diff --git a/source/tests/riscv64/arch_rv64_test_suite.ads b/source/tests/riscv64/arch_rv64_test_suite.ads index ead21db..e4a514d 100644 --- a/source/tests/riscv64/arch_rv64_test_suite.ads +++ b/source/tests/riscv64/arch_rv64_test_suite.ads @@ -1,5 +1,7 @@ -- Composition package: with AUnit; use AUnit; -package Composite_Suite is +with AUnit.Test_Suites; use AUnit.Test_Suites; + +package Arch_RV64_Test_Suite is function Suite return Test_Suites.Access_Test_Suite; -end Composite_Suite; \ No newline at end of file +end Arch_RV64_Test_Suite; \ No newline at end of file From 4d1cd51928b289b0ed63a5d6066a0b6b998aea3c Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:25:49 -0500 Subject: [PATCH 71/99] correcting AUnit files. --- .../tests/obj/aunit-reporter-text.adb.stderr | 0 .../tests/obj/aunit-reporter-text.adb.stdout | 0 source/tests/obj/aunit-reporter-text.ali | 316 ------------------ source/tests/obj/aunit-reporter-text.o | Bin 25904 -> 0 bytes source/tests/obj/aunit-reporter.adb.stderr | 0 source/tests/obj/aunit-reporter.adb.stdout | 0 source/tests/obj/aunit-reporter.ali | 112 ------- source/tests/obj/aunit-reporter.o | Bin 5640 -> 0 bytes source/tests/obj/aunit-run.adb.stderr | 0 source/tests/obj/aunit-run.adb.stdout | 0 source/tests/obj/aunit-run.ali | 147 -------- source/tests/obj/aunit-run.o | Bin 1984 -> 0 bytes source/tests/obj/aunit.adb.stderr | 0 source/tests/obj/aunit.adb.stdout | 0 source/tests/obj/aunit.ali | 87 ----- source/tests/obj/aunit.o | Bin 3240 -> 0 bytes source/tests/obj/test_harness.adb.stderr | 3 - source/tests/obj/test_harness.adb.stdout | 0 source/tests/obj/test_harness.ali | 113 ------- source/tests/obj/test_harness.o | Bin 2376 -> 0 bytes source/tests/riscv64/Context_Test_Suite.adb | 22 +- source/tests/riscv64/arch_rv64_test_suite.adb | 17 +- source/tests/riscv64/arch_rv64_test_suite.ads | 8 +- source/tests/riscv64/test_harness.adb | 8 +- 24 files changed, 22 insertions(+), 811 deletions(-) delete mode 100644 source/tests/obj/aunit-reporter-text.adb.stderr delete mode 100644 source/tests/obj/aunit-reporter-text.adb.stdout delete mode 100644 source/tests/obj/aunit-reporter-text.ali delete mode 100644 source/tests/obj/aunit-reporter-text.o delete mode 100644 source/tests/obj/aunit-reporter.adb.stderr delete mode 100644 source/tests/obj/aunit-reporter.adb.stdout delete mode 100644 source/tests/obj/aunit-reporter.ali delete mode 100644 source/tests/obj/aunit-reporter.o delete mode 100644 source/tests/obj/aunit-run.adb.stderr delete mode 100644 source/tests/obj/aunit-run.adb.stdout delete mode 100644 source/tests/obj/aunit-run.ali delete mode 100644 source/tests/obj/aunit-run.o delete mode 100644 source/tests/obj/aunit.adb.stderr delete mode 100644 source/tests/obj/aunit.adb.stdout delete mode 100644 source/tests/obj/aunit.ali delete mode 100644 source/tests/obj/aunit.o delete mode 100644 source/tests/obj/test_harness.adb.stderr delete mode 100644 source/tests/obj/test_harness.adb.stdout delete mode 100644 source/tests/obj/test_harness.ali delete mode 100644 source/tests/obj/test_harness.o diff --git a/source/tests/obj/aunit-reporter-text.adb.stderr b/source/tests/obj/aunit-reporter-text.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/aunit-reporter-text.adb.stdout b/source/tests/obj/aunit-reporter-text.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/aunit-reporter-text.ali b/source/tests/obj/aunit-reporter-text.ali deleted file mode 100644 index bf7676d..0000000 --- a/source/tests/obj/aunit-reporter-text.ali +++ /dev/null @@ -1,316 +0,0 @@ -V "GNAT Lib v14" -A -gnatA -A -gnat2012 -A -mtune=generic -A -march=x86-64 -P SS ZX - -RN -RV NO_DISPATCH -RV NO_DISPATCHING_CALLS -RV NO_FIXED_POINT -RV NO_IMPLICIT_CONDITIONALS -RV NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ATTRIBUTES -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_ELABORATION_CODE -RV NO_OBSOLESCENT_FEATURES - -U aunit.reporter.text%b aunit-reporter-text.adb b61e55fe OO PK -Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali -Z ada.tags%s a-tags.adb a-tags.ali -W aunit%s aunit.adb aunit.ali -W aunit.io%s aunit-io.ads aunit-io.ali -W aunit.reporter%s aunit-reporter.adb aunit-reporter.ali -W aunit.time_measure%s aunit-time_measure.adb aunit-time_measure.ali ED -Z interfaces%s interfac.ads interfac.ali -Z system.arith_64%s s-arit64.adb s-arit64.ali -Z system.exp_int%s s-expint.ads s-expint.ali -Z system.img_int%s s-imgint.ads s-imgint.ali -Z system.secondary_stack%s s-secsta.adb s-secsta.ali - -U aunit.reporter.text%s aunit-reporter-text.ads 1676cc84 EE OO PF PK -Z ada.exceptions%s a-except.adb a-except.ali -Z ada.streams%s a-stream.adb a-stream.ali -Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali -Z ada.tags%s a-tags.adb a-tags.ali -W aunit.reporter%s aunit-reporter.adb aunit-reporter.ali -Z system%s system.ads system.ali -Z system.put_images%s s-putima.adb s-putima.ali -Z system.return_stack%s s-retsta.ads s-retsta.ali -Z system.secondary_stack%s s-secsta.adb s-secsta.ali -Z system.stream_attributes%s s-stratt.adb s-stratt.ali - -D ada.ads 20240801081713 76789da1 ada%s -D a-assert.ads 20240801081713 ba465f5c ada.assertions%s -D a-calend.ads 20240801081713 158a5463 ada.calendar%s -D a-charac.ads 20240801081713 2d3ec45b ada.characters%s -D a-chlat1.ads 20240801081713 e0d72e76 ada.characters.latin_1%s -D a-except.ads 20240801081713 e7970cd9 ada.exceptions%s -D a-finali.ads 20240801081713 bf4f806b ada.finalization%s -D a-inteio.ads 20240801081713 f64b89a4 ada.integer_text_io%s -D a-ioexce.ads 20240801081713 40018c65 ada.io_exceptions%s -D a-numeri.ads 20240801081713 84bea7a3 ada.numerics%s -D a-nubinu.ads 20240801081713 93f1f3d1 ada.numerics.big_numbers%s -D a-nbnbig.ads 20240801081713 31ff4aa1 ada.numerics.big_numbers.big_integers_ghost%s -D a-stream.ads 20240801081713 119b8fb3 ada.streams%s -D a-string.ads 20240801081713 90ac6797 ada.strings%s -D a-strfix.ads 20240801081713 100e0a05 ada.strings.fixed%s -D a-strmap.ads 20240801081713 1f91ebb6 ada.strings.maps%s -D a-strsea.ads 20240801081713 2b7aab86 ada.strings.search%s -D a-sttebu.ads 20240801081713 f1ad67a2 ada.strings.text_buffers%s -D a-stuten.ads 20240801081713 c6ced0ae ada.strings.utf_encoding%s -D a-tags.ads 20240801081713 9eaa38c6 ada.tags%s -D a-textio.ads 20240801081713 34ef47de ada.text_io%s -D a-tiinio.ads 20240801081713 76699c8f ada.text_io.integer_io%s -D a-unccon.ads 20240801081713 0e9b276f ada.unchecked_conversion%s -D ada_containers.ads 20221219210842 11329e00 ada_containers%s -D ada_containers-aunit_lists.ads 20221219210842 d9ebc89a ada_containers.aunit_lists%s -D aunit.ads 20221219210842 76cdf7c6 aunit%s -D aunit-io.ads 20221219210842 fb5ed18b aunit.io%s -D aunit-options.ads 20221219210842 6e5a02a6 aunit.options%s -D aunit-reporter.ads 20221219210842 2c6ff74a aunit.reporter%s -D aunit-reporter-text.ads 20221219210842 3a193bce aunit.reporter.text%s -D aunit-reporter-text.adb 20221219210842 ae9bf80b aunit.reporter.text%b -D aunit-test_filters.ads 20221219210842 f10b2127 aunit.test_filters%s -D aunit-test_results.ads 20221219210842 b44de7dc aunit.test_results%s -D aunit-tests.ads 20221219210842 1da11d49 aunit.tests%s -D aunit-time_measure.ads 20221219210842 d9c247b0 aunit.time_measure%s -D aunit-time_measure.adb 20221219210842 bc5d5154 aunit.time_measure%b -D interfac.ads 20240801081713 9111f9c1 interfaces%s -D i-cstrea.ads 20240801081713 ffd01b9d interfaces.c_streams%s -D system.ads 20240801081714 14286b0f system%s -D s-arit64.ads 20240801081713 90488c35 system.arith_64%s -D s-assert.ads 20240801081713 9c4520c7 system.assertions%s -D s-crtl.ads 20240801081713 beb39b9e system.crtl%s -D s-exctab.ads 20240801081713 91bef6ef system.exception_table%s -D s-expint.ads 20240801081713 3e557eef system.exp_int%s -D s-expont.ads 20240801081713 f15262ed system.expont%s -D s-ficobl.ads 20240801081713 dc5161d4 system.file_control_block%s -D s-finmas.ads 20240801081713 28987ac5 system.finalization_masters%s -D s-finroo.ads 20240801081713 4ff27390 system.finalization_root%s -D s-imagei.ads 20240801081713 5e131ce0 system.image_i%s -D s-imgint.ads 20240801081713 67e4edfb system.img_int%s -D s-parame.ads 20240801081713 3597fc11 system.parameters%s -D s-pooglo.ads 20240801081713 91708d21 system.pool_global%s -D s-putima.ads 20240801081713 17291fe4 system.put_images%s -D s-retsta.ads 20240801081713 0f6b06cb system.return_stack%s -D s-secsta.ads 20240801081713 578279f5 system.secondary_stack%s -D s-soflin.ads 20240801081713 df77073e system.soft_links%s -D s-stache.ads 20240801081713 0b81c1fe system.stack_checking%s -D s-stalib.ads 20240801081713 1c9580f6 system.standard_library%s -D s-stoele.ads 20240801081713 ccded4e8 system.storage_elements%s -D s-stopoo.ads 20240801081713 e9fa2dd8 system.storage_pools%s -D s-stratt.ads 20240801081713 a1861007 system.stream_attributes%s -D s-traent.ads 20240801081713 c81cbf8c system.traceback_entries%s -D s-unstyp.ads 20240801081713 fa2a7f59 system.unsigned_types%s -D s-valspe.ads 20240801081714 b0fcd073 system.val_spec%s -D s-vaispe.ads 20240801081714 8280550e system.value_i_spec%s -D s-vauspe.ads 20240801081714 89269ba5 system.value_u_spec%s -D s-vs_int.ads 20240801081714 06b6b724 system.vs_int%s -D s-vs_uns.ads 20240801081714 e7f47a27 system.vs_uns%s -D s-wchcon.ads 20240801081714 d9032363 system.wch_con%s -G a e -G c b b b [b aunit__reporter__text 36 1 none] -G c Z s b [set_use_ansi_colors aunit__reporter__text 37 14 none] -G c Z s b [report aunit__reporter__text 44 14 none] -G c Z s b [report_ok_tests aunit__reporter__text 48 14 none] -G c Z s b [report_fail_tests aunit__reporter__text 50 14 none] -G c Z s b [report_error_tests aunit__reporter__text 52 14 none] -G c Z s s [text_reporterDA aunit__reporter__text 62 9 none] -G c Z s s [text_reporterDF aunit__reporter__text 62 9 none] -G c Z s s [text_reporterIP aunit__reporter__text 62 9 none] -G c Z b b [indent aunit__reporter__text 38 14 none] -G c Z b b [dump_result_list aunit__reporter__text 41 14 none] -G c Z b b [put_measureR aunit__reporter__text__put_measureGP2755 44 14 none] -G c Z b b [put_measure aunit__reporter__text 44 14 none] -G c Z b b [report_test aunit__reporter__text 47 14 none] -G r i none [b aunit__reporter__text 36 1 none] [gen_put_measure aunit__time_measure 58 14 none] -G r c none [report aunit__reporter__text 44 14 none] [success_count aunit__test_results 121 13 none] -G r c none [report aunit__reporter__text 44 14 none] [failure_count aunit__test_results 109 13 none] -G r c none [report aunit__reporter__text 44 14 none] [error_count aunit__test_results 102 13 none] -G r s list [report aunit__reporter__text 44 14 none] [listIP aunit__test_results__result_lists 224 9 73_4] -G r c none [report aunit__reporter__text 44 14 none] [successes aunit__test_results 124 14 none] -G r c none [report aunit__reporter__text 44 14 none] [first aunit__test_results__result_lists 155 13 73_4] -G r c none [report aunit__reporter__text 44 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] -G r c none [report aunit__reporter__text 44 14 none] [element aunit__test_results__result_lists 67 13 73_4] -G r c none [report aunit__reporter__text 44 14 none] [get_measure aunit__time_measure 53 13 none] -G r c none [report aunit__reporter__text 44 14 none] [next aunit__test_results__result_lists 165 14 73_4] -G r c none [report aunit__reporter__text 44 14 none] [failures aunit__test_results 112 14 none] -G r c none [report aunit__reporter__text 44 14 none] [errors aunit__test_results 105 14 none] -G r c none [report aunit__reporter__text 44 14 none] [test_count aunit__test_results 130 13 none] -G r c none [report aunit__reporter__text 44 14 none] [elapsed aunit__test_results 115 13 none] -G r s list [report_ok_tests aunit__reporter__text 48 14 none] [listIP aunit__test_results__result_lists 224 9 73_4] -G r c none [report_ok_tests aunit__reporter__text 48 14 none] [successes aunit__test_results 124 14 none] -G r c none [report_ok_tests aunit__reporter__text 48 14 none] [first aunit__test_results__result_lists 155 13 73_4] -G r c none [report_ok_tests aunit__reporter__text 48 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] -G r c none [report_ok_tests aunit__reporter__text 48 14 none] [element aunit__test_results__result_lists 67 13 73_4] -G r c none [report_ok_tests aunit__reporter__text 48 14 none] [get_measure aunit__time_measure 53 13 none] -G r c none [report_ok_tests aunit__reporter__text 48 14 none] [next aunit__test_results__result_lists 165 14 73_4] -G r s list [report_fail_tests aunit__reporter__text 50 14 none] [listIP aunit__test_results__result_lists 224 9 73_4] -G r c none [report_fail_tests aunit__reporter__text 50 14 none] [failures aunit__test_results 112 14 none] -G r c none [report_fail_tests aunit__reporter__text 50 14 none] [first aunit__test_results__result_lists 155 13 73_4] -G r c none [report_fail_tests aunit__reporter__text 50 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] -G r c none [report_fail_tests aunit__reporter__text 50 14 none] [element aunit__test_results__result_lists 67 13 73_4] -G r c none [report_fail_tests aunit__reporter__text 50 14 none] [get_measure aunit__time_measure 53 13 none] -G r c none [report_fail_tests aunit__reporter__text 50 14 none] [next aunit__test_results__result_lists 165 14 73_4] -G r s list [report_error_tests aunit__reporter__text 52 14 none] [listIP aunit__test_results__result_lists 224 9 73_4] -G r c none [report_error_tests aunit__reporter__text 52 14 none] [errors aunit__test_results 105 14 none] -G r c none [report_error_tests aunit__reporter__text 52 14 none] [first aunit__test_results__result_lists 155 13 73_4] -G r c none [report_error_tests aunit__reporter__text 52 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] -G r c none [report_error_tests aunit__reporter__text 52 14 none] [element aunit__test_results__result_lists 67 13 73_4] -G r c none [report_error_tests aunit__reporter__text 52 14 none] [get_measure aunit__time_measure 53 13 none] -G r c none [report_error_tests aunit__reporter__text 52 14 none] [next aunit__test_results__result_lists 165 14 73_4] -G r s reporter [text_reporterIP aunit__reporter__text 62 9 none] [reporterIP aunit__reporter 53 9 none] -G r c none [dump_result_list aunit__reporter__text 41 14 none] [first aunit__test_results__result_lists 155 13 73_4] -G r c none [dump_result_list aunit__reporter__text 41 14 none] [has_element aunit__test_results__result_lists 185 13 73_4] -G r c none [dump_result_list aunit__reporter__text 41 14 none] [element aunit__test_results__result_lists 67 13 73_4] -G r c none [dump_result_list aunit__reporter__text 41 14 none] [get_measure aunit__time_measure 53 13 none] -G r c none [dump_result_list aunit__reporter__text 41 14 none] [next aunit__test_results__result_lists 165 14 73_4] -G r c none [report_test aunit__reporter__text 47 14 none] [get_measure aunit__time_measure 53 13 none] -X 21 a-textio.ads -67P9*File_Type -195P9*File_Access(67P9) -X 24 ada_containers.ads -20I9*Count_Type -X 25 ada_containers-aunit_lists.ads -51R9*List 31|41r67[33|73] 51r63[33|73] 91r67[33|73] 119r24[33|73] -53R9*Cursor 31|95r11[33|73] -67V13*Element{33|62R9} 31|105s29[33|73] -155V13*First{53R9[33|73]} 31|95s21[33|73] -165U14*Next 31|106s10[33|73] -185V13*Has_Element{boolean} 31|97s10[33|73] 104s13[33|73] -X 26 aunit.ads -34K9*AUnit 48e10 30|33r9 66r5 31|32r6 32r30 33r6 33r30 36r14 281r5 -36P9*Message_String(string) -X 27 aunit-io.ads -35K15*IO 59e13 31|32w12 32r36 -37P12*File_Type{21|67P9} 31|38r29 41r39 47r34 57r17 80r29 91r39 117r17 173r17 -. 214r34 -39P12*File_Access{21|195P9} -44U14*Put=48:47 31|189s7 192s7 195s7 198s7 242s10 -50U14*Put=51:54 31|83s10 123s10 129s10 188s7 191s7 194s7 197s7 204s10 217s7 -. 218s7 219s7 222s10 223s10 227s10 230s10 239s10 240s10 241s10 251s13 35|57i22 -53U14*Put_Line=54:59 31|206s10 237s10 247s10 252s13 257s13 271s19 -56U14*New_Line=57:87 31|98s10 187s7 190s7 193s7 196s7 199s7 233s7 243s10 -. 277s10 -X 28 aunit-options.ads -36R9*AUnit_Options 41e14 30|46r32 31|171r17 -39b7*Report_Successes{boolean} 31|180r18 -44r4*Default_Options{36R9} 30|46r49 31|171r34 -X 29 aunit-reporter.ads -36K15*Reporter 26|34k9 29|58e19 30|33r15 66r11 31|36r20 281r11 -38H9*Reporter 56e17 30|35r30 62r30 -40U14*Set_File -55p10*File{27|39P12} 31|143r35 152r35 161r35 173r42 -X 30 aunit-reporter-text.ads -33K24*Text 29|36k15 30|62E9 66l20 66e24 31|36b29 281l20 281t24 -35R9*Text_Reporter<29|38R9> 29|40p14 30|37p14 38r23 44P14 44r32 48p14 48r40 -. 50p14 50r42 52p14 52r43 62c9 64e14 31|55r17 70r23 115r17 138r17 147r17 -. 156r17 169r17 181r30 184r27 185r27 -37U14*Set_Use_ANSI_Colors 38=7 39>7 31|69b14 74l8 74t27 -38r7 Engine{35R9} 31|70b7 73m7 -39b7 Value{boolean} 31|71b7 73r26 -44U14*Report<29|44p14> 44>22 45=22 46>22 31|168b14 208l8 208t14 -44r22 Engine{35R9} 31|169b7 173r35 181r51 184r48 185r48 -45c22 R<33|40R9> 31|170b7 174r61 175r61 176r59 181r60 184r57 185r57 189r39 -. 201r19 202r37 -46r22 Options{28|36R9} 31|171b7 180r10 -48U14*Report_OK_Tests 48>31 49>31 31|137b14 144l8 144t23 181R10 -48r31 Engine{35R9} 31|138b8 143r17 143r28 -49c31 R<33|40R9> 31|139b8 143r25 -50U14*Report_Fail_Tests 50>33 51>33 31|146b14 153l8 153t25 184R7 -50r33 Engine{35R9} 31|147b8 152r17 152r28 -51c33 R<33|40R9> 31|148b8 152r25 -52U14*Report_Error_Tests 52>34 53>34 31|155b14 162l8 162t26 185R7 -52r34 Engine{35R9} 31|156b8 161r17 161r28 -53c34 R<33|40R9> 31|157b8 161r25 -63b7 Use_ANSI{boolean} 31|73m14 122r17 128r17 -X 31 aunit-reporter-text.adb -38U14 Indent 38>22 38>40 80b14 85l8 85t14 236s10 238s10 246s10 250s13 256s13 -. 270s19 -38p22 File{27|37P12} 80b22 83r15 -38i40 N{natural} 80b40 82r21 -41U14 Dump_Result_List 41>32 41>50 41>73 91b14 108l8 108t24 126s7 -41p32 File{27|37P12} 91b32 98r20 105r23 -41r50 L{25|51R9[33|73]} 91b50 95r28 -41a73 Prefix{string} 91b73 105r42 -44U14 Put_Measure[35|58] 205s10 229s10 36|69b14 -47U14 Report_Test 47>27 47>45 47>65 105s10 214b14 279l8 279t19 -47p27 File{27|37P12} 214b27 217r12 218r12 219r12 222r15 223r15 227r15 229r23 -. 230r15 233r17 236r18 237r20 238r18 239r15 240r15 241r15 242r15 243r20 246r18 -. 247r20 250r21 251r23 252r23 256r21 257r23 270r27 271r29 277r20 -47r45 Test{33|62R9} 214b45 219r18 221r10 223r21 226r10 228r28 235r10 237r26 -. 240r21 242r30 245r13 247r26 249r13 252r29 255r13 260r38 262r30 264r31 265r30 -. 271r35 -47a65 Prefix{string} 214b65 217r18 -51U22 Get 51>27 51=39 121s7 -51r27 R{33|40R9} -51r39 L{25|51R9[33|73]} -52a7 Label{string} 126r34 -53a7 Color{string} 123r21 -54u14 Report_Tests 55>8 56>8 57>8 114b14 131l8 131t20 141r33 150r33 159r33 -55r8 Engine{30|35R9} 115b8 122r10 128r10 -56c8 R<33|40R9> 116b8 121r20 -57p8 File{27|37P12} 117b8 123r15 126r25 129r15 -60a4 ANSI_Def{string} 129r21 -61a4 ANSI_Green{string} 141r64 -62a4 ANSI_Purple{string} 150r65 -63a4 ANSI_Red{string} 159r64 -82i11 J{integer} -95r7 C{25|53R9[33|73]} 97r23 104r26 105r38 106m16 106r16 -119r7 S{25|51R9[33|73]} 121m24 121r24 126r31 -141U17 Internal[54] 114b14 143s7 -150U17 Internal[54] 114b14 152s7 -159U17 Internal[54] 114b14 161s7 -173p7 File{21|67P9} 187r17 188r12 189r12 190r17 191r12 192r12 193r17 194r12 -. 195r12 196r17 197r12 198r12 199r17 204r15 205r23 206r20 -174i7 S_Count{integer} 192r18 -175i7 F_Count{integer} 195r18 -176i7 E_Count{integer} 198r18 -177o7 T{35|42O9} 202m10 205r29 -215o7 T{35|42O9} 228m10 229r29 -260i16 From{natural} 262r22 263r25 271r57 272m19 -260i22 To{natural} 263m19 264r25 265r52 267m22 267r28 271r65 272r27 -X 33 aunit-test_results.ads -40R9*Result 30|45r39 49r40 51r42 53r43 31|51r31 56r17 116r17 121r12 139r17 -. 148r17 157r17 170r24 33|144e14 -45p7*Message{26|36P9} 31|237r39 -46p7*Source_Name{26|36P9} 31|240r34 -47i7*Line{natural} 31|242r43 -49P9*Test_Failure_Access(44R9) -54p7*Exception_Name{26|36P9} 31|247r37 -55p7*Exception_Message{26|36P9} 31|249r24 252r40 -56p7*Traceback{26|36P9} 31|255r24 260r49 262r41 264r42 265r41 271r46 -58P9*Test_Error_Access(53R9) -62R9*Test_Result 31|47r52 214r52 33|68e14 -63p7*Test_Name{26|36P9} 31|219r23 -64p7*Routine_Name{26|36P9} 31|221r15 223r26 -65p7*Failure{49P9} 31|235r15 237r31 240r26 242r35 -66p7*Error{58P9} 31|245r18 247r31 249r18 252r34 255r18 260r43 262r35 264r36 -. 265r35 271r40 -67r7*Elapsed{35|37R9} 31|226r15 228r33 -73K12*Result_Lists[25|49] 31|41r54 51r50 91r54 93r11 119r11 -102V13*Error_Count{24|20I9} 31|176R46 -105U14*Errors 31|159r47 -109V13*Failure_Count{24|20I9} 31|175R46 -112U14*Failures 31|150r47 -115V13*Elapsed{35|37R9} 31|201R10 202R28 -121V13*Success_Count{24|20I9} 31|174R46 -124U14*Successes 31|141r47 -130V13*Test_Count{24|20I9} 31|189R27 -X 35 aunit-time_measure.ads -35K15*Time_Measure 31|33w12 33r36 201r25 226r26 35|71e23 -42O9*AUnit_Duration 31|177r11 215r11 -44r4*Null_Time{37R9} 31|201r38 226r39 -53V13*Get_Measure{42O9} 31|202s15 228s15 -58u14*Gen_Put_Measure 31|44r33 -X 37 interfac.ads -57I9*Integer_64 -X 40 s-arit64.ads -59I12*Int64{37|57I9} -92V13*Multiply_With_Ovflo_Check64{59I12} 96i22 - diff --git a/source/tests/obj/aunit-reporter-text.o b/source/tests/obj/aunit-reporter-text.o deleted file mode 100644 index 5516a285438ae42d858264ecb7055bbe91df6582..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25904 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 ReC0Pcc!kocEM5A`|1VErG)Vve diff --git a/source/tests/obj/aunit-reporter.adb.stderr b/source/tests/obj/aunit-reporter.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/aunit-reporter.adb.stdout b/source/tests/obj/aunit-reporter.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/aunit-reporter.ali b/source/tests/obj/aunit-reporter.ali deleted file mode 100644 index 89bf7a6..0000000 --- a/source/tests/obj/aunit-reporter.ali +++ /dev/null @@ -1,112 +0,0 @@ -V "GNAT Lib v14" -A -gnatA -A -gnat2012 -A -mtune=generic -A -march=x86-64 -P ZX - -RN -RV NO_DISPATCH -RV NO_DISPATCHING_CALLS -RV NO_IMPLICIT_CONDITIONALS -RV NO_STANDARD_STORAGE_POOLS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_ELABORATION_CODE - -U aunit.reporter%b aunit-reporter.adb bd1125e3 OO PK -Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali -W aunit%s aunit.adb aunit.ali - -U aunit.reporter%s aunit-reporter.ads 7beb347d EE OO PK -Z ada.exceptions%s a-except.adb a-except.ali -Z ada.streams%s a-stream.adb a-stream.ali -Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali -Z ada.tags%s a-tags.adb a-tags.ali -W aunit%s aunit.adb aunit.ali -W aunit.io%s aunit-io.ads aunit-io.ali -W aunit.options%s aunit-options.ads aunit-options.ali -W aunit.test_results%s aunit-test_results.adb aunit-test_results.ali -Z system%s system.ads system.ali -Z system.put_images%s s-putima.adb s-putima.ali -Z system.stream_attributes%s s-stratt.adb s-stratt.ali - -D ada.ads 20240801081713 76789da1 ada%s -D a-calend.ads 20240801081713 158a5463 ada.calendar%s -D a-except.ads 20240801081713 e7970cd9 ada.exceptions%s -D a-finali.ads 20240801081713 bf4f806b ada.finalization%s -D a-inteio.ads 20240801081713 f64b89a4 ada.integer_text_io%s -D a-ioexce.ads 20240801081713 40018c65 ada.io_exceptions%s -D a-stream.ads 20240801081713 119b8fb3 ada.streams%s -D a-string.ads 20240801081713 90ac6797 ada.strings%s -D a-sttebu.ads 20240801081713 f1ad67a2 ada.strings.text_buffers%s -D a-stuten.ads 20240801081713 c6ced0ae ada.strings.utf_encoding%s -D a-tags.ads 20240801081713 9eaa38c6 ada.tags%s -D a-textio.ads 20240801081713 34ef47de ada.text_io%s -D a-tiinio.ads 20240801081713 76699c8f ada.text_io.integer_io%s -D a-unccon.ads 20240801081713 0e9b276f ada.unchecked_conversion%s -D ada_containers.ads 20221219210842 11329e00 ada_containers%s -D ada_containers-aunit_lists.ads 20221219210842 d9ebc89a ada_containers.aunit_lists%s -D aunit.ads 20221219210842 76cdf7c6 aunit%s -D aunit-io.ads 20221219210842 fb5ed18b aunit.io%s -D aunit-options.ads 20221219210842 6e5a02a6 aunit.options%s -D aunit-reporter.ads 20221219210842 2c6ff74a aunit.reporter%s -D aunit-reporter.adb 20221219210842 917ed2a9 aunit.reporter%b -D aunit-test_filters.ads 20221219210842 f10b2127 aunit.test_filters%s -D aunit-test_results.ads 20221219210842 b44de7dc aunit.test_results%s -D aunit-tests.ads 20221219210842 1da11d49 aunit.tests%s -D aunit-time_measure.ads 20221219210842 d9c247b0 aunit.time_measure%s -D interfac.ads 20240801081713 9111f9c1 interfaces%s -D i-cstrea.ads 20240801081713 ffd01b9d interfaces.c_streams%s -D system.ads 20240801081714 14286b0f system%s -D s-crtl.ads 20240801081713 beb39b9e system.crtl%s -D s-exctab.ads 20240801081713 91bef6ef system.exception_table%s -D s-ficobl.ads 20240801081713 dc5161d4 system.file_control_block%s -D s-finmas.ads 20240801081713 28987ac5 system.finalization_masters%s -D s-finroo.ads 20240801081713 4ff27390 system.finalization_root%s -D s-parame.ads 20240801081713 3597fc11 system.parameters%s -D s-pooglo.ads 20240801081713 91708d21 system.pool_global%s -D s-putima.ads 20240801081713 17291fe4 system.put_images%s -D s-secsta.ads 20240801081713 578279f5 system.secondary_stack%s -D s-soflin.ads 20240801081713 df77073e system.soft_links%s -D s-stache.ads 20240801081713 0b81c1fe system.stack_checking%s -D s-stalib.ads 20240801081713 1c9580f6 system.standard_library%s -D s-stoele.ads 20240801081713 ccded4e8 system.storage_elements%s -D s-stopoo.ads 20240801081713 e9fa2dd8 system.storage_pools%s -D s-stratt.ads 20240801081713 a1861007 system.stream_attributes%s -D s-traent.ads 20240801081713 c81cbf8c system.traceback_entries%s -D s-unstyp.ads 20240801081713 fa2a7f59 system.unsigned_types%s -D s-wchcon.ads 20240801081714 d9032363 system.wch_con%s -G a e -G c Z s b [set_file aunit__reporter 40 14 none] -G c Z s s [reporterDA aunit__reporter 53 9 none] -G c Z s s [reporterDF aunit__reporter 53 9 none] -G c Z s s [reporterIP aunit__reporter 53 9 none] -X 12 a-textio.ads -67P9*File_Type -195P9*File_Access(67P9) -X 17 aunit.ads -34K9*AUnit 48e10 20|32r6 33r6 33r30 34r6 34r30 36r9 42r16 55r17 55r41 58r5 -. 21|32r14 36r16 41r5 -X 18 aunit-io.ads -35K15*IO 59e13 20|32w12 42r22 55r23 55r47 21|36r22 -39P12*File_Access{12|195P9} 20|42r25 55r26 21|36r25 -41V13*Standard_Output=42:45{12|195P9} 20|55s50 -X 19 aunit-options.ads -34K15*Options 50e18 20|33w12 33r36 -36R9*AUnit_Options 41e14 20|47r17 -44r4*Default_Options{36R9} 20|47r34 -X 20 aunit-reporter.ads -36K15*Reporter 17|34k9 20|53E9 58l11 58e19 21|32b20 41l11 41t19 -38H9*Reporter 40p14 41r23 44p14 45r17 53c9 56e17 21|35r23 -40U14*Set_File 41=7 42>7 21|34b14 39l8 39t16 -41r7 Engine{38R9} 21|35b7 38m7 -42p7 Value{18|39P12} 21|36b7 38r22 -44x14*Report 45>7 46=7 47>7 -45r7 Engine{38R9} -46c7 R<23|40R9> -47r7 Options{19|36R9} -55p10*File{18|39P12} 21|38m14 -X 23 aunit-test_results.ads -38K15*Test_Results 20|34w12 34r36 23|146e23 -40R9*Result 20|46r24 23|144e14 - diff --git a/source/tests/obj/aunit-reporter.o b/source/tests/obj/aunit-reporter.o deleted file mode 100644 index 26480e6c497cccc0c75f48fa3737384a8d2a92e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5640 zcmbuCU2GIp6oBux{8WXu{AjA6uEr2Fu$GEQ4c0AX%T%yzYAcX{!)!Y&3v{>4%!Za= ztf?rIjj<1!^nt`iUwHHdLkL2Fs5CLAPwImv@L(jS4>ci?L`Xg7&N(}myW1_%lg!+E zzw>kd&fdBEUSel^RU{%yY$T46y%~$I_o!B4D`Tgkz2xa)+4BnfaHT-h}SQI{!t->kU zYQE|<8ii8jFDRnMgjII9ybcO zGgn4#MvPOFUd_%z5=IqYd@Dg@Il#xuh!c7 z53AaiE;7`|Aa3H2wDgRH|B>(inB404bc@x}VXq5dLr zkeBhr`higYD{_$M@WpyF)Zax8@(#XOU$s{ntOm527HzKiZJ9^EkMyl-{F7n-CrQ6W z)gKS_XGmYG>N`UHMbbZ|>Vx4UDJ$r*K>RgZPFY>dlKZvQGMnyam^aH6dzmA^Fb$W1 zeVoQdX(@I9uZKsMqW~}t`^&WkHbT6e9Apkb{d0KA#rc-(J+hZM1@)VA*yC>v`yD5H znPX6Y5_q}zuaW%}*~^@R`d;FTphS_m24$A`3&drP0sn~jY2rNJFNu$7{4(*g#9Ofw zkl%>^NnGX-@V}wGOjN_~J`hril>o}k>viC`4r|Ck<{G%}Cccrl%rW3OXyg742jNAM z%8!AUi~q$O9KYl^P8MiN`9bo9Vl%b*JpY4uT;o*`0>{JSz;6voRPyTL_kiQHko^s5 zCBz;oQ^YsZg0X$M510IwnI?bC!dgc%Fb_#s>lRj@WtyHn=$V9p4+EF$4+M;9~{%O(j{FaN=Pw-_s*@VkkN^zO%(=g zG`&(m+tsugCSmq;w$0r&+K9*K_lb8eywgOfy_QP6+bn|T?rb2tiK9LIq>HkTYRvhZ z$P&jm55dE6K2i813ZGQ?Qibye72_;X_&qvL@O*nz;k9(&@pz)3Ls>x_s{M?@ajjYIPzB@QezDXb0KtO4h1jlFIDfN| zHz>Rw0ZCNh%NRnrR^iHDdC{nFUSo9Q?-8n>froX5Vz2T&3Rm;tfWrCCkMX1U0>SO4 z6p-z>e21LxX9qOS_p@P*^F3@_5re*uzMHC|7)bLDI zB~FblHA#SJO@U_zo?UTxRB6D&5`@fw0nH%_wyJD^M!ETq(P46f{Bi#3dCK!|0gfh(@Tk&= zK|xjoMe)tU;c`1@xL!1ZN*npB4C}fren0X2)aP%IzdkN~{c{vk_a7wxU$hQ&|HI&q zrg3;w8KjL*l0U8=p6Be(>xXK+Z;X?qgf=KKFdeZU-5>7&dhP%cW2gWb)|A?G;J-+D P|LgP-7?M%Km+t>BiAHve diff --git a/source/tests/obj/aunit-run.adb.stderr b/source/tests/obj/aunit-run.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/aunit-run.adb.stdout b/source/tests/obj/aunit-run.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/aunit-run.ali b/source/tests/obj/aunit-run.ali deleted file mode 100644 index 14de119..0000000 --- a/source/tests/obj/aunit-run.ali +++ /dev/null @@ -1,147 +0,0 @@ -V "GNAT Lib v14" -A -gnatA -A -gnat2012 -A -mtune=generic -A -march=x86-64 -P ZX - -RN -RV NO_DISPATCH -RV NO_DISPATCHING_CALLS -RV NO_DEFAULT_INITIALIZATION -RV NO_IMPLEMENTATION_PRAGMAS - -U aunit.run%b aunit-run.adb 4d723195 NE OO PK -Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali -W aunit%s aunit.adb aunit.ali -W aunit.test_suites%s aunit-test_suites.adb aunit-test_suites.ali -W aunit.time_measure%s aunit-time_measure.adb aunit-time_measure.ali - -U aunit.run%s aunit-run.ads dc46304b BN EE NE OO PK -Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali -W aunit%s aunit.adb aunit.ali -W aunit.options%s aunit-options.ads aunit-options.ali -W aunit.reporter%s aunit-reporter.adb aunit-reporter.ali -W aunit.test_results%s aunit-test_results.adb aunit-test_results.ali -W aunit.test_suites%s aunit-test_suites.adb aunit-test_suites.ali - -D ada.ads 20240801081713 76789da1 ada%s -D a-calend.ads 20240801081713 158a5463 ada.calendar%s -D a-except.ads 20240801081713 e7970cd9 ada.exceptions%s -D a-finali.ads 20240801081713 bf4f806b ada.finalization%s -D a-inteio.ads 20240801081713 f64b89a4 ada.integer_text_io%s -D a-ioexce.ads 20240801081713 40018c65 ada.io_exceptions%s -D a-stream.ads 20240801081713 119b8fb3 ada.streams%s -D a-string.ads 20240801081713 90ac6797 ada.strings%s -D a-sttebu.ads 20240801081713 f1ad67a2 ada.strings.text_buffers%s -D a-stuten.ads 20240801081713 c6ced0ae ada.strings.utf_encoding%s -D a-tags.ads 20240801081713 9eaa38c6 ada.tags%s -D a-textio.ads 20240801081713 34ef47de ada.text_io%s -D a-tiinio.ads 20240801081713 76699c8f ada.text_io.integer_io%s -D a-unccon.ads 20240801081713 0e9b276f ada.unchecked_conversion%s -D ada_containers.ads 20221219210842 11329e00 ada_containers%s -D ada_containers-aunit_lists.ads 20221219210842 d9ebc89a ada_containers.aunit_lists%s -D aunit.ads 20221219210842 76cdf7c6 aunit%s -D aunit-assertions.ads 20221219210842 b7f9ecd6 aunit.assertions%s -D aunit-io.ads 20221219210842 fb5ed18b aunit.io%s -D aunit-options.ads 20221219210842 6e5a02a6 aunit.options%s -D aunit-reporter.ads 20221219210842 2c6ff74a aunit.reporter%s -D aunit-run.ads 20221219210842 34d20999 aunit.run%s -D aunit-run.adb 20221219210842 c843a398 aunit.run%b -D aunit-simple_test_cases.ads 20221219210842 4111c32f aunit.simple_test_cases%s -D aunit-test_filters.ads 20221219210842 f10b2127 aunit.test_filters%s -D aunit-test_results.ads 20221219210842 b44de7dc aunit.test_results%s -D aunit-test_suites.ads 20221219210842 6821dc24 aunit.test_suites%s -D aunit-tests.ads 20221219210842 1da11d49 aunit.tests%s -D aunit-time_measure.ads 20221219210842 d9c247b0 aunit.time_measure%s -D gnat.ads 20240801081713 b5988c27 gnat%s -D g-souinf.ads 20240801081713 470146ee gnat.source_info%s -D interfac.ads 20240801081713 9111f9c1 interfaces%s -D i-cstrea.ads 20240801081713 ffd01b9d interfaces.c_streams%s -D system.ads 20240801081714 14286b0f system%s -D s-crtl.ads 20240801081713 beb39b9e system.crtl%s -D s-exctab.ads 20240801081713 91bef6ef system.exception_table%s -D s-ficobl.ads 20240801081713 dc5161d4 system.file_control_block%s -D s-finmas.ads 20240801081713 28987ac5 system.finalization_masters%s -D s-finroo.ads 20240801081713 4ff27390 system.finalization_root%s -D s-parame.ads 20240801081713 3597fc11 system.parameters%s -D s-pooglo.ads 20240801081713 91708d21 system.pool_global%s -D s-putima.ads 20240801081713 17291fe4 system.put_images%s -D s-secsta.ads 20240801081713 578279f5 system.secondary_stack%s -D s-soflin.ads 20240801081713 df77073e system.soft_links%s -D s-stache.ads 20240801081713 0b81c1fe system.stack_checking%s -D s-stalib.ads 20240801081713 1c9580f6 system.standard_library%s -D s-stoele.ads 20240801081713 ccded4e8 system.storage_elements%s -D s-stopoo.ads 20240801081713 e9fa2dd8 system.storage_pools%s -D s-stratt.ads 20240801081713 a1861007 system.stream_attributes%s -D s-traent.ads 20240801081713 c81cbf8c system.traceback_entries%s -D s-unstyp.ads 20240801081713 fa2a7f59 system.unsigned_types%s -D s-wchcon.ads 20240801081714 d9032363 system.wch_con%s -G a e -G c Z b b [run aunit__run 37 14 none] -G r c none [run aunit__run 37 14 none] [start_measure aunit__time_measure 47 14 none] -G r c none [run aunit__run 37 14 none] [run aunit__test_suites 52 14 none] -G r c none [run aunit__run 37 14 none] [stop_measure aunit__time_measure 50 14 none] -G r c none [run aunit__run 37 14 none] [set_elapsed aunit__test_results 99 14 none] -X 17 aunit.ads -34K9*AUnit 48e10 22|32r6 33r6 34r6 35r6 38r9 41r34 43r18 44r18 44r49 47r34 -. 49r18 50r25 51r18 51r49 59r34 61r18 62r18 62r49 65r5 23|32r6 33r6 33r29 -. 35r14 40r18 41r18 52r18 53r18 64r7 72r7 80r18 81r18 81r49 95r18 96r18 96r49 -. 112r18 113r25 114r18 114r49 121r5 -40E9*Status 40e37 22|63r14 23|42r22 54r22 84r17 97r14 100r17 116r17 -X 20 aunit-options.ads -34K15*Options 50e18 22|32w12 44r24 44r55 51r24 51r55 62r24 62r55 23|40r24 -. 52r24 81r24 81r55 96r24 96r55 114r24 114r55 -36R9*AUnit_Options 41e14 22|44r32 51r32 62r32 23|40r32 52r32 81r32 96r32 -. 114r32 -37b7*Global_Timer{boolean} 23|59r18 67r18 -44r4*Default_Options{36R9} 22|44r63 51r63 62r63 23|81r63 96r63 114r63 -X 21 aunit-reporter.ads -36K15*Reporter 58e19 22|33w12 43r24 49r24 61r24 23|41r24 53r24 72r13 80r24 -. 95r24 112r24 -38H9*Reporter 56e17 22|43r33 49r33 61r33 23|41r33 53r33 80r33 95r33 112r33 -44x14*Report 23|72R22 -X 22 aunit-run.ads -38K15*Run 17|34k9 22|65l11 65e14 23|35b20 121l11 121t14 -41V21 Suite{27|44P9} 23|87s12 -42u14*Test_Runner 43>7 44>7 23|79b14 88l8 88t19 -43c7 Reporter<21|38R9> 23|80b7 87r37 -44r7 Options{20|36R9} 23|81b7 87r28 -47V21 Suite{27|44P9} 23|118s12 -48u14*Test_Runner_With_Results 49>7 50=7 51>7 23|111b14 119l8 119t32 -49c7 Reporter<21|38R9> 23|112b7 118r37 -50c7 Results<26|40R9> 23|113b7 118m19 -51r7 Options{20|36R9} 23|114b7 118r28 -59V21 Suite{27|44P9} 23|103s12 -60v13*Test_Runner_With_Status 61>7 62>7 23|94b13 105l8 105t31 -61c7 Reporter<21|38R9> 23|95b7 103r37 -62r7 Options{20|36R9} 23|96b7 103r28 -X 23 aunit-run.adb -37U14 Run 38>7 39=7 40>7 41>7 42<7 49b14 73l8 73t11 87s7 103s7 118s7 -38p7 Suite{27|44P9} 50b7 64r30 -39c7 Results<26|40R9> 51b7 64m46 69m36 72m40 -40r7 Options{20|36R9} 52b7 59r10 64r37 67r10 72r49 -41c7 Reporter<21|38R9> 53b7 72r30 -42e7 Outcome{17|40E9} 54b7 64m55 -56r7 Time{29|37R9} 60m38 60r38 68m37 68r37 69r45 -83r7 Results{26|40R9} 86m27 86r27 87m19 87r19 -84e7 Outcome{17|40E9} 87m47 -99r7 Results{26|40R9} 102m27 102r27 103m19 103r19 -100e7 Outcome{17|40E9} 103m47 104r14 -116e7 Outcome{17|40E9} 118m47 -X 26 aunit-test_results.ads -38K15*Test_Results 22|34w12 50r31 23|39r25 51r25 69r10 83r17 86r7 99r17 102r7 -. 113r31 26|146e23 -40R9*Result 22|50r44 23|39r38 51r38 83r30 99r30 113r44 26|144e14 -99U14*Set_Elapsed 23|69R23 -133U14*Clear 23|86s20 102s20 -X 27 aunit-test_suites.ads -41K15*Test_Suites 22|35w12 41r40 47r40 59r40 23|33w12 33r35 64r13 27|86e22 -44P9*Access_Test_Suite(43R9) 22|41r52 47r52 59r52 23|38r18 50r18 -52U14*Run 23|64R25 -X 29 aunit-time_measure.ads -35K15*Time_Measure 23|32w12 56r17 60r10 68r10 29|71e23 -37R9*Time 23|56r30 29|40e14 -47U14*Start_Measure 23|60s23 -50U14*Stop_Measure 23|68s23 - diff --git a/source/tests/obj/aunit-run.o b/source/tests/obj/aunit-run.o deleted file mode 100644 index 0c1d7bd31fe79b3ace8f327b50ef98f341e5c716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmbtU&1(}u6n~pmTeY8lK(T^3iGp3Mcu)_LG^`z^ky?lc5w_cO?T02Qn^|aupcpGI zd(eNwTThacE(lt^n43BFBIe-5yRg2uJCjb9)QgWyX5R1p-p9N*$x~zQW=hjQiUv1e zUy~?6re8Tn#|(_XFcg^ggVle{Gq2WSp4;@A%=^kbBVb-(cg`~!qwkF1MZhPSU)W>5 z(PrLv=6z~Y2&C;Ht%;X-=)ihfzYL?u&O z)3^@dLKCDw3zSylEMi^GHeJ_5T;kRO59q) zojdWqDo>96*wVSZ$w6PXxCQ!BwFTz4bt6J$p}ThBWdfpGlG-2sCOA$s?3WfFADG&?vzLV z5+($GPT=ZH$aJ5`D9L5Uz2?6o z1|sK7^FM-1`b(VBBy%GKZIQo43d#^J%9He`n912A1c321 4|101b13 109l8 109t14 -44a21 S{string} 4|101b21 102r55 104r16 105r19 105r35 -45V13*Message_Alloc{36P9} 45>28 4|67b13 83l8 83t21 102s40 -45i28 Length{natural} 4|67b28 78r21 80r33 -46U14*Message_Free 46=28 4|89b14 95l8 95t20 -46p28 Msg{36P9} 4|89b28 91r10 92r35 93m10 -X 4 aunit.adb -45R9 Bounds 49e4 52r37 78r31 81r56 -46i7*First{natural} 79m25 -47i7*Last{natural} 80m25 -52P9 Bounds_Access(45R9) 56r23 71r26 73r10 -54R9 Fat_Pointer 58e4 69r10 74r13 -55m7*Address{6|67M9} 81m11 -56p7*Bound_Address{52P9} 76m11 79r11 80r11 81r38 -68V16 To_Message[2|20]{3|36P9} 82s14 -70V16 To_Bounds_Access[2|20]{52P9} 76s28 -72V16 To_Address[2|20]{6|67M9} 81s22 -74r7 Ret{54R9} 76m7 79m7 79r7 80m7 80r7 81m7 81r34 82r26 -102p7 Ptr{3|36P9} 105r10 108r14 -104i11 J{integer} 105r15 105r38 -X 5 aunit-memory.ads -40K15*Memory 4|34w12 34r42 77r16 92r16 5|53e17 -42M9*size_t 4|78r13 -44V13*AUnit_Alloc{6|67M9} 4|77s23 -46U14*AUnit_Free 4|92s23 -X 6 system.ads -37K9*System 4|33r6 33r36 35w6 49r22 50r33 55r23 58r22 59r33 71r10 73r25 6|155e11 -67M9*Address 4|55r30 71r17 73r32 -92e4*Default_Bit_Order{91E9} 4|49r29 50r40 58r29 59r40 -X 7 s-stoele.ads -40K16*Storage_Elements 4|33w13 33r43 7|90e28 -67V14*"+"{6|67M9} 4|81r53 - diff --git a/source/tests/obj/aunit.o b/source/tests/obj/aunit.o deleted file mode 100644 index 71cf833cc879f5e0708d2f434a0a127cf32b29ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3240 zcmbtWO>7%Q6rN3-CMo%a2o<$R7D6bNz)DdMN%@O$w;hYnh8Uk{wApMnKQy+(dJPE* zZG}}}wIC`^MdFYHAPyXIsv-`-D1|s66@-cuRTd|Z3N<3-KrMt6-kY7tuE)-ar+8-G z_rCYDZ+?^u>d46^MIk~I@-*=^ffCZ+?yra0a+q|HPLiU|uhdnm;~Q+XsaDYl$PRT= z0xeX+&Ks3m%;JE>NmX67La)$5v5h*L!cfIP^inb3y?zF`Un1YL0lvw~@)@Ib3^!GA zMnjCj;$jJ28Cx5dS#^a<4|S^4xkH`e7Z{y7-%?%><6bJ-N7zCXwW;nfp7dQ?>}zAG z*o#S8s0=m=x(Z*p2C>%MLpYvrCql8I^72Co;~M>t8sAapI(5FMU+q3aBRlkgf1no% zE&NDsA6&zXth^E9Hu!jdq9R8vLgbP&zJ08Xclri^3iaFV1+}dF7K2=# zSE@t{*9KpTosEr;Z(yx^qUSSnc2u95+(T*?$y7Y9CX**)iILQpN{G_dO~|Qu{CK$k z)ag_teDqlK@#p{{A#e-BuLXW!AWcLmA|^!Py0{B{+@QQZMwG=K<#0!9+hs5w0UUoQ z2XTmX^}N*-?>wLa0aUa-i8#ppI0*X-zWprXAaCO!>`iYn0{Sl_4uVJCw?D`14+HcO z;vna+SmB>|ule0jp{03T@e(mc{eUhZa%Z>RLP&GNmjH3>TCLmz>b(Iz>jhwkIWBb8 z1HfPl7(Wa%3j21LVarGl0+LLC-UvSrIOhF~^I4Bz{lPx`&pDqxQ?O<|gBkBzqxd)X z!S4dz3!Mmp_sG#c>%j_;i{|3I^qrcGw^nW5X`ih&RR>F<~e#MO`FL;0Lz#)jdNOD)nbMLzFHi0-_eUUZJDNz z1%m}G(^)I6+oUe?nO99~dOrIak6mX^WTwo;n#8I|ma}y`pG(%Nr?FL!2Kt4k?q7H# zQ1G0fU>{rICvb6>@VxoELx>JK3i9z@3O=466q#S};5t5@2NaBhJ|fQV2!h}}z`SDL z=kbDpApZdT1b>C&a^6n@{9v6w?Zdwr;CBS#|FIAMuYLHf`~b`KbZ{K&?+nBb!x{z6 z;_Rb7j01?kF&@eU8+|;?^@|cN?(vF*i~CBVxuvwNPr__l-aIQ-mN~CSZFA8k(J9^5 zNpv!oBT*~sDMmJ(HZx$$WNkAFZ~kL&>fjD|`b;JtU9hqXre!aI4@NR)wP{OFo4k_$ zH-*6+TaRZTD8pPaf=vWWQrSC-dm#ASjjZs1SNOi-`NJii9h5`fL>_?|@!*|6)5koK zoKM#A9%4+{|5KTWK|y#qo&w`hj>+^@4jkKKdJA!X1U$t3#rrAnU%3B$0^qaAFXm^t zzeFQ<<$@%C!5@PKzB4kt$^p49(SPCpGAytb*}tDRv?z#tmi_S*HroF|PF&=Exc~UC zy6_kK-zYb_+~WDg`N1~?^T_@fQ{H=k$VGgVK^_#1_SCxl?*+V(|0+*pb3ZXj;mCio Cr6eE# diff --git a/source/tests/obj/test_harness.adb.stderr b/source/tests/obj/test_harness.adb.stderr deleted file mode 100644 index a1c7b91..0000000 --- a/source/tests/obj/test_harness.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -test_harness.adb:3:06: error: file "arch_rv64_test_suite.ads" does not contain expected unit -test_harness.adb:3:06: error: expected unit "Arch_Rv64_Test_Suite (spec)" -test_harness.adb:3:06: error: found unit "Composite_Suite (spec)" diff --git a/source/tests/obj/test_harness.adb.stdout b/source/tests/obj/test_harness.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/test_harness.ali b/source/tests/obj/test_harness.ali deleted file mode 100644 index 0dd3cb7..0000000 --- a/source/tests/obj/test_harness.ali +++ /dev/null @@ -1,113 +0,0 @@ -V "GNAT Lib v14" -M P W=b -A -gnatA -A -gnat2012 -A -mtune=generic -A -march=x86-64 -P SS ZX - -RN -RV NO_DISPATCH -RV NO_IO -RV NO_DEFAULT_INITIALIZATION -RV NO_IMPLEMENTATION_PRAGMAS - -U test_harness%b test_harness.adb b04a62b6 NE OO SU -W ada%s ada.ads ada.ali -Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali -W ada.text_io%s a-textio.adb a-textio.ali -W aunit%s aunit.adb aunit.ali -W aunit.reporter%s aunit-reporter.adb aunit-reporter.ali -W aunit.reporter.text%s aunit-reporter-text.adb aunit-reporter-text.ali -W aunit.run%s aunit-run.adb aunit-run.ali -W rv64_test_suite%s rv64_test_suite.ads rv64_test_suite.ali - -D ada.ads 20240801081713 76789da1 ada%s -D a-calend.ads 20240801081713 158a5463 ada.calendar%s -D a-except.ads 20240801081713 e7970cd9 ada.exceptions%s -D a-finali.ads 20240801081713 bf4f806b ada.finalization%s -D a-inteio.ads 20240801081713 f64b89a4 ada.integer_text_io%s -D a-ioexce.ads 20240801081713 40018c65 ada.io_exceptions%s -D a-stream.ads 20240801081713 119b8fb3 ada.streams%s -D a-string.ads 20240801081713 90ac6797 ada.strings%s -D a-sttebu.ads 20240801081713 f1ad67a2 ada.strings.text_buffers%s -D a-stuten.ads 20240801081713 c6ced0ae ada.strings.utf_encoding%s -D a-tags.ads 20240801081713 9eaa38c6 ada.tags%s -D a-textio.ads 20240801081713 34ef47de ada.text_io%s -D a-tiinio.ads 20240801081713 76699c8f ada.text_io.integer_io%s -D a-unccon.ads 20240801081713 0e9b276f ada.unchecked_conversion%s -D ada_containers.ads 20221219210842 11329e00 ada_containers%s -D ada_containers-aunit_lists.ads 20221219210842 d9ebc89a ada_containers.aunit_lists%s -D aunit.ads 20221219210842 76cdf7c6 aunit%s -D aunit-assertions.ads 20221219210842 b7f9ecd6 aunit.assertions%s -D aunit-io.ads 20221219210842 fb5ed18b aunit.io%s -D aunit-options.ads 20221219210842 6e5a02a6 aunit.options%s -D aunit-reporter.ads 20221219210842 2c6ff74a aunit.reporter%s -D aunit-reporter-text.ads 20221219210842 3a193bce aunit.reporter.text%s -D aunit-run.ads 20221219210842 34d20999 aunit.run%s -D aunit-run.adb 20221219210842 c843a398 aunit.run%b -D aunit-simple_test_cases.ads 20221219210842 4111c32f aunit.simple_test_cases%s -D aunit-test_filters.ads 20221219210842 f10b2127 aunit.test_filters%s -D aunit-test_results.ads 20221219210842 b44de7dc aunit.test_results%s -D aunit-test_suites.ads 20221219210842 6821dc24 aunit.test_suites%s -D aunit-tests.ads 20221219210842 1da11d49 aunit.tests%s -D aunit-time_measure.ads 20221219210842 d9c247b0 aunit.time_measure%s -D gnat.ads 20240801081713 b5988c27 gnat%s -D g-souinf.ads 20240801081713 470146ee gnat.source_info%s -D interfac.ads 20240801081713 9111f9c1 interfaces%s -D i-cstrea.ads 20240801081713 ffd01b9d interfaces.c_streams%s -D rv64_test_suite.ads 20250223012229 9e3e8a36 rv64_test_suite%s -D system.ads 20240801081714 14286b0f system%s -D s-crtl.ads 20240801081713 beb39b9e system.crtl%s -D s-exctab.ads 20240801081713 91bef6ef system.exception_table%s -D s-ficobl.ads 20240801081713 dc5161d4 system.file_control_block%s -D s-finmas.ads 20240801081713 28987ac5 system.finalization_masters%s -D s-finroo.ads 20240801081713 4ff27390 system.finalization_root%s -D s-parame.ads 20240801081713 3597fc11 system.parameters%s -D s-pooglo.ads 20240801081713 91708d21 system.pool_global%s -D s-putima.ads 20240801081713 17291fe4 system.put_images%s -D s-retsta.ads 20240801081713 0f6b06cb system.return_stack%s -D s-secsta.ads 20240801081713 578279f5 system.secondary_stack%s -D s-soflin.ads 20240801081713 df77073e system.soft_links%s -D s-stache.ads 20240801081713 0b81c1fe system.stack_checking%s -D s-stalib.ads 20240801081713 1c9580f6 system.standard_library%s -D s-stoele.ads 20240801081713 ccded4e8 system.storage_elements%s -D s-stopoo.ads 20240801081713 e9fa2dd8 system.storage_pools%s -D s-stratt.ads 20240801081713 a1861007 system.stream_attributes%s -D s-traent.ads 20240801081713 c81cbf8c system.traceback_entries%s -D s-unstyp.ads 20240801081713 fa2a7f59 system.unsigned_types%s -D s-wchcon.ads 20240801081714 d9032363 system.wch_con%s -D test_harness.adb 20250223012249 14509d09 test_harness%b -G a e -G c Z b b [test_harness standard 6 11 none] -G r i none [test_harness standard 6 11 none] [test_runner aunit__run 42 14 none] -G r s text_reporter [test_harness standard 6 11 none] [text_reporterIP aunit__reporter__text 62 9 none] -G r s result [test_harness standard 6 11 none] [resultIP aunit__test_results 140 9 none] -G r c none [test_harness standard 6 11 none] [clear aunit__test_results 133 14 none] -G r c none [test_harness standard 6 11 none] [suite rv64_test_suite 4 13 none] -G r c none [test_harness standard 6 11 none] [run aunit__run 37 14 none] -X 1 ada.ads -16K9*Ada 20e8 56|4r6 10r4 -X 12 a-textio.ads -58K13*Text_IO 785e16 56|4w10 10r8 -565U14*Put_Line 56|10s16 -X 17 aunit.ads -34K9*AUnit 48e10 56|1r6 2r6 7r25 8r15 -X 21 aunit-reporter.ads -36K15*Reporter 58e19 56|1r12 8r21 -X 22 aunit-reporter-text.ads -33K24*Text 66e24 56|1w21 8r30 -35R9*Text_Reporter<21|38R9> 64e14 56|8r35 -X 23 aunit-run.ads -38K15*Run 65e14 56|2w12 7r31 -42u14*Test_Runner 56|7r35 -X 28 aunit-test_suites.ads -44P9*Access_Test_Suite(43R9) -X 35 rv64_test_suite.ads -3K9*RV64_Test_Suite 5e20 56|3w6 7r48 -4V13*Suite{28|44P9} 56|7r64 -X 56 test_harness.adb -6U11*Test_Harness 6b11 12l5 12t17 -7U14 Run[23|42] 24|79b14 56|11s4 -8r4 Reporter{22|35R9} 11r9 - diff --git a/source/tests/obj/test_harness.o b/source/tests/obj/test_harness.o deleted file mode 100644 index 751f9c69a98ca1a01e44baf9ee4c39ca14b4e73b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2376 zcmbtVO=uHA6rQBD^`|ZM4}>c0K}129SVUAr5@YNHqLkQpQr1nfHqmxB?9OTx#DgF% zv6zbx@Z!;f2l1x(2NhdAh@QlQ7eVmgp?Xpg;(N0*>2ygh`e5?j``-KBdpk3`xthrx zjmKg{N{k#LOP)jtSy-`TC%KsVlIw0^9Kq%2l@#e+98t;Xv)?3OB|CZJ;i z5{9A60_b|!x!B-l5kag;V2-EsTu7FBs{e^7sBY2Cm=&e?(L9e|` zq)w$ypPqx9yl>l8ds541Po#I9)Y6X4tQn@AxL9SSiZ)?+%+qz9@IBjxHOJEF1KRen z_8xY(KI4%?$ ze^Nuk*W>BIzIYWf2-ynILBv5E{E=}w+jFxwUgSxLcMOjCGI*&(cok zGYPMUKW#h24cw#QrbJaP`c2Y@xZ#PZL z8v=ms;Ida}yt{ap|G*oAa#+Fp6nsp<`xU&b;Bal*b#5v6Y6ZV7aKx~;lsm$Z_;%sn z7aDWdz>;%56nGr;fPz1Y;IfCN;K-4Z6b53rKjAy4xQaGPf5NvfXFf;-S_bdrZm4w*HMFHYjU>`hllue-`_+3C8|0Yz~vh-Am)!-5}4BPE#_ z2}I#M#PR)#&R-FU(Yd1Yp93zYM)^&_KLasUqI|rCoz7pwj|7P9kLSM%mgLLx@6;Q4 sKSlq2LgPD&C8K<-89jS|NJ4ck%x^RsqlXhivc0asj7P5=M^ diff --git a/source/tests/riscv64/Context_Test_Suite.adb b/source/tests/riscv64/Context_Test_Suite.adb index 7bb8820..7cca881 100644 --- a/source/tests/riscv64/Context_Test_Suite.adb +++ b/source/tests/riscv64/Context_Test_Suite.adb @@ -3,19 +3,19 @@ with CSR_Extension_Tests; with Core_Context_Tests; with FP_Context_Tests; with GP_Context_Tests; +with Success_Fork_Result_Tests; package body Context_Test_Suite is - use AUnit.Test_Suites; - Result : aliased Test_Suite; - - function Suite return Access_Test_Suite is + function Suite return AUnit.Test_Suites.Access_Test_Suite is + Result : AUnit.Test_Suites.Access_Test_Suite := AUnit.Test_Suites.New_Suite; begin - Add_Test (Result'Access, CSR_Extension_Tests.Test_Case'Access); - Add_Test (Result'Access, Core_Context_Tests.Test_Case'Access); - Add_Test (Result'Access, FP_Context_Tests.Test_Case'Access); - Add_Test (Result'Access, GP_Context_Tests.Test_Case'Access); - Add_Test (Result'Access, Success_Fork_Result_Tests.Test_Case'Access); - return Result'Access; + Result.Add_Test (GP_Context_Tests.Test_Case'Access); + Result.Add_Test (CSR_Extension_Tests.Test_Case'Access); + Result.Add_Test (FP_Context_Tests.Test_Case'Access); + Result.Add_Test (Core_Context_Tests.Test_Case'Access); + Result.Add_Test (Success_Fork_Result_Tests.Test_Case'Access); + return Result; end Suite; -end Context_Test_Suite; \ No newline at end of file + +end Context_Test_Suite; diff --git a/source/tests/riscv64/arch_rv64_test_suite.adb b/source/tests/riscv64/arch_rv64_test_suite.adb index cbbdb9a..68079df 100644 --- a/source/tests/riscv64/arch_rv64_test_suite.adb +++ b/source/tests/riscv64/arch_rv64_test_suite.adb @@ -1,18 +1,9 @@ --- Import tests and suites to run +with AUnit.Test_Suites; with Context_Test_Suite; -with AUnit.Tests; package body Arch_RV64_Test_Suite is - use Test_Suites; - - -- Here we dynamically allocate the suite using the New_Suite function - -- We use the 'Suite' functions provided in This_Suite and That_Suite - -- We also use Ada 2005 distinguished receiver notation to call Add_Test - - function Suite return Access_Test_Suite is - Result : Access_Test_Suite := AUnit.Test_Suites.New_Suite; + function Suite return AUnit.Test_Suites.Access_Test_Suite is begin - Result.Add_Test (Context_Test_Suite.Suite); - return Result; + return Context_Test_Suite.Suite; end Suite; -end Arch_RV64_Test_Suite; \ No newline at end of file +end Arch_RV64_Test_Suite; diff --git a/source/tests/riscv64/arch_rv64_test_suite.ads b/source/tests/riscv64/arch_rv64_test_suite.ads index e4a514d..ac35682 100644 --- a/source/tests/riscv64/arch_rv64_test_suite.ads +++ b/source/tests/riscv64/arch_rv64_test_suite.ads @@ -1,7 +1,5 @@ --- Composition package: -with AUnit; use AUnit; -with AUnit.Test_Suites; use AUnit.Test_Suites; +with AUnit.Test_Suites; package Arch_RV64_Test_Suite is - function Suite return Test_Suites.Access_Test_Suite; -end Arch_RV64_Test_Suite; \ No newline at end of file + function Suite return AUnit.Test_Suites.Access_Test_Suite; +end Arch_RV64_Test_Suite; diff --git a/source/tests/riscv64/test_harness.adb b/source/tests/riscv64/test_harness.adb index cb5bd28..597156c 100644 --- a/source/tests/riscv64/test_harness.adb +++ b/source/tests/riscv64/test_harness.adb @@ -4,9 +4,9 @@ with Arch_RV64_Test_Suite; with Ada.Text_IO; procedure Test_Harness is - procedure Run is new AUnit.Run.Test_Runner (Arch_RV64_Test_Suite.Suite); + procedure Run is new AUnit.Run.Test_Runner(Arch_RV64_Test_Suite.Suite); Reporter : AUnit.Reporter.Text.Text_Reporter; begin - Ada.Text_IO.Put_Line ("Running RISC-V Context Switch Tests..."); - Run (Reporter); -end Test_Harness; \ No newline at end of file + Ada.Text_IO.Put_Line("Running RISC-V Context Switch Tests..."); + Run(Reporter); +end Test_Harness; From da4d5a4c7b508af0e8d56b83911fdd05d5e1f155 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:27:18 -0500 Subject: [PATCH 72/99] updated .gitignore to exclude AUnit gprbuild directories bin and obj. --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 449a688..464a64d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,7 @@ # Ignore GNATprove tarball gnatprove-x86_64-linux-14.1.0-1.tar.gz + +#ignore AUnit build directories +/source/tests/bin/ +/source/tests/obj/ From 6724eb531856fd179aba0aabd9ba6fcbddb5d7cb Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:30:56 -0500 Subject: [PATCH 73/99] fixing gprbuild errors --- .../riscv64/{Context_Test_Suite.ads => context_test_suite.ads} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename source/tests/riscv64/{Context_Test_Suite.ads => context_test_suite.ads} (100%) diff --git a/source/tests/riscv64/Context_Test_Suite.ads b/source/tests/riscv64/context_test_suite.ads similarity index 100% rename from source/tests/riscv64/Context_Test_Suite.ads rename to source/tests/riscv64/context_test_suite.ads From 1dfbfb08fa180d5bfa31689512bfd21890f608f2 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:34:44 -0500 Subject: [PATCH 74/99] fixing more gprbuild errors --- source/tests/riscv64/GP_Context_Tests.adb | 24 ++++------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/source/tests/riscv64/GP_Context_Tests.adb b/source/tests/riscv64/GP_Context_Tests.adb index d595106..11f4a9e 100644 --- a/source/tests/riscv64/GP_Context_Tests.adb +++ b/source/tests/riscv64/GP_Context_Tests.adb @@ -2,8 +2,6 @@ with AUnit.Framework; with Arch.Context; with Arch.Interrupts; use Arch.Interrupts; with Interfaces; use Interfaces; -with Memory.Physical; -with System; procedure GP_Context_Tests is @@ -37,7 +35,7 @@ procedure GP_Context_Tests is Internal := Arch.Context.To_GP_Context_Type(Dummy_Frame); Test.Check_Equal(16#1000#, Internal.SP, "SP from Frame.R2 should be 0x1000"); Test.Check_Equal(10, Internal.A0, "A0 from Frame.R10 should be 10"); - -- SEPC and SSTATUS are fetched via CSR; check that they are nonzero. + -- SEPC and SSTATUS are fetched from hardware; ensure they are nonzero. Test.Check_True(Internal.SEPC /= 0, "SEPC must be nonzero"); Test.Check_True(Internal.SSTATUS /= 0, "SSTATUS must be nonzero"); end Test_To_GP_Context_Type; @@ -60,25 +58,11 @@ procedure GP_Context_Tests is Test.Check_Equal(0, External.R15, "R15 should be zero"); end Test_To_Frame; - ------------------------------------------------------------------- - -- Test case for initializing GP context. - ------------------------------------------------------------------- - procedure Test_Init_GP_Context is - Ctx : GP_Context; - Stack : System.Address := Memory.Physical.Alloc(4096); - Dummy_Start : constant System.Address := System.Address'Value(16#4000#); - Internal : Arch.Context.GP_Context_Type; - begin - Init_GP_Context(Ctx, Stack, Dummy_Start); - Internal := Arch.Context.To_GP_Context_Type(Ctx); - Test.Check_True(Internal.SP /= 0, "SP must be set by Init_GP_Context"); - Test.Check_True(Internal.SEPC /= 0, "SEPC must be nonzero after init"); - Test.Check_Equal(0, Internal.A0, "A0 should be initialized to zero"); - end Test_Init_GP_Context; - begin + -- Register the test procedures with the Test case instance. Test.Register(Test_To_GP_Context_Type'Access); Test.Register(Test_To_Frame'Access); - Test.Register(Test_Init_GP_Context'Access); + + -- Run all registered tests. Test.Run; end GP_Context_Tests; From 1bea91d234d5e265a0268f95bbe708845302c53a Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:42:47 -0500 Subject: [PATCH 75/99] fixing more gprbuild errors --- .../riscv64/{Context_Test_Suite.adb => context_test_suite.adb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename source/tests/riscv64/{Context_Test_Suite.adb => context_test_suite.adb} (100%) diff --git a/source/tests/riscv64/Context_Test_Suite.adb b/source/tests/riscv64/context_test_suite.adb similarity index 100% rename from source/tests/riscv64/Context_Test_Suite.adb rename to source/tests/riscv64/context_test_suite.adb From e051af5e178832c2070de0ae919981612c94086f Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:43:03 -0500 Subject: [PATCH 76/99] fixing more gprbuild errors --- .../{Core_Context_Tests.adb => core_context_tests.adb} | 0 source/tests/riscv64/core_context_tests.ads | 0 .../{CSR_Extension_Tests.adb => csr_extension_tests.adb} | 0 source/tests/riscv64/csr_extension_tests.ads | 0 .../riscv64/{FP_Context_Tests.adb => fp_context_tests.adb} | 0 source/tests/riscv64/fp_context_tests.ads | 0 .../riscv64/{GP_Context_Tests.adb => gp_context_tests.adb} | 0 source/tests/riscv64/gp_context_tests.ads | 5 +++++ ...s_Fork_Result_Tests.adb => success_fork_result_tests.adb} | 0 source/tests/riscv64/success_fork_result_tests.ads | 0 10 files changed, 5 insertions(+) rename source/tests/riscv64/{Core_Context_Tests.adb => core_context_tests.adb} (100%) create mode 100644 source/tests/riscv64/core_context_tests.ads rename source/tests/riscv64/{CSR_Extension_Tests.adb => csr_extension_tests.adb} (100%) create mode 100644 source/tests/riscv64/csr_extension_tests.ads rename source/tests/riscv64/{FP_Context_Tests.adb => fp_context_tests.adb} (100%) create mode 100644 source/tests/riscv64/fp_context_tests.ads rename source/tests/riscv64/{GP_Context_Tests.adb => gp_context_tests.adb} (100%) create mode 100644 source/tests/riscv64/gp_context_tests.ads rename source/tests/riscv64/{Success_Fork_Result_Tests.adb => success_fork_result_tests.adb} (100%) create mode 100644 source/tests/riscv64/success_fork_result_tests.ads diff --git a/source/tests/riscv64/Core_Context_Tests.adb b/source/tests/riscv64/core_context_tests.adb similarity index 100% rename from source/tests/riscv64/Core_Context_Tests.adb rename to source/tests/riscv64/core_context_tests.adb diff --git a/source/tests/riscv64/core_context_tests.ads b/source/tests/riscv64/core_context_tests.ads new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/riscv64/CSR_Extension_Tests.adb b/source/tests/riscv64/csr_extension_tests.adb similarity index 100% rename from source/tests/riscv64/CSR_Extension_Tests.adb rename to source/tests/riscv64/csr_extension_tests.adb diff --git a/source/tests/riscv64/csr_extension_tests.ads b/source/tests/riscv64/csr_extension_tests.ads new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/riscv64/FP_Context_Tests.adb b/source/tests/riscv64/fp_context_tests.adb similarity index 100% rename from source/tests/riscv64/FP_Context_Tests.adb rename to source/tests/riscv64/fp_context_tests.adb diff --git a/source/tests/riscv64/fp_context_tests.ads b/source/tests/riscv64/fp_context_tests.ads new file mode 100644 index 0000000..e69de29 diff --git a/source/tests/riscv64/GP_Context_Tests.adb b/source/tests/riscv64/gp_context_tests.adb similarity index 100% rename from source/tests/riscv64/GP_Context_Tests.adb rename to source/tests/riscv64/gp_context_tests.adb diff --git a/source/tests/riscv64/gp_context_tests.ads b/source/tests/riscv64/gp_context_tests.ads new file mode 100644 index 0000000..70ce11e --- /dev/null +++ b/source/tests/riscv64/gp_context_tests.ads @@ -0,0 +1,5 @@ +with AUnit.Framework; + +package GP_Context_Tests is + Test_Case : AUnit.Framework.Test_Case; +end GP_Context_Tests; diff --git a/source/tests/riscv64/Success_Fork_Result_Tests.adb b/source/tests/riscv64/success_fork_result_tests.adb similarity index 100% rename from source/tests/riscv64/Success_Fork_Result_Tests.adb rename to source/tests/riscv64/success_fork_result_tests.adb diff --git a/source/tests/riscv64/success_fork_result_tests.ads b/source/tests/riscv64/success_fork_result_tests.ads new file mode 100644 index 0000000..e69de29 From 991dd446f6ffbdf3d7626514fbadbda13d67d1e1 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:53:30 -0500 Subject: [PATCH 77/99] Created gprbuild missing .ads files --- source/tests/riscv64/core_context_tests.ads | 5 +++++ source/tests/riscv64/csr_extension_tests.ads | 5 +++++ source/tests/riscv64/fp_context_tests.ads | 5 +++++ source/tests/riscv64/gp_context_tests.ads | 4 ++-- source/tests/riscv64/success_fork_result_tests.ads | 5 +++++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/source/tests/riscv64/core_context_tests.ads b/source/tests/riscv64/core_context_tests.ads index e69de29..e3bf3ce 100644 --- a/source/tests/riscv64/core_context_tests.ads +++ b/source/tests/riscv64/core_context_tests.ads @@ -0,0 +1,5 @@ +with AUnit.Test_Cases; + +package Core_Context_Tests is + Test_Case : AUnit.Test_Cases.Test_Case; +end Core_Context_Tests; diff --git a/source/tests/riscv64/csr_extension_tests.ads b/source/tests/riscv64/csr_extension_tests.ads index e69de29..4ed7ef2 100644 --- a/source/tests/riscv64/csr_extension_tests.ads +++ b/source/tests/riscv64/csr_extension_tests.ads @@ -0,0 +1,5 @@ +with AUnit.Test_Cases; + +package CSR_Extension_Tests is + Test_Case : AUnit.Test_Cases.Test_Case; +end CSR_Extension_Tests; diff --git a/source/tests/riscv64/fp_context_tests.ads b/source/tests/riscv64/fp_context_tests.ads index e69de29..2d99a5d 100644 --- a/source/tests/riscv64/fp_context_tests.ads +++ b/source/tests/riscv64/fp_context_tests.ads @@ -0,0 +1,5 @@ +with AUnit.Test_Cases; + +package FP_Context_Tests is + Test_Case : AUnit.Test_Cases.Test_Case; +end FP_Context_Tests; diff --git a/source/tests/riscv64/gp_context_tests.ads b/source/tests/riscv64/gp_context_tests.ads index 70ce11e..d3dab2b 100644 --- a/source/tests/riscv64/gp_context_tests.ads +++ b/source/tests/riscv64/gp_context_tests.ads @@ -1,5 +1,5 @@ -with AUnit.Framework; +with AUnit.Test_Cases; package GP_Context_Tests is - Test_Case : AUnit.Framework.Test_Case; + Test_Case : AUnit.Test_Cases.Test_Case; end GP_Context_Tests; diff --git a/source/tests/riscv64/success_fork_result_tests.ads b/source/tests/riscv64/success_fork_result_tests.ads index e69de29..5cf5789 100644 --- a/source/tests/riscv64/success_fork_result_tests.ads +++ b/source/tests/riscv64/success_fork_result_tests.ads @@ -0,0 +1,5 @@ +with AUnit.Test_Cases; + +package Success_Fork_Result_Tests is + Test_Case : AUnit.Test_Cases.Test_Case; +end Success_Fork_Result_Tests; From 2449d46cde0986e0e9c79ca565ede66a03abc6ff Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:56:38 -0500 Subject: [PATCH 78/99] fixing more gprbuild errors --- source/tests/riscv64/core_context_tests.adb | 4 ++-- source/tests/riscv64/csr_extension_tests.adb | 4 ++-- source/tests/riscv64/fp_context_tests.adb | 4 ++-- source/tests/riscv64/success_fork_result_tests.adb | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/tests/riscv64/core_context_tests.adb b/source/tests/riscv64/core_context_tests.adb index 52ffa99..e8d42e7 100644 --- a/source/tests/riscv64/core_context_tests.adb +++ b/source/tests/riscv64/core_context_tests.adb @@ -1,10 +1,10 @@ -with AUnit.Framework; +with AUnit.Test_Cases; with Arch.Context; use Arch.Context; with Arch.CPU; use Arch.CPU; procedure Core_Context_Tests is - package Test is new AUnit.Framework.Test_Case("Core_Context_Tests"); + package Test is new AUnit.Test_Cases.Test_Case("Core_Context_Tests"); ------------------------------------------------------------------- -- Test that Save_Core_Context saves the correct per-core state. diff --git a/source/tests/riscv64/csr_extension_tests.adb b/source/tests/riscv64/csr_extension_tests.adb index 548a5f0..c47fe32 100644 --- a/source/tests/riscv64/csr_extension_tests.adb +++ b/source/tests/riscv64/csr_extension_tests.adb @@ -1,9 +1,9 @@ -with AUnit.Framework; +with AUnit.Test_Cases; with Arch.Context; use Arch.Context; procedure CSR_Extension_Tests is - package Test is new AUnit.Framework.Test_Case("CSR_Extension_Tests"); + package Test is new AUnit.Test_Cases.Test_Case("CSR_Extension_Tests"); ------------------------------------------------------------------- -- Test to verify that the cached MISA_Value is nonzero. diff --git a/source/tests/riscv64/fp_context_tests.adb b/source/tests/riscv64/fp_context_tests.adb index 8053330..b0ac213 100644 --- a/source/tests/riscv64/fp_context_tests.adb +++ b/source/tests/riscv64/fp_context_tests.adb @@ -1,10 +1,10 @@ -with AUnit.Framework; +with AUnit.Test_Cases; with Arch.Context; use Arch.Context; with Interfaces; use Interfaces; procedure FP_Context_Tests is - package Test is new AUnit.Framework.Test_Case("FP_Context_Tests"); + package Test is new AUnit.Test_Cases.Test_Case("FP_Context_Tests"); -- Dummy FP context (assumed to be an array of Unsigned_8) Dummy_FP_Context : FP_Context; diff --git a/source/tests/riscv64/success_fork_result_tests.adb b/source/tests/riscv64/success_fork_result_tests.adb index 2deaa03..c51e8ab 100644 --- a/source/tests/riscv64/success_fork_result_tests.adb +++ b/source/tests/riscv64/success_fork_result_tests.adb @@ -1,4 +1,4 @@ -with AUnit.Framework; +with AUnit.Test_Cases; with Arch.Context; use Arch.Context; with Arch.Interrupts; use Arch.Interrupts; with Interfaces; use Interfaces; @@ -6,7 +6,7 @@ with Memory.Physical; with System; procedure Success_Fork_Result_Tests is - package Test is new AUnit.Framework.Test_Case("Success_Fork_Result_Tests"); + package Test is new AUnit.Test_Cases.Test_Case("Success_Fork_Result_Tests"); -- Test_Success_Fork verifies that Success_Fork_Result properly sets A0 to 0 -- and advances SEPC by 4 bytes. From e9d7cc35fc357fa4057324b3ef1e59446ab275a2 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:05:45 -0500 Subject: [PATCH 79/99] fixing AUnit syntax errors --- source/tests/riscv64/context_test_suite.adb | 15 ++- source/tests/riscv64/context_test_suite.ads | 2 +- source/tests/riscv64/core_context_tests.adb | 46 ++++---- source/tests/riscv64/core_context_tests.ads | 7 +- source/tests/riscv64/csr_extension_tests.adb | 49 ++++---- source/tests/riscv64/csr_extension_tests.ads | 7 +- source/tests/riscv64/fp_context_tests.adb | 51 +++++---- source/tests/riscv64/fp_context_tests.ads | 7 +- source/tests/riscv64/gp_context_tests.adb | 105 ++++++++++-------- source/tests/riscv64/gp_context_tests.ads | 7 +- .../riscv64/success_fork_result_tests.adb | 36 +++--- .../riscv64/success_fork_result_tests.ads | 7 +- 12 files changed, 188 insertions(+), 151 deletions(-) diff --git a/source/tests/riscv64/context_test_suite.adb b/source/tests/riscv64/context_test_suite.adb index 7cca881..b9b9f2d 100644 --- a/source/tests/riscv64/context_test_suite.adb +++ b/source/tests/riscv64/context_test_suite.adb @@ -1,20 +1,19 @@ with AUnit.Test_Suites; +with GP_Context_Tests; with CSR_Extension_Tests; -with Core_Context_Tests; with FP_Context_Tests; -with GP_Context_Tests; +with Core_Context_Tests; with Success_Fork_Result_Tests; - package body Context_Test_Suite is function Suite return AUnit.Test_Suites.Access_Test_Suite is Result : AUnit.Test_Suites.Access_Test_Suite := AUnit.Test_Suites.New_Suite; begin - Result.Add_Test (GP_Context_Tests.Test_Case'Access); - Result.Add_Test (CSR_Extension_Tests.Test_Case'Access); - Result.Add_Test (FP_Context_Tests.Test_Case'Access); - Result.Add_Test (Core_Context_Tests.Test_Case'Access); - Result.Add_Test (Success_Fork_Result_Tests.Test_Case'Access); + Result.Add_Test(GP_Context_Tests.Test_Case'Access); + Result.Add_Test(CSR_Extension_Tests.Test_Case'Access); + Result.Add_Test(FP_Context_Tests.Test_Case'Access); + Result.Add_Test(Core_Context_Tests.Test_Case'Access); + Result.Add_Test(Success_Fork_Result_Tests.Test_Case'Access); return Result; end Suite; diff --git a/source/tests/riscv64/context_test_suite.ads b/source/tests/riscv64/context_test_suite.ads index bbcf01b..0621b5e 100644 --- a/source/tests/riscv64/context_test_suite.ads +++ b/source/tests/riscv64/context_test_suite.ads @@ -2,4 +2,4 @@ with AUnit.Test_Suites; package Context_Test_Suite is function Suite return AUnit.Test_Suites.Access_Test_Suite; -end Context_Test_Suite; \ No newline at end of file +end Context_Test_Suite; diff --git a/source/tests/riscv64/core_context_tests.adb b/source/tests/riscv64/core_context_tests.adb index e8d42e7..21cc973 100644 --- a/source/tests/riscv64/core_context_tests.adb +++ b/source/tests/riscv64/core_context_tests.adb @@ -1,15 +1,13 @@ -with AUnit.Test_Cases; +with AUnit.Assertions; use AUnit.Assertions; +with AUnit.Test_Cases.Registration; use AUnit.Test_Cases.Registration; with Arch.Context; use Arch.Context; with Arch.CPU; use Arch.CPU; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; -procedure Core_Context_Tests is +package body Core_Context_Tests is - package Test is new AUnit.Test_Cases.Test_Case("Core_Context_Tests"); - - ------------------------------------------------------------------- - -- Test that Save_Core_Context saves the correct per-core state. - ------------------------------------------------------------------- - procedure Test_Save_Core_Context is + procedure Test_Save_Core_Context (T : in out Test_Case'Class) is Saved_Core : Core_Context; Current_Hart : Unsigned_64; Core_Index : Positive; @@ -18,18 +16,26 @@ procedure Core_Context_Tests is Core_Index := Positive(Integer(Current_Hart) + 1); pragma Assert(Core_Index <= Core_Count, "Test: Core index out of bounds"); Save_Core_Context(Saved_Core); - Test.Check_Equal(Core_Locals(Core_Index).User_Stack, - Saved_Core.User_Stack, - "Saved core context must have the correct User_Stack"); - Test.Check_Equal(Core_Locals(Core_Index).Hart_ID, - Saved_Core.Hart_ID, - "Saved core context must have the correct Hart_ID"); - Test.Check_Equal(Core_Locals(Core_Index).Number, - Saved_Core.Number, - "Saved core context must have the correct core number"); + Check_Equal(Core_Locals(Core_Index).User_Stack, + Saved_Core.User_Stack, + "Saved core context must have the correct User_Stack"); + Check_Equal(Core_Locals(Core_Index).Hart_ID, + Saved_Core.Hart_ID, + "Saved core context must have the correct Hart_ID"); + Check_Equal(Core_Locals(Core_Index).Number, + Saved_Core.Number, + "Saved core context must have the correct core number"); end Test_Save_Core_Context; -begin - Test.Register(Test_Save_Core_Context'Access); - Test.Run; + procedure Register_Tests (T : in out Core_Context_Test) is + use AUnit.Test_Cases.Registration; + begin + Register_Routine(T, Test_Save_Core_Context'Access, "Test_Save_Core_Context"); + end Register_Tests; + + function Name (T : Core_Context_Test) return Message_String is + begin + return "Core_Context_Tests"; + end Name; + end Core_Context_Tests; diff --git a/source/tests/riscv64/core_context_tests.ads b/source/tests/riscv64/core_context_tests.ads index e3bf3ce..295b362 100644 --- a/source/tests/riscv64/core_context_tests.ads +++ b/source/tests/riscv64/core_context_tests.ads @@ -1,5 +1,8 @@ -with AUnit.Test_Cases; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; package Core_Context_Tests is - Test_Case : AUnit.Test_Cases.Test_Case; + type Core_Context_Test is new Test_Cases.Test_Case with null record; + procedure Register_Tests (T : in out Core_Context_Test); + function Name (T : Core_Context_Test) return Message_String; end Core_Context_Tests; diff --git a/source/tests/riscv64/csr_extension_tests.adb b/source/tests/riscv64/csr_extension_tests.adb index c47fe32..8926863 100644 --- a/source/tests/riscv64/csr_extension_tests.adb +++ b/source/tests/riscv64/csr_extension_tests.adb @@ -1,42 +1,41 @@ -with AUnit.Test_Cases; +with AUnit.Assertions; use AUnit.Assertions; +with AUnit.Test_Cases.Registration; use AUnit.Test_Cases.Registration; with Arch.Context; use Arch.Context; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; -procedure CSR_Extension_Tests is +package body CSR_Extension_Tests is - package Test is new AUnit.Test_Cases.Test_Case("CSR_Extension_Tests"); - - ------------------------------------------------------------------- - -- Test to verify that the cached MISA_Value is nonzero. - ------------------------------------------------------------------- - procedure Test_MISA_Value is + procedure Test_MISA_Value (T : in out Test_Case'Class) is begin - Test.Check_True(MISA_Value /= 0, "Cached MISA_Value must be nonzero"); + Check_True(MISA_Value /= 0, "Cached MISA_Value must be nonzero"); end Test_MISA_Value; - ------------------------------------------------------------------- - -- Test to verify FP extension bit detection based on MISA_Value. - ------------------------------------------------------------------- - procedure Test_FP_Extension_Bits is + procedure Test_FP_Extension_Bits (T : in out Test_Case'Class) is begin if (MISA_Value and F_Extension_Bit) /= 0 then - Test.Check_True(Has_Extension(F_Extension_Bit), - "F extension should be detected"); + Check_True(Has_Extension(F_Extension_Bit), "F extension should be detected"); else - Test.Check_True(not Has_Extension(F_Extension_Bit), - "F extension should not be detected"); + Check_True(not Has_Extension(F_Extension_Bit), "F extension should not be detected"); end if; if (MISA_Value and D_Extension_Bit) /= 0 then - Test.Check_True(Has_Extension(D_Extension_Bit), - "D extension should be detected"); + Check_True(Has_Extension(D_Extension_Bit), "D extension should be detected"); else - Test.Check_True(not Has_Extension(D_Extension_Bit), - "D extension should not be detected"); + Check_True(not Has_Extension(D_Extension_Bit), "D extension should not be detected"); end if; end Test_FP_Extension_Bits; -begin - Test.Register(Test_MISA_Value'Access); - Test.Register(Test_FP_Extension_Bits'Access); - Test.Run; + procedure Register_Tests (T : in out CSR_Extension_Test) is + use AUnit.Test_Cases.Registration; + begin + Register_Routine(T, Test_MISA_Value'Access, "Test_MISA_Value"); + Register_Routine(T, Test_FP_Extension_Bits'Access, "Test_FP_Extension_Bits"); + end Register_Tests; + + function Name (T : CSR_Extension_Test) return Message_String is + begin + return "CSR_Extension_Tests"; + end Name; + end CSR_Extension_Tests; diff --git a/source/tests/riscv64/csr_extension_tests.ads b/source/tests/riscv64/csr_extension_tests.ads index 4ed7ef2..06f80af 100644 --- a/source/tests/riscv64/csr_extension_tests.ads +++ b/source/tests/riscv64/csr_extension_tests.ads @@ -1,5 +1,8 @@ -with AUnit.Test_Cases; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; package CSR_Extension_Tests is - Test_Case : AUnit.Test_Cases.Test_Case; + type CSR_Extension_Test is new Test_Cases.Test_Case with null record; + procedure Register_Tests (T : in out CSR_Extension_Test); + function Name (T : CSR_Extension_Test) return Message_String; end CSR_Extension_Tests; diff --git a/source/tests/riscv64/fp_context_tests.adb b/source/tests/riscv64/fp_context_tests.adb index b0ac213..918fe86 100644 --- a/source/tests/riscv64/fp_context_tests.adb +++ b/source/tests/riscv64/fp_context_tests.adb @@ -1,54 +1,53 @@ -with AUnit.Test_Cases; +with AUnit.Assertions; use AUnit.Assertions; +with AUnit.Test_Cases.Registration; use AUnit.Test_Cases.Registration; with Arch.Context; use Arch.Context; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; with Interfaces; use Interfaces; -procedure FP_Context_Tests is +package body FP_Context_Tests is - package Test is new AUnit.Test_Cases.Test_Case("FP_Context_Tests"); - - -- Dummy FP context (assumed to be an array of Unsigned_8) Dummy_FP_Context : FP_Context; - ------------------------------------------------------------------- - -- Test FP context initialization zeroes all elements. - ------------------------------------------------------------------- - procedure Test_Init_FP_Context is + procedure Test_Init_FP_Context (T : in out Test_Case'Class) is I : Integer; begin Init_FP_Context(Dummy_FP_Context); for I in FP_Context'Range loop - Test.Check_Equal(0, Dummy_FP_Context(I), + Check_Equal(0, Dummy_FP_Context(I), "FP context element " & I'Image & " should be zero after initialization"); end loop; end Test_Init_FP_Context; - ------------------------------------------------------------------- - -- Test FP context destruction zeroes all elements. - ------------------------------------------------------------------- - procedure Test_Destroy_FP_Context is + procedure Test_Destroy_FP_Context (T : in out Test_Case'Class) is I : Integer; begin Init_FP_Context(Dummy_FP_Context); Destroy_FP_Context(Dummy_FP_Context); for I in FP_Context'Range loop - Test.Check_Equal(0, Dummy_FP_Context(I), + Check_Equal(0, Dummy_FP_Context(I), "FP context element " & I'Image & " should be zero after destruction"); end loop; end Test_Destroy_FP_Context; - ------------------------------------------------------------------- - -- Test FP dispatch routines are set. - ------------------------------------------------------------------- - procedure Test_FP_Dispatch is + procedure Test_FP_Dispatch (T : in out Test_Case'Class) is begin Setup_FP_Routines; - Test.Check_True(FP_Save_Routine /= null, "FP_Save_Routine must not be null"); - Test.Check_True(FP_Load_Routine /= null, "FP_Load_Routine must not be null"); + Check_True(FP_Save_Routine /= null, "FP_Save_Routine must not be null"); + Check_True(FP_Load_Routine /= null, "FP_Load_Routine must not be null"); end Test_FP_Dispatch; -begin - Test.Register(Test_Init_FP_Context'Access); - Test.Register(Test_Destroy_FP_Context'Access); - Test.Register(Test_FP_Dispatch'Access); - Test.Run; + procedure Register_Tests (T : in out FP_Context_Test) is + use AUnit.Test_Cases.Registration; + begin + Register_Routine(T, Test_Init_FP_Context'Access, "Test_Init_FP_Context"); + Register_Routine(T, Test_Destroy_FP_Context'Access, "Test_Destroy_FP_Context"); + Register_Routine(T, Test_FP_Dispatch'Access, "Test_FP_Dispatch"); + end Register_Tests; + + function Name (T : FP_Context_Test) return Message_String is + begin + return "FP_Context_Tests"; + end Name; + end FP_Context_Tests; diff --git a/source/tests/riscv64/fp_context_tests.ads b/source/tests/riscv64/fp_context_tests.ads index 2d99a5d..6eb45a3 100644 --- a/source/tests/riscv64/fp_context_tests.ads +++ b/source/tests/riscv64/fp_context_tests.ads @@ -1,5 +1,8 @@ -with AUnit.Test_Cases; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; package FP_Context_Tests is - Test_Case : AUnit.Test_Cases.Test_Case; + type FP_Context_Test is new Test_Cases.Test_Case with null record; + procedure Register_Tests (T : in out FP_Context_Test); + function Name (T : FP_Context_Test) return Message_String; end FP_Context_Tests; diff --git a/source/tests/riscv64/gp_context_tests.adb b/source/tests/riscv64/gp_context_tests.adb index 11f4a9e..f8ab56c 100644 --- a/source/tests/riscv64/gp_context_tests.adb +++ b/source/tests/riscv64/gp_context_tests.adb @@ -1,49 +1,43 @@ -with AUnit.Framework; +with AUnit.Assertions; use AUnit.Assertions; +with AUnit.Test_Cases.Registration; use AUnit.Test_Cases.Registration; with Arch.Context; with Arch.Interrupts; use Arch.Interrupts; with Interfaces; use Interfaces; +with Memory.Physical; +with System; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; -procedure GP_Context_Tests is +package body GP_Context_Tests is - package Test is new AUnit.Framework.Test_Case("GP_Context_Tests"); - - -- Dummy_Frame: a constant Frame with known values for testing conversion routines. - Dummy_Frame : constant Frame := - (R0 => 0, - R1 => 1, - R2 => 16#1000#, -- Example stack pointer. - R3 => 3, - R4 => 4, - R5 => 5, - R6 => 6, - R7 => 7, - R8 => 8, - R9 => 9, - R10 => 10, -- Example return register. - R11 => 11, - R12 => 12, - R13 => 13, - R14 => 14, - R15 => 15); - - ------------------------------------------------------------------- - -- Test case for converting an external Frame to an internal context. - ------------------------------------------------------------------- - procedure Test_To_GP_Context_Type is + procedure Test_To_GP_Context_Type (T : in out Test_Case'Class) is Internal : Arch.Context.GP_Context_Type; + Dummy_Frame : constant Frame := + (R0 => 0, + R1 => 1, + R2 => 16#1000#, -- Example stack pointer. + R3 => 3, + R4 => 4, + R5 => 5, + R6 => 6, + R7 => 7, + R8 => 8, + R9 => 9, + R10 => 10, -- Example return register. + R11 => 11, + R12 => 12, + R13 => 13, + R14 => 14, + R15 => 15); begin Internal := Arch.Context.To_GP_Context_Type(Dummy_Frame); - Test.Check_Equal(16#1000#, Internal.SP, "SP from Frame.R2 should be 0x1000"); - Test.Check_Equal(10, Internal.A0, "A0 from Frame.R10 should be 10"); - -- SEPC and SSTATUS are fetched from hardware; ensure they are nonzero. - Test.Check_True(Internal.SEPC /= 0, "SEPC must be nonzero"); - Test.Check_True(Internal.SSTATUS /= 0, "SSTATUS must be nonzero"); + Check_Equal(16#1000#, Internal.SP, "SP from Frame.R2 should be 0x1000"); + Check_Equal(10, Internal.A0, "A0 from Frame.R10 should be 10"); + Check_True(Internal.SEPC /= 0, "SEPC must be nonzero"); + Check_True(Internal.SSTATUS /= 0, "SSTATUS must be nonzero"); end Test_To_GP_Context_Type; - ------------------------------------------------------------------- - -- Test case for converting an internal context back to an external Frame. - ------------------------------------------------------------------- - procedure Test_To_Frame is + procedure Test_To_Frame (T : in out Test_Case'Class) is Internal : Arch.Context.GP_Context_Type := (SP => 16#12345678#, SEPC => 16#DEADBEEF#, @@ -52,17 +46,36 @@ procedure GP_Context_Tests is External : Frame; begin External := Arch.Context.To_Frame(Internal); - Test.Check_Equal(16#12345678#, External.R2, "External R2 must equal lower 32 bits of SP"); - Test.Check_Equal(16#ABCDEF00#, External.R10, "External R10 must equal lower 32 bits of A0"); - Test.Check_Equal(0, External.R0, "R0 should be zero"); - Test.Check_Equal(0, External.R15, "R15 should be zero"); + Check_Equal(16#12345678#, External.R2, "External R2 must equal lower 32 bits of SP"); + Check_Equal(16#ABCDEF00#, External.R10, "External R10 must equal lower 32 bits of A0"); + Check_Equal(0, External.R0, "R0 should be zero"); + Check_Equal(0, External.R15, "R15 should be zero"); end Test_To_Frame; -begin - -- Register the test procedures with the Test case instance. - Test.Register(Test_To_GP_Context_Type'Access); - Test.Register(Test_To_Frame'Access); + procedure Test_Init_GP_Context (T : in out Test_Case'Class) is + Ctx : Arch.Context.GP_Context; + Stack : System.Address := Memory.Physical.Alloc(4096); + Dummy_Start : constant System.Address := System.Address'Value(16#4000#); + Internal : Arch.Context.GP_Context_Type; + begin + Arch.Context.Init_GP_Context(Ctx, Stack, Dummy_Start); + Internal := Arch.Context.To_GP_Context_Type(Ctx); + Check_True(Internal.SP /= 0, "SP must be set by Init_GP_Context"); + Check_True(Internal.SEPC /= 0, "SEPC must be nonzero after init"); + Check_Equal(0, Internal.A0, "A0 should be initialized to zero"); + end Test_Init_GP_Context; + + procedure Register_Tests (T : in out GP_Context_Test) is + use AUnit.Test_Cases.Registration; + begin + Register_Routine(T, Test_To_GP_Context_Type'Access, "Test_To_GP_Context_Type"); + Register_Routine(T, Test_To_Frame'Access, "Test_To_Frame"); + Register_Routine(T, Test_Init_GP_Context'Access, "Test_Init_GP_Context"); + end Register_Tests; + + function Name (T : GP_Context_Test) return Message_String is + begin + return "GP_Context_Tests"; + end Name; - -- Run all registered tests. - Test.Run; end GP_Context_Tests; diff --git a/source/tests/riscv64/gp_context_tests.ads b/source/tests/riscv64/gp_context_tests.ads index d3dab2b..d4e9dfe 100644 --- a/source/tests/riscv64/gp_context_tests.ads +++ b/source/tests/riscv64/gp_context_tests.ads @@ -1,5 +1,8 @@ -with AUnit.Test_Cases; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; package GP_Context_Tests is - Test_Case : AUnit.Test_Cases.Test_Case; + type GP_Context_Test is new Test_Cases.Test_Case with null record; + procedure Register_Tests (T : in out GP_Context_Test); + function Name (T : GP_Context_Test) return Message_String; end GP_Context_Tests; diff --git a/source/tests/riscv64/success_fork_result_tests.adb b/source/tests/riscv64/success_fork_result_tests.adb index c51e8ab..2bef09a 100644 --- a/source/tests/riscv64/success_fork_result_tests.adb +++ b/source/tests/riscv64/success_fork_result_tests.adb @@ -1,36 +1,42 @@ -with AUnit.Test_Cases; +with AUnit.Assertions; use AUnit.Assertions; +with AUnit.Test_Cases.Registration; use AUnit.Test_Cases.Registration; with Arch.Context; use Arch.Context; with Arch.Interrupts; use Arch.Interrupts; with Interfaces; use Interfaces; with Memory.Physical; with System; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; -procedure Success_Fork_Result_Tests is - package Test is new AUnit.Test_Cases.Test_Case("Success_Fork_Result_Tests"); +package body Success_Fork_Result_Tests is - -- Test_Success_Fork verifies that Success_Fork_Result properly sets A0 to 0 - -- and advances SEPC by 4 bytes. - procedure Test_Success_Fork is + procedure Test_Success_Fork (T : in out Test_Case'Class) is Ctx : GP_Context; Dummy_Stack : System.Address := Memory.Physical.Alloc(4096); - -- Provide a nonzero dummy start address. Dummy_Start : constant System.Address := System.Address'Value(16#30000#); Old_Internal, New_Internal : GP_Context_Type; begin - -- Initialize the GP context. Init_GP_Context(Ctx, Dummy_Stack, Dummy_Start); Old_Internal := To_GP_Context_Type(Ctx); - Test.Check_True(Old_Internal.SEPC /= 0, "Precondition: Old SEPC must be nonzero"); + Check_True(Old_Internal.SEPC /= 0, "Precondition: Old SEPC must be nonzero"); - -- Perform the fork result adjustment. Success_Fork_Result(Ctx); New_Internal := To_GP_Context_Type(Ctx); - Test.Check_Equal(0, New_Internal.A0, "Forked process should return 0 in A0"); - Test.Check_Equal(Old_Internal.SEPC + 4, New_Internal.SEPC, "SEPC should be advanced by 4 bytes after fork"); + Check_Equal(0, New_Internal.A0, "Forked process should return 0 in A0"); + Check_Equal(Old_Internal.SEPC + 4, New_Internal.SEPC, + "SEPC should be advanced by 4 bytes after fork"); end Test_Success_Fork; -begin - Test.Register(Test_Success_Fork'Access); - Test.Run; + procedure Register_Tests (T : in out Success_Fork_Test) is + use AUnit.Test_Cases.Registration; + begin + Register_Routine(T, Test_Success_Fork'Access, "Test_Success_Fork"); + end Register_Tests; + + function Name (T : Success_Fork_Test) return Message_String is + begin + return "Success_Fork_Result_Tests"; + end Name; + end Success_Fork_Result_Tests; diff --git a/source/tests/riscv64/success_fork_result_tests.ads b/source/tests/riscv64/success_fork_result_tests.ads index 5cf5789..ffacfb2 100644 --- a/source/tests/riscv64/success_fork_result_tests.ads +++ b/source/tests/riscv64/success_fork_result_tests.ads @@ -1,5 +1,8 @@ -with AUnit.Test_Cases; +with AUnit; use AUnit; +with AUnit.Test_Cases; use AUnit.Test_Cases; package Success_Fork_Result_Tests is - Test_Case : AUnit.Test_Cases.Test_Case; + type Success_Fork_Test is new Test_Cases.Test_Case with null record; + procedure Register_Tests (T : in out Success_Fork_Test); + function Name (T : Success_Fork_Test) return Message_String; end Success_Fork_Result_Tests; From b7d42cdb72e853d6aae2ba9cabd4ab493fb2d619 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:33:37 -0500 Subject: [PATCH 80/99] fixing more AUnit syntax issues --- source/tests/riscv64/core_context_tests.ads | 1 + source/tests/riscv64/csr_extension_tests.ads | 1 + source/tests/riscv64/fp_context_tests.ads | 1 + source/tests/riscv64/gp_context_tests.ads | 1 + source/tests/riscv64/success_fork_result_tests.ads | 1 + 5 files changed, 5 insertions(+) diff --git a/source/tests/riscv64/core_context_tests.ads b/source/tests/riscv64/core_context_tests.ads index 295b362..a49606f 100644 --- a/source/tests/riscv64/core_context_tests.ads +++ b/source/tests/riscv64/core_context_tests.ads @@ -3,6 +3,7 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package Core_Context_Tests is type Core_Context_Test is new Test_Cases.Test_Case with null record; + Test_Case : aliased Core_Context_Test := new Core_Context_Test'(Name => "Core_Context_Tests"); procedure Register_Tests (T : in out Core_Context_Test); function Name (T : Core_Context_Test) return Message_String; end Core_Context_Tests; diff --git a/source/tests/riscv64/csr_extension_tests.ads b/source/tests/riscv64/csr_extension_tests.ads index 06f80af..933acdf 100644 --- a/source/tests/riscv64/csr_extension_tests.ads +++ b/source/tests/riscv64/csr_extension_tests.ads @@ -3,6 +3,7 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package CSR_Extension_Tests is type CSR_Extension_Test is new Test_Cases.Test_Case with null record; + Test_Case : aliased CSR_Extension_Test := new CSR_Extension_Test'(Name => "CSR_Extension_Tests"); procedure Register_Tests (T : in out CSR_Extension_Test); function Name (T : CSR_Extension_Test) return Message_String; end CSR_Extension_Tests; diff --git a/source/tests/riscv64/fp_context_tests.ads b/source/tests/riscv64/fp_context_tests.ads index 6eb45a3..874b2eb 100644 --- a/source/tests/riscv64/fp_context_tests.ads +++ b/source/tests/riscv64/fp_context_tests.ads @@ -3,6 +3,7 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package FP_Context_Tests is type FP_Context_Test is new Test_Cases.Test_Case with null record; + Test_Case : aliased FP_Context_Test := new FP_Context_Test'(Name => "FP_Context_Tests"); procedure Register_Tests (T : in out FP_Context_Test); function Name (T : FP_Context_Test) return Message_String; end FP_Context_Tests; diff --git a/source/tests/riscv64/gp_context_tests.ads b/source/tests/riscv64/gp_context_tests.ads index d4e9dfe..603dd47 100644 --- a/source/tests/riscv64/gp_context_tests.ads +++ b/source/tests/riscv64/gp_context_tests.ads @@ -3,6 +3,7 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package GP_Context_Tests is type GP_Context_Test is new Test_Cases.Test_Case with null record; + Test_Case : aliased GP_Context_Test := new GP_Context_Test'(Name => "GP_Context_Tests"); procedure Register_Tests (T : in out GP_Context_Test); function Name (T : GP_Context_Test) return Message_String; end GP_Context_Tests; diff --git a/source/tests/riscv64/success_fork_result_tests.ads b/source/tests/riscv64/success_fork_result_tests.ads index ffacfb2..42106b7 100644 --- a/source/tests/riscv64/success_fork_result_tests.ads +++ b/source/tests/riscv64/success_fork_result_tests.ads @@ -3,6 +3,7 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package Success_Fork_Result_Tests is type Success_Fork_Test is new Test_Cases.Test_Case with null record; + Test_Case : aliased Success_Fork_Test := new Success_Fork_Test'(Name => "Success_Fork_Result_Tests"); procedure Register_Tests (T : in out Success_Fork_Test); function Name (T : Success_Fork_Test) return Message_String; end Success_Fork_Result_Tests; From b8eaa2e38cafa3b40ed62d8503662e1ca68b71d8 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:37:20 -0500 Subject: [PATCH 81/99] fixing more AUnit syntax issues. --- source/tests/riscv64/core_context_tests.adb | 4 ++-- source/tests/riscv64/csr_extension_tests.adb | 4 ++-- source/tests/riscv64/fp_context_tests.adb | 4 ++-- source/tests/riscv64/gp_context_tests.adb | 4 ++-- source/tests/riscv64/success_fork_result_tests.adb | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/source/tests/riscv64/core_context_tests.adb b/source/tests/riscv64/core_context_tests.adb index 21cc973..6f533d5 100644 --- a/source/tests/riscv64/core_context_tests.adb +++ b/source/tests/riscv64/core_context_tests.adb @@ -27,13 +27,13 @@ package body Core_Context_Tests is "Saved core context must have the correct core number"); end Test_Save_Core_Context; - procedure Register_Tests (T : in out Core_Context_Test) is + overriding procedure Register_Tests (T : in out Core_Context_Test) is use AUnit.Test_Cases.Registration; begin Register_Routine(T, Test_Save_Core_Context'Access, "Test_Save_Core_Context"); end Register_Tests; - function Name (T : Core_Context_Test) return Message_String is + overriding function Name (T : Core_Context_Test) return Message_String is begin return "Core_Context_Tests"; end Name; diff --git a/source/tests/riscv64/csr_extension_tests.adb b/source/tests/riscv64/csr_extension_tests.adb index 8926863..875de92 100644 --- a/source/tests/riscv64/csr_extension_tests.adb +++ b/source/tests/riscv64/csr_extension_tests.adb @@ -26,14 +26,14 @@ package body CSR_Extension_Tests is end if; end Test_FP_Extension_Bits; - procedure Register_Tests (T : in out CSR_Extension_Test) is + overriding procedure Register_Tests (T : in out CSR_Extension_Test) is use AUnit.Test_Cases.Registration; begin Register_Routine(T, Test_MISA_Value'Access, "Test_MISA_Value"); Register_Routine(T, Test_FP_Extension_Bits'Access, "Test_FP_Extension_Bits"); end Register_Tests; - function Name (T : CSR_Extension_Test) return Message_String is + overriding function Name (T : CSR_Extension_Test) return Message_String is begin return "CSR_Extension_Tests"; end Name; diff --git a/source/tests/riscv64/fp_context_tests.adb b/source/tests/riscv64/fp_context_tests.adb index 918fe86..ab3018f 100644 --- a/source/tests/riscv64/fp_context_tests.adb +++ b/source/tests/riscv64/fp_context_tests.adb @@ -37,7 +37,7 @@ package body FP_Context_Tests is Check_True(FP_Load_Routine /= null, "FP_Load_Routine must not be null"); end Test_FP_Dispatch; - procedure Register_Tests (T : in out FP_Context_Test) is + overriding procedure Register_Tests (T : in out FP_Context_Test) is use AUnit.Test_Cases.Registration; begin Register_Routine(T, Test_Init_FP_Context'Access, "Test_Init_FP_Context"); @@ -45,7 +45,7 @@ package body FP_Context_Tests is Register_Routine(T, Test_FP_Dispatch'Access, "Test_FP_Dispatch"); end Register_Tests; - function Name (T : FP_Context_Test) return Message_String is + overriding function Name (T : FP_Context_Test) return Message_String is begin return "FP_Context_Tests"; end Name; diff --git a/source/tests/riscv64/gp_context_tests.adb b/source/tests/riscv64/gp_context_tests.adb index f8ab56c..2cc7028 100644 --- a/source/tests/riscv64/gp_context_tests.adb +++ b/source/tests/riscv64/gp_context_tests.adb @@ -65,7 +65,7 @@ package body GP_Context_Tests is Check_Equal(0, Internal.A0, "A0 should be initialized to zero"); end Test_Init_GP_Context; - procedure Register_Tests (T : in out GP_Context_Test) is + overriding procedure Register_Tests (T : in out GP_Context_Test) is use AUnit.Test_Cases.Registration; begin Register_Routine(T, Test_To_GP_Context_Type'Access, "Test_To_GP_Context_Type"); @@ -73,7 +73,7 @@ package body GP_Context_Tests is Register_Routine(T, Test_Init_GP_Context'Access, "Test_Init_GP_Context"); end Register_Tests; - function Name (T : GP_Context_Test) return Message_String is + overriding function Name (T : GP_Context_Test) return Message_String is begin return "GP_Context_Tests"; end Name; diff --git a/source/tests/riscv64/success_fork_result_tests.adb b/source/tests/riscv64/success_fork_result_tests.adb index 2bef09a..e202f76 100644 --- a/source/tests/riscv64/success_fork_result_tests.adb +++ b/source/tests/riscv64/success_fork_result_tests.adb @@ -28,13 +28,13 @@ package body Success_Fork_Result_Tests is "SEPC should be advanced by 4 bytes after fork"); end Test_Success_Fork; - procedure Register_Tests (T : in out Success_Fork_Test) is + overriding procedure Register_Tests (T : in out Success_Fork_Test) is use AUnit.Test_Cases.Registration; begin Register_Routine(T, Test_Success_Fork'Access, "Test_Success_Fork"); end Register_Tests; - function Name (T : Success_Fork_Test) return Message_String is + overriding function Name (T : Success_Fork_Test) return Message_String is begin return "Success_Fork_Result_Tests"; end Name; From 3dba80c5231b5ae14721d1113f21f7ad84caa697 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:38:44 -0500 Subject: [PATCH 82/99] forgot to add overriding in the .ads files --- source/tests/riscv64/context_test_suite.adb | 10 +++++----- source/tests/riscv64/core_context_tests.ads | 4 ++-- source/tests/riscv64/csr_extension_tests.ads | 4 ++-- source/tests/riscv64/fp_context_tests.ads | 4 ++-- source/tests/riscv64/gp_context_tests.ads | 4 ++-- source/tests/riscv64/success_fork_result_tests.ads | 4 ++-- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/source/tests/riscv64/context_test_suite.adb b/source/tests/riscv64/context_test_suite.adb index b9b9f2d..6a5a0ba 100644 --- a/source/tests/riscv64/context_test_suite.adb +++ b/source/tests/riscv64/context_test_suite.adb @@ -9,11 +9,11 @@ package body Context_Test_Suite is function Suite return AUnit.Test_Suites.Access_Test_Suite is Result : AUnit.Test_Suites.Access_Test_Suite := AUnit.Test_Suites.New_Suite; begin - Result.Add_Test(GP_Context_Tests.Test_Case'Access); - Result.Add_Test(CSR_Extension_Tests.Test_Case'Access); - Result.Add_Test(FP_Context_Tests.Test_Case'Access); - Result.Add_Test(Core_Context_Tests.Test_Case'Access); - Result.Add_Test(Success_Fork_Result_Tests.Test_Case'Access); + Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(GP_Context_Tests.Test_Case'Access)); + Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(CSR_Extension_Tests.Test_Case'Access)); + Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(FP_Context_Tests.Test_Case'Access)); + Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(Core_Context_Tests.Test_Case'Access)); + Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(Success_Fork_Result_Tests.Test_Case'Access)); return Result; end Suite; diff --git a/source/tests/riscv64/core_context_tests.ads b/source/tests/riscv64/core_context_tests.ads index a49606f..c829a8f 100644 --- a/source/tests/riscv64/core_context_tests.ads +++ b/source/tests/riscv64/core_context_tests.ads @@ -4,6 +4,6 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package Core_Context_Tests is type Core_Context_Test is new Test_Cases.Test_Case with null record; Test_Case : aliased Core_Context_Test := new Core_Context_Test'(Name => "Core_Context_Tests"); - procedure Register_Tests (T : in out Core_Context_Test); - function Name (T : Core_Context_Test) return Message_String; + overriding procedure Register_Tests (T : in out Core_Context_Test); + overriding function Name (T : Core_Context_Test) return Message_String; end Core_Context_Tests; diff --git a/source/tests/riscv64/csr_extension_tests.ads b/source/tests/riscv64/csr_extension_tests.ads index 933acdf..be828d1 100644 --- a/source/tests/riscv64/csr_extension_tests.ads +++ b/source/tests/riscv64/csr_extension_tests.ads @@ -4,6 +4,6 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package CSR_Extension_Tests is type CSR_Extension_Test is new Test_Cases.Test_Case with null record; Test_Case : aliased CSR_Extension_Test := new CSR_Extension_Test'(Name => "CSR_Extension_Tests"); - procedure Register_Tests (T : in out CSR_Extension_Test); - function Name (T : CSR_Extension_Test) return Message_String; + overriding procedure Register_Tests (T : in out CSR_Extension_Test); + overriding function Name (T : CSR_Extension_Test) return Message_String; end CSR_Extension_Tests; diff --git a/source/tests/riscv64/fp_context_tests.ads b/source/tests/riscv64/fp_context_tests.ads index 874b2eb..dc29485 100644 --- a/source/tests/riscv64/fp_context_tests.ads +++ b/source/tests/riscv64/fp_context_tests.ads @@ -4,6 +4,6 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package FP_Context_Tests is type FP_Context_Test is new Test_Cases.Test_Case with null record; Test_Case : aliased FP_Context_Test := new FP_Context_Test'(Name => "FP_Context_Tests"); - procedure Register_Tests (T : in out FP_Context_Test); - function Name (T : FP_Context_Test) return Message_String; + overriding procedure Register_Tests (T : in out FP_Context_Test); + overriding function Name (T : FP_Context_Test) return Message_String; end FP_Context_Tests; diff --git a/source/tests/riscv64/gp_context_tests.ads b/source/tests/riscv64/gp_context_tests.ads index 603dd47..c51d4d3 100644 --- a/source/tests/riscv64/gp_context_tests.ads +++ b/source/tests/riscv64/gp_context_tests.ads @@ -4,6 +4,6 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package GP_Context_Tests is type GP_Context_Test is new Test_Cases.Test_Case with null record; Test_Case : aliased GP_Context_Test := new GP_Context_Test'(Name => "GP_Context_Tests"); - procedure Register_Tests (T : in out GP_Context_Test); - function Name (T : GP_Context_Test) return Message_String; + overriding procedure Register_Tests (T : in out GP_Context_Test); + overriding function Name (T : GP_Context_Test) return Message_String; end GP_Context_Tests; diff --git a/source/tests/riscv64/success_fork_result_tests.ads b/source/tests/riscv64/success_fork_result_tests.ads index 42106b7..e2c902b 100644 --- a/source/tests/riscv64/success_fork_result_tests.ads +++ b/source/tests/riscv64/success_fork_result_tests.ads @@ -4,6 +4,6 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package Success_Fork_Result_Tests is type Success_Fork_Test is new Test_Cases.Test_Case with null record; Test_Case : aliased Success_Fork_Test := new Success_Fork_Test'(Name => "Success_Fork_Result_Tests"); - procedure Register_Tests (T : in out Success_Fork_Test); - function Name (T : Success_Fork_Test) return Message_String; + overriding procedure Register_Tests (T : in out Success_Fork_Test); + overriding function Name (T : Success_Fork_Test) return Message_String; end Success_Fork_Result_Tests; From 3d3e03c20b8f0b148fef0e30a228df8bb45642a7 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 12:57:10 -0500 Subject: [PATCH 83/99] updated .gitignore so we only sync files that should be modified. --- .gitignore | 27 ++++++- source/.github/workflows/riscv64-ci.yml | 95 ------------------------- 2 files changed, 25 insertions(+), 97 deletions(-) delete mode 100644 source/.github/workflows/riscv64-ci.yml diff --git a/.gitignore b/.gitignore index 449a688..f1e26d8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,29 @@ -#ignore files and directories generated by VSCode +# Ignore files and directories generated by VSCode .ai/ .vscode/ +# Ignore directories we don't want to modify +.github/ +autom3te.cache/ +build-aux/ +docs/ +biggnat-hack/ +obj/ +rtsdir/ +scripts/ +/source/cryptography/ +/source/devices/ +/source/lib/ +/source//memory/ +/source/networking/ +/source/rts/ +/source/userland/ +/source/vfs/ + + +# Ignore Build Files and Directories +/source/tests/obj/ +/source/tests/bin/ + # Ignore GNATprove tarball -gnatprove-x86_64-linux-14.1.0-1.tar.gz +#gnatprove-x86_64-linux-14.1.0-1.tar.gz diff --git a/source/.github/workflows/riscv64-ci.yml b/source/.github/workflows/riscv64-ci.yml deleted file mode 100644 index 0cd6813..0000000 --- a/source/.github/workflows/riscv64-ci.yml +++ /dev/null @@ -1,95 +0,0 @@ -name: RISC-V 64 Arch CI - -on: - push: - branches: - - main - - 7-port-arch-contextadb - pull_request: - branches: - - main - - 7-port-arch-contextadb - merge_group: - branches: - - main - - 7-port-arch-contextadb - -jobs: - build-test-riscv: - runs-on: ubuntu-latest - container: ghcr.io/llvm/llvm-project:riscv-gnu-toolchain # RISC-V toolchain container - - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - name: Install Dependencies - run: | - sudo apt update - sudo apt install -y gnat gprbuild qemu-system-riscv qemu-user riscv64-linux-gnu-gcc riscv64-linux-gnu-binutils - - - name: Verify SPARK Proofs - run: | - gnatprove -P source/arch/riscv64-limine/arch-context.gpr --mode=prove --level=3 - - - name: Compile and Run Test Harness - run: | - gnatmake -f -gnat2012 tests/riscv64/test-harness.adb -o tests/riscv64/test-harness-riscv - qemu-system-riscv64 -machine virt -cpu rv64 -nographic -kernel tests/riscv64/test-harness-riscv > tests/test-log.txt - - - name: Upload Test Logs as Artifact - uses: actions/upload-artifact@v4 - with: - name: riscv64-test-logs - path: tests/test-log.txt - - - name: Validate Test Output and Track History - id: test_results - run: | - TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") - COMMIT_HASH=$(git rev-parse --short HEAD) - echo "Test Run on: $TIMESTAMP (Commit: $COMMIT_HASH)" >> tests/test-history.log - echo "----------------------------------------" >> tests/test-history.log - cat tests/test-log.txt >> tests/test-history.log - echo "" >> tests/test-history.log - - if ! grep -q "[PASSED] Test_GP_Context" tests/test-log.txt; then - echo "GP Context Test Failed!" | tee -a tests/test-report.txt - echo "failed=true" >> $GITHUB_ENV - fi - if ! grep -q "[PASSED] Test_Success_Fork_Result" tests/test-log.txt; then - echo "Success Fork Test Failed!" | tee -a tests/test-report.txt - echo "failed=true" >> $GITHUB_ENV - fi - echo "All tests passed successfully!" | tee -a tests/test-report.txt - - - name: Set Commit Status - if: always() - run: | - if [[ "${{ env.failed }}" == "true" ]]; then - echo "::error title=CI/CD Failed::Tests did not pass." - exit 1 - else - echo "::notice title=CI/CD Passed::All tests successful." - fi - - - name: Upload Test Report as Artifact - uses: actions/upload-artifact@v4 - with: - name: riscv64-test-report - path: tests/test-report.txt - - - name: Upload Test History as Artifact - uses: actions/upload-artifact@v4 - with: - name: riscv64-test-history - path: tests/test-history.log - - - name: Create GitHub Issue on Failure - if: env.failed == 'true' - uses: peter-evans/create-issue-from-file@v5 - with: - title: "CI/CD Test Failure - RISC-V Context Switching" - content-filepath: tests/test-report.txt - labels: bug, ci-failure - assignees: your-github-username From 61c89f65fbb92b3dead06bddb5a589667216392f Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 12:59:25 -0500 Subject: [PATCH 84/99] Update .gitignore --- .gitignore | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.gitignore b/.gitignore index c6eb2e6..e8fb279 100644 --- a/.gitignore +++ b/.gitignore @@ -20,18 +20,13 @@ scripts/ /source/userland/ /source/vfs/ - # Ignore Build Files and Directories /source/tests/obj/ /source/tests/bin/ # Ignore GNATprove tarball -<<<<<<< HEAD #gnatprove-x86_64-linux-14.1.0-1.tar.gz -======= -gnatprove-x86_64-linux-14.1.0-1.tar.gz #ignore AUnit build directories /source/tests/bin/ /source/tests/obj/ ->>>>>>> 3dba80c5231b5ae14721d1113f21f7ad84caa697 From fc6e4612c369ca6b725da037982cd5166632dd5d Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:33:35 -0500 Subject: [PATCH 85/99] Fixing files for PR. --- .gitignore | 17 +- GNUmakefile | 10 +- autom4te.cache/output.1 | 23 +- autom4te.cache/output.2 | 20 +- autom4te.cache/requests | 217 ++-- build-aux/config.guess | 1502 +++++++++------------- build-aux/config.sub | 2611 +++++++++++++++++++-------------------- config.log | 54 +- config.status | 22 +- configure | 24 +- configure~ | 24 +- docs/fdl.texi | 2 +- ironclad.gpr | 34 +- 13 files changed, 2090 insertions(+), 2470 deletions(-) diff --git a/.gitignore b/.gitignore index e8fb279..61ca089 100644 --- a/.gitignore +++ b/.gitignore @@ -3,22 +3,7 @@ .vscode/ # Ignore directories we don't want to modify -.github/ -autom3te.cache/ -build-aux/ -docs/ -biggnat-hack/ -obj/ -rtsdir/ -scripts/ -/source/cryptography/ -/source/devices/ -/source/lib/ -/source//memory/ -/source/networking/ -/source/rts/ -/source/userland/ -/source/vfs/ + # Ignore Build Files and Directories /source/tests/obj/ diff --git a/GNUmakefile b/GNUmakefile index b3ec19d..9c24e23 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -18,15 +18,15 @@ override MAKEFLAGS += -rR # Import some autoconf variables as make variables -override SRCDIR := /home/sean/capstone/ICK-RISCV-Context -override BUILDDIR := /home/sean/capstone/ICK-RISCV-Context -override PACKAGE_VERSION := g4411615 +override SRCDIR := /home/michael/capstoneProject/ironclad +override BUILDDIR := /home/michael/capstoneProject/ironclad +override PACKAGE_VERSION := g0a370c9 override PACKAGE_TARNAME := ironclad override OUTPUT := $(PACKAGE_TARNAME) override DIST_OUTPUT := $(PACKAGE_TARNAME)-$(PACKAGE_VERSION) # Take care of reproducible dates. -override SOURCE_DATE_EPOCH := 1740427559 +override SOURCE_DATE_EPOCH := 1731253613 export SOURCE_DATE_EPOCH # Autoconf dir variables. @@ -159,4 +159,4 @@ install-strip: install .PHONY: uninstall uninstall: rm '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/$(PACKAGE_TARNAME)/$(OUTPUT)' - rm '$(call SHESCAPE,$(DESTDIR)$(infodir))/ironclad.info' + rm '$(call SHESCAPE,$(DESTDIR)$(infodir))/ironclad.info' \ No newline at end of file diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1 index f94bc05..7fe3457 100644 --- a/autom4te.cache/output.1 +++ b/autom4te.cache/output.1 @@ -1,6 +1,6 @@ @%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.71 for Ironclad g4411615. +@%:@ Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. @%:@ @%:@ Report bugs to . @%:@ @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g4411615' -PACKAGE_STRING='Ironclad g4411615' +PACKAGE_VERSION='g0a370c9' +PACKAGE_STRING='Ironclad g0a370c9' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g4411615 to adapt to many kinds of systems. +\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g4411615:";; + short | recursive ) echo "Configuration of Ironclad g0a370c9:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g4411615 +Ironclad configure g0a370c9 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g4411615, which was +It was created by Ironclad $as_me g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1740427559" +SOURCE_DATE_EPOCH="1731253613" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g4411615, which was +This file was extended by Ironclad $as_me g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g4411615 +Ironclad config.status g0a370c9 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" @@ -3889,5 +3889,4 @@ fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - +fi \ No newline at end of file diff --git a/autom4te.cache/output.2 b/autom4te.cache/output.2 index 8dbcea7..4396574 100644 --- a/autom4te.cache/output.2 +++ b/autom4te.cache/output.2 @@ -1,6 +1,6 @@ @%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.71 for Ironclad g4411615. +@%:@ Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. @%:@ @%:@ Report bugs to . @%:@ @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g4411615' -PACKAGE_STRING='Ironclad g4411615' +PACKAGE_VERSION='g0a370c9' +PACKAGE_STRING='Ironclad g0a370c9' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g4411615 to adapt to many kinds of systems. +\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g4411615:";; + short | recursive ) echo "Configuration of Ironclad g0a370c9:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g4411615 +Ironclad configure g0a370c9 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g4411615, which was +It was created by Ironclad $as_me g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1740427559" +SOURCE_DATE_EPOCH="1731253613" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g4411615, which was +This file was extended by Ironclad $as_me g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g4411615 +Ironclad config.status g0a370c9 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/autom4te.cache/requests b/autom4te.cache/requests index 278a962..f2a7590 100644 --- a/autom4te.cache/requests +++ b/autom4te.cache/requests @@ -15,18 +15,18 @@ 'configure.ac' ], { - 'm4_pattern_allow' => 1, - '_AM_CONFIG_MACRO_DIRS' => 1, - 'AC_DEFUN_ONCE' => 1, - '_AM_AUTOCONF_VERSION' => 1, - 'include' => 1, - 'AU_DEFUN' => 1, 'm4_pattern_forbid' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AU_DEFUN' => 1, 'AC_CONFIG_MACRO_DIR' => 1, + 'include' => 1, 'AC_DEFUN' => 1, + '_m4_warn' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, 'm4_include' => 1, - '_m4_warn' => 1 + 'AC_DEFUN_ONCE' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'm4_pattern_allow' => 1, + '_AM_AUTOCONF_VERSION' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -40,69 +40,69 @@ 'configure.ac' ], { - 'AC_CONFIG_SUBDIRS' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_CONFIG_LINKS' => 1, + 'm4_pattern_forbid' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_SUBST' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'm4_sinclude' => 1, + 'AM_PATH_GUILE' => 1, '_AM_SUBST_NOTMAKE' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AM_PROG_LIBTOOL' => 1, + 'AC_SUBST_TRACE' => 1, 'AC_CANONICAL_SYSTEM' => 1, - 'AC_LIBSOURCE' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_MAINTAINER_MODE' => 1, + '_AM_COND_IF' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, 'AM_PROG_MKDIR_P' => 1, - 'm4_pattern_forbid' => 1, + 'AC_CANONICAL_TARGET' => 1, '_LT_AC_TAGCONFIG' => 1, 'AM_PROG_CC_C_O' => 1, - 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_MOC' => 1, 'AC_INIT' => 1, - 'AM_PROG_F77_C_O' => 1, - 'AC_FC_PP_SRCEXT' => 1, - 'AH_OUTPUT' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AM_SILENT_RULES' => 1, - 'GTK_DOC_CHECK' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AM_CONDITIONAL' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, '_AM_COND_ENDIF' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'AM_POT_TOOLS' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'm4_include' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AM_PROG_FC_C_O' => 1, - 'AC_CONFIG_FILES' => 1, - 'AM_PROG_AR' => 1, - '_m4_warn' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'include' => 1, - 'AM_NLS' => 1, - 'AC_SUBST' => 1, - 'm4_sinclude' => 1, - 'AC_FC_SRCEXT' => 1, + 'm4_pattern_allow' => 1, 'AM_AUTOMAKE_VERSION' => 1, - 'sinclude' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'AC_CONFIG_LINKS' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AC_FC_FREEFORM' => 1, - 'AM_PROG_MOC' => 1, 'LT_INIT' => 1, - '_AM_COND_IF' => 1, - 'm4_pattern_allow' => 1, - 'AC_CANONICAL_TARGET' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AM_PATH_GUILE' => 1, - 'AC_SUBST_TRACE' => 1, 'IT_PROG_INTLTOOL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AC_FC_SRCEXT' => 1, + 'GTK_DOC_CHECK' => 1, + 'AC_CONFIG_SUBDIRS' => 1, 'AM_MAKEFILE_INCLUDE' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, + 'include' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AH_OUTPUT' => 1, 'AC_FC_PP_DEFINE' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_NLS' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CANONICAL_HOST' => 1, + 'sinclude' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_PROG_AR' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'AC_CONFIG_FILES' => 1, + 'm4_include' => 1, + 'AM_POT_TOOLS' => 1, '_AM_COND_ELSE' => 1, - 'AC_CANONICAL_BUILD' => 1 + 'LT_CONFIG_LTDL_DIR' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + '_m4_warn' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1 } ], 'Autom4te::Request' ), bless( [ @@ -117,70 +117,69 @@ 'configure.ac' ], { + 'AM_ENABLE_MULTILIB' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AC_CONFIG_SUBDIRS' => 1, 'GTK_DOC_CHECK' => 1, + 'AC_FC_SRCEXT' => 1, + 'AM_NLS' => 1, + 'AM_GNU_GETTEXT' => 1, 'AC_CONFIG_HEADERS' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'AM_CONDITIONAL' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AC_FC_PP_SRCEXT' => 1, 'AH_OUTPUT' => 1, - 'AM_SILENT_RULES' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'm4_pattern_forbid' => 1, - 'AM_PROG_CC_C_O' => 1, - 'AC_INIT' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AM_PROG_F77_C_O' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AM_GNU_GETTEXT' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AC_LIBSOURCE' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'include' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AC_CANONICAL_HOST' => 1, 'AM_PROG_AR' => 1, - '_m4_warn' => 1, + 'AM_SILENT_RULES' => 1, + 'sinclude' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'm4_include' => 1, + 'AM_POT_TOOLS' => 1, 'AC_CONFIG_FILES' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, 'AM_PROG_FC_C_O' => 1, - 'm4_include' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AM_PROG_CXX_C_O' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - '_AM_COND_ENDIF' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'AM_POT_TOOLS' => 1, + '_m4_warn' => 1, + 'AM_PROG_F77_C_O' => 1, + 'm4_pattern_forbid' => 1, + 'AC_LIBSOURCE' => 1, 'AC_CONFIG_LINKS' => 1, - 'AC_FC_FREEFORM' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AC_FC_SRCEXT' => 1, - 'sinclude' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_SUBST' => 1, - 'AM_NLS' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'm4_sinclude' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'include' => 1, - 'AC_FC_PP_DEFINE' => 1, - '_AM_COND_ELSE' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'IT_PROG_INTLTOOL' => 1, - 'AC_SUBST_TRACE' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AM_XGETTEXT_OPTION' => 1, + '_AM_SUBST_NOTMAKE' => 1, 'AM_PATH_GUILE' => 1, - 'LT_INIT' => 1, - 'AM_PROG_MOC' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_SUBST_TRACE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_PROG_LIBTOOL' => 1, + '_AM_COND_IF' => 1, + 'AM_CONDITIONAL' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_MKDIR_P' => 1, 'AC_CANONICAL_TARGET' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + '_AM_COND_ENDIF' => 1, + 'AC_INIT' => 1, + 'AM_PROG_MOC' => 1, 'm4_pattern_allow' => 1, - '_AM_COND_IF' => 1 + 'IT_PROG_INTLTOOL' => 1, + 'LT_INIT' => 1, + 'AM_AUTOMAKE_VERSION' => 1 } ], 'Autom4te::Request' ) - ); - + ); \ No newline at end of file diff --git a/build-aux/config.guess b/build-aux/config.guess index 7f76b62..984ffc8 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,14 +1,12 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2022 Free Software Foundation, Inc. +# Copyright 1992-2018 Free Software Foundation, Inc. -# shellcheck disable=SC2006,SC2268 # see below for rationale - -timestamp='2022-01-09' +timestamp='2018-02-24' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -29,19 +27,11 @@ timestamp='2022-01-09' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . -# The "shellcheck disable" line above the timestamp inhibits complaints -# about features and limitations of the classic Bourne shell that were -# superseded or lifted in POSIX. However, this script identifies a wide -# variety of pre-POSIX systems that do not have POSIX shells at all, and -# even some reasonably current systems (Solaris 10 as case-in-point) still -# have a pre-POSIX /bin/sh. - - me=`echo "$0" | sed -e 's,.*/,,'` usage="\ @@ -60,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2022 Free Software Foundation, Inc. +Copyright 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -94,8 +84,7 @@ if test $# != 0; then exit 1 fi -# Just in case it came from the environment. -GUESS= +trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires @@ -107,90 +96,73 @@ GUESS= # Portable tmp directory creation inspired by the Autoconf team. -tmp= -# shellcheck disable=SC2172 -trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 - -set_cc_for_build() { - # prevent multiple calls if $tmp is already set - test "$tmp" && return 0 - : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039,SC3028 - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } - dummy=$tmp/dummy - case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in - ,,) echo "int x;" > "$dummy.c" - for driver in cc gcc c89 c99 ; do - if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD=$driver - break - fi - done - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; - esac -} +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > "$dummy.c" ; + for c in cc gcc c89 c99 ; do + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if test -f /.attbin/uname ; then +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case $UNAME_SYSTEM in +case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) - LIBC=unknown + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu - set_cc_for_build + eval "$set_cc_for_build" cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #elif defined(__GLIBC__) - LIBC=gnu #else - #include - /* First heuristic to detect musl libc. */ - #ifdef __DEFINED_va_list - LIBC=musl - #endif + LIBC=gnu #endif EOF - cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` - eval "$cc_set_libc" + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" - # Second heuristic to detect musl libc. - if [ "$LIBC" = unknown ] && - command -v ldd >/dev/null && - ldd --version 2>&1 | grep -q ^musl; then - LIBC=musl - fi - - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - if [ "$LIBC" = unknown ]; then - LIBC=gnu + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl fi ;; esac # Note: order is significant - the case branches are not exclusive. -case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -202,12 +174,12 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ - /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` - case $UNAME_MACHINE_ARCH in - aarch64eb) machine=aarch64_be-unknown ;; + case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -216,18 +188,18 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine=${arch}${endian}-unknown + machine="${arch}${endian}"-unknown ;; - *) machine=$UNAME_MACHINE_ARCH-unknown ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case $UNAME_MACHINE_ARCH in + case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - set_cc_for_build + eval "$set_cc_for_build" if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -243,7 +215,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in ;; esac # Determine ABI tags. - case $UNAME_MACHINE_ARCH in + case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -254,7 +226,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case $UNAME_VERSION in + case "$UNAME_VERSION" in Debian*) release='-gnu' ;; @@ -265,57 +237,45 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - GUESS=$machine-${os}${release}${abi-} - ;; + echo "$machine-${os}${release}${abi}" + exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE - ;; - *:SecBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` - GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; *:MidnightBSD:*:*) - GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" + exit ;; *:ekkoBSD:*:*) - GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" + exit ;; *:SolidBSD:*:*) - GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE - ;; - *:OS108:*:*) - GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; macppc:MirBSD:*:*) - GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE - ;; + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" + exit ;; *:MirBSD:*:*) - GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; *:Sortix:*:*) - GUESS=$UNAME_MACHINE-unknown-sortix - ;; - *:Twizzler:*:*) - GUESS=$UNAME_MACHINE-unknown-twizzler - ;; + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; *:Redox:*:*) - GUESS=$UNAME_MACHINE-unknown-redox - ;; + echo "$UNAME_MACHINE"-unknown-redox + exit ;; mips:OSF1:*.*) - GUESS=mips-dec-osf1 - ;; + echo mips-dec-osf1 + exit ;; alpha:OSF1:*:*) - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -329,7 +289,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case $ALPHA_CPU_TYPE in + case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -366,121 +326,117 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` - GUESS=$UNAME_MACHINE-dec-osf$OSF_REL - ;; + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; Amiga*:UNIX_System_V:4.0:*) - GUESS=m68k-unknown-sysv4 - ;; + echo m68k-unknown-sysv4 + exit ;; *:[Aa]miga[Oo][Ss]:*:*) - GUESS=$UNAME_MACHINE-unknown-amigaos - ;; + echo "$UNAME_MACHINE"-unknown-amigaos + exit ;; *:[Mm]orph[Oo][Ss]:*:*) - GUESS=$UNAME_MACHINE-unknown-morphos - ;; + echo "$UNAME_MACHINE"-unknown-morphos + exit ;; *:OS/390:*:*) - GUESS=i370-ibm-openedition - ;; + echo i370-ibm-openedition + exit ;; *:z/VM:*:*) - GUESS=s390-ibm-zvmoe - ;; + echo s390-ibm-zvmoe + exit ;; *:OS400:*:*) - GUESS=powerpc-ibm-os400 - ;; + echo powerpc-ibm-os400 + exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - GUESS=arm-acorn-riscix$UNAME_RELEASE - ;; + echo arm-acorn-riscix"$UNAME_RELEASE" + exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - GUESS=arm-unknown-riscos - ;; + echo arm-unknown-riscos + exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - GUESS=hppa1.1-hitachi-hiuxmpp - ;; + echo hppa1.1-hitachi-hiuxmpp + exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - case `(/bin/universe) 2>/dev/null` in - att) GUESS=pyramid-pyramid-sysv3 ;; - *) GUESS=pyramid-pyramid-bsd ;; - esac - ;; + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; NILE*:*:*:dcosx) - GUESS=pyramid-pyramid-svr4 - ;; + echo pyramid-pyramid-svr4 + exit ;; DRS?6000:unix:4.0:6*) - GUESS=sparc-icl-nx6 - ;; + echo sparc-icl-nx6 + exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) GUESS=sparc-icl-nx7 ;; - esac - ;; + sparc) echo sparc-icl-nx7; exit ;; + esac ;; s390x:SunOS:*:*) - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL - ;; + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; sun4H:SunOS:5.*:*) - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=sparc-hal-solaris2$SUN_REL - ;; + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=sparc-sun-solaris2$SUN_REL - ;; + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - GUESS=i386-pc-auroraux$UNAME_RELEASE - ;; + echo i386-pc-auroraux"$UNAME_RELEASE" + exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - set_cc_for_build + eval "$set_cc_for_build" SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if test "$CC_FOR_BUILD" != no_compiler_found; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=$SUN_ARCH-pc-solaris2$SUN_REL - ;; + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=sparc-sun-solaris3$SUN_REL - ;; + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; sun4*:SunOS:*:*) - case `/usr/bin/arch -k` in + case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` - GUESS=sparc-sun-sunos$SUN_REL - ;; + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + exit ;; sun3*:SunOS:*:*) - GUESS=m68k-sun-sunos$UNAME_RELEASE - ;; + echo m68k-sun-sunos"$UNAME_RELEASE" + exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case `/bin/arch` in + case "`/bin/arch`" in sun3) - GUESS=m68k-sun-sunos$UNAME_RELEASE + echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) - GUESS=sparc-sun-sunos$UNAME_RELEASE + echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac - ;; + exit ;; aushp:SunOS:*:*) - GUESS=sparc-auspex-sunos$UNAME_RELEASE - ;; + echo sparc-auspex-sunos"$UNAME_RELEASE" + exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -490,43 +446,43 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - GUESS=m68k-atari-mint$UNAME_RELEASE - ;; + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - GUESS=m68k-atari-mint$UNAME_RELEASE - ;; + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - GUESS=m68k-atari-mint$UNAME_RELEASE - ;; + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - GUESS=m68k-milan-mint$UNAME_RELEASE - ;; + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - GUESS=m68k-hades-mint$UNAME_RELEASE - ;; + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - GUESS=m68k-unknown-mint$UNAME_RELEASE - ;; + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; m68k:machten:*:*) - GUESS=m68k-apple-machten$UNAME_RELEASE - ;; + echo m68k-apple-machten"$UNAME_RELEASE" + exit ;; powerpc:machten:*:*) - GUESS=powerpc-apple-machten$UNAME_RELEASE - ;; + echo powerpc-apple-machten"$UNAME_RELEASE" + exit ;; RISC*:Mach:*:*) - GUESS=mips-dec-mach_bsd4.3 - ;; + echo mips-dec-mach_bsd4.3 + exit ;; RISC*:ULTRIX:*:*) - GUESS=mips-dec-ultrix$UNAME_RELEASE - ;; + echo mips-dec-ultrix"$UNAME_RELEASE" + exit ;; VAX*:ULTRIX*:*:*) - GUESS=vax-dec-ultrix$UNAME_RELEASE - ;; + echo vax-dec-ultrix"$UNAME_RELEASE" + exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - GUESS=clipper-intergraph-clix$UNAME_RELEASE - ;; + echo clipper-intergraph-clix"$UNAME_RELEASE" + exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) - set_cc_for_build + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ @@ -552,79 +508,78 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - GUESS=mips-mips-riscos$UNAME_RELEASE - ;; + echo mips-mips-riscos"$UNAME_RELEASE" + exit ;; Motorola:PowerMAX_OS:*:*) - GUESS=powerpc-motorola-powermax - ;; + echo powerpc-motorola-powermax + exit ;; Motorola:*:4.3:PL8-*) - GUESS=powerpc-harris-powermax - ;; + echo powerpc-harris-powermax + exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - GUESS=powerpc-harris-powermax - ;; + echo powerpc-harris-powermax + exit ;; Night_Hawk:Power_UNIX:*:*) - GUESS=powerpc-harris-powerunix - ;; + echo powerpc-harris-powerunix + exit ;; m88k:CX/UX:7*:*) - GUESS=m88k-harris-cxux7 - ;; + echo m88k-harris-cxux7 + exit ;; m88k:*:4*:R4*) - GUESS=m88k-motorola-sysv4 - ;; + echo m88k-motorola-sysv4 + exit ;; m88k:*:3*:R3*) - GUESS=m88k-motorola-sysv3 - ;; + echo m88k-motorola-sysv3 + exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then - if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ - test "$TARGET_BINARY_INTERFACE"x = x + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] then - GUESS=m88k-dg-dgux$UNAME_RELEASE + echo m88k-dg-dgux"$UNAME_RELEASE" else - GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else - GUESS=i586-dg-dgux$UNAME_RELEASE + echo i586-dg-dgux"$UNAME_RELEASE" fi - ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - GUESS=m88k-dolphin-sysv3 - ;; + echo m88k-dolphin-sysv3 + exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - GUESS=m88k-motorola-sysv3 - ;; + echo m88k-motorola-sysv3 + exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - GUESS=m88k-tektronix-sysv3 - ;; + echo m88k-tektronix-sysv3 + exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - GUESS=m68k-tektronix-bsd - ;; + echo m68k-tektronix-bsd + exit ;; *:IRIX*:*:*) - IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` - GUESS=mips-sgi-irix$IRIX_REL - ;; + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id - ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - GUESS=i386-ibm-aix - ;; + echo i386-ibm-aix + exit ;; ia64:AIX:*:*) - if test -x /usr/bin/oslevel ; then + if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV - ;; + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - set_cc_for_build + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #include @@ -638,16 +593,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - GUESS=$SYSTEM_NAME + echo "$SYSTEM_NAME" else - GUESS=rs6000-ibm-aix3.2.5 + echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - GUESS=rs6000-ibm-aix3.2.4 + echo rs6000-ibm-aix3.2.4 else - GUESS=rs6000-ibm-aix3.2 + echo rs6000-ibm-aix3.2 fi - ;; + exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -655,57 +610,57 @@ EOF else IBM_ARCH=powerpc fi - if test -x /usr/bin/lslpp ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - GUESS=$IBM_ARCH-ibm-aix$IBM_REV - ;; + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + exit ;; *:AIX:*:*) - GUESS=rs6000-ibm-aix - ;; + echo rs6000-ibm-aix + exit ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - GUESS=romp-ibm-bsd4.4 - ;; + echo romp-ibm-bsd4.4 + exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to - ;; # report: romp-ibm BSD 4.3 + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - GUESS=rs6000-bull-bosx - ;; + echo rs6000-bull-bosx + exit ;; DPX/2?00:B.O.S.:*:*) - GUESS=m68k-bull-sysv3 - ;; + echo m68k-bull-sysv3 + exit ;; 9000/[34]??:4.3bsd:1.*:*) - GUESS=m68k-hp-bsd - ;; + echo m68k-hp-bsd + exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - GUESS=m68k-hp-bsd4.4 - ;; + echo m68k-hp-bsd4.4 + exit ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` - case $UNAME_MACHINE in + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if test -x /usr/bin/getconf; then + if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case $sc_cpu_version in + case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case $sc_kernel_bits in + case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if test "$HP_ARCH" = ""; then - set_cc_for_build + if [ "$HP_ARCH" = "" ]; then + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE @@ -743,9 +698,9 @@ EOF test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if test "$HP_ARCH" = hppa2.0w + if [ "$HP_ARCH" = hppa2.0w ] then - set_cc_for_build + eval "$set_cc_for_build" # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -764,14 +719,14 @@ EOF HP_ARCH=hppa64 fi fi - GUESS=$HP_ARCH-hp-hpux$HPUX_REV - ;; + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + exit ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` - GUESS=ia64-hp-hpux$HPUX_REV - ;; + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" + exit ;; 3050*:HI-UX:*:*) - set_cc_for_build + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #include int @@ -799,36 +754,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - GUESS=unknown-hitachi-hiuxwe2 - ;; + echo unknown-hitachi-hiuxwe2 + exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - GUESS=hppa1.1-hp-bsd - ;; + echo hppa1.1-hp-bsd + exit ;; 9000/8??:4.3bsd:*:*) - GUESS=hppa1.0-hp-bsd - ;; + echo hppa1.0-hp-bsd + exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - GUESS=hppa1.0-hp-mpeix - ;; + echo hppa1.0-hp-mpeix + exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - GUESS=hppa1.1-hp-osf - ;; + echo hppa1.1-hp-osf + exit ;; hp8??:OSF1:*:*) - GUESS=hppa1.0-hp-osf - ;; + echo hppa1.0-hp-osf + exit ;; i*86:OSF1:*:*) - if test -x /usr/sbin/sysversion ; then - GUESS=$UNAME_MACHINE-unknown-osf1mk + if [ -x /usr/sbin/sysversion ] ; then + echo "$UNAME_MACHINE"-unknown-osf1mk else - GUESS=$UNAME_MACHINE-unknown-osf1 + echo "$UNAME_MACHINE"-unknown-osf1 fi - ;; + exit ;; parisc*:Lites*:*:*) - GUESS=hppa1.1-hp-lites - ;; + echo hppa1.1-hp-lites + exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - GUESS=c1-convex-bsd - ;; + echo c1-convex-bsd + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -836,18 +791,17 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - GUESS=c34-convex-bsd - ;; + echo c34-convex-bsd + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - GUESS=c38-convex-bsd - ;; + echo c38-convex-bsd + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - GUESS=c4-convex-bsd - ;; + echo c4-convex-bsd + exit ;; CRAY*Y-MP:*:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=ymp-cray-unicos$CRAY_REL - ;; + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -855,129 +809,103 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=t90-cray-unicos$CRAY_REL - ;; + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; CRAY*T3E:*:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=alphaev5-cray-unicosmk$CRAY_REL - ;; + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; CRAY*SV1:*:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=sv1-cray-unicos$CRAY_REL - ;; + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; *:UNICOS/mp:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=craynv-cray-unicosmp$CRAY_REL - ;; + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} - ;; + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} - ;; + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" + exit ;; sparc*:BSD/OS:*:*) - GUESS=sparc-unknown-bsdi$UNAME_RELEASE - ;; + echo sparc-unknown-bsdi"$UNAME_RELEASE" + exit ;; *:BSD/OS:*:*) - GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE - ;; - arm:FreeBSD:*:*) - UNAME_PROCESSOR=`uname -p` - set_cc_for_build - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi - else - FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf - fi - ;; + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case $UNAME_PROCESSOR in + case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL - ;; + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; i*:CYGWIN*:*) - GUESS=$UNAME_MACHINE-pc-cygwin - ;; + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; *:MINGW64*:*) - GUESS=$UNAME_MACHINE-pc-mingw64 - ;; + echo "$UNAME_MACHINE"-pc-mingw64 + exit ;; *:MINGW*:*) - GUESS=$UNAME_MACHINE-pc-mingw32 - ;; + echo "$UNAME_MACHINE"-pc-mingw32 + exit ;; *:MSYS*:*) - GUESS=$UNAME_MACHINE-pc-msys - ;; + echo "$UNAME_MACHINE"-pc-msys + exit ;; i*:PW*:*) - GUESS=$UNAME_MACHINE-pc-pw32 - ;; - *:SerenityOS:*:*) - GUESS=$UNAME_MACHINE-pc-serenity - ;; + echo "$UNAME_MACHINE"-pc-pw32 + exit ;; *:Interix*:*) - case $UNAME_MACHINE in + case "$UNAME_MACHINE" in x86) - GUESS=i586-pc-interix$UNAME_RELEASE - ;; + echo i586-pc-interix"$UNAME_RELEASE" + exit ;; authenticamd | genuineintel | EM64T) - GUESS=x86_64-unknown-interix$UNAME_RELEASE - ;; + echo x86_64-unknown-interix"$UNAME_RELEASE" + exit ;; IA64) - GUESS=ia64-unknown-interix$UNAME_RELEASE - ;; + echo ia64-unknown-interix"$UNAME_RELEASE" + exit ;; esac ;; i*:UWIN*:*) - GUESS=$UNAME_MACHINE-pc-uwin - ;; + echo "$UNAME_MACHINE"-pc-uwin + exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - GUESS=x86_64-pc-cygwin - ;; + echo x86_64-unknown-cygwin + exit ;; prep*:SunOS:5.*:*) - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=powerpcle-unknown-solaris2$SUN_REL - ;; + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; *:GNU:*:*) # the GNU system - GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` - GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` - GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL - ;; + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` - GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC - ;; - *:Minix:*:*) - GUESS=$UNAME_MACHINE-unknown-minix - ;; + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + exit ;; + i*86:Minix:*:*) + echo "$UNAME_MACHINE"-pc-minix + exit ;; aarch64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -988,225 +916,187 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; arm*:Linux:*:*) - set_cc_for_build + eval "$set_cc_for_build" if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else - GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi - ;; + exit ;; avr32*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; cris:Linux:*:*) - GUESS=$UNAME_MACHINE-axis-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; crisv32:Linux:*:*) - GUESS=$UNAME_MACHINE-axis-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; e2k:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; frv:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; hexagon:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; i*86:Linux:*:*) - GUESS=$UNAME_MACHINE-pc-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; ia64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; k1om:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; m32r*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; m68*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; mips:Linux:*:* | mips64:Linux:*:*) - set_cc_for_build - IS_GLIBC=0 - test x"${LIBC}" = xgnu && IS_GLIBC=1 + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef mips - #undef mipsel - #undef mips64 - #undef mips64el - #if ${IS_GLIBC} && defined(_ABI64) - LIBCABI=gnuabi64 - #else - #if ${IS_GLIBC} && defined(_ABIN32) - LIBCABI=gnuabin32 - #else - LIBCABI=${LIBC} - #endif - #endif - - #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 - CPU=mipsisa64r6 - #else - #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 - CPU=mipsisa32r6 - #else - #if defined(__mips64) - CPU=mips64 - #else - CPU=mips - #endif - #endif - #endif - + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - MIPS_ENDIAN=el + CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - MIPS_ENDIAN= + CPU=${UNAME_MACHINE} #else - MIPS_ENDIAN= + CPU= #endif #endif EOF - cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` - eval "$cc_set_vars" - test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" + test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } ;; mips64el:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; openrisc*:Linux:*:*) - GUESS=or1k-unknown-linux-$LIBC - ;; + echo or1k-unknown-linux-"$LIBC" + exit ;; or32:Linux:*:* | or1k*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; padre:Linux:*:*) - GUESS=sparc-unknown-linux-$LIBC - ;; + echo sparc-unknown-linux-"$LIBC" + exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - GUESS=hppa64-unknown-linux-$LIBC - ;; + echo hppa64-unknown-linux-"$LIBC" + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; - PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; - *) GUESS=hppa-unknown-linux-$LIBC ;; + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; esac - ;; + exit ;; ppc64:Linux:*:*) - GUESS=powerpc64-unknown-linux-$LIBC - ;; + echo powerpc64-unknown-linux-"$LIBC" + exit ;; ppc:Linux:*:*) - GUESS=powerpc-unknown-linux-$LIBC - ;; + echo powerpc-unknown-linux-"$LIBC" + exit ;; ppc64le:Linux:*:*) - GUESS=powerpc64le-unknown-linux-$LIBC - ;; + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; ppcle:Linux:*:*) - GUESS=powerpcle-unknown-linux-$LIBC - ;; - riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; s390:Linux:*:* | s390x:Linux:*:*) - GUESS=$UNAME_MACHINE-ibm-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + exit ;; sh64*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; sh*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; tile*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; vax:Linux:*:*) - GUESS=$UNAME_MACHINE-dec-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + exit ;; x86_64:Linux:*:*) - set_cc_for_build - LIBCABI=$LIBC - if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_X32 >/dev/null - then - LIBCABI=${LIBC}x32 - fi + if objdump -f /bin/sh | grep -q elf32-x86-64; then + echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 + else + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" fi - GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI - ;; + exit ;; xtensa*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - GUESS=i386-sequent-sysv4 - ;; + echo i386-sequent-sysv4 + exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION - ;; + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - GUESS=$UNAME_MACHINE-pc-os2-emx - ;; + echo "$UNAME_MACHINE"-pc-os2-emx + exit ;; i*86:XTS-300:*:STOP) - GUESS=$UNAME_MACHINE-unknown-stop - ;; + echo "$UNAME_MACHINE"-unknown-stop + exit ;; i*86:atheos:*:*) - GUESS=$UNAME_MACHINE-unknown-atheos - ;; + echo "$UNAME_MACHINE"-unknown-atheos + exit ;; i*86:syllable:*:*) - GUESS=$UNAME_MACHINE-pc-syllable - ;; + echo "$UNAME_MACHINE"-pc-syllable + exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - GUESS=i386-unknown-lynxos$UNAME_RELEASE - ;; + echo i386-unknown-lynxos"$UNAME_RELEASE" + exit ;; i*86:*DOS:*:*) - GUESS=$UNAME_MACHINE-pc-msdosdjgpp - ;; + echo "$UNAME_MACHINE"-pc-msdosdjgpp + exit ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else - GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi - ;; + exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1214,12 +1104,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - ;; + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" + exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1229,11 +1119,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else - GUESS=$UNAME_MACHINE-pc-sysv32 + echo "$UNAME_MACHINE"-pc-sysv32 fi - ;; + exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1241,31 +1131,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - GUESS=i586-pc-msdosdjgpp - ;; + echo i586-pc-msdosdjgpp + exit ;; Intel:Mach:3*:*) - GUESS=i386-pc-mach3 - ;; + echo i386-pc-mach3 + exit ;; paragon:*:*:*) - GUESS=i860-intel-osf1 - ;; + echo i860-intel-osf1 + exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi - ;; + exit ;; mini*:CTIX:SYS*5:*) # "miniframe" - GUESS=m68010-convergent-sysv - ;; + echo m68010-convergent-sysv + exit ;; mc68k:UNIX:SYSTEM5:3.51m) - GUESS=m68k-convergent-sysv - ;; + echo m68k-convergent-sysv + exit ;; M680?0:D-NIX:5.3:*) - GUESS=m68k-diab-dnix - ;; + echo m68k-diab-dnix + exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1290,404 +1180,249 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - GUESS=m68k-unknown-lynxos$UNAME_RELEASE - ;; + echo m68k-unknown-lynxos"$UNAME_RELEASE" + exit ;; mc68030:UNIX_System_V:4.*:*) - GUESS=m68k-atari-sysv4 - ;; + echo m68k-atari-sysv4 + exit ;; TSUNAMI:LynxOS:2.*:*) - GUESS=sparc-unknown-lynxos$UNAME_RELEASE - ;; + echo sparc-unknown-lynxos"$UNAME_RELEASE" + exit ;; rs6000:LynxOS:2.*:*) - GUESS=rs6000-unknown-lynxos$UNAME_RELEASE - ;; + echo rs6000-unknown-lynxos"$UNAME_RELEASE" + exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - GUESS=powerpc-unknown-lynxos$UNAME_RELEASE - ;; + echo powerpc-unknown-lynxos"$UNAME_RELEASE" + exit ;; SM[BE]S:UNIX_SV:*:*) - GUESS=mips-dde-sysv$UNAME_RELEASE - ;; + echo mips-dde-sysv"$UNAME_RELEASE" + exit ;; RM*:ReliantUNIX-*:*:*) - GUESS=mips-sni-sysv4 - ;; + echo mips-sni-sysv4 + exit ;; RM*:SINIX-*:*:*) - GUESS=mips-sni-sysv4 - ;; + echo mips-sni-sysv4 + exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - GUESS=$UNAME_MACHINE-sni-sysv4 + echo "$UNAME_MACHINE"-sni-sysv4 else - GUESS=ns32k-sni-sysv + echo ns32k-sni-sysv fi - ;; + exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says - GUESS=i586-unisys-sysv4 - ;; + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - GUESS=hppa1.1-stratus-sysv4 - ;; + echo hppa1.1-stratus-sysv4 + exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - GUESS=i860-stratus-sysv4 - ;; + echo i860-stratus-sysv4 + exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - GUESS=$UNAME_MACHINE-stratus-vos - ;; + echo "$UNAME_MACHINE"-stratus-vos + exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. - GUESS=hppa1.1-stratus-vos - ;; + echo hppa1.1-stratus-vos + exit ;; mc68*:A/UX:*:*) - GUESS=m68k-apple-aux$UNAME_RELEASE - ;; + echo m68k-apple-aux"$UNAME_RELEASE" + exit ;; news*:NEWS-OS:6*:*) - GUESS=mips-sony-newsos6 - ;; + echo mips-sony-newsos6 + exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if test -d /usr/nec; then - GUESS=mips-nec-sysv$UNAME_RELEASE + if [ -d /usr/nec ]; then + echo mips-nec-sysv"$UNAME_RELEASE" else - GUESS=mips-unknown-sysv$UNAME_RELEASE + echo mips-unknown-sysv"$UNAME_RELEASE" fi - ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - GUESS=powerpc-be-beos - ;; + echo powerpc-be-beos + exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - GUESS=powerpc-apple-beos - ;; + echo powerpc-apple-beos + exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - GUESS=i586-pc-beos - ;; + echo i586-pc-beos + exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - GUESS=i586-pc-haiku - ;; + echo i586-pc-haiku + exit ;; x86_64:Haiku:*:*) - GUESS=x86_64-unknown-haiku - ;; + echo x86_64-unknown-haiku + exit ;; SX-4:SUPER-UX:*:*) - GUESS=sx4-nec-superux$UNAME_RELEASE - ;; + echo sx4-nec-superux"$UNAME_RELEASE" + exit ;; SX-5:SUPER-UX:*:*) - GUESS=sx5-nec-superux$UNAME_RELEASE - ;; + echo sx5-nec-superux"$UNAME_RELEASE" + exit ;; SX-6:SUPER-UX:*:*) - GUESS=sx6-nec-superux$UNAME_RELEASE - ;; + echo sx6-nec-superux"$UNAME_RELEASE" + exit ;; SX-7:SUPER-UX:*:*) - GUESS=sx7-nec-superux$UNAME_RELEASE - ;; + echo sx7-nec-superux"$UNAME_RELEASE" + exit ;; SX-8:SUPER-UX:*:*) - GUESS=sx8-nec-superux$UNAME_RELEASE - ;; + echo sx8-nec-superux"$UNAME_RELEASE" + exit ;; SX-8R:SUPER-UX:*:*) - GUESS=sx8r-nec-superux$UNAME_RELEASE - ;; + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; SX-ACE:SUPER-UX:*:*) - GUESS=sxace-nec-superux$UNAME_RELEASE - ;; + echo sxace-nec-superux"$UNAME_RELEASE" + exit ;; Power*:Rhapsody:*:*) - GUESS=powerpc-apple-rhapsody$UNAME_RELEASE - ;; + echo powerpc-apple-rhapsody"$UNAME_RELEASE" + exit ;; *:Rhapsody:*:*) - GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE - ;; - arm64:Darwin:*:*) - GUESS=aarch64-apple-darwin$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` - case $UNAME_PROCESSOR in - unknown) UNAME_PROCESSOR=powerpc ;; - esac - if command -v xcode-select > /dev/null 2> /dev/null && \ - ! xcode-select --print-path > /dev/null 2> /dev/null ; then - # Avoid executing cc if there is no toolchain installed as - # cc will be a stub that puts up a graphical alert - # prompting the user to install developer tools. - CC_FOR_BUILD=no_compiler_found - else - set_cc_for_build + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval "$set_cc_for_build" + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc fi - if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi fi elif test "$UNAME_PROCESSOR" = i386 ; then - # uname -m returns i386 or x86_64 - UNAME_PROCESSOR=$UNAME_MACHINE + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 fi - GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE - ;; + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE - ;; + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + exit ;; *:QNX:*:4*) - GUESS=i386-pc-qnx - ;; + echo i386-pc-qnx + exit ;; NEO-*:NONSTOP_KERNEL:*:*) - GUESS=neo-tandem-nsk$UNAME_RELEASE - ;; + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; NSE-*:NONSTOP_KERNEL:*:*) - GUESS=nse-tandem-nsk$UNAME_RELEASE - ;; + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; NSR-*:NONSTOP_KERNEL:*:*) - GUESS=nsr-tandem-nsk$UNAME_RELEASE - ;; + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; NSV-*:NONSTOP_KERNEL:*:*) - GUESS=nsv-tandem-nsk$UNAME_RELEASE - ;; + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; NSX-*:NONSTOP_KERNEL:*:*) - GUESS=nsx-tandem-nsk$UNAME_RELEASE - ;; + echo nsx-tandem-nsk"$UNAME_RELEASE" + exit ;; *:NonStop-UX:*:*) - GUESS=mips-compaq-nonstopux - ;; + echo mips-compaq-nonstopux + exit ;; BS2000:POSIX*:*:*) - GUESS=bs2000-siemens-sysv - ;; + echo bs2000-siemens-sysv + exit ;; DS/*:UNIX_System_V:*:*) - GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE - ;; + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "${cputype-}" = 386; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 - elif test "x${cputype-}" != x; then - UNAME_MACHINE=$cputype + else + UNAME_MACHINE="$cputype" fi - GUESS=$UNAME_MACHINE-unknown-plan9 - ;; + echo "$UNAME_MACHINE"-unknown-plan9 + exit ;; *:TOPS-10:*:*) - GUESS=pdp10-unknown-tops10 - ;; + echo pdp10-unknown-tops10 + exit ;; *:TENEX:*:*) - GUESS=pdp10-unknown-tenex - ;; + echo pdp10-unknown-tenex + exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - GUESS=pdp10-dec-tops20 - ;; + echo pdp10-dec-tops20 + exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - GUESS=pdp10-xkl-tops20 - ;; + echo pdp10-xkl-tops20 + exit ;; *:TOPS-20:*:*) - GUESS=pdp10-unknown-tops20 - ;; + echo pdp10-unknown-tops20 + exit ;; *:ITS:*:*) - GUESS=pdp10-unknown-its - ;; + echo pdp10-unknown-its + exit ;; SEI:*:*:SEIUX) - GUESS=mips-sei-seiux$UNAME_RELEASE - ;; + echo mips-sei-seiux"$UNAME_RELEASE" + exit ;; *:DragonFly:*:*) - DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL - ;; + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case $UNAME_MACHINE in - A*) GUESS=alpha-dec-vms ;; - I*) GUESS=ia64-dec-vms ;; - V*) GUESS=vax-dec-vms ;; + case "$UNAME_MACHINE" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) - GUESS=i386-pc-xenix - ;; + echo i386-pc-xenix + exit ;; i*86:skyos:*:*) - SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` - GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL - ;; + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" + exit ;; i*86:rdos:*:*) - GUESS=$UNAME_MACHINE-pc-rdos - ;; - i*86:Fiwix:*:*) - GUESS=$UNAME_MACHINE-pc-fiwix - ;; - *:AROS:*:*) - GUESS=$UNAME_MACHINE-unknown-aros - ;; + echo "$UNAME_MACHINE"-pc-rdos + exit ;; + i*86:AROS:*:*) + echo "$UNAME_MACHINE"-pc-aros + exit ;; x86_64:VMkernel:*:*) - GUESS=$UNAME_MACHINE-unknown-esx - ;; + echo "$UNAME_MACHINE"-unknown-esx + exit ;; amd64:Isilon\ OneFS:*:*) - GUESS=x86_64-unknown-onefs - ;; - *:Unleashed:*:*) - GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE - ;; + echo x86_64-unknown-onefs + exit ;; esac -# Do we have a guess based on uname results? -if test "x$GUESS" != x; then - echo "$GUESS" - exit -fi - -# No uname command or uname output not recognized. -set_cc_for_build -cat > "$dummy.c" < -#include -#endif -#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) -#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) -#include -#if defined(_SIZE_T_) || defined(SIGLOST) -#include -#endif -#endif -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); -#endif - -#if defined (vax) -#if !defined (ultrix) -#include -#if defined (BSD) -#if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -#else -#if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -#else - printf ("vax-dec-bsd\n"); exit (0); -#endif -#endif -#else - printf ("vax-dec-bsd\n"); exit (0); -#endif -#else -#if defined(_SIZE_T_) || defined(SIGLOST) - struct utsname un; - uname (&un); - printf ("vax-dec-ultrix%s\n", un.release); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif -#endif -#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) -#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) -#if defined(_SIZE_T_) || defined(SIGLOST) - struct utsname *un; - uname (&un); - printf ("mips-dec-ultrix%s\n", un.release); exit (0); -#else - printf ("mips-dec-ultrix\n"); exit (0); -#endif -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. -test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } - echo "$0: unable to guess system type" >&2 -case $UNAME_MACHINE:$UNAME_SYSTEM in +case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 + echo "$me: invalid option $1$help" exit 1 ;; *local*) @@ -119,1186 +110,1223 @@ case $# in exit 1;; esac -# Split fields of configuration type -# shellcheck disable=SC2162 -saved_IFS=$IFS -IFS="-" read field1 field2 field3 field4 <&2 - exit 1 +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. ;; - *-*-*-*) - basic_machine=$field1-$field2 - basic_os=$field3-$field4 + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 ;; - *-*-*) - # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two - # parts - maybe_os=$field2-$field3 - case $maybe_os in - nto-qnx* | linux-* | uclinux-uclibc* \ - | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ - | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova*) - basic_machine=$field1 - basic_os=$maybe_os - ;; - android-linux) - basic_machine=$field1-unknown - basic_os=linux-android - ;; - *) - basic_machine=$field1-$field2 - basic_os=$field3 - ;; - esac + -bluegene*) + os=-cnk ;; - *-*) - # A lone config we happen to match not fitting any pattern - case $field1-$field2 in - decstation-3100) - basic_machine=mips-dec - basic_os= - ;; - *-*) - # Second component is usually, but not always the OS - case $field2 in - # Prevent following clause from handling this valid os - sun*os*) - basic_machine=$field1 - basic_os=$field2 - ;; - zephyr*) - basic_machine=$field1-unknown - basic_os=$field2 - ;; - # Manufacturers - dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ - | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ - | unicom* | ibm* | next | hp | isi* | apollo | altos* \ - | convergent* | ncr* | news | 32* | 3600* | 3100* \ - | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ - | ultra | tti* | harris | dolphin | highlevel | gould \ - | cbm | ns | masscomp | apple | axis | knuth | cray \ - | microblaze* | sim | cisco \ - | oki | wec | wrs | winbond) - basic_machine=$field1-$field2 - basic_os= - ;; - *) - basic_machine=$field1 - basic_os=$field2 - ;; - esac - ;; - esac + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 ;; - *) - # Convert single-component short-hands not valid as part of - # multi-component configurations. - case $field1 in - 386bsd) - basic_machine=i386-pc - basic_os=bsd - ;; - a29khif) - basic_machine=a29k-amd - basic_os=udi - ;; - adobe68k) - basic_machine=m68010-adobe - basic_os=scout - ;; - alliant) - basic_machine=fx80-alliant - basic_os= - ;; - altos | altos3068) - basic_machine=m68k-altos - basic_os= - ;; - am29k) - basic_machine=a29k-none - basic_os=bsd - ;; - amdahl) - basic_machine=580-amdahl - basic_os=sysv - ;; - amiga) - basic_machine=m68k-unknown - basic_os= - ;; - amigaos | amigados) - basic_machine=m68k-unknown - basic_os=amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - basic_os=sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - basic_os=sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - basic_os=bsd - ;; - aros) - basic_machine=i386-pc - basic_os=aros - ;; - aux) - basic_machine=m68k-apple - basic_os=aux - ;; - balance) - basic_machine=ns32k-sequent - basic_os=dynix - ;; - blackfin) - basic_machine=bfin-unknown - basic_os=linux - ;; - cegcc) - basic_machine=arm-unknown - basic_os=cegcc - ;; - convex-c1) - basic_machine=c1-convex - basic_os=bsd - ;; - convex-c2) - basic_machine=c2-convex - basic_os=bsd - ;; - convex-c32) - basic_machine=c32-convex - basic_os=bsd - ;; - convex-c34) - basic_machine=c34-convex - basic_os=bsd - ;; - convex-c38) - basic_machine=c38-convex - basic_os=bsd - ;; - cray) - basic_machine=j90-cray - basic_os=unicos - ;; - crds | unos) - basic_machine=m68k-crds - basic_os= - ;; - da30) - basic_machine=m68k-da30 - basic_os= - ;; - decstation | pmax | pmin | dec3100 | decstatn) - basic_machine=mips-dec - basic_os= - ;; - delta88) - basic_machine=m88k-motorola - basic_os=sysv3 - ;; - dicos) - basic_machine=i686-pc - basic_os=dicos - ;; - djgpp) - basic_machine=i586-pc - basic_os=msdosdjgpp - ;; - ebmon29k) - basic_machine=a29k-amd - basic_os=ebmon - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - basic_os=ose - ;; - gmicro) - basic_machine=tron-gmicro - basic_os=sysv - ;; - go32) - basic_machine=i386-pc - basic_os=go32 - ;; - h8300hms) - basic_machine=h8300-hitachi - basic_os=hms - ;; - h8300xray) - basic_machine=h8300-hitachi - basic_os=xray - ;; - h8500hms) - basic_machine=h8500-hitachi - basic_os=hms - ;; - harris) - basic_machine=m88k-harris - basic_os=sysv3 - ;; - hp300 | hp300hpux) - basic_machine=m68k-hp - basic_os=hpux - ;; - hp300bsd) - basic_machine=m68k-hp - basic_os=bsd - ;; - hppaosf) - basic_machine=hppa1.1-hp - basic_os=osf - ;; - hppro) - basic_machine=hppa1.1-hp - basic_os=proelf - ;; - i386mach) - basic_machine=i386-mach - basic_os=mach - ;; - isi68 | isi) - basic_machine=m68k-isi - basic_os=sysv - ;; - m68knommu) - basic_machine=m68k-unknown - basic_os=linux - ;; - magnum | m3230) - basic_machine=mips-mips - basic_os=sysv - ;; - merlin) - basic_machine=ns32k-utek - basic_os=sysv - ;; - mingw64) - basic_machine=x86_64-pc - basic_os=mingw64 - ;; - mingw32) - basic_machine=i686-pc - basic_os=mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - basic_os=mingw32ce - ;; - monitor) - basic_machine=m68k-rom68k - basic_os=coff - ;; - morphos) - basic_machine=powerpc-unknown - basic_os=morphos - ;; - moxiebox) - basic_machine=moxie-unknown - basic_os=moxiebox - ;; - msdos) - basic_machine=i386-pc - basic_os=msdos - ;; - msys) - basic_machine=i686-pc - basic_os=msys - ;; - mvs) - basic_machine=i370-ibm - basic_os=mvs - ;; - nacl) - basic_machine=le32-unknown - basic_os=nacl - ;; - ncr3000) - basic_machine=i486-ncr - basic_os=sysv4 - ;; - netbsd386) - basic_machine=i386-pc - basic_os=netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - basic_os=linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - basic_os=newsos - ;; - news1000) - basic_machine=m68030-sony - basic_os=newsos - ;; - necv70) - basic_machine=v70-nec - basic_os=sysv - ;; - nh3000) - basic_machine=m68k-harris - basic_os=cxux - ;; - nh[45]000) - basic_machine=m88k-harris - basic_os=cxux - ;; - nindy960) - basic_machine=i960-intel - basic_os=nindy - ;; - mon960) - basic_machine=i960-intel - basic_os=mon960 - ;; - nonstopux) - basic_machine=mips-compaq - basic_os=nonstopux - ;; - os400) - basic_machine=powerpc-ibm - basic_os=os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - basic_os=ose - ;; - os68k) - basic_machine=m68k-none - basic_os=os68k - ;; - paragon) - basic_machine=i860-intel - basic_os=osf - ;; - parisc) - basic_machine=hppa-unknown - basic_os=linux - ;; - psp) - basic_machine=mipsallegrexel-sony - basic_os=psp - ;; - pw32) - basic_machine=i586-unknown - basic_os=pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - basic_os=rdos - ;; - rdos32) - basic_machine=i386-pc - basic_os=rdos - ;; - rom68k) - basic_machine=m68k-rom68k - basic_os=coff - ;; - sa29200) - basic_machine=a29k-amd - basic_os=udi - ;; - sei) - basic_machine=mips-sei - basic_os=seiux - ;; - sequent) - basic_machine=i386-sequent - basic_os= - ;; - sps7) - basic_machine=m68k-bull - basic_os=sysv2 - ;; - st2000) - basic_machine=m68k-tandem - basic_os= - ;; - stratus) - basic_machine=i860-stratus - basic_os=sysv4 - ;; - sun2) - basic_machine=m68000-sun - basic_os= - ;; - sun2os3) - basic_machine=m68000-sun - basic_os=sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - basic_os=sunos4 - ;; - sun3) - basic_machine=m68k-sun - basic_os= - ;; - sun3os3) - basic_machine=m68k-sun - basic_os=sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - basic_os=sunos4 - ;; - sun4) - basic_machine=sparc-sun - basic_os= - ;; - sun4os3) - basic_machine=sparc-sun - basic_os=sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - basic_os=sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - basic_os=solaris2 - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - basic_os= - ;; - sv1) - basic_machine=sv1-cray - basic_os=unicos - ;; - symmetry) - basic_machine=i386-sequent - basic_os=dynix - ;; - t3e) - basic_machine=alphaev5-cray - basic_os=unicos - ;; - t90) - basic_machine=t90-cray - basic_os=unicos - ;; - toad1) - basic_machine=pdp10-xkl - basic_os=tops20 - ;; - tpf) - basic_machine=s390x-ibm - basic_os=tpf - ;; - udi29k) - basic_machine=a29k-amd - basic_os=udi - ;; - ultra3) - basic_machine=a29k-nyu - basic_os=sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - basic_os=none - ;; - vaxv) - basic_machine=vax-dec - basic_os=sysv - ;; - vms) - basic_machine=vax-dec - basic_os=vms - ;; - vsta) - basic_machine=i386-pc - basic_os=vsta - ;; - vxworks960) - basic_machine=i960-wrs - basic_os=vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - basic_os=vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - basic_os=vxworks - ;; - xbox) - basic_machine=i686-pc - basic_os=mingw32 - ;; - ymp) - basic_machine=ymp-cray - basic_os=unicos - ;; - *) - basic_machine=$1 - basic_os= - ;; - esac + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint ;; esac -# Decode 1-component or ad-hoc basic machines +# Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in - # Here we handle the default manufacturer of certain CPU types. It is in - # some cases the only manufacturer, in others, it is the most popular. - w89k) - cpu=hppa1.1 - vendor=winbond + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | wasm32 \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown ;; - op50n) - cpu=hppa1.1 - vendor=oki + leon|leon[3-9]) + basic_machine=sparc-$basic_machine ;; - op60c) - cpu=hppa1.1 - vendor=oki + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none ;; - ibm*) - cpu=i370 - vendor=ibm + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) ;; - orion105) - cpu=clipper - vendor=highlevel + ms1) + basic_machine=mt-unknown ;; - mac | mpw | mac-mpw) - cpu=m68k - vendor=apple + + strongarm | thumb | xscale) + basic_machine=arm-unknown ;; - pmac | pmac-mpw) - cpu=powerpc - vendor=apple + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown ;; + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | wasm32-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-pc + os=-bsd + ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - cpu=m68000 - vendor=att + basic_machine=m68000-att ;; 3b*) - cpu=we32k - vendor=att + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux ;; bluegene*) - cpu=powerpc - vendor=ibm - basic_os=cnk + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec ;; decsystem10* | dec10*) - cpu=pdp10 - vendor=dec - basic_os=tops10 + basic_machine=pdp10-dec + os=-tops10 ;; decsystem20* | dec20*) - cpu=pdp10 - vendor=dec - basic_os=tops20 + basic_machine=pdp10-dec + os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) - cpu=m68k - vendor=motorola + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx ;; dpx2*) - cpu=m68k - vendor=bull - basic_os=sysv3 + basic_machine=m68k-bull + os=-sysv3 ;; - encore | umax | mmax) - cpu=ns32k - vendor=encore + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon ;; elxsi) - cpu=elxsi - vendor=elxsi - basic_os=${basic_os:-bsd} + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose ;; fx2800) - cpu=i860 - vendor=alliant + basic_machine=i860-alliant ;; genix) - cpu=ns32k - vendor=ns + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 ;; h3050r* | hiux*) - cpu=hppa1.1 - vendor=hitachi - basic_os=hiuxwe2 + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) - cpu=hppa1.0 - vendor=hp + basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) - cpu=m68000 - vendor=hp + basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) - cpu=m68k - vendor=hp + basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) - cpu=hppa1.0 - vendor=hp + basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) - cpu=hppa1.1 - vendor=hp + basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp - cpu=hppa1.1 - vendor=hp + basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp - cpu=hppa1.1 - vendor=hp + basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) - cpu=hppa1.1 - vendor=hp + basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) - cpu=hppa1.0 - vendor=hp + basic_machine=hppa1.0-hp + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm ;; i*86v32) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - basic_os=sysv32 + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv32 ;; i*86v4*) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - basic_os=sysv4 + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv4 ;; i*86v) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - basic_os=sysv + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv ;; i*86sol2) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - basic_os=solaris2 + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach ;; - j90 | j90-cray) - cpu=j90 - vendor=cray - basic_os=${basic_os:-unicos} + vsta) + basic_machine=i386-unknown + os=-vsta ;; iris | iris4d) - cpu=mips - vendor=sgi - case $basic_os in - irix*) + basic_machine=mips-sgi + case $os in + -irix*) ;; *) - basic_os=irix4 + os=-irix4 ;; esac ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; miniframe) - cpu=m68000 - vendor=convergent + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox ;; - *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) - cpu=m68k - vendor=atari - basic_os=mint + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos ;; news-3600 | risc-news) - cpu=mips - vendor=sony - basic_os=newsos + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv ;; next | m*-next) - cpu=m68k - vendor=next - case $basic_os in - openstep*) - ;; - nextstep*) + basic_machine=m68k-next + case $os in + -nextstep* ) ;; - ns2*) - basic_os=nextstep2 + -ns2*) + os=-nextstep2 ;; *) - basic_os=nextstep3 + os=-nextstep3 ;; esac ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; np1) - cpu=np1 - vendor=gould + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem ;; op50n-* | op60c-*) - cpu=hppa1.1 - vendor=oki - basic_os=proelf + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k ;; pa-hitachi) - cpu=hppa1.1 - vendor=hitachi - basic_os=hiuxwe2 + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux ;; pbd) - cpu=sparc - vendor=tti + basic_machine=sparc-tti ;; pbb) - cpu=m68k - vendor=tti + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc ;; - pc532) - cpu=ns32k - vendor=pc532 + pc98-*) + basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pn) - cpu=pn - vendor=gould + basic_machine=pn-gould ;; - power) - cpu=power - vendor=ibm + power) basic_machine=power-ibm ;; - ps2) - cpu=i386 - vendor=ibm + ppc | ppcbe) basic_machine=powerpc-unknown ;; - rm[46]00) - cpu=mips - vendor=siemens + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - rtpc | rtpc-*) - cpu=romp - vendor=ibm + ppcle | powerpclittle) + basic_machine=powerpcle-unknown ;; - sde) - cpu=mipsisa32 - vendor=sde - basic_os=${basic_os:-elf} + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - simso-wrs) - cpu=sparclite - vendor=wrs - basic_os=vxworks + ppc64) basic_machine=powerpc64-unknown ;; - tower | tower-32) - cpu=m68k - vendor=ncr + ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - vpp*|vx|vx-*) - cpu=f301 - vendor=fujitsu + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown ;; - w65) - cpu=w65 - vendor=wdc + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - w89k-*) - cpu=hppa1.1 - vendor=winbond - basic_os=proelf + ps2) + basic_machine=i386-ibm ;; - none) - cpu=none - vendor=none + pw32) + basic_machine=i586-unknown + os=-pw32 ;; - leon|leon[3-9]) - cpu=sparc - vendor=$basic_machine + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos ;; - leon-*|leon[3-9]-*) - cpu=sparc - vendor=`echo "$basic_machine" | sed 's/-.*//'` + rdos32) + basic_machine=i386-pc + os=-rdos ;; - - *-*) - # shellcheck disable=SC2162 - saved_IFS=$IFS - IFS="-" read cpu vendor <&2 - exit 1 - ;; - esac + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. -case $vendor in - digital*) - vendor=dec +case $basic_machine in + *-digital*) + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` ;; - commodore*) - vendor=cbm + *-commodore*) + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` ;; *) ;; @@ -1306,215 +1334,203 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if test x$basic_os != x +if [ x"$os" != x"" ] then - -# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just -# set os. -case $basic_os in - gnu/linux*) - kernel=linux - os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` - ;; - os2-emx) - kernel=os2 - os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` - ;; - nto-qnx*) - kernel=nto - os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` - ;; - *-*) - # shellcheck disable=SC2162 - saved_IFS=$IFS - IFS="-" read kernel os <&2 + exit 1 ;; esac - else # Here we handle the default operating systems that come with various machines. @@ -1527,364 +1543,259 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. -kernel= -case $cpu-$vendor in +case $basic_machine in score-*) - os=elf + os=-elf ;; spu-*) - os=elf + os=-elf ;; *-acorn) - os=riscix1.2 + os=-riscix1.2 ;; arm*-rebel) - kernel=linux - os=gnu + os=-linux ;; arm*-semi) - os=aout + os=-aout ;; c4x-* | tic4x-*) - os=coff + os=-coff ;; c8051-*) - os=elf - ;; - clipper-intergraph) - os=clix + os=-elf ;; hexagon-*) - os=elf + os=-elf ;; tic54x-*) - os=coff + os=-coff ;; tic55x-*) - os=coff + os=-coff ;; tic6x-*) - os=coff + os=-coff ;; # This must come before the *-dec entry. pdp10-*) - os=tops20 + os=-tops20 ;; pdp11-*) - os=none + os=-none ;; *-dec | vax-*) - os=ultrix4.2 + os=-ultrix4.2 ;; m68*-apollo) - os=domain + os=-domain ;; i386-sun) - os=sunos4.0.2 + os=-sunos4.0.2 ;; m68000-sun) - os=sunos3 + os=-sunos3 ;; m68*-cisco) - os=aout + os=-aout ;; mep-*) - os=elf + os=-elf ;; mips*-cisco) - os=elf + os=-elf ;; mips*-*) - os=elf + os=-elf ;; or32-*) - os=coff + os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. - os=sysv3 + os=-sysv3 ;; sparc-* | *-sun) - os=sunos4.1.1 + os=-sunos4.1.1 ;; pru-*) - os=elf + os=-elf ;; *-be) - os=beos + os=-beos ;; *-ibm) - os=aix + os=-aix ;; *-knuth) - os=mmixware + os=-mmixware ;; *-wec) - os=proelf + os=-proelf ;; *-winbond) - os=proelf + os=-proelf ;; *-oki) - os=proelf + os=-proelf ;; *-hp) - os=hpux + os=-hpux ;; *-hitachi) - os=hiux + os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=sysv + os=-sysv ;; *-cbm) - os=amigaos + os=-amigaos ;; *-dg) - os=dgux + os=-dgux ;; *-dolphin) - os=sysv3 + os=-sysv3 ;; m68k-ccur) - os=rtu + os=-rtu ;; m88k-omron*) - os=luna + os=-luna ;; *-next) - os=nextstep + os=-nextstep ;; *-sequent) - os=ptx + os=-ptx ;; *-crds) - os=unos + os=-unos ;; *-ns) - os=genix + os=-genix ;; i370-*) - os=mvs + os=-mvs ;; *-gould) - os=sysv + os=-sysv ;; *-highlevel) - os=bsd + os=-bsd ;; *-encore) - os=bsd + os=-bsd ;; *-sgi) - os=irix + os=-irix ;; *-siemens) - os=sysv4 + os=-sysv4 ;; *-masscomp) - os=rtu + os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) - os=uxpv + os=-uxpv ;; *-rom68k) - os=coff + os=-coff ;; *-*bug) - os=coff + os=-coff ;; *-apple) - os=macos + os=-macos ;; *-atari*) - os=mint - ;; - *-wrs) - os=vxworks + os=-mint ;; *) - os=none + os=-none ;; esac - fi -# Now, validate our (potentially fixed-up) OS. -case $os in - # Sometimes we do "kernel-libc", so those need to count as OSes. - musl* | newlib* | relibc* | uclibc*) - ;; - # Likewise for "kernel-abi" - eabi* | gnueabi*) - ;; - # VxWorks passes extra cpu info in the 4th filed. - simlinux | simwindows | spe) - ;; - # Now accept the basic system types. - # The portable systems comes first. - # Each alternative MUST end in a * to match a version number. - gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ - | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ - | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ - | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ - | hiux* | abug | nacl* | netware* | windows* \ - | os9* | macos* | osx* | ios* \ - | mpw* | magic* | mmixware* | mon960* | lnews* \ - | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ - | aos* | aros* | cloudabi* | sortix* | twizzler* \ - | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ - | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ - | mirbsd* | netbsd* | dicos* | openedition* | ose* \ - | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ - | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ - | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ - | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ - | udi* | lites* | ieee* | go32* | aux* | hcos* \ - | chorusrdb* | cegcc* | glidix* | serenity* \ - | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ - | midipix* | mingw32* | mingw64* | mint* \ - | uxpv* | beos* | mpeix* | udk* | moxiebox* \ - | interix* | uwin* | mks* | rhapsody* | darwin* \ - | openstep* | oskit* | conix* | pw32* | nonstopux* \ - | storm-chaos* | tops10* | tenex* | tops20* | its* \ - | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ - | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ - | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ - | skyos* | haiku* | rdos* | toppers* | drops* | es* \ - | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ - | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ - | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ - | fiwix* ) - ;; - # This one is extra strict with allowed versions - sco3.2v2 | sco3.2v[4-9]* | sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - ;; - none) - ;; - *) - echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 - exit 1 - ;; -esac - -# As a final step for OS-related things, validate the OS-kernel combination -# (given a valid OS), if there is a kernel. -case $kernel-$os in - linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ - | linux-musl* | linux-relibc* | linux-uclibc* ) - ;; - uclinux-uclibc* ) - ;; - -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) - # These are just libc implementations, not actual OSes, and thus - # require a kernel. - echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 - exit 1 - ;; - kfreebsd*-gnu* | kopensolaris*-gnu*) - ;; - vxworks-simlinux | vxworks-simwindows | vxworks-spe) - ;; - nto-qnx*) - ;; - os2-emx) - ;; - *-eabi* | *-gnueabi*) - ;; - -*) - # Blank kernel with real OS is always fine. - ;; - *-*) - echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 - exit 1 - ;; -esac - # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. -case $vendor in - unknown) - case $cpu-$os in - *-riscix*) +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) vendor=acorn ;; - *-sunos*) + -sunos*) vendor=sun ;; - *-cnk* | *-aix*) + -cnk*|-aix*) vendor=ibm ;; - *-beos*) + -beos*) vendor=be ;; - *-hpux*) + -hpux*) vendor=hp ;; - *-mpeix*) + -mpeix*) vendor=hp ;; - *-hiux*) + -hiux*) vendor=hitachi ;; - *-unos*) + -unos*) vendor=crds ;; - *-dgux*) + -dgux*) vendor=dg ;; - *-luna*) + -luna*) vendor=omron ;; - *-genix*) + -genix*) vendor=ns ;; - *-clix*) - vendor=intergraph - ;; - *-mvs* | *-opened*) - vendor=ibm - ;; - *-os400*) + -mvs* | -opened*) vendor=ibm ;; - s390-* | s390x-*) + -os400*) vendor=ibm ;; - *-ptx*) + -ptx*) vendor=sequent ;; - *-tpf*) + -tpf*) vendor=ibm ;; - *-vxsim* | *-vxworks* | *-windiss*) + -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; - *-aux*) + -aux*) vendor=apple ;; - *-hms*) + -hms*) vendor=hitachi ;; - *-mpw* | *-macos*) + -mpw* | -macos*) vendor=apple ;; - *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; - *-vos*) + -vos*) vendor=stratus ;; esac + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` ;; esac -echo "$cpu-$vendor-${kernel:+$kernel-}$os" +echo "$basic_machine$os" exit # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" -# End: +# End: \ No newline at end of file diff --git a/config.log b/config.log index 83e649d..e984646 100644 --- a/config.log +++ b/config.log @@ -1,7 +1,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad configure g4411615, which was +It was created by Ironclad configure g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was $ ./configure --target=riscv64-limine-elf @@ -10,11 +10,11 @@ generated by GNU Autoconf 2.71. Invocation command line was ## Platform. ## ## --------- ## -hostname = ada-ironclad-dev +hostname = shield uname -m = x86_64 -uname -r = 6.8.0-48-generic +uname -r = 6.9.3-76060903-generic uname -s = Linux -uname -v = #48-Ubuntu SMP PREEMPT_DYNAMIC Fri Sep 27 14:04:52 UTC 2024 +uname -v = #202405300957~1726766035~22.04~4092a0e SMP PREEMPT_DYNAMIC Thu S /usr/bin/uname -p = x86_64 /bin/uname -X = unknown @@ -27,8 +27,12 @@ uname -v = #48-Ubuntu SMP PREEMPT_DYNAMIC Fri Sep 27 14:04:52 UTC 2024 /usr/bin/oslevel = unknown /bin/universe = unknown -PATH: /home/sean/.alire/bin/ -PATH: /bin/alr-2.0.2-bin-x86_64-linux/bin/ +PATH: /home/michael/.local/share/alire/toolchains/gprbuild_22.0.1_24dfc1b5/bin/ +PATH: /home/michael/.local/share/alire/toolchains/gnat_native_14.2.1_06bb3def/bin/ +PATH: /home/michael/.local/share/alire/toolchains/gnat_riscv64_elf_14.2.1_4f738310/bin/ +PATH: /home/michael/opt/gnat-riscv64-elf-linux64-x86_64/bin/ +PATH: /home/michael/opt/gnat-x86_64-linux/bin/ +PATH: /home/michael/.local/bin/ PATH: /usr/local/sbin/ PATH: /usr/local/bin/ PATH: /usr/sbin/ @@ -38,7 +42,8 @@ PATH: /bin/ PATH: /usr/games/ PATH: /usr/local/games/ PATH: /snap/bin/ -PATH: /snap/bin/ +PATH: /home/michael/.local/share/JetBrains/Toolbox/scripts/ +PATH: /opt/jdk-17.0.7+7/bin/ ## ----------- ## @@ -58,13 +63,13 @@ configure:2117: checking for perl configure:2138: found /usr/bin/perl configure:2149: result: perl configure:2168: checking for objdump -configure:2189: found /home/sean/.alire/bin/objdump +configure:2189: found /home/michael/.local/share/alire/toolchains/gnat_native_14.2.1_06bb3def/bin/objdump configure:2200: result: objdump configure:2219: checking for gzip configure:2240: found /usr/bin/gzip configure:2251: result: gzip configure:2270: checking for strip -configure:2291: found /home/sean/.alire/bin/strip +configure:2291: found /home/michael/.local/share/alire/toolchains/gnat_native_14.2.1_06bb3def/bin/strip configure:2302: result: strip configure:2321: checking for makeinfo configure:2342: found /usr/bin/makeinfo @@ -76,11 +81,11 @@ configure:2423: checking for makeinfo configure:2444: found /usr/bin/makeinfo configure:2455: result: makeinfo --no-split --html configure:2474: checking for gprbuild -configure:2495: found /home/sean/.alire/bin/gprbuild +configure:2495: found /home/michael/.local/share/alire/toolchains/gprbuild_22.0.1_24dfc1b5/bin/gprbuild configure:2506: result: gprbuild configure:2525: checking for gnatprove -configure:2546: found /home/sean/.alire/bin/gnatprove -configure:2557: result: gnatprove +configure:2560: result: no +configure:2566: WARNING: gnatprove not found, please install gnatprove or set GNATPROVE to a valid executable configure:2578: checking build system type configure:2593: result: x86_64-pc-linux-gnu configure:2613: checking host system type @@ -93,7 +98,7 @@ configure:2871: creating ./config.status ## Running config.status. ## ## ---------------------- ## -This file was extended by Ironclad config.status g4411615, which was +This file was extended by Ironclad config.status g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = @@ -102,7 +107,7 @@ generated by GNU Autoconf 2.71. Invocation command line was CONFIG_COMMANDS = $ ./config.status -on ada-ironclad-dev +on shield config.status:751: creating GNUmakefile config.status:751: creating ironclad.gpr @@ -146,7 +151,6 @@ ac_cv_env_target_alias_value=riscv64-limine-elf ac_cv_host=x86_64-pc-linux-gnu ac_cv_path_install='/usr/bin/install -c' ac_cv_path_mkdir=/usr/bin/mkdir -ac_cv_prog_GNATPROVE_FOUND=gnatprove ac_cv_prog_GPRBUILD_FOUND=gprbuild ac_cv_prog_GZIP_FOUND=gzip ac_cv_prog_MAKEINFO_FOUND=makeinfo @@ -163,13 +167,13 @@ ac_cv_target=riscv64-limine-elf ADAFLAGS='-g -O2 -pipe -gnaty -Wall -Wextra' ASFLAGS='-g -O2 -pipe -Wall' -BUILDDIR='/home/sean/capstone/ICK-RISCV-Context' -DEFS='-DPACKAGE_NAME=\"Ironclad\" -DPACKAGE_TARNAME=\"ironclad\" -DPACKAGE_VERSION=\"g4411615\" -DPACKAGE_STRING=\"Ironclad\ g4411615\" -DPACKAGE_BUGREPORT=\"https://ironclad.nongnu.org/usersupport.html\" -DPACKAGE_URL=\"\"' +BUILDDIR='/home/michael/capstoneProject/ironclad' +DEFS='-DPACKAGE_NAME=\"Ironclad\" -DPACKAGE_TARNAME=\"ironclad\" -DPACKAGE_VERSION=\"g0a370c9\" -DPACKAGE_STRING=\"Ironclad\ g0a370c9\" -DPACKAGE_BUGREPORT=\"https://ironclad.nongnu.org/usersupport.html\" -DPACKAGE_URL=\"\"' ECHO_C='' ECHO_N='-n' ECHO_T='' GNATPROVE='gnatprove' -GNATPROVE_FOUND='gnatprove' +GNATPROVE_FOUND='' GPRBUILD='gprbuild' GPRBUILD_FOUND='gprbuild' GZIP='gzip' @@ -189,16 +193,16 @@ OBJDUMP='objdump' OBJDUMP_FOUND='objdump' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_NAME='Ironclad' -PACKAGE_STRING='Ironclad g4411615' +PACKAGE_STRING='Ironclad g0a370c9' PACKAGE_TARNAME='ironclad' PACKAGE_URL='' -PACKAGE_VERSION='g4411615' +PACKAGE_VERSION='g0a370c9' PATH_SEPARATOR=':' PERL='perl' PERL_FOUND='perl' SHELL='/bin/bash' -SOURCE_DATE_EPOCH='1740427559' -SRCDIR='/home/sean/capstone/ICK-RISCV-Context' +SOURCE_DATE_EPOCH='1731253613' +SRCDIR='/home/michael/capstoneProject/ironclad' STRIP='strip' STRIP_FOUND='strip' TEXI2DVI='texi2dvi' @@ -251,9 +255,9 @@ target_vendor='limine' /* confdefs.h */ #define PACKAGE_NAME "Ironclad" #define PACKAGE_TARNAME "ironclad" -#define PACKAGE_VERSION "g4411615" -#define PACKAGE_STRING "Ironclad g4411615" +#define PACKAGE_VERSION "g0a370c9" +#define PACKAGE_STRING "Ironclad g0a370c9" #define PACKAGE_BUGREPORT "https://ironclad.nongnu.org/usersupport.html" #define PACKAGE_URL "" -configure: exit 0 +configure: exit 0 \ No newline at end of file diff --git a/config.status b/config.status index 39f540a..78fc4fd 100755 --- a/config.status +++ b/config.status @@ -373,7 +373,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g4411615, which was +This file was extended by Ironclad $as_me g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -412,7 +412,7 @@ Report bugs to ." ac_cs_config='--target=riscv64-limine-elf target_alias=riscv64-limine-elf' ac_cs_version="\ -Ironclad config.status g4411615 +Ironclad config.status g0a370c9 configured by ./configure, generated by GNU Autoconf 2.71, with options \"$ac_cs_config\" @@ -420,7 +420,7 @@ Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -ac_pwd='/home/sean/capstone/ICK-RISCV-Context' +ac_pwd='/home/michael/capstoneProject/ironclad' srcdir='.' INSTALL='/usr/bin/install -c' MKDIR_P='/usr/bin/mkdir -p' @@ -592,7 +592,7 @@ S["build_os"]="linux-gnu" S["build_vendor"]="pc" S["build_cpu"]="x86_64" S["build"]="x86_64-pc-linux-gnu" -S["GNATPROVE_FOUND"]="gnatprove" +S["GNATPROVE_FOUND"]="" S["GNATPROVE"]="gnatprove" S["GPRBUILD_FOUND"]="gprbuild" S["GPRBUILD"]="gprbuild" @@ -614,13 +614,13 @@ S["INSTALL_DATA"]="${INSTALL} -m 644" S["INSTALL_SCRIPT"]="${INSTALL}" S["INSTALL_PROGRAM"]="${INSTALL}" S["MKDIR_P"]="/usr/bin/mkdir -p" -S["SOURCE_DATE_EPOCH"]="1740427559" +S["SOURCE_DATE_EPOCH"]="1731253613" S["LDFLAGS"]="-g -O2 -pipe -Wall" S["ASFLAGS"]="-g -O2 -pipe -Wall" S["ADAFLAGS"]="-g -O2 -pipe -gnaty -Wall -Wextra" S["MEMORY_ALLOCONLY"]="False" -S["BUILDDIR"]="/home/sean/capstone/ICK-RISCV-Context" -S["SRCDIR"]="/home/sean/capstone/ICK-RISCV-Context" +S["BUILDDIR"]="/home/michael/capstoneProject/ironclad" +S["SRCDIR"]="/home/michael/capstoneProject/ironclad" S["target_alias"]="riscv64-limine-elf" S["host_alias"]="" S["build_alias"]="" @@ -628,7 +628,7 @@ S["LIBS"]="" S["ECHO_T"]="" S["ECHO_N"]="-n" S["ECHO_C"]="" -S["DEFS"]="-DPACKAGE_NAME=\\\"Ironclad\\\" -DPACKAGE_TARNAME=\\\"ironclad\\\" -DPACKAGE_VERSION=\\\"g4411615\\\" -DPACKAGE_STRING=\\\"Ironclad\\ g4411615\\\" -DPACKAGE_BUGREPOR"\ +S["DEFS"]="-DPACKAGE_NAME=\\\"Ironclad\\\" -DPACKAGE_TARNAME=\\\"ironclad\\\" -DPACKAGE_VERSION=\\\"g0a370c9\\\" -DPACKAGE_STRING=\\\"Ironclad\\ g0a370c9\\\" -DPACKAGE_BUGREPOR"\ "T=\\\"https://ironclad.nongnu.org/usersupport.html\\\" -DPACKAGE_URL=\\\"\\\"" S["mandir"]="${datarootdir}/man" S["localedir"]="${datarootdir}/locale" @@ -655,8 +655,8 @@ S["prefix"]="/usr/local" S["exec_prefix"]="${prefix}" S["PACKAGE_URL"]="" S["PACKAGE_BUGREPORT"]="https://ironclad.nongnu.org/usersupport.html" -S["PACKAGE_STRING"]="Ironclad g4411615" -S["PACKAGE_VERSION"]="g4411615" +S["PACKAGE_STRING"]="Ironclad g0a370c9" +S["PACKAGE_VERSION"]="g0a370c9" S["PACKAGE_TARNAME"]="ironclad" S["PACKAGE_NAME"]="Ironclad" S["PATH_SEPARATOR"]=":" @@ -926,4 +926,4 @@ which seems to be undefined. Please make sure it is defined" >&2;} done # for ac_tag -as_fn_exit 0 +as_fn_exit 0 \ No newline at end of file diff --git a/configure b/configure index 93e4f8e..aa063ba 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Ironclad g4411615. +# Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g4411615' -PACKAGE_STRING='Ironclad g4411615' +PACKAGE_VERSION='g0a370c9' +PACKAGE_STRING='Ironclad g0a370c9' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g4411615 to adapt to many kinds of systems. +\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g4411615:";; + short | recursive ) echo "Configuration of Ironclad g0a370c9:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g4411615 +Ironclad configure g0a370c9 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g4411615, which was +It was created by Ironclad $as_me g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1740427559" +SOURCE_DATE_EPOCH="1731253613" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g4411615, which was +This file was extended by Ironclad $as_me g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g4411615 +Ironclad config.status g0a370c9 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" @@ -3889,6 +3889,4 @@ fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - +fi \ No newline at end of file diff --git a/configure~ b/configure~ index 93e4f8e..aa063ba 100755 --- a/configure~ +++ b/configure~ @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Ironclad g4411615. +# Generated by GNU Autoconf 2.71 for Ironclad g0a370c9. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Ironclad' PACKAGE_TARNAME='ironclad' -PACKAGE_VERSION='g4411615' -PACKAGE_STRING='Ironclad g4411615' +PACKAGE_VERSION='g0a370c9' +PACKAGE_STRING='Ironclad g0a370c9' PACKAGE_BUGREPORT='https://ironclad.nongnu.org/usersupport.html' PACKAGE_URL='' @@ -1267,7 +1267,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ironclad g4411615 to adapt to many kinds of systems. +\`configure' configures Ironclad g0a370c9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1334,7 +1334,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ironclad g4411615:";; + short | recursive ) echo "Configuration of Ironclad g0a370c9:";; esac cat <<\_ACEOF @@ -1426,7 +1426,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ironclad configure g4411615 +Ironclad configure g0a370c9 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1463,7 +1463,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ironclad $as_me g4411615, which was +It was created by Ironclad $as_me g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1951,7 +1951,7 @@ test "x$LDFLAGS" = "x" && LDFLAGS="-g -O2 -pipe -Wall" # This command uses git, but thats no biggie because there is a fallback if # no git is present and it is meant to only be run when regenerating, so # tarball users will (ideally) never see this. -SOURCE_DATE_EPOCH="1740427559" +SOURCE_DATE_EPOCH="1731253613" ############################################################################### # Get programs and put them in comfortable variables. @@ -3261,7 +3261,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ironclad $as_me g4411615, which was +This file was extended by Ironclad $as_me g0a370c9, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3316,7 +3316,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ironclad config.status g4411615 +Ironclad config.status g0a370c9 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" @@ -3889,6 +3889,4 @@ fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - +fi \ No newline at end of file diff --git a/docs/fdl.texi b/docs/fdl.texi index eaf3da0..822b7e3 100644 --- a/docs/fdl.texi +++ b/docs/fdl.texi @@ -502,4 +502,4 @@ to permit their use in free software. @c Local Variables: @c ispell-local-pdict: "ispell-dict" -@c End: +@c End: \ No newline at end of file diff --git a/ironclad.gpr b/ironclad.gpr index f4c94dd..3f9f16a 100644 --- a/ironclad.gpr +++ b/ironclad.gpr @@ -25,17 +25,17 @@ project Ironclad is Linker_Flags := "-g -O2 -pipe -Wall"; for Source_Dirs use - ("/home/sean/capstone/ICK-RISCV-Context/source/arch/" & Arch, - "/home/sean/capstone/ICK-RISCV-Context/source/arch", - "/home/sean/capstone/ICK-RISCV-Context/source/cryptography", - "/home/sean/capstone/ICK-RISCV-Context/source/devices", - "/home/sean/capstone/ICK-RISCV-Context/source/ipc", - "/home/sean/capstone/ICK-RISCV-Context/source/lib", - "/home/sean/capstone/ICK-RISCV-Context/source/memory", - "/home/sean/capstone/ICK-RISCV-Context/source/networking", - "/home/sean/capstone/ICK-RISCV-Context/source/userland", - "/home/sean/capstone/ICK-RISCV-Context/source/vfs", - "/home/sean/capstone/ICK-RISCV-Context/source"); + ("/home/michael/capstoneProject/ironclad/source/arch/" & Arch, + "/home/michael/capstoneProject/ironclad/source/arch", + "/home/michael/capstoneProject/ironclad/source/cryptography", + "/home/michael/capstoneProject/ironclad/source/devices", + "/home/michael/capstoneProject/ironclad/source/ipc", + "/home/michael/capstoneProject/ironclad/source/lib", + "/home/michael/capstoneProject/ironclad/source/memory", + "/home/michael/capstoneProject/ironclad/source/networking", + "/home/michael/capstoneProject/ironclad/source/userland", + "/home/michael/capstoneProject/ironclad/source/vfs", + "/home/michael/capstoneProject/ironclad/source"); for Object_Dir use "obj"; for Exec_Dir use "."; for Main use ("main.adb"); @@ -51,13 +51,13 @@ project Ironclad is ("-fno-stack-protector", "-fno-stack-check", "-fdata-sections", "-ffunction-sections", "-gnateDIroncladName=""" & "Ironclad" & """", - "-gnateDVersion=""" & "g4411615" & """", + "-gnateDVersion=""" & "g0a370c9" & """", "-gnateDBugSite=""" & "https://ironclad.nongnu.org/usersupport.html" & """", "-gnateDArchName=""" & Arch & """", - "-ffile-prefix-map=" & "/home/sean/capstone/ICK-RISCV-Context" & "=.", + "-ffile-prefix-map=" & "/home/michael/capstoneProject/ironclad" & "=.", "-gnateDALLOCONLY=" & "False"); Base_Asm_Switches := Split (Asm_Flags, " ") & - ("-ffile-prefix-map=" & "/home/sean/capstone/ICK-RISCV-Context" & "=."); + ("-ffile-prefix-map=" & "/home/michael/capstoneProject/ironclad" & "=."); case Arch is when "riscv64-limine" => @@ -77,12 +77,12 @@ project Ironclad is ("-fno-pie", "-fno-pic", "-mno-red-zone", "-mcmodel=kernel"); end case; - for Local_Configuration_Pragmas use "/home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc"; + for Local_Configuration_Pragmas use "/home/michael/capstoneProject/ironclad/source/pragmas.adc"; end Compiler; package Linker is Base_Link_Switches := Split (Linker_Flags, " ") & - ("-T/home/sean/capstone/ICK-RISCV-Context/source/arch/" & Arch & "/linker.ld", "-nostdlib", + ("-T/home/michael/capstoneProject/ironclad/source/arch/" & Arch & "/linker.ld", "-nostdlib", "-Llibgnat-hack", "-Wl,-gc-sections"); case Arch is @@ -96,4 +96,4 @@ project Ironclad is "-Wl,--undefined=multiboot2,-zmuldefs"); end case; end Linker; -end Ironclad; +end Ironclad; \ No newline at end of file From 05bcd5048a2fdc0e0e8d7d84a5964bb097b2be00 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:35:40 -0500 Subject: [PATCH 86/99] fixing files for PR --- rts.gpr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rts.gpr b/rts.gpr index 22ba07f..b424e54 100644 --- a/rts.gpr +++ b/rts.gpr @@ -31,14 +31,14 @@ library project RTS is for Languages use ("Ada"); package Builder is - for Global_Configuration_Pragmas use "/home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc"; + for Global_Configuration_Pragmas use "source/pragmas.adc"; for Switches ("Ada") use ("-nostdlib", "-nostdinc"); end Builder; package Compiler is Base_Ada_Switches := Split (Ada_Flags, " ") & ( "-fno-stack-protector", "-fno-stack-check", "-nostdlib", "-nostdinc", - "-gnatg", "-ffile-prefix-map=" & "/home/sean/capstone/ICK-RISCV-Context" & "=." + "-gnatg", "-ffile-prefix-map=" & "/home/michael/capstoneProject/ironclad" & "=." ); case Arch is @@ -59,4 +59,4 @@ library project RTS is for Library_Kind use "static"; for Library_Name use "gnat"; for Runtime ("Ada") use "rtsdir"; -end RTS; +end RTS; \ No newline at end of file From b7a741cefb4636b538966f7b50b11e49ff5d0622 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:36:38 -0500 Subject: [PATCH 87/99] restoring my .gitignore so system specific changes are not added to the repo --- .gitignore | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 61ca089..9682304 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,23 @@ .vscode/ # Ignore directories we don't want to modify - +.github/ +autom3te.cache/ +build-aux/ +docs/ +biggnat-hack/ +obj/ +/obj/gnatprove/ +rtsdir/ +scripts/ +/source/cryptography/ +/source/devices/ +/source/lib/ +/source//memory/ +/source/networking/ +/source/rts/ +/source/userland/ +/source/vfs/ # Ignore Build Files and Directories /source/tests/obj/ From b6e35cb1e704d34250c8726a97a26d9a4db30183 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:39:52 -0500 Subject: [PATCH 88/99] Delete obj/gnatprove directory --- obj/gnatprove/691ca296.tmp | 1 - .../data_representation/config.ads.stderr | 3 - .../data_representation/config.ads.stdout | 0 .../kernel_main.adb.stderr | 3 - .../kernel_main.adb.stdout | 0 .../data_representation/main.adb.stderr | 3 - .../data_representation/main.adb.stdout | 0 .../data_representation/scheduler.adb.stderr | 3 - .../data_representation/scheduler.adb.stdout | 0 .../userland-loader.adb.stderr | 3 - .../userland-loader.adb.stdout | 0 .../userland-mac.adb.stderr | 3 - .../userland-mac.adb.stdout | 0 .../userland-oom_failure.adb.stderr | 3 - .../userland-oom_failure.adb.stdout | 0 .../userland-syscall.adb.stderr | 3 - .../userland-syscall.adb.stdout | 0 .../data_representation/vfs-dev.adb.stderr | 3 - .../data_representation/vfs-dev.adb.stdout | 0 .../data_representation/vfs-ext.adb.stderr | 3 - .../data_representation/vfs-ext.adb.stdout | 0 .../data_representation/vfs-fat.adb.stderr | 3 - .../data_representation/vfs-fat.adb.stdout | 0 .../data_representation/vfs.adb.stderr | 3 - .../data_representation/vfs.adb.stdout | 0 .../data_representation_generation.log | 36 - obj/gnatprove/dea97157.tmp | 1 - obj/gnatprove/phase1/arch-clocks.adb.stderr | 0 obj/gnatprove/phase1/arch-clocks.adb.stdout | 0 obj/gnatprove/phase1/arch-clocks.ali | 168 - obj/gnatprove/phase1/arch-clocks.cswi | 28 - obj/gnatprove/phase1/arch-context.adb.stderr | 8 - obj/gnatprove/phase1/arch-context.adb.stdout | 0 obj/gnatprove/phase1/arch-cpu.adb.stderr | 0 obj/gnatprove/phase1/arch-cpu.adb.stdout | 0 obj/gnatprove/phase1/arch-cpu.ali | 618 --- obj/gnatprove/phase1/arch-cpu.cswi | 28 - obj/gnatprove/phase1/arch-debug.adb.stderr | 0 obj/gnatprove/phase1/arch-debug.adb.stdout | 0 obj/gnatprove/phase1/arch-debug.ali | 210 - obj/gnatprove/phase1/arch-debug.cswi | 28 - obj/gnatprove/phase1/arch-dtb.adb.stderr | 0 obj/gnatprove/phase1/arch-dtb.adb.stdout | 0 obj/gnatprove/phase1/arch-dtb.ali | 160 - obj/gnatprove/phase1/arch-dtb.cswi | 28 - .../phase1/arch-entrypoint.adb.stderr | 0 .../phase1/arch-entrypoint.adb.stdout | 0 obj/gnatprove/phase1/arch-entrypoint.ali | 659 --- obj/gnatprove/phase1/arch-entrypoint.cswi | 28 - obj/gnatprove/phase1/arch-hooks.adb.stderr | 0 obj/gnatprove/phase1/arch-hooks.adb.stdout | 0 obj/gnatprove/phase1/arch-hooks.ali | 114 - obj/gnatprove/phase1/arch-hooks.cswi | 28 - .../phase1/arch-interrupts.ads.stderr | 0 .../phase1/arch-interrupts.ads.stdout | 0 obj/gnatprove/phase1/arch-interrupts.ali | 128 - obj/gnatprove/phase1/arch-interrupts.cswi | 28 - obj/gnatprove/phase1/arch-limine.adb.stderr | 0 obj/gnatprove/phase1/arch-limine.adb.stdout | 0 obj/gnatprove/phase1/arch-limine.ali | 393 -- obj/gnatprove/phase1/arch-limine.cswi | 28 - obj/gnatprove/phase1/arch-local.adb.stderr | 0 obj/gnatprove/phase1/arch-local.adb.stdout | 0 obj/gnatprove/phase1/arch-local.ali | 557 -- obj/gnatprove/phase1/arch-local.cswi | 28 - obj/gnatprove/phase1/arch-mmu.adb.stderr | 0 obj/gnatprove/phase1/arch-mmu.adb.stdout | 0 obj/gnatprove/phase1/arch-mmu.ali | 276 - obj/gnatprove/phase1/arch-mmu.cswi | 28 - obj/gnatprove/phase1/arch-power.adb.stderr | 0 obj/gnatprove/phase1/arch-power.adb.stdout | 0 obj/gnatprove/phase1/arch-power.ali | 101 - obj/gnatprove/phase1/arch-power.cswi | 28 - obj/gnatprove/phase1/arch-snippets.adb.stderr | 0 obj/gnatprove/phase1/arch-snippets.adb.stdout | 0 obj/gnatprove/phase1/arch-snippets.ali | 175 - obj/gnatprove/phase1/arch-snippets.cswi | 28 - obj/gnatprove/phase1/arch.ads.stderr | 0 obj/gnatprove/phase1/arch.ads.stdout | 0 obj/gnatprove/phase1/arch.ali | 105 - obj/gnatprove/phase1/arch.cswi | 28 - obj/gnatprove/phase1/config.ads.stderr | 0 obj/gnatprove/phase1/config.ads.stdout | 0 obj/gnatprove/phase1/config.ali | 64 - obj/gnatprove/phase1/config.cswi | 28 - .../phase1/cryptography-chacha20.adb.stderr | 0 .../phase1/cryptography-chacha20.adb.stdout | 0 .../phase1/cryptography-chacha20.ali | 146 - .../phase1/cryptography-chacha20.cswi | 28 - .../phase1/cryptography-md5.adb.stderr | 0 .../phase1/cryptography-md5.adb.stdout | 0 obj/gnatprove/phase1/cryptography-md5.ali | 147 - obj/gnatprove/phase1/cryptography-md5.cswi | 28 - .../phase1/cryptography-random.adb.stderr | 0 .../phase1/cryptography-random.adb.stdout | 0 obj/gnatprove/phase1/cryptography-random.ali | 324 -- obj/gnatprove/phase1/cryptography-random.cswi | 28 - obj/gnatprove/phase1/cryptography.ads.stderr | 0 obj/gnatprove/phase1/cryptography.ads.stdout | 0 obj/gnatprove/phase1/cryptography.ali | 59 - obj/gnatprove/phase1/cryptography.cswi | 28 - .../phase1/devices-console.adb.stderr | 0 .../phase1/devices-console.adb.stdout | 0 obj/gnatprove/phase1/devices-console.ali | 235 - obj/gnatprove/phase1/devices-console.cswi | 28 - .../phase1/devices-loopback.adb.stderr | 0 .../phase1/devices-loopback.adb.stdout | 0 obj/gnatprove/phase1/devices-loopback.ali | 391 -- obj/gnatprove/phase1/devices-loopback.cswi | 28 - .../phase1/devices-netinter.ads.stderr | 0 .../phase1/devices-netinter.ads.stdout | 0 obj/gnatprove/phase1/devices-netinter.ali | 161 - obj/gnatprove/phase1/devices-netinter.cswi | 28 - .../phase1/devices-partitions.adb.stderr | 0 .../phase1/devices-partitions.adb.stdout | 0 obj/gnatprove/phase1/devices-partitions.ali | 438 -- obj/gnatprove/phase1/devices-partitions.cswi | 28 - .../phase1/devices-ramdev.adb.stderr | 0 .../phase1/devices-ramdev.adb.stdout | 0 obj/gnatprove/phase1/devices-ramdev.ali | 300 -- obj/gnatprove/phase1/devices-ramdev.cswi | 28 - .../phase1/devices-streams.adb.stderr | 0 .../phase1/devices-streams.adb.stdout | 0 obj/gnatprove/phase1/devices-streams.ali | 294 -- obj/gnatprove/phase1/devices-streams.cswi | 28 - .../phase1/devices-termios.ads.stderr | 0 .../phase1/devices-termios.ads.stdout | 0 obj/gnatprove/phase1/devices-termios.ali | 203 - obj/gnatprove/phase1/devices-termios.cswi | 28 - obj/gnatprove/phase1/devices-uart.adb.stderr | 0 obj/gnatprove/phase1/devices-uart.adb.stdout | 0 obj/gnatprove/phase1/devices-uart.ali | 203 - obj/gnatprove/phase1/devices-uart.cswi | 28 - obj/gnatprove/phase1/devices.adb.stderr | 0 obj/gnatprove/phase1/devices.adb.stdout | 0 obj/gnatprove/phase1/devices.ali | 528 -- obj/gnatprove/phase1/devices.cswi | 28 - obj/gnatprove/phase1/ipc-fifo.adb.stderr | 0 obj/gnatprove/phase1/ipc-fifo.adb.stdout | 0 obj/gnatprove/phase1/ipc-fifo.ali | 500 -- obj/gnatprove/phase1/ipc-fifo.cswi | 28 - obj/gnatprove/phase1/ipc-filelock.adb.stderr | 0 obj/gnatprove/phase1/ipc-filelock.adb.stdout | 0 obj/gnatprove/phase1/ipc-filelock.ali | 621 --- obj/gnatprove/phase1/ipc-filelock.cswi | 28 - obj/gnatprove/phase1/ipc-futex.adb.stderr | 0 obj/gnatprove/phase1/ipc-futex.adb.stdout | 0 obj/gnatprove/phase1/ipc-futex.ali | 358 -- obj/gnatprove/phase1/ipc-futex.cswi | 28 - obj/gnatprove/phase1/ipc-pty.adb.stderr | 0 obj/gnatprove/phase1/ipc-pty.adb.stdout | 0 obj/gnatprove/phase1/ipc-pty.ali | 642 --- obj/gnatprove/phase1/ipc-pty.cswi | 28 - obj/gnatprove/phase1/ipc-shm.adb.stderr | 0 obj/gnatprove/phase1/ipc-shm.adb.stdout | 0 obj/gnatprove/phase1/ipc-shm.ali | 365 -- obj/gnatprove/phase1/ipc-shm.cswi | 28 - obj/gnatprove/phase1/ipc-socket.adb.stderr | 0 obj/gnatprove/phase1/ipc-socket.adb.stdout | 0 obj/gnatprove/phase1/ipc-socket.ali | 936 ---- obj/gnatprove/phase1/ipc-socket.cswi | 28 - obj/gnatprove/phase1/ipc.ads.stderr | 0 obj/gnatprove/phase1/ipc.ads.stdout | 0 obj/gnatprove/phase1/ipc.ali | 59 - obj/gnatprove/phase1/ipc.cswi | 28 - obj/gnatprove/phase1/kernel_main.adb.stderr | 0 obj/gnatprove/phase1/kernel_main.adb.stdout | 0 obj/gnatprove/phase1/kernel_main.ali | 733 --- obj/gnatprove/phase1/kernel_main.cswi | 28 - obj/gnatprove/phase1/lib-alignment.adb.stderr | 0 obj/gnatprove/phase1/lib-alignment.adb.stdout | 0 obj/gnatprove/phase1/lib-alignment.ali | 88 - obj/gnatprove/phase1/lib-alignment.cswi | 28 - obj/gnatprove/phase1/lib-atomic.ads.stderr | 0 obj/gnatprove/phase1/lib-atomic.ads.stdout | 0 obj/gnatprove/phase1/lib-atomic.ali | 173 - obj/gnatprove/phase1/lib-atomic.cswi | 28 - obj/gnatprove/phase1/lib-cmdline.adb.stderr | 0 obj/gnatprove/phase1/lib-cmdline.adb.stdout | 0 obj/gnatprove/phase1/lib-cmdline.ali | 123 - obj/gnatprove/phase1/lib-cmdline.cswi | 28 - obj/gnatprove/phase1/lib-messages.adb.stderr | 0 obj/gnatprove/phase1/lib-messages.adb.stdout | 0 obj/gnatprove/phase1/lib-messages.ali | 308 -- obj/gnatprove/phase1/lib-messages.cswi | 28 - obj/gnatprove/phase1/lib-panic.adb.stderr | 0 obj/gnatprove/phase1/lib-panic.adb.stdout | 0 obj/gnatprove/phase1/lib-panic.ali | 221 - obj/gnatprove/phase1/lib-panic.cswi | 28 - obj/gnatprove/phase1/lib-runtime.adb.stderr | 0 obj/gnatprove/phase1/lib-runtime.adb.stdout | 0 obj/gnatprove/phase1/lib-runtime.ali | 280 - obj/gnatprove/phase1/lib-runtime.cswi | 28 - .../phase1/lib-synchronization.adb.stderr | 0 .../phase1/lib-synchronization.adb.stdout | 0 obj/gnatprove/phase1/lib-synchronization.ali | 205 - obj/gnatprove/phase1/lib-synchronization.cswi | 28 - obj/gnatprove/phase1/lib-time.adb.stderr | 0 obj/gnatprove/phase1/lib-time.adb.stdout | 0 obj/gnatprove/phase1/lib-time.ali | 160 - obj/gnatprove/phase1/lib-time.cswi | 28 - obj/gnatprove/phase1/lib.adb.stderr | 0 obj/gnatprove/phase1/lib.adb.stdout | 0 obj/gnatprove/phase1/lib.ali | 133 - obj/gnatprove/phase1/lib.cswi | 28 - obj/gnatprove/phase1/main.adb.stderr | 0 obj/gnatprove/phase1/main.adb.stdout | 0 obj/gnatprove/phase1/main.ali | 94 - obj/gnatprove/phase1/main.cswi | 28 - .../phase1/memory-physical.adb.stderr | 0 .../phase1/memory-physical.adb.stdout | 0 obj/gnatprove/phase1/memory-physical.ali | 454 -- obj/gnatprove/phase1/memory-physical.cswi | 28 - obj/gnatprove/phase1/memory.ads.stderr | 0 obj/gnatprove/phase1/memory.ads.stdout | 0 obj/gnatprove/phase1/memory.ali | 89 - obj/gnatprove/phase1/memory.cswi | 28 - .../phase1/networking-arp.adb.stderr | 0 .../phase1/networking-arp.adb.stdout | 0 obj/gnatprove/phase1/networking-arp.ali | 212 - obj/gnatprove/phase1/networking-arp.cswi | 28 - .../phase1/networking-interfaces.adb.stderr | 0 .../phase1/networking-interfaces.adb.stdout | 0 .../phase1/networking-interfaces.ali | 342 -- .../phase1/networking-interfaces.cswi | 28 - .../phase1/networking-ipv4.adb.stderr | 0 .../phase1/networking-ipv4.adb.stdout | 0 obj/gnatprove/phase1/networking-ipv4.ali | 153 - obj/gnatprove/phase1/networking-ipv4.cswi | 28 - .../phase1/networking-ipv6.adb.stderr | 0 .../phase1/networking-ipv6.adb.stdout | 0 obj/gnatprove/phase1/networking-ipv6.ali | 143 - obj/gnatprove/phase1/networking-ipv6.cswi | 28 - obj/gnatprove/phase1/networking.adb.stderr | 0 obj/gnatprove/phase1/networking.adb.stdout | 0 obj/gnatprove/phase1/networking.ali | 165 - obj/gnatprove/phase1/networking.cswi | 28 - obj/gnatprove/phase1/scheduler.adb.stderr | 0 obj/gnatprove/phase1/scheduler.adb.stdout | 0 obj/gnatprove/phase1/scheduler.ali | 1072 ---- obj/gnatprove/phase1/scheduler.cswi | 28 - .../phase1/userland-corefile.adb.stderr | 0 .../phase1/userland-corefile.adb.stdout | 0 obj/gnatprove/phase1/userland-corefile.ali | 592 --- obj/gnatprove/phase1/userland-corefile.cswi | 28 - obj/gnatprove/phase1/userland-elf.adb.stderr | 0 obj/gnatprove/phase1/userland-elf.adb.stdout | 0 obj/gnatprove/phase1/userland-elf.ali | 847 ---- obj/gnatprove/phase1/userland-elf.cswi | 28 - .../phase1/userland-loader.adb.stderr | 0 .../phase1/userland-loader.adb.stdout | 0 obj/gnatprove/phase1/userland-loader.ali | 791 --- obj/gnatprove/phase1/userland-loader.cswi | 28 - obj/gnatprove/phase1/userland-mac.adb.stderr | 0 obj/gnatprove/phase1/userland-mac.adb.stdout | 0 obj/gnatprove/phase1/userland-mac.ali | 357 -- obj/gnatprove/phase1/userland-mac.cswi | 28 - .../phase1/userland-memory_failure.adb.stderr | 0 .../phase1/userland-memory_failure.adb.stdout | 0 .../phase1/userland-memory_failure.ali | 190 - .../phase1/userland-memory_failure.cswi | 28 - .../userland-memory_locations.ads.stderr | 0 .../userland-memory_locations.ads.stdout | 0 .../phase1/userland-memory_locations.ali | 71 - .../phase1/userland-memory_locations.cswi | 28 - .../phase1/userland-oom_failure.adb.stderr | 0 .../phase1/userland-oom_failure.adb.stdout | 0 obj/gnatprove/phase1/userland-oom_failure.ali | 700 --- .../phase1/userland-oom_failure.cswi | 28 - .../phase1/userland-process.adb.stderr | 0 .../phase1/userland-process.adb.stdout | 0 obj/gnatprove/phase1/userland-process.ali | 1474 ------ obj/gnatprove/phase1/userland-process.cswi | 28 - .../phase1/userland-syscall.adb.stderr | 0 .../phase1/userland-syscall.adb.stdout | 0 obj/gnatprove/phase1/userland-syscall.ali | 4501 ----------------- obj/gnatprove/phase1/userland-syscall.cswi | 28 - obj/gnatprove/phase1/userland.ads.stderr | 0 obj/gnatprove/phase1/userland.ads.stdout | 0 obj/gnatprove/phase1/userland.ali | 64 - obj/gnatprove/phase1/userland.cswi | 28 - obj/gnatprove/phase1/vfs-dev.adb.stderr | 0 obj/gnatprove/phase1/vfs-dev.adb.stdout | 0 obj/gnatprove/phase1/vfs-dev.ali | 487 -- obj/gnatprove/phase1/vfs-dev.cswi | 28 - obj/gnatprove/phase1/vfs-ext.adb.stderr | 0 obj/gnatprove/phase1/vfs-ext.adb.stdout | 0 obj/gnatprove/phase1/vfs-ext.ali | 1516 ------ obj/gnatprove/phase1/vfs-ext.cswi | 28 - obj/gnatprove/phase1/vfs-fat.adb.stderr | 0 obj/gnatprove/phase1/vfs-fat.adb.stdout | 0 obj/gnatprove/phase1/vfs-fat.ali | 698 --- obj/gnatprove/phase1/vfs-fat.cswi | 28 - obj/gnatprove/phase1/vfs.adb.stderr | 0 obj/gnatprove/phase1/vfs.adb.stdout | 0 obj/gnatprove/phase1/vfs.ali | 1046 ---- obj/gnatprove/phase1/vfs.cswi | 28 - 297 files changed, 31078 deletions(-) delete mode 100644 obj/gnatprove/691ca296.tmp delete mode 100644 obj/gnatprove/data_representation/config.ads.stderr delete mode 100644 obj/gnatprove/data_representation/config.ads.stdout delete mode 100644 obj/gnatprove/data_representation/kernel_main.adb.stderr delete mode 100644 obj/gnatprove/data_representation/kernel_main.adb.stdout delete mode 100644 obj/gnatprove/data_representation/main.adb.stderr delete mode 100644 obj/gnatprove/data_representation/main.adb.stdout delete mode 100644 obj/gnatprove/data_representation/scheduler.adb.stderr delete mode 100644 obj/gnatprove/data_representation/scheduler.adb.stdout delete mode 100644 obj/gnatprove/data_representation/userland-loader.adb.stderr delete mode 100644 obj/gnatprove/data_representation/userland-loader.adb.stdout delete mode 100644 obj/gnatprove/data_representation/userland-mac.adb.stderr delete mode 100644 obj/gnatprove/data_representation/userland-mac.adb.stdout delete mode 100644 obj/gnatprove/data_representation/userland-oom_failure.adb.stderr delete mode 100644 obj/gnatprove/data_representation/userland-oom_failure.adb.stdout delete mode 100644 obj/gnatprove/data_representation/userland-syscall.adb.stderr delete mode 100644 obj/gnatprove/data_representation/userland-syscall.adb.stdout delete mode 100644 obj/gnatprove/data_representation/vfs-dev.adb.stderr delete mode 100644 obj/gnatprove/data_representation/vfs-dev.adb.stdout delete mode 100644 obj/gnatprove/data_representation/vfs-ext.adb.stderr delete mode 100644 obj/gnatprove/data_representation/vfs-ext.adb.stdout delete mode 100644 obj/gnatprove/data_representation/vfs-fat.adb.stderr delete mode 100644 obj/gnatprove/data_representation/vfs-fat.adb.stdout delete mode 100644 obj/gnatprove/data_representation/vfs.adb.stderr delete mode 100644 obj/gnatprove/data_representation/vfs.adb.stdout delete mode 100644 obj/gnatprove/data_representation_generation.log delete mode 100644 obj/gnatprove/dea97157.tmp delete mode 100644 obj/gnatprove/phase1/arch-clocks.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-clocks.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-clocks.ali delete mode 100644 obj/gnatprove/phase1/arch-clocks.cswi delete mode 100644 obj/gnatprove/phase1/arch-context.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-context.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-cpu.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-cpu.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-cpu.ali delete mode 100644 obj/gnatprove/phase1/arch-cpu.cswi delete mode 100644 obj/gnatprove/phase1/arch-debug.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-debug.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-debug.ali delete mode 100644 obj/gnatprove/phase1/arch-debug.cswi delete mode 100644 obj/gnatprove/phase1/arch-dtb.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-dtb.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-dtb.ali delete mode 100644 obj/gnatprove/phase1/arch-dtb.cswi delete mode 100644 obj/gnatprove/phase1/arch-entrypoint.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-entrypoint.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-entrypoint.ali delete mode 100644 obj/gnatprove/phase1/arch-entrypoint.cswi delete mode 100644 obj/gnatprove/phase1/arch-hooks.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-hooks.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-hooks.ali delete mode 100644 obj/gnatprove/phase1/arch-hooks.cswi delete mode 100644 obj/gnatprove/phase1/arch-interrupts.ads.stderr delete mode 100644 obj/gnatprove/phase1/arch-interrupts.ads.stdout delete mode 100644 obj/gnatprove/phase1/arch-interrupts.ali delete mode 100644 obj/gnatprove/phase1/arch-interrupts.cswi delete mode 100644 obj/gnatprove/phase1/arch-limine.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-limine.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-limine.ali delete mode 100644 obj/gnatprove/phase1/arch-limine.cswi delete mode 100644 obj/gnatprove/phase1/arch-local.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-local.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-local.ali delete mode 100644 obj/gnatprove/phase1/arch-local.cswi delete mode 100644 obj/gnatprove/phase1/arch-mmu.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-mmu.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-mmu.ali delete mode 100644 obj/gnatprove/phase1/arch-mmu.cswi delete mode 100644 obj/gnatprove/phase1/arch-power.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-power.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-power.ali delete mode 100644 obj/gnatprove/phase1/arch-power.cswi delete mode 100644 obj/gnatprove/phase1/arch-snippets.adb.stderr delete mode 100644 obj/gnatprove/phase1/arch-snippets.adb.stdout delete mode 100644 obj/gnatprove/phase1/arch-snippets.ali delete mode 100644 obj/gnatprove/phase1/arch-snippets.cswi delete mode 100644 obj/gnatprove/phase1/arch.ads.stderr delete mode 100644 obj/gnatprove/phase1/arch.ads.stdout delete mode 100644 obj/gnatprove/phase1/arch.ali delete mode 100644 obj/gnatprove/phase1/arch.cswi delete mode 100644 obj/gnatprove/phase1/config.ads.stderr delete mode 100644 obj/gnatprove/phase1/config.ads.stdout delete mode 100644 obj/gnatprove/phase1/config.ali delete mode 100644 obj/gnatprove/phase1/config.cswi delete mode 100644 obj/gnatprove/phase1/cryptography-chacha20.adb.stderr delete mode 100644 obj/gnatprove/phase1/cryptography-chacha20.adb.stdout delete mode 100644 obj/gnatprove/phase1/cryptography-chacha20.ali delete mode 100644 obj/gnatprove/phase1/cryptography-chacha20.cswi delete mode 100644 obj/gnatprove/phase1/cryptography-md5.adb.stderr delete mode 100644 obj/gnatprove/phase1/cryptography-md5.adb.stdout delete mode 100644 obj/gnatprove/phase1/cryptography-md5.ali delete mode 100644 obj/gnatprove/phase1/cryptography-md5.cswi delete mode 100644 obj/gnatprove/phase1/cryptography-random.adb.stderr delete mode 100644 obj/gnatprove/phase1/cryptography-random.adb.stdout delete mode 100644 obj/gnatprove/phase1/cryptography-random.ali delete mode 100644 obj/gnatprove/phase1/cryptography-random.cswi delete mode 100644 obj/gnatprove/phase1/cryptography.ads.stderr delete mode 100644 obj/gnatprove/phase1/cryptography.ads.stdout delete mode 100644 obj/gnatprove/phase1/cryptography.ali delete mode 100644 obj/gnatprove/phase1/cryptography.cswi delete mode 100644 obj/gnatprove/phase1/devices-console.adb.stderr delete mode 100644 obj/gnatprove/phase1/devices-console.adb.stdout delete mode 100644 obj/gnatprove/phase1/devices-console.ali delete mode 100644 obj/gnatprove/phase1/devices-console.cswi delete mode 100644 obj/gnatprove/phase1/devices-loopback.adb.stderr delete mode 100644 obj/gnatprove/phase1/devices-loopback.adb.stdout delete mode 100644 obj/gnatprove/phase1/devices-loopback.ali delete mode 100644 obj/gnatprove/phase1/devices-loopback.cswi delete mode 100644 obj/gnatprove/phase1/devices-netinter.ads.stderr delete mode 100644 obj/gnatprove/phase1/devices-netinter.ads.stdout delete mode 100644 obj/gnatprove/phase1/devices-netinter.ali delete mode 100644 obj/gnatprove/phase1/devices-netinter.cswi delete mode 100644 obj/gnatprove/phase1/devices-partitions.adb.stderr delete mode 100644 obj/gnatprove/phase1/devices-partitions.adb.stdout delete mode 100644 obj/gnatprove/phase1/devices-partitions.ali delete mode 100644 obj/gnatprove/phase1/devices-partitions.cswi delete mode 100644 obj/gnatprove/phase1/devices-ramdev.adb.stderr delete mode 100644 obj/gnatprove/phase1/devices-ramdev.adb.stdout delete mode 100644 obj/gnatprove/phase1/devices-ramdev.ali delete mode 100644 obj/gnatprove/phase1/devices-ramdev.cswi delete mode 100644 obj/gnatprove/phase1/devices-streams.adb.stderr delete mode 100644 obj/gnatprove/phase1/devices-streams.adb.stdout delete mode 100644 obj/gnatprove/phase1/devices-streams.ali delete mode 100644 obj/gnatprove/phase1/devices-streams.cswi delete mode 100644 obj/gnatprove/phase1/devices-termios.ads.stderr delete mode 100644 obj/gnatprove/phase1/devices-termios.ads.stdout delete mode 100644 obj/gnatprove/phase1/devices-termios.ali delete mode 100644 obj/gnatprove/phase1/devices-termios.cswi delete mode 100644 obj/gnatprove/phase1/devices-uart.adb.stderr delete mode 100644 obj/gnatprove/phase1/devices-uart.adb.stdout delete mode 100644 obj/gnatprove/phase1/devices-uart.ali delete mode 100644 obj/gnatprove/phase1/devices-uart.cswi delete mode 100644 obj/gnatprove/phase1/devices.adb.stderr delete mode 100644 obj/gnatprove/phase1/devices.adb.stdout delete mode 100644 obj/gnatprove/phase1/devices.ali delete mode 100644 obj/gnatprove/phase1/devices.cswi delete mode 100644 obj/gnatprove/phase1/ipc-fifo.adb.stderr delete mode 100644 obj/gnatprove/phase1/ipc-fifo.adb.stdout delete mode 100644 obj/gnatprove/phase1/ipc-fifo.ali delete mode 100644 obj/gnatprove/phase1/ipc-fifo.cswi delete mode 100644 obj/gnatprove/phase1/ipc-filelock.adb.stderr delete mode 100644 obj/gnatprove/phase1/ipc-filelock.adb.stdout delete mode 100644 obj/gnatprove/phase1/ipc-filelock.ali delete mode 100644 obj/gnatprove/phase1/ipc-filelock.cswi delete mode 100644 obj/gnatprove/phase1/ipc-futex.adb.stderr delete mode 100644 obj/gnatprove/phase1/ipc-futex.adb.stdout delete mode 100644 obj/gnatprove/phase1/ipc-futex.ali delete mode 100644 obj/gnatprove/phase1/ipc-futex.cswi delete mode 100644 obj/gnatprove/phase1/ipc-pty.adb.stderr delete mode 100644 obj/gnatprove/phase1/ipc-pty.adb.stdout delete mode 100644 obj/gnatprove/phase1/ipc-pty.ali delete mode 100644 obj/gnatprove/phase1/ipc-pty.cswi delete mode 100644 obj/gnatprove/phase1/ipc-shm.adb.stderr delete mode 100644 obj/gnatprove/phase1/ipc-shm.adb.stdout delete mode 100644 obj/gnatprove/phase1/ipc-shm.ali delete mode 100644 obj/gnatprove/phase1/ipc-shm.cswi delete mode 100644 obj/gnatprove/phase1/ipc-socket.adb.stderr delete mode 100644 obj/gnatprove/phase1/ipc-socket.adb.stdout delete mode 100644 obj/gnatprove/phase1/ipc-socket.ali delete mode 100644 obj/gnatprove/phase1/ipc-socket.cswi delete mode 100644 obj/gnatprove/phase1/ipc.ads.stderr delete mode 100644 obj/gnatprove/phase1/ipc.ads.stdout delete mode 100644 obj/gnatprove/phase1/ipc.ali delete mode 100644 obj/gnatprove/phase1/ipc.cswi delete mode 100644 obj/gnatprove/phase1/kernel_main.adb.stderr delete mode 100644 obj/gnatprove/phase1/kernel_main.adb.stdout delete mode 100644 obj/gnatprove/phase1/kernel_main.ali delete mode 100644 obj/gnatprove/phase1/kernel_main.cswi delete mode 100644 obj/gnatprove/phase1/lib-alignment.adb.stderr delete mode 100644 obj/gnatprove/phase1/lib-alignment.adb.stdout delete mode 100644 obj/gnatprove/phase1/lib-alignment.ali delete mode 100644 obj/gnatprove/phase1/lib-alignment.cswi delete mode 100644 obj/gnatprove/phase1/lib-atomic.ads.stderr delete mode 100644 obj/gnatprove/phase1/lib-atomic.ads.stdout delete mode 100644 obj/gnatprove/phase1/lib-atomic.ali delete mode 100644 obj/gnatprove/phase1/lib-atomic.cswi delete mode 100644 obj/gnatprove/phase1/lib-cmdline.adb.stderr delete mode 100644 obj/gnatprove/phase1/lib-cmdline.adb.stdout delete mode 100644 obj/gnatprove/phase1/lib-cmdline.ali delete mode 100644 obj/gnatprove/phase1/lib-cmdline.cswi delete mode 100644 obj/gnatprove/phase1/lib-messages.adb.stderr delete mode 100644 obj/gnatprove/phase1/lib-messages.adb.stdout delete mode 100644 obj/gnatprove/phase1/lib-messages.ali delete mode 100644 obj/gnatprove/phase1/lib-messages.cswi delete mode 100644 obj/gnatprove/phase1/lib-panic.adb.stderr delete mode 100644 obj/gnatprove/phase1/lib-panic.adb.stdout delete mode 100644 obj/gnatprove/phase1/lib-panic.ali delete mode 100644 obj/gnatprove/phase1/lib-panic.cswi delete mode 100644 obj/gnatprove/phase1/lib-runtime.adb.stderr delete mode 100644 obj/gnatprove/phase1/lib-runtime.adb.stdout delete mode 100644 obj/gnatprove/phase1/lib-runtime.ali delete mode 100644 obj/gnatprove/phase1/lib-runtime.cswi delete mode 100644 obj/gnatprove/phase1/lib-synchronization.adb.stderr delete mode 100644 obj/gnatprove/phase1/lib-synchronization.adb.stdout delete mode 100644 obj/gnatprove/phase1/lib-synchronization.ali delete mode 100644 obj/gnatprove/phase1/lib-synchronization.cswi delete mode 100644 obj/gnatprove/phase1/lib-time.adb.stderr delete mode 100644 obj/gnatprove/phase1/lib-time.adb.stdout delete mode 100644 obj/gnatprove/phase1/lib-time.ali delete mode 100644 obj/gnatprove/phase1/lib-time.cswi delete mode 100644 obj/gnatprove/phase1/lib.adb.stderr delete mode 100644 obj/gnatprove/phase1/lib.adb.stdout delete mode 100644 obj/gnatprove/phase1/lib.ali delete mode 100644 obj/gnatprove/phase1/lib.cswi delete mode 100644 obj/gnatprove/phase1/main.adb.stderr delete mode 100644 obj/gnatprove/phase1/main.adb.stdout delete mode 100644 obj/gnatprove/phase1/main.ali delete mode 100644 obj/gnatprove/phase1/main.cswi delete mode 100644 obj/gnatprove/phase1/memory-physical.adb.stderr delete mode 100644 obj/gnatprove/phase1/memory-physical.adb.stdout delete mode 100644 obj/gnatprove/phase1/memory-physical.ali delete mode 100644 obj/gnatprove/phase1/memory-physical.cswi delete mode 100644 obj/gnatprove/phase1/memory.ads.stderr delete mode 100644 obj/gnatprove/phase1/memory.ads.stdout delete mode 100644 obj/gnatprove/phase1/memory.ali delete mode 100644 obj/gnatprove/phase1/memory.cswi delete mode 100644 obj/gnatprove/phase1/networking-arp.adb.stderr delete mode 100644 obj/gnatprove/phase1/networking-arp.adb.stdout delete mode 100644 obj/gnatprove/phase1/networking-arp.ali delete mode 100644 obj/gnatprove/phase1/networking-arp.cswi delete mode 100644 obj/gnatprove/phase1/networking-interfaces.adb.stderr delete mode 100644 obj/gnatprove/phase1/networking-interfaces.adb.stdout delete mode 100644 obj/gnatprove/phase1/networking-interfaces.ali delete mode 100644 obj/gnatprove/phase1/networking-interfaces.cswi delete mode 100644 obj/gnatprove/phase1/networking-ipv4.adb.stderr delete mode 100644 obj/gnatprove/phase1/networking-ipv4.adb.stdout delete mode 100644 obj/gnatprove/phase1/networking-ipv4.ali delete mode 100644 obj/gnatprove/phase1/networking-ipv4.cswi delete mode 100644 obj/gnatprove/phase1/networking-ipv6.adb.stderr delete mode 100644 obj/gnatprove/phase1/networking-ipv6.adb.stdout delete mode 100644 obj/gnatprove/phase1/networking-ipv6.ali delete mode 100644 obj/gnatprove/phase1/networking-ipv6.cswi delete mode 100644 obj/gnatprove/phase1/networking.adb.stderr delete mode 100644 obj/gnatprove/phase1/networking.adb.stdout delete mode 100644 obj/gnatprove/phase1/networking.ali delete mode 100644 obj/gnatprove/phase1/networking.cswi delete mode 100644 obj/gnatprove/phase1/scheduler.adb.stderr delete mode 100644 obj/gnatprove/phase1/scheduler.adb.stdout delete mode 100644 obj/gnatprove/phase1/scheduler.ali delete mode 100644 obj/gnatprove/phase1/scheduler.cswi delete mode 100644 obj/gnatprove/phase1/userland-corefile.adb.stderr delete mode 100644 obj/gnatprove/phase1/userland-corefile.adb.stdout delete mode 100644 obj/gnatprove/phase1/userland-corefile.ali delete mode 100644 obj/gnatprove/phase1/userland-corefile.cswi delete mode 100644 obj/gnatprove/phase1/userland-elf.adb.stderr delete mode 100644 obj/gnatprove/phase1/userland-elf.adb.stdout delete mode 100644 obj/gnatprove/phase1/userland-elf.ali delete mode 100644 obj/gnatprove/phase1/userland-elf.cswi delete mode 100644 obj/gnatprove/phase1/userland-loader.adb.stderr delete mode 100644 obj/gnatprove/phase1/userland-loader.adb.stdout delete mode 100644 obj/gnatprove/phase1/userland-loader.ali delete mode 100644 obj/gnatprove/phase1/userland-loader.cswi delete mode 100644 obj/gnatprove/phase1/userland-mac.adb.stderr delete mode 100644 obj/gnatprove/phase1/userland-mac.adb.stdout delete mode 100644 obj/gnatprove/phase1/userland-mac.ali delete mode 100644 obj/gnatprove/phase1/userland-mac.cswi delete mode 100644 obj/gnatprove/phase1/userland-memory_failure.adb.stderr delete mode 100644 obj/gnatprove/phase1/userland-memory_failure.adb.stdout delete mode 100644 obj/gnatprove/phase1/userland-memory_failure.ali delete mode 100644 obj/gnatprove/phase1/userland-memory_failure.cswi delete mode 100644 obj/gnatprove/phase1/userland-memory_locations.ads.stderr delete mode 100644 obj/gnatprove/phase1/userland-memory_locations.ads.stdout delete mode 100644 obj/gnatprove/phase1/userland-memory_locations.ali delete mode 100644 obj/gnatprove/phase1/userland-memory_locations.cswi delete mode 100644 obj/gnatprove/phase1/userland-oom_failure.adb.stderr delete mode 100644 obj/gnatprove/phase1/userland-oom_failure.adb.stdout delete mode 100644 obj/gnatprove/phase1/userland-oom_failure.ali delete mode 100644 obj/gnatprove/phase1/userland-oom_failure.cswi delete mode 100644 obj/gnatprove/phase1/userland-process.adb.stderr delete mode 100644 obj/gnatprove/phase1/userland-process.adb.stdout delete mode 100644 obj/gnatprove/phase1/userland-process.ali delete mode 100644 obj/gnatprove/phase1/userland-process.cswi delete mode 100644 obj/gnatprove/phase1/userland-syscall.adb.stderr delete mode 100644 obj/gnatprove/phase1/userland-syscall.adb.stdout delete mode 100644 obj/gnatprove/phase1/userland-syscall.ali delete mode 100644 obj/gnatprove/phase1/userland-syscall.cswi delete mode 100644 obj/gnatprove/phase1/userland.ads.stderr delete mode 100644 obj/gnatprove/phase1/userland.ads.stdout delete mode 100644 obj/gnatprove/phase1/userland.ali delete mode 100644 obj/gnatprove/phase1/userland.cswi delete mode 100644 obj/gnatprove/phase1/vfs-dev.adb.stderr delete mode 100644 obj/gnatprove/phase1/vfs-dev.adb.stdout delete mode 100644 obj/gnatprove/phase1/vfs-dev.ali delete mode 100644 obj/gnatprove/phase1/vfs-dev.cswi delete mode 100644 obj/gnatprove/phase1/vfs-ext.adb.stderr delete mode 100644 obj/gnatprove/phase1/vfs-ext.adb.stdout delete mode 100644 obj/gnatprove/phase1/vfs-ext.ali delete mode 100644 obj/gnatprove/phase1/vfs-ext.cswi delete mode 100644 obj/gnatprove/phase1/vfs-fat.adb.stderr delete mode 100644 obj/gnatprove/phase1/vfs-fat.adb.stdout delete mode 100644 obj/gnatprove/phase1/vfs-fat.ali delete mode 100644 obj/gnatprove/phase1/vfs-fat.cswi delete mode 100644 obj/gnatprove/phase1/vfs.adb.stderr delete mode 100644 obj/gnatprove/phase1/vfs.adb.stdout delete mode 100644 obj/gnatprove/phase1/vfs.ali delete mode 100644 obj/gnatprove/phase1/vfs.cswi diff --git a/obj/gnatprove/691ca296.tmp b/obj/gnatprove/691ca296.tmp deleted file mode 100644 index 8e85af1..0000000 --- a/obj/gnatprove/691ca296.tmp +++ /dev/null @@ -1 +0,0 @@ -{"global_gen_mode":true,"output_mode":"GPO_PRETTY_COLOR","exclude_line":"","debug_exec_rac":false,"debug":false,"flow_advanced_debug":false,"flow_generate_contracts":true,"file_specific":{"Ada":{"check_counterexamples":true,"no_loop_unrolling":false,"no_inlining":false,"info_messages":false,"gp_mode":"GPM_PROVE"}}} diff --git a/obj/gnatprove/data_representation/config.ads.stderr b/obj/gnatprove/data_representation/config.ads.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/config.ads.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/config.ads.stdout b/obj/gnatprove/data_representation/config.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/kernel_main.adb.stderr b/obj/gnatprove/data_representation/kernel_main.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/kernel_main.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/kernel_main.adb.stdout b/obj/gnatprove/data_representation/kernel_main.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/main.adb.stderr b/obj/gnatprove/data_representation/main.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/main.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/main.adb.stdout b/obj/gnatprove/data_representation/main.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/scheduler.adb.stderr b/obj/gnatprove/data_representation/scheduler.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/scheduler.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/scheduler.adb.stdout b/obj/gnatprove/data_representation/scheduler.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/userland-loader.adb.stderr b/obj/gnatprove/data_representation/userland-loader.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/userland-loader.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/userland-loader.adb.stdout b/obj/gnatprove/data_representation/userland-loader.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/userland-mac.adb.stderr b/obj/gnatprove/data_representation/userland-mac.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/userland-mac.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/userland-mac.adb.stdout b/obj/gnatprove/data_representation/userland-mac.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/userland-oom_failure.adb.stderr b/obj/gnatprove/data_representation/userland-oom_failure.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/userland-oom_failure.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/userland-oom_failure.adb.stdout b/obj/gnatprove/data_representation/userland-oom_failure.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/userland-syscall.adb.stderr b/obj/gnatprove/data_representation/userland-syscall.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/userland-syscall.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/userland-syscall.adb.stdout b/obj/gnatprove/data_representation/userland-syscall.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/vfs-dev.adb.stderr b/obj/gnatprove/data_representation/vfs-dev.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/vfs-dev.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/vfs-dev.adb.stdout b/obj/gnatprove/data_representation/vfs-dev.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/vfs-ext.adb.stderr b/obj/gnatprove/data_representation/vfs-ext.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/vfs-ext.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/vfs-ext.adb.stdout b/obj/gnatprove/data_representation/vfs-ext.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/vfs-fat.adb.stderr b/obj/gnatprove/data_representation/vfs-fat.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/vfs-fat.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/vfs-fat.adb.stdout b/obj/gnatprove/data_representation/vfs-fat.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation/vfs.adb.stderr b/obj/gnatprove/data_representation/vfs.adb.stderr deleted file mode 100644 index f6ce6a8..0000000 --- a/obj/gnatprove/data_representation/vfs.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/data_representation/vfs.adb.stdout b/obj/gnatprove/data_representation/vfs.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/data_representation_generation.log b/obj/gnatprove/data_representation_generation.log deleted file mode 100644 index 5232eff..0000000 --- a/obj/gnatprove/data_representation_generation.log +++ /dev/null @@ -1,36 +0,0 @@ -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? -gcc: error: unrecognized argument in option '-mabi=lp64' -gcc: note: valid arguments to '-mabi=' are: ms sysv -gcc: error: unrecognized command-line option '-mno-relax'; did you mean '-mno-recip'? diff --git a/obj/gnatprove/dea97157.tmp b/obj/gnatprove/dea97157.tmp deleted file mode 100644 index 4c55438..0000000 --- a/obj/gnatprove/dea97157.tmp +++ /dev/null @@ -1 +0,0 @@ -{"global_gen_mode":true,"output_mode":"GPO_PRETTY_COLOR","exclude_line":"","debug_exec_rac":false,"debug":false,"flow_advanced_debug":false,"flow_generate_contracts":true,"file_specific":{"Ada":{"check_counterexamples":true,"no_loop_unrolling":false,"no_inlining":false,"info_messages":false,"gp_mode":"GPM_ALL"}}} diff --git a/obj/gnatprove/phase1/arch-clocks.adb.stderr b/obj/gnatprove/phase1/arch-clocks.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-clocks.adb.stdout b/obj/gnatprove/phase1/arch-clocks.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-clocks.ali b/obj/gnatprove/phase1/arch-clocks.ali deleted file mode 100644 index d5f64e4..0000000 --- a/obj/gnatprove/phase1/arch-clocks.ali +++ /dev/null @@ -1,168 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.clocks%b arch-clocks.adb 0689561d OO PK -W arch%s arch.ads arch.ali - -U arch.clocks%s arch-clocks.ads 19a2d574 OO PK -W arch%s arch.ads arch.ali -W interfaces%s interfac.ads interfac.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-clocks.adb 20250222165738 f1e25636 arch.clocks%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 2|19r9 45r5 3|17r14 77r5 -X 2 arch-clocks.ads -19K14*Clocks 1|20k9 2|45l10 45e16 3|17b19 77l10 77t16 -20@23*Monotonic_Clock_State 24r34 28r33 32r33 3|24r8 -20@46*RT_Clock_State 24r57 36r33 40r33 44r33 3|19r8 -23U14*Initialize_Sources 3|41b14 44l8 44t26 -27U14*Get_Monotonic_Resolution 27<40 27<49 3|46b14 51l8 51t32 -27m40 Seconds{4|84M9} 3|46b40 49m7 -27m49 Nanoseconds{4|84M9} 3|46b49 50m7 -31U14*Get_Monotonic_Time 31<34 31<43 3|53b14 57l8 57t26 -31m34 Seconds{4|84M9} 3|53b34 55m7 -31m43 Nanoseconds{4|84M9} 3|53b43 56m7 -35U14*Get_Real_Time_Resolution 35<40 35<49 3|59b14 64l8 64t32 -35m40 Seconds{4|84M9} 3|59b40 62m7 -35m49 Nanoseconds{4|84M9} 3|59b49 63m7 -39U14*Get_Real_Time 39<29 39<38 3|66b14 71l8 71t21 -39m29 Seconds{4|84M9} 3|66b29 69m7 -39m38 Nanoseconds{4|84M9} 3|66b38 70m7 -43U14*Set_Real_Time 43>29 43>38 3|73b14 76l8 76t21 -43m29 Seconds{4|84M9} 3|73b29 -43m38 Nanoseconds{4|84M9} 3|73b38 -X 3 arch-clocks.adb -30m4 RT_Timestamp_Seconds{4|84M9} 20r11 -31m4 RT_Timestamp_Nanoseconds{4|84M9} 21r11 -32m4 RT_Stored_Seconds{4|84M9} 22r11 -33m4 RT_Stored_Nanoseconds{4|84M9} 23r11 -37N4 MS_Per_Sec -38N4 Nanos_Per_MS 39r35 -39m4 Mono_TSC_Freq{4|84M9} 24r34 -X 4 interfac.ads -38K9*Interfaces 2|17w6 17r22 4|233e15 -84M9*Unsigned_64 2|27r67 31r61 35r67 39r56 43r52 3|30r31 31r31 32r31 33r31 -. 39r20 46r67 53r61 59r67 66r56 73r52 - -QQ SPARKVERSION 0.0w -GG EK_STATE_MAP ada___arch__clocks__monotonic_clock_state 1 ada___arch__clocks__mono_tsc_freq -GG EK_STATE_MAP ada___arch__clocks__rt_clock_state 4 ada___arch__clocks__rt_timestamp_seconds ada___arch__clocks__rt_timestamp_nanoseconds ada___arch__clocks__rt_stored_seconds ada___arch__clocks__rt_stored_nanoseconds -GG EK_DIRECT_CALLS ada___arch__clocks__initialize_sources 0 -GG EK_PROOF_DEPENDENCIES ada___arch__clocks__initialize_sources 0 -GG EK_GLOBALS ada___arch__clocks__initialize_sources local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 0 proper_output 2 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 0 refined_output 5 ada___arch__clocks__rt_timestamp_seconds ada___arch__clocks__rt_timestamp_nanoseconds ada___arch__clocks__rt_stored_seconds ada___arch__clocks__rt_stored_nanoseconds ada___arch__clocks__mono_tsc_freq calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__clocks__get_monotonic_resolution 0 -GG EK_PROOF_DEPENDENCIES ada___arch__clocks__get_monotonic_resolution 0 -GG EK_GLOBALS ada___arch__clocks__get_monotonic_resolution local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 1 ada___arch__clocks__monotonic_clock_state proper_output 1 ada___arch__clocks__monotonic_clock_state refined_proof_in 0 refined_input 1 ada___arch__clocks__mono_tsc_freq refined_output 1 ada___arch__clocks__mono_tsc_freq calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__clocks__get_monotonic_time 0 -GG EK_PROOF_DEPENDENCIES ada___arch__clocks__get_monotonic_time 0 -GG EK_GLOBALS ada___arch__clocks__get_monotonic_time local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 1 ada___arch__clocks__monotonic_clock_state proper_output 1 ada___arch__clocks__monotonic_clock_state refined_proof_in 0 refined_input 1 ada___arch__clocks__mono_tsc_freq refined_output 1 ada___arch__clocks__mono_tsc_freq calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__clocks__get_real_time_resolution 0 -GG EK_PROOF_DEPENDENCIES ada___arch__clocks__get_real_time_resolution 0 -GG EK_GLOBALS ada___arch__clocks__get_real_time_resolution local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__clocks__get_real_time 0 -GG EK_PROOF_DEPENDENCIES ada___arch__clocks__get_real_time 0 -GG EK_GLOBALS ada___arch__clocks__get_real_time local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__clocks__set_real_time 0 -GG EK_PROOF_DEPENDENCIES ada___arch__clocks__set_real_time 0 -GG EK_GLOBALS ada___arch__clocks__set_real_time local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__clocks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__clocks 0 -GG EK_PROOF_DEPENDENCIES ada___arch__clocks 0 -GG EK_GLOBALS ada___arch__clocks local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___arch__clocks__monotonic_clock_state refined_initializes 1 ada___arch__clocks__mono_tsc_freq calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 5 ada___arch__clocks__rt_timestamp_seconds ada___arch__clocks__rt_timestamp_nanoseconds ada___arch__clocks__rt_stored_seconds ada___arch__clocks__rt_stored_nanoseconds ada___arch__clocks__mono_tsc_freq TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-clocks.cswi b/obj/gnatprove/phase1/arch-clocks.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-clocks.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-context.adb.stderr b/obj/gnatprove/phase1/arch-context.adb.stderr deleted file mode 100644 index e8a3c55..0000000 --- a/obj/gnatprove/phase1/arch-context.adb.stderr +++ /dev/null @@ -1,8 +0,0 @@ - -arch-context.adb:213:22: error: quantified expression must be parenthesized - 213 | pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -arch-context.adb:234:22: error: quantified expression must be parenthesized - 234 | pragma Assert (for all I in FP_Context'Range => Ctx(I) = 0, - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/obj/gnatprove/phase1/arch-context.adb.stdout b/obj/gnatprove/phase1/arch-context.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-cpu.adb.stderr b/obj/gnatprove/phase1/arch-cpu.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-cpu.adb.stdout b/obj/gnatprove/phase1/arch-cpu.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-cpu.ali b/obj/gnatprove/phase1/arch-cpu.ali deleted file mode 100644 index dbf7add..0000000 --- a/obj/gnatprove/phase1/arch-cpu.ali +++ /dev/null @@ -1,618 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.cpu%b arch-cpu.adb e1f2eb60 OO PK -W arch%s arch.ads arch.ali -W lib%s lib.adb lib.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W lib.panic%s lib-panic.adb lib-panic.ali -W system%s system.ads system.ali - -U arch.cpu%s arch-cpu.ads eb2b3570 OO PK -W arch%s arch.ads arch.ali -W arch.limine%s arch-limine.adb arch-limine.ali -W interfaces%s interfac.ads interfac.ali -W scheduler%s scheduler.adb scheduler.ali -W userland%s userland.ads userland.ali -W userland.process%s userland-process.adb userland-process.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-cpu.ads 20250222165738 4e264e50 arch.cpu%s -D arch-cpu.adb 20250222165738 330249e0 arch.cpu%b -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-limine.ads 20250222165738 8eb8e49c arch.limine%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 4 arch.ads -20K9*Arch 52e9 7|20r6 22r9 58r5 8|21r14 87r5 -X 7 arch-cpu.ads -22K14*CPU 4|20k9 7|58l10 58e13 8|21b19 87l10 87t13 -24R9*Core_Local 25r38 26c9 36e14 37r8 44r64 -25P9*Core_Local_Acc(24R9) 28r25 -26R9*Core_Local -28p7*Self{25P9} 38r7 8|79m11 -29m7*Kernel_Stack{14|84M9} 39r7 8|80m11 -30m7*User_Stack{14|84M9} 40r7 8|81m11 -32i7*Number{positive} 8|82m11 -33m7*Hart_ID{14|84M9} 8|83m11 -34i7*Current_Thread{25|27I9} 8|84m11 -35i7*Current_Process{32|33I9} 8|85m11 -44A9*Core_Local_Arr(26R9) 45r38 8|47r26 -45P9*Core_Local_Arr_Acc(44A9) 47r18 -46i4*Core_Count{positive} 8|43m7 47r47 51r10 -47p4*Core_Locals{45P9} 8|47m7 78r7 79r30 -50U14*Init_Cores 8|30b14 65l8 65t18 -54U14 Core_Bootstrap 54^30 8|59r36 67b14 74l8 74t22 -54p30 Info(10|184R9) 8|67b30 71r27 73r29 73r46 -57U14 Init_Common 57>27 57>51 8|48s7 73s7 76b14 86l8 86t19 -57i27 Core_Number{positive} 8|76b27 78r20 79r43 82r30 -57m51 Hart_ID{14|84M9} 8|76b51 83r30 -X 8 arch-cpu.adb -22r4 SMP_Request{10|155R9} 35r34 38r10 -31m7 BSP_Hart_ID{14|84M9} 44m7 48r23 57r34 -32i7 Idx{natural} 58r49 60m19 60r36 -34r7 SMPPonse{10|168R9} 43r31 44r22 53r58 54r40 -53a13 SMP_CPUs{10|201A9} 56r24 57r19 58r19 59r19 -56p17 CPU=56:24{10|199P9} -68a7 Stp{20|55A12} 71m43 72r51 -69i7 Stp_Len{natural} 71m48 -X 10 arch-limine.ads -20K14*Limine 7|20w11 54r44 8|22r18 24r23 34r18 53r24 67r44 10|293e16 -41A9*Request_ID(14|84M9) -43a7*ID{41A9} 8|24m11 -44m7*Revision{14|84M9} 8|25m11 -45m7*Response{26|67M9} 8|26m11 35r51 38r27 -155R9*SMP_Request 8|22r25 10|158e14 -156r7*Base{42R9} 8|23m8 35r46 38r22 -157m7*Flags{14|84M9} 8|27m8 -168R9*RISCV64_SMP_Response 8|34r25 10|174e15 -171m7*BSP_Hart_ID{14|84M9} 8|44r31 -172m7*CPU_Count{14|84M9} 8|43r40 53r67 -173m7*CPUs{26|67M9} 8|54r49 -184R9*RISCV64_SMP_CPU_Info 7|54r51 8|67r51 10|190e15 -186m7*Hart_ID{14|84M9} 8|57r23 73r51 -188m7*Addr{26|67M9} 8|59m23 -189m7*Extra_Arg{14|84M9} 8|58m23 71r32 73r34 -199P9*RISCV64_CPU_Info_Acc(184R9) -201A9*RISCV64_CPU_Info_Arr(199P9)<14|84M9> 8|53r31 -242a4*SMP_ID{41A9} 8|24r30 -X 14 interfac.ads -38K9*Interfaces 7|17w6 17r22 14|233e15 -84M9*Unsigned_64 7|29r25 30r25 33r25 57r61 8|31r21 58r36 76r61 -X 19 lib.ads -19K9*Lib 8|18r6 19r6 39r10 68r17 71r7 72r7 19|35e8 -X 20 lib-messages.ads -21K13*Messages 8|18w10 68r21 71r11 72r11 20|103e17 -41U14*Put_Line 8|72s20 -55A12*Translated_String{string} 8|68r30 -74U14*Image 8|71s20 -X 21 lib-panic.ads -21K13*Panic 8|19w10 39r14 21|39e14 -32U14*Hard_Panic 8|39s20 -X 25 scheduler.ads -25K9*Scheduler 7|19w6 34r25 8|84r30 25|183e14 -27I9*TID 7|34r35 -29i4*Error_TID{27I9} 8|84r40 -X 26 system.ads -37K9*System 8|17w6 17r18 26r23 38r38 26|155e11 -67M9*Address -69m4*Null_Address{67M9} 8|26r30 38r45 -81V14*"="{boolean} 8|38r36 -X 29 userland.ads -17K9*Userland 7|18r6 35r25 8|85r30 29|23e13 -X 32 userland-process.ads -28K18*Process 7|18w15 35r34 8|85r39 32|677e21 -33I9*PID 7|35r42 -34i4*Error_PID{33I9} 8|85r47 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__cpu__init_cores 0 -GG EK_PROOF_DEPENDENCIES ada___arch__cpu__init_cores 0 -GG EK_GLOBALS ada___arch__cpu__init_cores local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__cpu arch proper_proof_in 0 proper_input 4 ada___arch__cpu__smp_request ada___arch__cpu__core_count ada___arch__cpu__core_locals __HEAP proper_output 3 ada___arch__cpu__core_count ada___arch__cpu__core_locals __HEAP refined_proof_in 0 refined_input 4 ada___arch__cpu__smp_request ada___arch__cpu__core_count ada___arch__cpu__core_locals __HEAP refined_output 3 ada___arch__cpu__core_count ada___arch__cpu__core_locals __HEAP calls_proof 0 calls 0 calls_conditional 1 ada___lib__panic__hard_panic FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__cpu__smp_request ada___arch__cpu__core_count ada___arch__cpu__core_locals LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__cpu__core_bootstrap 0 -GG EK_PROOF_DEPENDENCIES ada___arch__cpu__core_bootstrap 0 -GG EK_GLOBALS ada___arch__cpu__core_bootstrap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__cpu arch proper_proof_in 0 proper_input 2 ada___arch__cpu__core_locals __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 ada___arch__cpu__core_locals __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__messages__put_line ada___lib__messages__image__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__cpu__init_common 0 -GG EK_PROOF_DEPENDENCIES ada___arch__cpu__init_common 0 -GG EK_GLOBALS ada___arch__cpu__init_common local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__cpu arch proper_proof_in 0 proper_input 2 ada___arch__cpu__core_locals __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 ada___arch__cpu__core_locals __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__cpu__core_locals LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__cpu 0 -GG EK_PROOF_DEPENDENCIES ada___arch__cpu 0 -GG EK_GLOBALS ada___arch__cpu local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___arch__cpu__core_locals refined_initializes 1 ada___arch__cpu__core_locals calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___arch__cpu__core_count ada___arch__cpu__core_locals TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__limine TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__limine__get_physical_address FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___arch__limine__translate_proto FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__cpu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__cpu__init_cores FALSE FALSE FALSE FALSE TRUE ada___arch__cpu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__cpu__core_bootstrap FALSE FALSE FALSE FALSE TRUE ada___arch__cpu PRIVATE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__cpu__init_common FALSE FALSE FALSE FALSE TRUE ada___arch__cpu PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-cpu.cswi b/obj/gnatprove/phase1/arch-cpu.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-cpu.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-debug.adb.stderr b/obj/gnatprove/phase1/arch-debug.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-debug.adb.stdout b/obj/gnatprove/phase1/arch-debug.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-debug.ali b/obj/gnatprove/phase1/arch-debug.ali deleted file mode 100644 index e502078..0000000 --- a/obj/gnatprove/phase1/arch-debug.ali +++ /dev/null @@ -1,210 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.debug%b arch-debug.adb 8b8a9c51 OO PK -W arch%s arch.ads arch.ali -W devices%s devices.adb devices.ali -W devices.uart%s devices-uart.adb devices-uart.ali -Z system%s system.ads system.ali - -U arch.debug%s arch-debug.ads f201567a OO PK -W arch%s arch.ads arch.ali -W devices%s devices.adb devices.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-debug.ads 20250222165738 7987b5ed arch.debug%s -D arch-debug.adb 20250222165738 e7be1437 arch.debug%b -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-uart.ads 20250222165738 15b33d8b devices.uart%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 2|19r9 49r5 3|19r14 40r5 -X 2 arch-debug.ads -19K14*Debug 1|20k9 2|49l10 49e15 3|19b19 40l10 40t15 -24b4*Supports_Read{boolean} 45c7 -28U14*Read 28<20 3|20b14 23l8 23t12 -28a20 Message{5|29A9} 3|20b20 -32U14*Print 32>21 3|25b14 28l8 28t13 -32e21 Message{character} 3|25b21 27r33 -36U14*Print 36>21 3|30b14 33l8 33t13 -36a21 Message{string} 3|30b21 32r33 -40U14*Print 40>21 3|35b14 39l8 39t13 -40a21 Message{5|29A9} 3|35b21 36r24 36r64 -X 3 arch-debug.adb -36a7 S{string} 38r33 -X 5 devices.ads -22K9*Devices 2|17w6 28r34 40r31 3|17r6 20r34 27r7 32r7 35r31 38r7 5|279e12 -29A9*Operation_Data(7|70M9) 2|28r42 40r39 3|20r42 35r39 -X 6 devices-uart.ads -21K17*UART 3|17w14 27r15 32r15 38r15 6|37e17 -26U14*Write_UART0 3|27s20 -29U14*Write_UART0 3|32s20 38s20 -X 7 interfac.ads -70M9*Unsigned_8 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__debug__read 0 -GG EK_PROOF_DEPENDENCIES ada___arch__debug__read 0 -GG EK_GLOBALS ada___arch__debug__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__debug arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__debug__print 0 -GG EK_PROOF_DEPENDENCIES ada___arch__debug__print 0 -GG EK_GLOBALS ada___arch__debug__print local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__debug arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___devices__uart__write_uart0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__debug__print__2 0 -GG EK_PROOF_DEPENDENCIES ada___arch__debug__print__2 0 -GG EK_GLOBALS ada___arch__debug__print__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__debug arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___devices__uart__write_uart0__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__debug__print__3 0 -GG EK_PROOF_DEPENDENCIES ada___arch__debug__print__3 0 -GG EK_GLOBALS ada___arch__debug__print__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__debug arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___devices__uart__write_uart0__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__debug 0 -GG EK_PROOF_DEPENDENCIES ada___arch__debug 0 -GG EK_GLOBALS ada___arch__debug local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___devices__uart__init_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___devices__uart__write_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__read FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart__write_uart0__2 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__print FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__print__2 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__print__3 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-debug.cswi b/obj/gnatprove/phase1/arch-debug.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-debug.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-dtb.adb.stderr b/obj/gnatprove/phase1/arch-dtb.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-dtb.adb.stdout b/obj/gnatprove/phase1/arch-dtb.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-dtb.ali b/obj/gnatprove/phase1/arch-dtb.ali deleted file mode 100644 index e8addef..0000000 --- a/obj/gnatprove/phase1/arch-dtb.ali +++ /dev/null @@ -1,160 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.dtb%b arch-dtb.adb ca6eaf03 OO PK -W arch%s arch.ads arch.ali -W system%s system.ads system.ali - -U arch.dtb%s arch-dtb.ads 5baab04b OO PK -W arch%s arch.ads arch.ali -W arch.limine%s arch-limine.adb arch-limine.ali -W interfaces%s interfac.ads interfac.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-dtb.ads 20250222165738 3bdb8188 arch.dtb%s -D arch-dtb.adb 20250222165738 e59d4584 arch.dtb%b -D arch-limine.ads 20250222165738 8eb8e49c arch.limine%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 2|18r6 20r9 25r18 26r20 46r5 3|19r14 21r18 34r5 -X 2 arch-dtb.ads -20K14*DTB 1|20k9 2|46l10 46e13 3|19b19 34l10 34t13 -21V13*Init{boolean} 3|20b13 33l8 33t12 -25r4 DTB_Request{4|42R9} 3|22r34 24r10 -32N4 FDT_Magic 3|31r32 -34R9 FDT_Header 45e15 3|29r19 -35m7*Magic{5|81M9} 3|31r24 -36m7*Size{5|81M9} -37m7*Offset_DT_Struct{5|81M9} -38m7*Offset_DT_Strings{5|81M9} -39m7*Offset_Reserved_Flag{5|81M9} -40m7*Version{5|81M9} -41m7*Last_Compatible_Vers{5|81M9} -42m7*Boot_CPU_Physical_ID{5|81M9} -43m7*Size_DT_Stings{5|81M9} -44m7*Size_DT_Struct{5|81M9} -X 3 arch-dtb.adb -21r7 DTBPonse{4|216R9} 29r54 -29r10 Header{2|34R9} 31r17 -X 4 arch-limine.ads -20K14*Limine 2|18w11 25r23 26r25 3|21r23 4|293e16 -41A9*Request_ID(5|84M9) -42R9*Request 2|25r30 4|46e15 -43a7*ID{41A9} 2|26m8 -44m7*Revision{5|84M9} 2|27m8 -45m7*Response{6|67M9} 2|28m8 3|22r46 24r22 -216R9*DTB_Response 3|21r30 4|219e15 -218m7*DTB_Addr{6|67M9} 3|29r63 -250a4*DTB_ID{41A9} 2|26r32 -X 5 interfac.ads -38K9*Interfaces 2|17w6 17r22 5|233e15 -81M9*Unsigned_32 2|35r30 36r30 37r30 38r30 39r30 40r30 41r30 42r30 43r30 -. 44r30 -84M9*Unsigned_64 -X 6 system.ads -37K9*System 2|28r20 3|17w6 17r18 24r33 6|155e11 -67M9*Address -69m4*Null_Address{67M9} 2|28r27 3|24r40 -81V14*"="{boolean} 3|24r31 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__dtb__init 0 -GG EK_PROOF_DEPENDENCIES ada___arch__dtb__init 0 -GG EK_GLOBALS ada___arch__dtb__init local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__dtb arch proper_proof_in 0 proper_input 1 ada___arch__dtb__dtb_request proper_output 0 refined_proof_in 0 refined_input 1 ada___arch__dtb__dtb_request refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__dtb__dtb_request LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__dtb 0 -GG EK_PROOF_DEPENDENCIES ada___arch__dtb 0 -GG EK_GLOBALS ada___arch__dtb local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__limine__translate_proto FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___arch__dtb TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__dtb__init FALSE FALSE FALSE FALSE TRUE ada___arch__dtb VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__limine TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__limine__get_physical_address FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_VOLATILES AR 0 AW 1 ada___arch__dtb__dtb_request ER 0 EW 0 -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-dtb.cswi b/obj/gnatprove/phase1/arch-dtb.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-dtb.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-entrypoint.adb.stderr b/obj/gnatprove/phase1/arch-entrypoint.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-entrypoint.adb.stdout b/obj/gnatprove/phase1/arch-entrypoint.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-entrypoint.ali b/obj/gnatprove/phase1/arch-entrypoint.ali deleted file mode 100644 index 4242695..0000000 --- a/obj/gnatprove/phase1/arch-entrypoint.ali +++ /dev/null @@ -1,659 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RV NO_ENUMERATION_MAPS -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.entrypoint%b arch-entrypoint.adb cd7f7975 OO PK -W arch%s arch.ads arch.ali -W arch.cpu%s arch-cpu.adb arch-cpu.ali -W arch.dtb%s arch-dtb.adb arch-dtb.ali -W arch.limine%s arch-limine.adb arch-limine.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W devices%s devices.adb devices.ali -W devices.uart%s devices-uart.adb devices-uart.ali -W interfaces%s interfac.ads interfac.ali -W kernel_main%s kernel_main.adb kernel_main.ali -W lib%s lib.adb lib.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W lib.panic%s lib-panic.adb lib-panic.ali -W memory%s memory.ads memory.ali -W memory.physical%s memory-physical.adb memory-physical.ali - -U arch.entrypoint%s arch-entrypoint.ads 418a8118 OO PK -W arch%s arch.ads arch.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-cpu.ads 20250222165738 4e264e50 arch.cpu%s -D arch-dtb.ads 20250222165738 3bdb8188 arch.dtb%s -D arch-entrypoint.ads 20250222165738 3e52ad86 arch.entrypoint%s -D arch-entrypoint.adb 20250222165738 1772cf08 arch.entrypoint%b -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-limine.ads 20250222165738 8eb8e49c arch.limine%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D devices-uart.ads 20250222165738 15b33d8b devices.uart%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D i-c.ads 20240507065137 aac316ce interfaces.c%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D kernel_main.ads 20250222165738 fba3ee83 kernel_main%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-parame.ads 20240507065137 3597fc11 system.parameters%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 4 arch.ads -20K9*Arch 52e9 9|17r9 20r5 10|20r6 23r6 25r6 26r6 28r14 41r14 57r14 62r7 -. 67r5 -22E9*Boot_Memory_Type 27e24 10|51r13 -30m7*Start{32|67M9} 10|48r44 -31i7*Length{34|53I12} 10|49r32 -32e7*MemType{22E9} 10|51r39 -34A9*Boot_Memory_Map(29R9) -44R9*Boot_Information 51e14 10|30r18 -45a7*Cmdline{string} 10|65r36 -46i7*Cmdline_Len{integer} 10|65r55 -47a7*Memmap{34A9} 10|47r21 56r44 57r34 -48i7*Memmap_Len{integer} 10|47r39 56r62 57r52 -X 7 arch-cpu.ads -22K14*CPU 58e13 10|26w11 62r12 -50U14*Init_Cores 10|62s16 -X 8 arch-dtb.ads -20K14*DTB 46e13 10|25w11 41r19 -21V13*Init{boolean} 10|41s23 -X 9 arch-entrypoint.ads -17K14*Entrypoint 4|20k9 9|20l10 20e20 10|28b19 67l10 67t20 -18U14*Bootstrap_Main 10|29b14 66l8 66t22 -X 10 arch-entrypoint.adb -30r7 Info=30:50{4|44R9} -31a7 St1{25|55A12} 48m53 50r33 -31a12 St2{25|55A12} 49m41 50r47 -32i7 Stp_Len{natural} 48m58 49m46 -47r11 E{4|29R9} -X 12 arch-limine.ads -20K14*Limine 10|20w11 30r43 38r7 12|293e16 -22r4*Global_Info{4|44R9} 10|30r50 47r16 47r34 48r42 49r30 51r37 56r39 56r57 -. 57r29 57r47 65r31 65r50 -36U14*Translate_Proto 10|38s14 -X 13 arch-mmu.ads -22K14*MMU 10|23w11 57r19 13|250e13 -63V13*Init{boolean} 10|57s23 -X 14 devices.ads -22K9*Devices 10|19r6 35r7 14|279e12 -X 16 devices-uart.ads -21K17*UART 10|19w14 35r15 16|37e17 -23U14*Init_UART0 10|35s20 -X 17 interfac.ads -38K9*Interfaces 10|17w6 17r22 17|233e15 -84M9*Unsigned_64 10|48r17 49r17 -X 23 kernel_main.ads -17K9*Kernel_Main 10|18w6 65r7 23|26e16 -25U14*Entrypoint 10|65s19 -X 24 lib.ads -19K9*Lib 10|21r6 21r24 24r6 31r18 42r10 46r7 50r10 55r7 58r10 24|35e8 -X 25 lib-messages.ads -21K13*Messages 10|21w10 21r28 31r22 46r11 50r14 55r11 25|103e17 -41U14*Put_Line 10|46s20 50s23 55s20 -55A12*Translated_String{string} 10|31r31 -74U14*Image 10|48s10 49s10 -X 26 lib-panic.ads -21K13*Panic 10|24w10 42r14 58r14 26|39e14 -32U14*Hard_Panic 10|42s20 58s20 -X 28 memory.ads -19K9*Memory 10|22r6 56r7 28|36e11 -X 29 memory-physical.ads -20K16*Physical 10|22w13 56r14 29|60e20 -23U14*Init_Allocator 10|56s23 -X 32 system.ads -67M9*Address -X 34 s-stoele.ads -51I9*Storage_Offset -53I12*Storage_Count{51I9} -82M9*Integer_Address -87V13*To_Integer{82M9} 10|48s30 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__entrypoint__bootstrap_main 0 -GG EK_PROOF_DEPENDENCIES ada___arch__entrypoint__bootstrap_main 0 -GG EK_GLOBALS ada___arch__entrypoint__bootstrap_main local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__entrypoint arch proper_proof_in 0 proper_input 1 ada___arch__limine__global_info proper_output 0 refined_proof_in 0 refined_input 1 ada___arch__limine__global_info refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_integer kernel_main__entrypoint ada___arch__mmu__init ada___devices__uart__init_uart0 ada___arch__limine__translate_proto ada___lib__messages__put_line ada___lib__messages__image__2 ada___memory__physical__init_allocator ada___lib__panic__hard_panic ada___arch__dtb__init ada___arch__cpu__init_cores FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__limine__global_info LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__entrypoint 0 -GG EK_PROOF_DEPENDENCIES ada___arch__entrypoint 0 -GG EK_GLOBALS ada___arch__entrypoint local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__cpu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__limine TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__limine__get_physical_address FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__limine__translate_proto FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__cpu__init_cores FALSE FALSE FALSE FALSE TRUE ada___arch__cpu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__cpu__core_bootstrap FALSE FALSE FALSE FALSE TRUE ada___arch__cpu PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__cpu__init_common FALSE FALSE FALSE FALSE TRUE ada___arch__cpu PRIVATE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE kernel_main TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE kernel_main__entrypoint FALSE FALSE FALSE FALSE TRUE kernel_main VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__entrypoint TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__entrypoint__bootstrap_main FALSE FALSE FALSE FALSE TRUE ada___arch__entrypoint VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart__init_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart__write_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart__write_uart0__2 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__dtb TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__dtb__init FALSE FALSE FALSE FALSE TRUE ada___arch__dtb VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-entrypoint.cswi b/obj/gnatprove/phase1/arch-entrypoint.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-entrypoint.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-hooks.adb.stderr b/obj/gnatprove/phase1/arch-hooks.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-hooks.adb.stdout b/obj/gnatprove/phase1/arch-hooks.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-hooks.ali b/obj/gnatprove/phase1/arch-hooks.ali deleted file mode 100644 index 15719cd..0000000 --- a/obj/gnatprove/phase1/arch-hooks.ali +++ /dev/null @@ -1,114 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.hooks%b arch-hooks.adb 94b1c044 OO PK -W arch%s arch.ads arch.ali - -U arch.hooks%s arch-hooks.ads 540907cb OO PK -W arch%s arch.ads arch.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s -D arch-hooks.adb 20250222165738 bf60eb11 arch.hooks%b -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 2|17r9 33r5 3|17r14 44r5 -X 2 arch-hooks.ads -17K14*Hooks 1|20k9 2|33l10 33e15 3|17b19 44l10 44t15 -19V13*Devices_Hook{boolean} 3|18b13 21l8 21t20 -22V13*PRCTL_Hook{boolean} 22>25 22>41 3|23b13 28l8 28t18 -22i25 Code{natural} 3|23b25 24r28 -22m41 Arg{4|67M9} 3|23b41 25r28 -26U14*Panic_SMP_Hook 3|30b14 33l8 33t22 -29V13*Get_Active_Core_Count{positive} 3|35b13 38l8 38t29 -32U14*Register_RAM_Files 3|40b14 43l8 43t26 -X 4 system.ads -37K9*System 2|22r47 3|23r47 4|155e11 -67M9*Address 2|22r54 3|23r54 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__hooks__devices_hook 0 -GG EK_PROOF_DEPENDENCIES ada___arch__hooks__devices_hook 0 -GG EK_GLOBALS ada___arch__hooks__devices_hook local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__hooks__prctl_hook 0 -GG EK_PROOF_DEPENDENCIES ada___arch__hooks__prctl_hook 0 -GG EK_GLOBALS ada___arch__hooks__prctl_hook local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__hooks__panic_smp_hook 0 -GG EK_PROOF_DEPENDENCIES ada___arch__hooks__panic_smp_hook 0 -GG EK_GLOBALS ada___arch__hooks__panic_smp_hook local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__hooks__get_active_core_count 0 -GG EK_PROOF_DEPENDENCIES ada___arch__hooks__get_active_core_count 0 -GG EK_GLOBALS ada___arch__hooks__get_active_core_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__hooks__register_ram_files 0 -GG EK_PROOF_DEPENDENCIES ada___arch__hooks__register_ram_files 0 -GG EK_GLOBALS ada___arch__hooks__register_ram_files local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__hooks arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__hooks 0 -GG EK_PROOF_DEPENDENCIES ada___arch__hooks 0 -GG EK_GLOBALS ada___arch__hooks local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-hooks.cswi b/obj/gnatprove/phase1/arch-hooks.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-hooks.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-interrupts.ads.stderr b/obj/gnatprove/phase1/arch-interrupts.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-interrupts.ads.stdout b/obj/gnatprove/phase1/arch-interrupts.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-interrupts.ali b/obj/gnatprove/phase1/arch-interrupts.ali deleted file mode 100644 index 7cb2ac2..0000000 --- a/obj/gnatprove/phase1/arch-interrupts.ali +++ /dev/null @@ -1,128 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.interrupts%s arch-interrupts.ads f6a30a26 OO PK -W arch%s arch.ads arch.ali -W interfaces%s interfac.ads interfac.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 2|19r9 39r5 -X 2 arch-interrupts.ads -19K14*Interrupts 1|20k9 2|39l10 39e20 -21R9*Frame 38e15 -22m7*R15{3|81M9} -23m7*R14{3|81M9} -24m7*R13{3|81M9} -25m7*R12{3|81M9} -26m7*R11{3|81M9} -27m7*R10{3|81M9} -28m7*R9{3|81M9} -29m7*R8{3|81M9} -30m7*R7{3|81M9} -31m7*R6{3|81M9} -32m7*R5{3|81M9} -33m7*R4{3|81M9} -34m7*R3{3|81M9} -35m7*R2{3|81M9} -36m7*R1{3|81M9} -37m7*R0{3|81M9} -X 3 interfac.ads -38K9*Interfaces 2|17w6 17r22 3|233e15 -81M9*Unsigned_32 2|22r14 23r14 24r14 25r14 26r14 27r14 28r14 29r14 30r14 -. 31r14 32r14 33r14 34r14 35r14 36r14 37r14 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__interrupts 0 -GG EK_PROOF_DEPENDENCIES ada___arch__interrupts 0 -GG EK_GLOBALS ada___arch__interrupts local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-interrupts.cswi b/obj/gnatprove/phase1/arch-interrupts.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-interrupts.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-limine.adb.stderr b/obj/gnatprove/phase1/arch-limine.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-limine.adb.stdout b/obj/gnatprove/phase1/arch-limine.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-limine.ali b/obj/gnatprove/phase1/arch-limine.ali deleted file mode 100644 index 4273845..0000000 --- a/obj/gnatprove/phase1/arch-limine.ali +++ /dev/null @@ -1,393 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ACCESS_SUBPROGRAMS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.limine%b arch-limine.adb c074d595 OO PK -W arch%s arch.ads arch.ali -W lib%s lib.adb lib.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W system%s system.ads system.ali - -U arch.limine%s arch-limine.ads 74595acc OO PK -W arch%s arch.ads arch.ali -W interfaces%s interfac.ads interfac.ali -W system%s system.ads system.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-limine.ads 20250222165738 8eb8e49c arch.limine%s -D arch-limine.adb 20250222165738 95f35688 arch.limine%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 3|20r9 293r5 4|21r14 123r5 -22E9*Boot_Memory_Type 27e24 4|55r20 -23n8*Memory_Free{22E9} 4|88r30 111r46 -24n8*Memory_Reserved{22E9} 4|91r30 100r30 -25n8*Memory_Kernel{22E9} 4|97r30 -26n8*Memory_ACPI_Reclaimable{22E9} 4|93r30 -27n8*Memory_ACPI_NVS{22E9} 4|95r30 -30m7*Start{9|67M9} 4|105m14 112r48 115r55 116m36 -31i7*Length{10|53I12} 4|106m14 113r36 118m36 119r39 -32e7*MemType{22E9} 4|107m14 111r36 -34A9*Boot_Memory_Map(29R9) -38m7*Start{9|67M9} 4|78m20 -39i7*Length{10|53I12} 4|79m20 -41A9*Boot_RAM_Files(37R9) -44R9*Boot_Information 51e14 3|22r18 -45a7*Cmdline{string} 4|63m19 -46i7*Cmdline_Len{integer} 4|64m19 -47a7*Memmap{34A9} 4|104m22 111r25 112r37 113r25 115r44 116m25 117r28 118m25 -. 119r28 -48i7*Memmap_Len{integer} 4|103m22 103r48 104r42 110r33 -49a7*RAM_Files{41A9} 4|77m28 -50i7*RAM_Files_Len{integer} 4|67m19 76m28 76r57 77r51 -X 3 arch-limine.ads -20K14*Limine 1|20k9 3|293l10 293e16 4|21b19 22r19 123l10 123t16 -22r4*Global_Info{1|44R9} 4|63m7 64m7 67m7 76m16 76r45 77m16 77r39 103m10 -. 103r36 104m10 104r30 110r21 111r13 112r25 113r13 115r32 116m13 117r16 118m13 -. 119r16 -28N4*Max_Sub_1MiB_Size 4|113r45 117r47 119r48 -29m4*Sub_1MiB_Region{9|67M9} 4|115m13 -32V13*Get_Physical_Address{9|67M9} 4|28b13 33l8 33t28 -36U14*Translate_Proto 4|35b14 122l8 122t23 -38N4*Limine_Common_Magic_1 223r8 227r8 231r8 235r8 239r8 243r8 247r8 251r8 -39N4*Limine_Common_Magic_2 223r31 227r31 231r31 235r31 239r31 243r31 247r31 -. 251r31 -41A9*Request_ID(5|84M9) 43r18 222r30 226r25 230r30 234r33 238r34 -. 242r22 246r26 250r22 -42R9*Request 46e15 156r15 260r30 267r26 274r21 281r22 288r22 -43a7*ID{41A9} 261m8 268m8 275m8 282m8 289m8 -44m7*Revision{5|84M9} 262m8 269m8 276m8 283m8 290m8 -45m7*Response{9|67M9} 263m8 270m8 277m8 284m8 291m8 4|30r50 37r54 43r58 52r49 -. 68r26 71r56 -48R9*Response 50e15 97r22 103r17 115r21 120r17 144r14 149r19 161r22 169r22 -. 205r22 211r19 217r18 -49m7*Revision{5|84M9} -52R9*Base_Revision 56e15 4|22r26 -53m7*ID_1{5|84M9} 4|23m8 -54m7*ID_2{5|84M9} 4|24m8 -55m7*Revision{5|84M9} 4|25m8 59r23 -58R9*Video_Mode 70e15 71r55 -59m7*Pitch{5|84M9} -60m7*Width{5|84M9} -61m7*Height{5|84M9} -62m7*BPP{5|73M9} -63m7*Memory_Model{5|70M9} -64m7*Red_Mask_Size{5|70M9} -65m7*Red_Mask_Shift{5|70M9} -66m7*Green_Mask_Size{5|70M9} -67m7*Green_Mask_Shift{5|70M9} -68m7*Blue_Mask_Size{5|70M9} -69m7*Blue_Mask_Shift{5|70M9} -71A9*Video_Mode_Arr(58R9) -73A9*Framebuffer_Padding(5|70M9) 87r26 -74R9*Framebuffer 92e15 93r39 94r60 -75m7*Address{9|67M9} -76m7*Width{5|84M9} -77m7*Height{5|84M9} -78m7*Pitch{5|84M9} -79m7*BPP{5|73M9} -80m7*Memory_Model{5|70M9} -81m7*Red_Mask_Size{5|70M9} -82m7*Red_Mask_Shift{5|70M9} -83m7*Green_Mask_Size{5|70M9} -84m7*Green_Mask_Shift{5|70M9} -85m7*Blue_Mask_Size{5|70M9} -86m7*Blue_Mask_Shift{5|70M9} -87a7*Unused{73A9} -88m7*EDID_Size{5|84M9} -89m7*EDID{9|67M9} -90m7*Mode_Count{5|84M9} -91m7*Modes{9|67M9} -93P9*Framebuffer_Acc(74R9) -94A9*Framebuffer_Arr(74R9)<5|84M9> -96R9*Framebuffer_Response 100e15 -97r7*Base{48R9} -98m7*Count{5|84M9} -99m7*Framebuffers{9|67M9} -102R9*Limine_File 108e15 110r39 -103r7*Base{48R9} -104m7*Address{9|67M9} 4|78r35 -105m7*Size{5|84M9} 4|79r50 -106m7*Path{9|67M9} -107m7*Cmdline{9|67M9} 4|38r70 -110P9*Limine_File_Acc(102R9) 111r60 116r21 -111A9*Limine_File_Arr(110P9)<5|84M9> 4|72r35 -114R9*Kernel_File_Response 117e15 4|36r18 -115r7*Base{48R9} -116p7*Kernel_File{110P9} 4|38r58 -119R9*Memmap_Response 123e15 4|51r18 -120r7*Base{48R9} -121m7*Count{5|84M9} 4|53r61 -122m7*Entries{9|67M9} 4|54r43 -125N4*LIMINE_MEMMAP_USABLE 4|87r18 -126N4*LIMINE_MEMMAP_RESERVED 4|89r18 -127N4*LIMINE_MEMMAP_ACPI_RECLAIMABLE 4|92r18 -128N4*LIMINE_MEMMAP_ACPI_NVS 4|94r18 -129N4*LIMINE_MEMMAP_BAD_MEMORY 4|90r18 -130N4*LIMINE_MEMMAP_BOOTLOADER_RECL 4|90r45 -131N4*LIMINE_MEMMAP_KERNEL_AND_MODS 4|96r18 -132N4*LIMINE_MEMMAP_FRAMEBUFFER 4|89r45 -134R9*Memmap_Entry 138e15 140r40 -135m7*Base{5|84M9} 4|105r58 -136m7*Length{5|84M9} 4|106r44 -137m7*EntryType{5|84M9} 4|86r19 -140P9*Memmap_Entry_Acc(134R9) 141r61 -141A9*Memmap_Entry_Arr(140P9)<5|84M9> 4|53r29 -143R9*RSDP_Response 146e15 -144r7*Base{48R9} -145m7*Addr{9|67M9} -148R9*Kernel_Address_Response 152e15 4|29r19 -149r7*Base{48R9} -150m7*Phys_Addr{9|67M9} 4|32r24 -151m7*Virt_Addr{9|67M9} -154N4*SMP_ENABLE_X2APIC -155R9*SMP_Request 158e14 -156r7*Base{42R9} -157m7*Flags{5|84M9} -160R9*SMP_Response 166e15 -161r7*Base{48R9} -162m7*Flags{5|81M9} -163m7*BSP_LAPIC_ID{5|81M9} -164m7*CPU_Count{5|84M9} -165m7*CPUs{9|67M9} -168R9*RISCV64_SMP_Response 174e15 -169r7*Base{48R9} -170m7*Flags{5|84M9} -171m7*BSP_Hart_ID{5|84M9} -172m7*CPU_Count{5|84M9} -173m7*CPUs{9|67M9} -176R9*SMP_CPU_Info 182e15 193r42 197r36 -177m7*Processor_ID{5|81M9} -178m7*LAPIC_ID{5|81M9} -179m7*Reserved{5|84M9} -180m7*Addr{9|67M9} -181m7*Extra_Arg{5|84M9} -184R9*RISCV64_SMP_CPU_Info 190e15 195r42 200r21 -185m7*Processor_ID{5|84M9} -186m7*Hart_ID{5|84M9} -187m7*Reserved{5|84M9} -188m7*Addr{9|67M9} -189m7*Extra_Arg{5|84M9} -192P9*Limine_SMP_Entrypoint 193^28 -193p28 Info(176R9) -194P9*Limine_RISCV64_SMP_Entrypoint 195^28 -195p28 Info(184R9) -197P9*CPU_Info_Acc(176R9) 198r57 -198A9*CPU_Info_Arr(197P9)<5|84M9> -199P9*RISCV64_CPU_Info_Acc(184R9) 202r42 -201A9*RISCV64_CPU_Info_Arr(199P9)<5|84M9> -204R9*Bootloader_Info_Response 208e15 4|42r19 -205r7*Base{48R9} -206m7*Name_Addr{9|67M9} 4|44r56 -207m7*Version_Addr{9|67M9} 4|47r56 -210R9*Modules_Response 214e15 4|70r24 -211r7*Base{48R9} -212m7*Mod_Count{5|84M9} 4|72r66 -213m7*Modules{9|67M9} 4|73r49 -216R9*DTB_Response 219e15 -217r7*Base{48R9} -218m7*DTB_Addr{9|67M9} -222a4*Framebuffer_ID{41A9} -226a4*Memmap_ID{41A9} 275r20 -230a4*Kernel_File_ID{41A9} 268r20 -234a4*Kernel_Address_ID{41A9} 282r20 -238a4*Bootloader_Info_ID{41A9} 261r20 -242a4*SMP_ID{41A9} -246a4*Modules_ID{41A9} 289r20 -250a4*DTB_ID{41A9} -260r4 Bootloader_Info_Request{42R9} 4|43r34 -267r4 Kernel_File_Request{42R9} 4|37r34 -274r4 Memmap_Request{42R9} 4|52r34 -281r4 Address_Request{42R9} 4|30r34 -288r4 Modules_Request{42R9} 4|68r10 71r40 -X 4 arch-limine.adb -22r4 Base_Request{3|52R9} 59r10 -29r7 PhysPonse{3|148R9} 32r14 -36r7 CmdPonse{3|114R9} 38r49 -38m7 Cmdline_Addr{9|67M9} 39r63 40r67 -39i7 Cmdline_Len{natural} 40r30 63r33 64r34 -40a7 Cmdline{string} 63r49 -42r7 InfoPonse{3|204R9} 44r46 47r46 -44m7 Name_Addr{9|67M9} 45r67 46r66 -45i7 Name_Len{natural} 46r32 -46a7 Boot_Name{string} 57r45 -47m7 Vers_Addr{9|67M9} 48r67 49r66 -48i7 Vers_Len{natural} 49r32 -49a7 Boot_Vers{string} 57r63 -51r7 MemPonse{3|119R9} 53r52 54r34 -53a7 Inner_MMap{3|141A9} 85r18 86r15 105r54 106r40 -55e7 Type_Entry{1|22E9} 88m16 91m16 93m16 95m16 97m16 100m16 107r25 -70r13 ModPonse{3|210R9} 72r57 73r40 -72a13 Inner_Mods{3|111A9} 75r24 78r31 79r46 -75p17 Ent=75:24{3|110P9} -85p11 Ent=85:18{3|140P9} -110i11 I{integer} 111r33 112r45 113r33 115r52 116r33 117r36 118r33 119r36 -X 5 interfac.ads -38K9*Interfaces 3|18w6 18r22 5|233e15 -70M9*Unsigned_8 3|63r26 64r26 65r26 66r26 67r26 68r26 69r26 73r50 80r26 81r26 -. 82r26 83r26 84r26 85r26 86r26 -73M9*Unsigned_16 3|62r26 79r26 -81M9*Unsigned_32 3|162r22 163r22 177r22 178r22 -84M9*Unsigned_64 3|41r41 44r18 49r18 53r18 54r18 55r18 59r26 60r26 61r26 -. 76r26 77r26 78r26 88r26 90r26 94r35 98r22 105r17 111r35 121r17 135r19 136r19 -. 137r19 141r36 157r15 164r22 170r22 171r22 172r22 179r22 181r22 185r22 186r22 -. 187r22 189r22 198r32 202r17 212r19 -X 6 lib.ads -19K9*Lib 4|18w6 19r6 39r42 45r46 48r46 57r7 60r10 99r16 6|35e8 -23V13*C_String_Length{natural} 4|39s46 45s50 48s50 -X 7 lib-messages.ads -21K13*Messages 4|19w10 57r11 60r14 99r20 7|103e17 -41U14*Put_Line 4|57s20 60s23 99s29 -X 9 system.ads -37K9*System 3|17w6 29r22 32r41 45r18 75r26 89r26 91r26 99r22 104r17 106r17 -. 107r17 122r17 145r14 150r19 151r19 165r22 173r22 180r22 188r22 206r22 207r22 -. 213r19 218r18 263r20 270r20 277r20 284r20 291r20 4|17w6 17r18 28r41 38r31 -. 44r28 47r28 68r38 9|155e11 -67M9*Address 3|29r29 32r48 45r25 75r33 89r33 91r33 99r29 104r24 106r24 107r24 -. 122r24 145r21 150r26 151r26 165r29 173r29 180r29 188r29 206r29 207r29 213r26 -. 218r25 4|28r48 38r38 44r35 47r35 -69m4*Null_Address{67M9} 3|263r27 270r27 277r27 284r27 291r27 4|68r45 -81V14*"="{boolean} 4|68r35 -X 10 s-stoele.ads -51I9*Storage_Offset -53I12*Storage_Count{51I9} 4|79r31 106r25 -67V14*"+"{9|67M9} 4|117r45 -82M9*Integer_Address 4|105r37 -84V13*To_Address{9|67M9} 4|105s25 -87V13*To_Integer{82M9} 4|112s13 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__limine__get_physical_address 0 -GG EK_PROOF_DEPENDENCIES ada___arch__limine__get_physical_address 0 -GG EK_GLOBALS ada___arch__limine__get_physical_address local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__limine arch proper_proof_in 0 proper_input 1 ada___arch__limine__address_request proper_output 0 refined_proof_in 0 refined_input 1 ada___arch__limine__address_request refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__limine__address_request LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__limine__translate_proto 0 -GG EK_PROOF_DEPENDENCIES ada___arch__limine__translate_proto 0 -GG EK_GLOBALS ada___arch__limine__translate_proto local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__limine arch proper_proof_in 0 proper_input 8 ada___arch__limine__base_request ada___arch__limine__global_info ada___arch__limine__sub_1mib_region ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__modules_request __HEAP proper_output 2 ada___arch__limine__global_info ada___arch__limine__sub_1mib_region refined_proof_in 0 refined_input 8 ada___arch__limine__base_request ada___arch__limine__global_info ada___arch__limine__sub_1mib_region ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__modules_request __HEAP refined_output 2 ada___arch__limine__global_info ada___arch__limine__sub_1mib_region calls_proof 0 calls 0 calls_conditional 4 ada___system__storage_elements__to_address ada___system__storage_elements__to_integer lib__c_string_length ada___lib__messages__put_line FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 7 ada___arch__limine__base_request ada___arch__limine__global_info ada___arch__limine__sub_1mib_region ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__modules_request LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__limine 0 -GG EK_PROOF_DEPENDENCIES ada___arch__limine 0 -GG EK_GLOBALS ada___arch__limine local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 6 ada___arch__limine__base_request ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__address_request ada___arch__limine__modules_request refined_initializes 6 ada___arch__limine__base_request ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__address_request ada___arch__limine__modules_request calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 8 ada___arch__limine__base_request ada___arch__limine__global_info ada___arch__limine__sub_1mib_region ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__address_request ada___arch__limine__modules_request TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__limine__get_physical_address FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__limine__translate_proto FALSE FALSE FALSE FALSE TRUE ada___arch__limine VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__limine TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_VOLATILES AR 0 AW 6 ada___arch__limine__base_request ada___arch__limine__bootloader_info_request ada___arch__limine__kernel_file_request ada___arch__limine__memmap_request ada___arch__limine__address_request ada___arch__limine__modules_request ER 0 EW 0 -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-limine.cswi b/obj/gnatprove/phase1/arch-limine.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-limine.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-local.adb.stderr b/obj/gnatprove/phase1/arch-local.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-local.adb.stdout b/obj/gnatprove/phase1/arch-local.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-local.ali b/obj/gnatprove/phase1/arch-local.ali deleted file mode 100644 index b29fc7c..0000000 --- a/obj/gnatprove/phase1/arch-local.ali +++ /dev/null @@ -1,557 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.local%b arch-local.adb cd96d2d5 OO PK -W arch%s arch.ads arch.ali - -U arch.local%s arch-local.ads 24ce8638 OO PK -W arch%s arch.ads arch.ali -W arch.context%s arch-context.adb arch-context.ali -W scheduler%s scheduler.adb scheduler.ali -W userland%s userland.ads userland.ali -W userland.process%s userland-process.adb userland-process.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-local.ads 20250222165738 e5953d14 arch.local%s -D arch-local.adb 20250222165738 2803efc1 arch.local%b -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 4|19r6 21r9 40r5 5|17r14 66r5 -X 2 arch-context.ads -20K14*Context 70e17 4|19w11 32r15 5|39r15 -24M15*Core_Context{9|84M9} 4|32r23 5|39r23 -X 4 arch-local.ads -21K14*Local 1|20k9 4|40l10 40e15 5|17b19 66l10 66t15 -23U14*Reschedule_In 23>29 5|18b14 21l8 21t21 -23i29 Microseconds{natural} 5|18b29 -24U14*Reschedule_ASAP 5|23b14 26l8 26t23 -27V13*Fetch_TCB{19|67M9} 5|28b13 31l8 31t17 -28U14*Load_TCB 28>24 5|33b14 36l8 36t16 -28m24 TCB{19|67M9} 5|33b24 -31U14*Set_Stacks 32>8 33>8 5|38b14 44l8 44t18 -32m8 Core{2|24M15} 5|39b8 -33m8 Kernel_Stack{19|67M9} 5|40b8 -36V13*Get_Current_Thread{18|27I9} 5|47b13 50l8 50t26 -37V13*Get_Current_Process{25|33I9} 5|52b13 55l8 55t27 -38U14*Set_Current_Thread 38>34 5|57b14 60l8 60t26 -38i34 Thread{18|27I9} 5|57b34 -39U14*Set_Current_Process 39>35 5|62b14 65l8 65t27 -39i35 Proc{25|33I9} 5|62b35 -X 9 interfac.ads -84M9*Unsigned_64 -X 18 scheduler.ads -25K9*Scheduler 4|17w6 17r21 36r39 38r43 5|47r39 49r14 57r43 18|183e14 -27I9*TID 4|36r49 38r53 5|47r49 57r53 -29i4*Error_TID{27I9} 5|49r24 -X 19 system.ads -37K9*System 4|27r30 28r30 33r23 5|28r30 30r14 33r30 40r23 19|155e11 -67M9*Address 4|27r37 28r37 33r30 5|28r37 33r37 40r30 -69m4*Null_Address{67M9} 5|30r21 -X 22 userland.ads -17K9*Userland 4|18r6 37r40 39r42 5|52r40 54r14 62r42 22|23e13 -X 25 userland-process.ads -28K18*Process 4|18w15 37r49 39r51 5|52r49 54r23 62r51 25|677e21 -33I9*PID 4|37r57 39r59 5|52r57 62r59 -34i4*Error_PID{33I9} 5|54r31 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__local__reschedule_in 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local__reschedule_in 0 -GG EK_GLOBALS ada___arch__local__reschedule_in local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__local__reschedule_asap 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local__reschedule_asap 0 -GG EK_GLOBALS ada___arch__local__reschedule_asap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__local__fetch_tcb 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local__fetch_tcb 0 -GG EK_GLOBALS ada___arch__local__fetch_tcb local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__local__load_tcb 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local__load_tcb 0 -GG EK_GLOBALS ada___arch__local__load_tcb local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__local__set_stacks 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local__set_stacks 0 -GG EK_GLOBALS ada___arch__local__set_stacks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__local__get_current_thread 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local__get_current_thread 0 -GG EK_GLOBALS ada___arch__local__get_current_thread local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__local__get_current_process 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local__get_current_process 0 -GG EK_GLOBALS ada___arch__local__get_current_process local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__local__set_current_thread 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local__set_current_thread 0 -GG EK_GLOBALS ada___arch__local__set_current_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__local__set_current_process 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local__set_current_process 0 -GG EK_GLOBALS ada___arch__local__set_current_process local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__local arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__local 0 -GG EK_PROOF_DEPENDENCIES ada___arch__local 0 -GG EK_GLOBALS ada___arch__local local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-local.cswi b/obj/gnatprove/phase1/arch-local.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-local.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-mmu.adb.stderr b/obj/gnatprove/phase1/arch-mmu.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-mmu.adb.stdout b/obj/gnatprove/phase1/arch-mmu.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-mmu.ali b/obj/gnatprove/phase1/arch-mmu.ali deleted file mode 100644 index c02476d..0000000 --- a/obj/gnatprove/phase1/arch-mmu.ali +++ /dev/null @@ -1,276 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.mmu%b arch-mmu.adb 13f79c7a OO PK -W arch%s arch.ads arch.ali - -U arch.mmu%s arch-mmu.ads 4f7708d3 OO PK -W arch%s arch.ads arch.ali -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W memory%s memory.ads memory.ali -W system%s system.ads system.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D arch-mmu.adb 20250222165738 093ed671 arch.mmu%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 2|22r9 63r28 250r5 3|17r14 18r28 136r5 -34A9*Boot_Memory_Map(29R9) 2|63r33 3|18r33 -X 2 arch-mmu.ads -22K14*MMU 1|20k9 2|250l10 250e13 3|17b19 136l10 136t13 -26R9*Page_Permissions 32e14 122r25 144r25 163r24 3|69r25 86r25 103r24 -27b7*Is_User_Accesible{boolean} -28b7*Can_Read{boolean} -29b7*Can_Write{boolean} 129r27 151r27 169r27 -30b7*Can_Execute{boolean} 129r53 151r53 169r53 -31b7*Is_Global{boolean} -35E9*Caching_Model 39e20 123r25 146r25 164r24 3|70r25 88r25 104r24 -36n8*Write_Back{35E9} 123r42 146r42 164r41 3|70r42 88r42 104r41 -37n8*Write_Through{35E9} -38n8*Write_Combining{35E9} -39n8*Uncacheable{35E9} -42R9*Page_Table 43r34 205c12 208e17 -43P9*Page_Table_Acc(42R9) 58r19 70r31 70r54 75r42 81r32 97r29 118r25 140r25 -. 160r24 176r24 187r41 3|24r31 24r54 30r42 35r32 42r29 65r25 82r25 100r24 -. 115r24 126r41 -49N7*Page_Size 108r23 109r23 126r30 127r30 128r30 149r30 150r30 152r38 167r30 -. 168r30 181r30 182r30 -58p4*Kernel_Table{43P9} 64r41 -63V13*Init{boolean} 63>19 64r25 3|18b13 22l8 22t12 -63a19 Memmap{1|34A9} 3|18b19 19r28 -70V13*Fork_Table{43P9} 70>25 3|24b13 28l8 28t18 -70p25 Map{43P9} 71r19 3|24b25 25r28 -75U14*Destroy_Table 75=29 3|30b14 33l8 33t21 -75p29 Map{43P9} 76r19 76r40 3|30b29 32m7 -81V13*Make_Active{boolean} 81>26 3|35b13 39l8 39t19 -81p26 Map{43P9} 82r19 3|35b26 36r28 -96U14*Translate_Address 97>8 98>8 99>8 100<8 101<8 102<8 103<8 104<8 105<8 -. 3|41b14 62l8 62t25 -97p8 Map{43P9} 107r11 3|42b8 52r28 -98m8 Virtual{8|67M9} 108r11 3|43b8 53r28 -99i8 Length{9|53I12} 109r11 3|44b8 54r28 -100m8 Physical{8|67M9} 3|45b8 56m7 -101b8 Is_Mapped{boolean} 3|46b8 57m7 -102b8 Is_User_Accessible{boolean} 3|47b8 58m7 -103b8 Is_Readable{boolean} 3|48b8 59m7 -104b8 Is_Writeable{boolean} 3|49b8 60m7 -105b8 Is_Executable{boolean} 3|50b8 61m7 -117V13*Map_Range{boolean} 118>8 119>8 120>8 121>8 122>8 123>8 3|64b13 79l8 -. 79t17 -118p8 Map{43P9} 125r11 3|65b8 72r28 -119m8 Physical_Start{8|67M9} 126r11 3|66b8 73r28 -120m8 Virtual_Start{8|67M9} 127r11 3|67b8 74r28 -121i8 Length{9|53I12} 128r11 3|68b8 75r28 -122r8 Permissions{26R9} 129r15 129r41 3|69b8 76r28 -123e8 Caching{35E9} 3|70b8 -139U14*Map_Allocated_Range 140>8 141<8 142>8 143>8 144>8 145<8 146>8 3|81b14 -. 97l8 97t27 -140p8 Map{43P9} 148r11 3|82b8 90r28 -141m8 Physical_Start{8|67M9} 152r19 3|83b8 95m7 -142m8 Virtual_Start{8|67M9} 149r11 3|84b8 91r28 -143i8 Length{9|53I12} 150r11 3|85b8 92r28 -144r8 Permissions{26R9} 151r15 151r41 3|86b8 93r28 -145b8 Success{boolean} 3|87b8 96m7 -146e8 Caching{35E9} 3|88b8 -159V13*Remap_Range{boolean} 160>8 161>8 162>8 163>8 164>8 3|99b13 112l8 112t19 -160p8 Map{43P9} 166r11 3|100b8 106r28 -161m8 Virtual_Start{8|67M9} 167r11 3|101b8 107r28 -162i8 Length{9|53I12} 168r11 3|102b8 108r28 -163r8 Permissions{26R9} 169r15 169r41 3|103b8 109r28 -164e8 Caching{35E9} 3|104b8 -175V13*Unmap_Range{boolean} 176>8 177>8 178>8 3|114b13 124l8 124t19 -176p8 Map{43P9} 180r11 3|115b8 119r28 -177m8 Virtual_Start{8|67M9} 181r11 3|116b8 120r28 -178i8 Length{9|53I12} 182r11 3|117b8 121r28 -187V13*Get_User_Mapped_Size{4|84M9} 187>35 3|126b13 130l8 130t28 -187p35 Map{43P9} 188r19 3|126b35 127r28 -191R9*Virtual_Statistics 195e14 198r42 3|132r42 -192m7*Kernel_Usage{7|20M9} -193m7*Table_Usage{7|20M9} -194m7*Poison_Usage{7|20M9} -198U14*Get_Statistics 198<30 3|132b14 135l8 135t22 -198r30 Stats{191R9} 3|132b30 134m7 -203A12 Page_Level(4|84M9) 204r37 206r18 207r18 -204P12 Page_Level_Acc(203A12) -206a10*TTBR0{203A12} -207a10*TTBR1{203A12} -X 4 interfac.ads -38K9*Interfaces 2|17w6 17r22 4|233e15 -84M9*Unsigned_64 2|187r64 203r46 3|126r64 -X 5 lib.ads -19K9*Lib 2|20r6 5|35e8 -X 6 lib-synchronization.ads -20K13*Synchronization 2|20w10 6|66e24 -X 7 memory.ads -19K9*Memory 2|19w6 19r22 192r22 193r22 194r22 7|36e11 -20M9*Size 2|192r29 193r29 194r29 -X 8 system.ads -37K9*System 2|18w6 18r22 98r29 100r33 119r25 120r25 141r29 142r25 161r24 -. 177r24 3|43r29 45r33 56r20 66r25 67r25 83r29 84r25 95r25 101r24 116r24 -. 8|155e11 -67M9*Address 2|98r36 100r40 119r32 120r32 141r36 142r32 161r31 177r31 3|43r36 -. 45r40 66r32 67r32 83r36 84r32 101r31 116r31 -69m4*Null_Address{67M9} 3|56r27 95r32 -X 9 s-stoele.ads -51I9*Storage_Offset -53I12*Storage_Count{51I9} 2|99r29 121r25 143r25 162r24 178r24 3|44r29 68r25 -. 85r25 102r24 117r24 -75V14*"mod"{51I9} 2|108r19 126r26 127r26 149r26 152r34 167r26 181r26 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__mmu__init 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__init 0 -GG EK_GLOBALS ada___arch__mmu__init local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 1 ada___arch__mmu__kernel_table proper_input 0 proper_output 0 refined_proof_in 1 ada___arch__mmu__kernel_table refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__mmu__kernel_table LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__fork_table 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__fork_table 0 -GG EK_GLOBALS ada___arch__mmu__fork_table local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__destroy_table 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__destroy_table 0 -GG EK_GLOBALS ada___arch__mmu__destroy_table local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__make_active 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__make_active 0 -GG EK_GLOBALS ada___arch__mmu__make_active local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__translate_address 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__translate_address 0 -GG EK_GLOBALS ada___arch__mmu__translate_address local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__map_range 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__map_range 0 -GG EK_GLOBALS ada___arch__mmu__map_range local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__map_allocated_range 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__map_allocated_range 0 -GG EK_GLOBALS ada___arch__mmu__map_allocated_range local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__remap_range 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__remap_range 0 -GG EK_GLOBALS ada___arch__mmu__remap_range local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__unmap_range 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__unmap_range 0 -GG EK_GLOBALS ada___arch__mmu__unmap_range local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__get_user_mapped_size 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__get_user_mapped_size 0 -GG EK_GLOBALS ada___arch__mmu__get_user_mapped_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu__get_statistics 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu__get_statistics 0 -GG EK_GLOBALS ada___arch__mmu__get_statistics local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__mmu arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__mmu 0 -GG EK_PROOF_DEPENDENCIES ada___arch__mmu 0 -GG EK_GLOBALS ada___arch__mmu local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___arch__mmu__kernel_table refined_initializes 1 ada___arch__mmu__kernel_table calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 ada___arch__mmu__kernel_table TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-mmu.cswi b/obj/gnatprove/phase1/arch-mmu.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-mmu.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-power.adb.stderr b/obj/gnatprove/phase1/arch-power.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-power.adb.stdout b/obj/gnatprove/phase1/arch-power.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-power.ali b/obj/gnatprove/phase1/arch-power.ali deleted file mode 100644 index 3c197d6..0000000 --- a/obj/gnatprove/phase1/arch-power.ali +++ /dev/null @@ -1,101 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.power%b arch-power.adb d9f41aa6 OO PK -W arch%s arch.ads arch.ali - -U arch.power%s arch-power.ads 7aae2981 OO PK -W arch%s arch.ads arch.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-power.ads 20250222165738 0576051f arch.power%s -D arch-power.adb 20250222165738 dc821fb9 arch.power%b -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 2|17r9 29r5 3|17r14 32r5 -X 2 arch-power.ads -17K14*Power 1|20k9 2|29l10 29e15 3|17b19 32l10 32t15 -19E9*Power_Status 19e49 22r25 25r27 28r29 3|18r25 23r27 28r29 -19n26*Not_Supported{19E9} -19n41*Failure{19E9} 3|20r14 25r14 30r14 -22V13*Halt{19E9} 3|18b13 21l8 21t12 -25V13*Reboot{19E9} 3|23b13 26l8 26t14 -28V13*Poweroff{19E9} 3|28b13 31l8 31t16 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__power__halt 0 -GG EK_PROOF_DEPENDENCIES ada___arch__power__halt 0 -GG EK_GLOBALS ada___arch__power__halt local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__power arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__power__reboot 0 -GG EK_PROOF_DEPENDENCIES ada___arch__power__reboot 0 -GG EK_GLOBALS ada___arch__power__reboot local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__power arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__power__poweroff 0 -GG EK_PROOF_DEPENDENCIES ada___arch__power__poweroff 0 -GG EK_GLOBALS ada___arch__power__poweroff local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__power arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__power 0 -GG EK_PROOF_DEPENDENCIES ada___arch__power 0 -GG EK_GLOBALS ada___arch__power local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__power TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__power__halt FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__power__reboot FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__power__poweroff FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-power.cswi b/obj/gnatprove/phase1/arch-power.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-power.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch-snippets.adb.stderr b/obj/gnatprove/phase1/arch-snippets.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-snippets.adb.stdout b/obj/gnatprove/phase1/arch-snippets.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch-snippets.ali b/obj/gnatprove/phase1/arch-snippets.ali deleted file mode 100644 index e812ed8..0000000 --- a/obj/gnatprove/phase1/arch-snippets.ali +++ /dev/null @@ -1,175 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_ATTRIBUTES -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch.snippets%b arch-snippets.adb a0738c2c OO PK -W arch%s arch.ads arch.ali -W system%s system.ads system.ali -W system.machine_code%s s-maccod.ads s-maccod.ali - -U arch.snippets%s arch-snippets.ads eb8c33bc OO PK -W arch%s arch.ads arch.ali -W interfaces%s interfac.ads interfac.ali -W memory%s memory.ads memory.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-snippets.ads 20250222165738 3613a65c arch.snippets%s -D arch-snippets.adb 20250222165738 5baa226e arch.snippets%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-maccod.ads 20240507065137 cdca081e system.machine_code%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 2|20r9 81r5 3|19r14 65r5 -X 2 arch-snippets.ads -20K14*Snippets 1|20k9 2|81l10 81e18 3|19b19 65l10 65t18 -26U14*HCF 3|20b14 26l8 26t11 -29U14*Enable_Interrupts 3|28b14 31l8 31t25 -30U14*Disable_Interrupts 3|23s10 33b14 36l8 36t26 -33U14*Wait_For_Interrupt 3|24s10 38b14 41l8 41t26 -37U14*Pause 3|43b14 46l8 46t13 -46V16*Read_SStatus{4|84M9} 3|30s22 35s22 48b13 56l8 56t20 -47U17*Write_SStatus 47>32 3|30s7 35s7 58b14 64l8 64t21 -47m32 Value{4|84M9} 3|58b29 61r52 -X 3 arch-snippets.adb -49m7 Value{4|84M9} 52m54 52r54 55r14 -X 4 interfac.ads -38K9*Interfaces 2|17w6 17r22 4|233e15 -84M9*Unsigned_64 2|46r36 47r40 3|48r33 49r15 52r24 58r37 61r24 -X 5 memory.ads -19K9*Memory 2|18w6 18r22 5|36e11 -X 6 system.ads -37K9*System 3|17r6 17r31 6|155e11 -X 7 s-maccod.ads -36K16*Machine_Code 3|17w13 17r38 7|133e24 -85U14*Asm 3|40s7 51s7 60s7 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___arch__snippets__hcf 2 ada___arch__snippets__disable_interrupts ada___arch__snippets__wait_for_interrupt -GG EK_PROOF_DEPENDENCIES ada___arch__snippets__hcf 0 -GG EK_GLOBALS ada___arch__snippets__hcf local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__snippets__enable_interrupts 2 ada___arch__snippets__read_sstatus ada___arch__snippets__write_sstatus -GG EK_PROOF_DEPENDENCIES ada___arch__snippets__enable_interrupts 0 -GG EK_GLOBALS ada___arch__snippets__enable_interrupts local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__snippets__disable_interrupts 2 ada___arch__snippets__read_sstatus ada___arch__snippets__write_sstatus -GG EK_PROOF_DEPENDENCIES ada___arch__snippets__disable_interrupts 0 -GG EK_GLOBALS ada___arch__snippets__disable_interrupts local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__snippets__wait_for_interrupt 0 -GG EK_PROOF_DEPENDENCIES ada___arch__snippets__wait_for_interrupt 0 -GG EK_GLOBALS ada___arch__snippets__wait_for_interrupt local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__snippets__pause 0 -GG EK_PROOF_DEPENDENCIES ada___arch__snippets__pause 0 -GG EK_GLOBALS ada___arch__snippets__pause local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__snippets__read_sstatus 0 -GG EK_PROOF_DEPENDENCIES ada___arch__snippets__read_sstatus 0 -GG EK_GLOBALS ada___arch__snippets__read_sstatus local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__snippets__write_sstatus 0 -GG EK_PROOF_DEPENDENCIES ada___arch__snippets__write_sstatus 0 -GG EK_GLOBALS ada___arch__snippets__write_sstatus local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___arch__snippets arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__machine_code__asm__4 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___arch__snippets 0 -GG EK_PROOF_DEPENDENCIES ada___arch__snippets 0 -GG EK_GLOBALS ada___arch__snippets local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 arch proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__disable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__machine_code__asm__7 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__pause FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__machine_code__asm__3 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__read_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__machine_code__asm__8 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__write_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__machine_code TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__machine_code__asm__4 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__machine_code__asm__5 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__machine_code__asm FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__machine_code__asm__6 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__hcf FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__enable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__machine_code__asm__2 FALSE FALSE FALSE FALSE TRUE ada___system__machine_code VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch-snippets.cswi b/obj/gnatprove/phase1/arch-snippets.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch-snippets.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/arch.ads.stderr b/obj/gnatprove/phase1/arch.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch.ads.stdout b/obj/gnatprove/phase1/arch.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/arch.ali b/obj/gnatprove/phase1/arch.ali deleted file mode 100644 index 76d17eb..0000000 --- a/obj/gnatprove/phase1/arch.ali +++ /dev/null @@ -1,105 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U arch%s arch.ads a72e9379 OO PK -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52l5 52e9 -22E9*Boot_Memory_Type 27e24 32r17 -23n8*Memory_Free{22E9} -24n8*Memory_Reserved{22E9} -25n8*Memory_Kernel{22E9} -26n8*Memory_ACPI_Reclaimable{22E9} -27n8*Memory_ACPI_NVS{22E9} -29R9*Boot_Memory_Region 33e14 34r56 -30m7*Start{2|67M9} -31i7*Length{3|53I12} -32e7*MemType{22E9} -34A9*Boot_Memory_Map(29R9) 47r23 -37R9*Boot_RAM_File 40e14 41r55 -38m7*Start{2|67M9} -39i7*Length{3|53I12} -41A9*Boot_RAM_Files(37R9) 49r23 -44R9*Boot_Information 51e14 -45a7*Cmdline{string} -46i7*Cmdline_Len{integer} -47a7*Memmap{34A9} -48i7*Memmap_Len{integer} -49a7*RAM_Files{41A9} -50i7*RAM_Files_Len{integer} -X 2 system.ads -37K9*System 1|17w6 18r6 18r35 30r17 38r16 2|155e11 -67M9*Address 1|30r24 38r23 -X 3 s-stoele.ads -40K16*Storage_Elements 1|18w13 18r42 3|90e28 -51I9*Storage_Offset -53I12*Storage_Count{51I9} 1|31r17 39r16 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS arch 0 -GG EK_PROOF_DEPENDENCIES arch 0 -GG EK_GLOBALS arch local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/arch.cswi b/obj/gnatprove/phase1/arch.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/arch.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/config.ads.stderr b/obj/gnatprove/phase1/config.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/config.ads.stdout b/obj/gnatprove/phase1/config.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/config.ali b/obj/gnatprove/phase1/config.ali deleted file mode 100644 index 531b91a..0000000 --- a/obj/gnatprove/phase1/config.ali +++ /dev/null @@ -1,64 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U config%s config.ads 98924657 OO PK - -D config.ads 20250222165738 98924657 config%s -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 config.ads -17K9*Config 29l5 29e11 -22a4*Name{string} -23a4*Version{string} -24a4*Arch_Name{string} -25a4*Bug_Site{string} -28b4*Support_Alloc_Only{boolean} - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS config 0 -GG EK_PROOF_DEPENDENCIES config 0 -GG EK_GLOBALS config local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE config TRUE FALSE FALSE FALSE FALSE __standard -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/config.cswi b/obj/gnatprove/phase1/config.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/config.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/cryptography-chacha20.adb.stderr b/obj/gnatprove/phase1/cryptography-chacha20.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/cryptography-chacha20.adb.stdout b/obj/gnatprove/phase1/cryptography-chacha20.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/cryptography-chacha20.ali b/obj/gnatprove/phase1/cryptography-chacha20.ali deleted file mode 100644 index 0f49b79..0000000 --- a/obj/gnatprove/phase1/cryptography-chacha20.ali +++ /dev/null @@ -1,146 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U cryptography.chacha20%b cryptography-chacha20.adb a311b42f OO PK -W cryptography%s cryptography.ads cryptography.ali - -U cryptography.chacha20%s cryptography-chacha20.ads b97386be OO PK -W cryptography%s cryptography.ads cryptography.ali -W interfaces%s interfac.ads interfac.ali - -D cryptography.ads 20250222165738 8132c7fc cryptography%s -D cryptography-chacha20.ads 20250222165738 a950b883 cryptography.chacha20%s -D cryptography-chacha20.adb 20250222165738 0a410cac cryptography.chacha20%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 cryptography.ads -17K9*Cryptography 18e17 2|19r9 40r5 3|17r14 65r5 -X 2 cryptography-chacha20.ads -19K22*Chacha20 1|17k9 2|40l18 40e26 3|17b27 65l18 65t26 -28A9*Block(4|81M9) 35r69 3|21r69 27r32 34r11 -29R9*Key 32e15 35r26 3|21r26 -30m7*Value1{4|81M9} 3|30r20 -30m15*Value2{4|81M9} 3|30r38 -30m23*Value3{4|81M9} 3|30r56 -30m31*Value4{4|81M9} 3|30r73 -31m7*Value5{4|81M9} 3|31r20 -31m15*Value6{4|81M9} 3|31r38 -31m23*Value7{4|81M9} 3|31r56 -31m31*Value8{4|81M9} 3|31r73 -35V13*Gen_Key{28A9} 35>22 35>31 35>38 3|21b13 56l8 56t15 -35r22 K{29R9} 3|21b22 30r18 30r36 30r54 30r71 31r18 31r36 31r54 31r71 -35m31 Nonce{4|84M9} 3|21b31 24r49 25r49 -35m38 Block_ID{4|84M9} 3|21b38 22r49 23r49 -39U14 Quarter_Round 39=29 39=32 39=35 39=38 3|39s10 40s10 41s10 42s10 45s10 -. 46s10 47s10 48s10 58b14 64l8 64t21 -39m29 A{4|81M9} 3|58b29 60m7 60r12 60r30 62m7 62r12 62r30 -39m32 B{4|81M9} 3|58b32 60r16 61m19 61r24 61m33 61r51 62r16 63m19 63r24 63m33 -. 63r51 -39m35 C{4|81M9} 3|58b35 61m7 61r12 61r30 63m7 63r12 63r30 -39m38 D{4|81M9} 3|58b38 60m19 60r24 60m33 60r51 61r16 62m19 62r24 62m33 62r51 -. 63r16 -X 3 cryptography-chacha20.adb -22m7 UB{4|84M9} 32r23 -23m7 LB{4|84M9} 32r41 -24m7 UN{4|84M9} 32r59 -25m7 LN{4|84M9} 32r77 -27a7 Initial_Block{2|28A9} 34r20 53r27 -34a7 B{2|28A9} 39m25 39r25 39m32 39r32 39m39 39r39 39m47 39r47 40m25 40r25 -. 40m32 40r32 40m39 40r39 40m47 40r47 41m25 41r25 41m32 41r32 41m39 41r39 -. 41m47 41r47 42m25 42r25 42m32 42r32 42m39 42r39 42m47 42r47 45m25 45r25 -. 45m32 45r32 45m39 45r39 45m47 45r47 46m25 46r25 46m32 46r32 46m39 46r39 -. 46m47 46r47 47m25 47r25 47m32 47r32 47m39 47r39 47m47 47r47 48m25 48r25 -. 48m32 48r32 48m39 48r39 48m47 48r47 52r16 53m10 53r19 55r14 -37i11 I{integer} -52i11 I{integer} 53r13 53r22 53r42 -X 4 interfac.ads -38K9*Interfaces 2|17w6 17r22 4|233e15 -81M9*Unsigned_32 2|28r37 30r40 31r40 39r49 3|32r10 32r28 32r46 32r64 58r49 -84M9*Unsigned_64 2|35r49 3|21r49 22r21 23r21 24r21 25r21 -156V13*Rotate_Left{81M9} 3|60s38 61s38 62s38 63s38 -171V13*Shift_Right{84M9} 3|22s36 23s36 24s36 25s36 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___cryptography__chacha20__gen_key 2 ada___cryptography__chacha20__quarter_round interfaces__shift_right__4 -GG EK_PROOF_DEPENDENCIES ada___cryptography__chacha20__gen_key 0 -GG EK_GLOBALS ada___cryptography__chacha20__gen_key local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___cryptography__chacha20 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__chacha20__quarter_round 1 interfaces__rotate_left__3 -GG EK_PROOF_DEPENDENCIES ada___cryptography__chacha20__quarter_round 0 -GG EK_GLOBALS ada___cryptography__chacha20__quarter_round local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__chacha20 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__chacha20 0 -GG EK_PROOF_DEPENDENCIES ada___cryptography__chacha20 0 -GG EK_GLOBALS ada___cryptography__chacha20 local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__chacha20__gen_key FALSE FALSE FALSE FALSE TRUE ada___cryptography__chacha20 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__chacha20 TRUE FALSE FALSE FALSE FALSE cryptography -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__chacha20__quarter_round FALSE FALSE FALSE FALSE TRUE ada___cryptography__chacha20 PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/cryptography-chacha20.cswi b/obj/gnatprove/phase1/cryptography-chacha20.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/cryptography-chacha20.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/cryptography-md5.adb.stderr b/obj/gnatprove/phase1/cryptography-md5.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/cryptography-md5.adb.stdout b/obj/gnatprove/phase1/cryptography-md5.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/cryptography-md5.ali b/obj/gnatprove/phase1/cryptography-md5.ali deleted file mode 100644 index a02e28b..0000000 --- a/obj/gnatprove/phase1/cryptography-md5.ali +++ /dev/null @@ -1,147 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U cryptography.md5%b cryptography-md5.adb 037874d4 OO PK -W cryptography%s cryptography.ads cryptography.ali - -U cryptography.md5%s cryptography-md5.ads d7f8ddfd OO PK -W cryptography%s cryptography.ads cryptography.ali -W interfaces%s interfac.ads interfac.ali - -D cryptography.ads 20250222165738 8132c7fc cryptography%s -D cryptography-md5.ads 20250222165738 c7dbe3c0 cryptography.md5%s -D cryptography-md5.adb 20250222165738 c4a39714 cryptography.md5%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 cryptography.ads -17K9*Cryptography 18e17 2|19r9 36r5 3|17r14 119r5 -X 2 cryptography-md5.ads -19K22*MD5 1|17k9 2|36l18 36e21 3|17b27 119l18 119t21 -21A9*MD5_Hash(4|81M9) 27r47 30r31 3|50r47 96r31 100r18 -22A9*MD5_Block(4|81M9)<4|81M9> 23r51 -23A9*MD5_Blocks(22A9) 27r28 3|50r28 -27V13*Digest{21A9} 27>21 3|50b13 94l8 94t14 -27a21 Data{23A9} 3|50b21 58r20 80r40 -29A12*MD5_String{string} 30r48 3|96r48 101r18 -30V13*To_String{29A12} 30>24 3|96b13 118l8 118t17 -30a24 Hash{21A9} 3|96b24 106r31 -34V13 BSwap32{4|81M9} 34>22 35b30 3|106s22 -34m22 V{4|81M9} -X 3 cryptography-md5.adb -26a4 S(natural) 84r50 -32a4 K(4|81M9) 64r19 80r32 -51m7 Total_A{4|81M9} 59r21 87m10 87r21 93r15 -52m7 Total_B{4|81M9} 60r21 88m10 88r21 93r24 -53m7 Total_C{4|81M9} 61r21 89m10 89r21 93r33 -54m7 Total_D{4|81M9} 62r21 90m10 90r21 93r42 -55m7 Round_A{4|81M9} 59m10 80r22 81m13 87r31 -55m16 Round_B{4|81M9} 60m10 66r22 66r52 69r34 72r21 75r34 83r24 84m13 84r24 -. 88r31 -55m25 Round_C{4|81M9} 61m10 66r34 69r65 72r33 75r21 82r24 83m13 89r31 -55m34 Round_D{4|81M9} 62m10 66r65 69r22 69r52 72r45 75r50 81r24 82m13 90r31 -56m7 F{4|81M9} 66m16 69m16 72m16 75m16 80m13 80r18 84r47 -56m10 G{4|81M9} 67m16 70m16 73m16 76m16 78r36 80r47 -58a11 Block=58:20{2|22A9} -64m14 I{4|81M9} 65r16 67r21 68r19 70r26 71r19 73r26 76r26 80r35 84r53 -97a7 Hex_Chars(character) 112r34 -100a7 Item{2|21A9} 105r16 106m10 109r27 110r18 -101a7 Result{2|29A12} 103r32 103r52 103r67 111r27 112m13 117r14 -102m7 Temp{4|81M9} 110m10 112r54 114m13 114r34 -103i7 Position{integer} 111r16 112r21 113m13 113r34 -105i11 I{integer} 106r16 106r37 -109i11 Part{integer} 110r24 111r46 -X 4 interfac.ads -38K9*Interfaces 2|17w6 17r22 4|233e15 -81M9*Unsigned_32 2|21r41 22r30 22r60 34r26 34r46 3|26r24 32r24 32r54 51r17 -. 52r17 53r17 54r17 55r44 56r14 102r18 -156V13*Rotate_Left{81M9} 3|84s34 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___cryptography__md5__digest 1 interfaces__rotate_left__3 -GG EK_PROOF_DEPENDENCIES ada___cryptography__md5__digest 0 -GG EK_GLOBALS ada___cryptography__md5__digest local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___cryptography__md5 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__md5__to_string 1 ada___cryptography__md5__bswap32 -GG EK_PROOF_DEPENDENCIES ada___cryptography__md5__to_string 0 -GG EK_GLOBALS ada___cryptography__md5__to_string local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___cryptography__md5 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__md5__bswap32 0 -GG EK_PROOF_DEPENDENCIES ada___cryptography__md5__bswap32 0 -GG EK_GLOBALS ada___cryptography__md5__bswap32 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___cryptography__md5 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__md5 0 -GG EK_PROOF_DEPENDENCIES ada___cryptography__md5 0 -GG EK_GLOBALS ada___cryptography__md5 local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__md5__bswap32 FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__md5 TRUE FALSE FALSE FALSE FALSE cryptography -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__md5__to_string FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/cryptography-md5.cswi b/obj/gnatprove/phase1/cryptography-md5.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/cryptography-md5.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/cryptography-random.adb.stderr b/obj/gnatprove/phase1/cryptography-random.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/cryptography-random.adb.stdout b/obj/gnatprove/phase1/cryptography-random.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/cryptography-random.ali b/obj/gnatprove/phase1/cryptography-random.ali deleted file mode 100644 index 4707578..0000000 --- a/obj/gnatprove/phase1/cryptography-random.ali +++ /dev/null @@ -1,324 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_UNCHECKED_CONVERSION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U cryptography.random%b cryptography-random.adb e0281b8a OO PK -W ada%s ada.ads ada.ali -W ada.unchecked_conversion%s a-unccon.ads a-unccon.ali -W arch%s arch.ads arch.ali -W arch.clocks%s arch-clocks.adb arch-clocks.ali -W cryptography%s cryptography.ads cryptography.ali -W cryptography.chacha20%s cryptography-chacha20.adb cryptography-chacha20.ali -W cryptography.md5%s cryptography-md5.adb cryptography-md5.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W memory%s memory.ads memory.ali -W memory.physical%s memory-physical.adb memory-physical.ali - -U cryptography.random%s cryptography-random.ads ef42219b OO PK -W cryptography%s cryptography.ads cryptography.ali -W interfaces%s interfac.ads interfac.ali -N A35:4 gnatprove false_positive "postcondition might fail" "Counterexample works, could be a gnatprove bug?" - -D ada.ads 20240507065137 76789da1 ada%s -D a-unccon.ads 20240507065137 0e9b276f ada.unchecked_conversion%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D cryptography.ads 20250222165738 8132c7fc cryptography%s -D cryptography-chacha20.ads 20250222165738 a950b883 cryptography.chacha20%s -D cryptography-md5.ads 20250222165738 c7dbe3c0 cryptography.md5%s -D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s -D cryptography-random.adb 20250222165738 d5415301 cryptography.random%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D i-c.ads 20240507065137 aac316ce interfaces.c%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s -D system.ads 20240507065137 14286b0f system%s -D s-parame.ads 20240507065137 3597fc11 system.parameters%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 9|17r6 42r31 -X 2 a-unccon.ads -20v14*Unchecked_Conversion 9|17w10 42r35 -X 3 arch.ads -20K9*Arch 52e9 9|19r6 57r7 119r7 120r7 -X 4 arch-clocks.ads -19K14*Clocks 45e16 9|19w11 57r12 119r12 120r12 -31U14*Get_Monotonic_Time 9|57s19 120s19 -39U14*Get_Real_Time 9|119s19 -X 5 cryptography.ads -17K9*Cryptography 18e17 8|19r9 40r5 9|21r6 22r6 25r14 143r5 -X 6 cryptography-chacha20.ads -19K22*Chacha20 40e26 9|21w19 42r63 46r21 62r28 -28A9*Block(10|81M9) 9|46r30 -29R9*Key 32e15 9|42r72 -35V13*Gen_Key{28A9} 9|62s37 -X 7 cryptography-md5.ads -19K22*MD5 36e21 9|22w19 34r26 38r25 56r25 116r25 116r41 -21A9*MD5_Hash(10|81M9) 9|38r29 116r29 -22A9*MD5_Block(10|81M9)<10|81M9> -23A9*MD5_Blocks(22A9) 9|34r30 -27V13*Digest{21A9} 9|56s29 116s45 -X 8 cryptography-random.ads -19K22*Random 5|17k9 8|40l18 40e24 9|25b27 143l18 143t24 -21A9*Crypto_Data(10|70M9) 22r36 9|36r36 94r14 -22U14*Fill_Data 22<25 9|36b14 84l8 84t17 96s7 -22a25 Data{21A9} 9|36b25 60r20 74m10 -25U14*Feed_Entropy 25>28 9|86b14 91l8 91t20 -25m28 Data{10|81M9} 9|86b28 89r70 -28U14*Get_Integer 28<27 9|93b14 105l8 105t19 109s7 -28m27 Result{10|84M9} 9|93b27 97m7 -32U14*Get_Integer 32>27 32>32 32<51 9|107b14 111l8 111t19 -32m27 Min{10|84M9} 33r27 34r20 9|107b27 110r40 110r48 -32m32 Max{10|84M9} 33r20 33r35 34r48 9|107b32 110r30 -32m51 Result{10|84M9} 34r27 34r38 9|107b51 109m20 110m7 110r18 -39U14 Entropy_Adjust 9|54s7 113b14 142l8 142t22 -X 9 cryptography-random.adb -33r4 Accumulator_Mutex{13|22R9} 52m14 52r14 83m16 83r16 88m14 88r14 90m16 -. 90r16 -34a4 Entropy_Accumulator{7|23A9} 56r37 89m7 89r38 116r53 125m7 -37R12 Seed 41e18 42r57 44r21 -38a10 Entropy_Hash{7|21A9} 56m9 -39m10 Mono_Sec{10|84M9} 57m41 -40m10 Mono_NSec{10|84M9} 57m53 58r18 -42V16 To_Seed[2|20]{6|29R9} -42V16 To_Seed[2|20]{6|29R9} 62s46 -44r7 S{37R12} 56m7 57m39 57r39 57m51 57r51 58r16 62r55 -45m7 Nonce{10|84M9} 58m7 62r59 -46a7 Cha_Block{6|28A9} 47r36 61r21 62m13 63r28 68r44 69r44 70r44 71r44 -47i7 Index{natural} 61r13 63m13 68r55 69r55 70r55 71r55 78m13 78r27 -48i7 Mini_Index{natural} 67r15 76m10 76r24 77r13 79m13 -49m7 Block_Index{10|84M9} 62r66 64m13 64r28 -50m7 Temp{10|81M9} 68m23 69m23 70m23 71m23 74r31 -60m11 Value=60:20{10|70M9} -94a7 Data{8|21A9} 96m18 97r42 98r42 99r42 100r42 101r42 102r42 103r42 104r42 -114m7 RSec{10|84M9} 119m34 130r43 131r30 -114m13 RNSec{10|84M9} 119m40 132r43 133r30 -114m20 MSec{10|84M9} 120m39 126r43 127r30 -114m26 MNSec{10|84M9} 120m45 140r30 -114m33 Avail{10|84M9} 122m7 128r43 129r30 -114m40 Free{10|84M9} 123m7 138r43 139r30 -115r7 S{15|47R9} 118m23 122r29 123r29 -116a7 Hashed{7|21A9} 134r17 135r17 136r17 137r17 -17R9 Source{37R12} 20r40[42] -18R9 Target{6|29R9} 20r55[42] -X 10 interfac.ads -38K9*Interfaces 8|17w6 17r22 10|233e15 -70M9*Unsigned_8 8|21r52 9|74r19 -81M9*Unsigned_32 8|25r35 9|50r21 86r35 126r17 127r17 128r17 129r17 130r17 -. 131r17 132r17 133r17 138r17 139r17 140r17 -84M9*Unsigned_64 8|28r40 32r38 32r64 33r42 9|39r25 40r25 45r21 49r21 93r40 -. 97r29 98r29 99r29 100r29 101r29 102r29 103r29 104r29 107r38 107r64 114r47 -. 122r16 123r16 -146V13*Shift_Right{81M9} 9|68s31 69s31 70s31 71s31 -166V13*Shift_Left{84M9} 9|97s17 98s17 99s17 100s17 101s17 102s17 103s17 104s17 -171V13*Shift_Right{84M9} 9|126s30 128s30 130s30 132s30 138s30 -X 12 lib.ads -19K9*Lib 9|23r6 23r31 12|35e8 -X 13 lib-synchronization.ads -20K13*Synchronization 9|23w10 23r35 13|66e24 -22R9*Binary_Semaphore 9|33r34 13|57e14 -23r4*Unlocked_Semaphore{22R9} 9|33r54 -27U14*Seize 9|52s7 88s7 -31U14*Release 9|83s7 90s7 -X 14 memory.ads -19K9*Memory 9|18r6 18r27 20w6 20r18 115r16 14|36e11 -20M9*Size -X 15 memory-physical.ads -20K16*Physical 9|18w13 18r34 115r23 15|60e20 -47R9*Statistics 9|115r32 15|51e14 -49m7*Available{14|20M9} 9|122r31 -50m7*Free{14|20M9} 9|123r31 -55U14*Get_Statistics 9|118s7 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___cryptography__random__fill_data__to_seed 0 -GG EK_PROOF_DEPENDENCIES ada___cryptography__random__fill_data__to_seed 0 -GG EK_GLOBALS ada___cryptography__random__fill_data__to_seed local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___cryptography__random__fill_data ada___cryptography__random cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__random__fill_data 7 ada___cryptography__random__entropy_adjust interfaces__shift_right__3 ada___arch__clocks__get_monotonic_time ada___cryptography__chacha20__gen_key ada___cryptography__md5__digest ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___cryptography__random__fill_data 1 ada___cryptography__random__fill_data__to_seed -GG EK_GLOBALS ada___cryptography__random__fill_data local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state proper_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state calls_proof 0 calls 3 ada___memory__physical__get_statistics ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___cryptography__chacha20__gen_key ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__random__feed_entropy 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___cryptography__random__feed_entropy 0 -GG EK_GLOBALS ada___cryptography__random__feed_entropy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator proper_output 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator refined_proof_in 0 refined_input 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator refined_output 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__random__get_integer 2 ada___cryptography__random__fill_data interfaces__shift_left__4 -GG EK_PROOF_DEPENDENCIES ada___cryptography__random__get_integer 0 -GG EK_GLOBALS ada___cryptography__random__get_integer local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state proper_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state calls_proof 0 calls 3 ada___memory__physical__get_statistics ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___cryptography__chacha20__gen_key ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__random__get_integer__2 1 ada___cryptography__random__get_integer -GG EK_PROOF_DEPENDENCIES ada___cryptography__random__get_integer__2 0 -GG EK_GLOBALS ada___cryptography__random__get_integer__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state proper_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_output 4 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state calls_proof 0 calls 3 ada___memory__physical__get_statistics ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___cryptography__chacha20__gen_key ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__random__entropy_adjust 5 interfaces__shift_right__4 ada___memory__physical__get_statistics ada___arch__clocks__get_monotonic_time ada___arch__clocks__get_real_time ada___cryptography__md5__digest -GG EK_PROOF_DEPENDENCIES ada___cryptography__random__entropy_adjust 0 -GG EK_GLOBALS ada___cryptography__random__entropy_adjust local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___cryptography__random cryptography proper_proof_in 0 proper_input 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state proper_output 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_proof_in 0 refined_input 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state refined_output 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state calls_proof 0 calls 1 ada___memory__physical__get_statistics calls_conditional 1 ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___cryptography__random__entropy_accumulator ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state LOCKS 0 -GG EK_DIRECT_CALLS ada___cryptography__random 0 -GG EK_PROOF_DEPENDENCIES ada___cryptography__random 0 -GG EK_GLOBALS ada___cryptography__random local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 cryptography proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator refined_initializes 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___cryptography__random__accumulator_mutex ada___cryptography__random__entropy_accumulator TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__fill_data__to_seedGP1736 TRUE FALSE FALSE FALSE TRUE ada___cryptography__random__fill_data BODY_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__chacha20__gen_key FALSE FALSE FALSE FALSE TRUE ada___cryptography__chacha20 VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__chacha20__quarter_round FALSE FALSE FALSE FALSE TRUE ada___cryptography__chacha20 PRIVATE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces -GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_conversion FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__md5 TRUE FALSE FALSE FALSE FALSE cryptography -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__md5__digest FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__md5__to_string FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__md5__bswap32 FALSE FALSE FALSE FALSE TRUE ada___cryptography__md5 PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__fill_data__to_seed FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___cryptography__random__fill_data__to_seedGP1736 VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__chacha20 TRUE FALSE FALSE FALSE FALSE cryptography -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART -GG EK_REMOTE_STATES 2 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/cryptography-random.cswi b/obj/gnatprove/phase1/cryptography-random.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/cryptography-random.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/cryptography.ads.stderr b/obj/gnatprove/phase1/cryptography.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/cryptography.ads.stdout b/obj/gnatprove/phase1/cryptography.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/cryptography.ali b/obj/gnatprove/phase1/cryptography.ali deleted file mode 100644 index ce9e907..0000000 --- a/obj/gnatprove/phase1/cryptography.ali +++ /dev/null @@ -1,59 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U cryptography%s cryptography.ads 8132c7fc OO PK - -D cryptography.ads 20250222165738 8132c7fc cryptography%s -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 cryptography.ads -17K9*Cryptography 18l5 18e17 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS cryptography 0 -GG EK_PROOF_DEPENDENCIES cryptography 0 -GG EK_GLOBALS cryptography local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/cryptography.cswi b/obj/gnatprove/phase1/cryptography.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/cryptography.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-console.adb.stderr b/obj/gnatprove/phase1/devices-console.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-console.adb.stdout b/obj/gnatprove/phase1/devices-console.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-console.ali b/obj/gnatprove/phase1/devices-console.ali deleted file mode 100644 index 228dc8b..0000000 --- a/obj/gnatprove/phase1/devices-console.ali +++ /dev/null @@ -1,235 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U devices.console%b devices-console.adb d3e70226 OO PK -W arch%s arch.ads arch.ali -W arch.debug%s arch-debug.adb arch-debug.ali -W devices%s devices.adb devices.ali - -U devices.console%s devices-console.ads c390c2b6 OO PK -W devices%s devices.adb devices.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-debug.ads 20250222165738 7987b5ed arch.debug%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-console.ads 20250222165738 37ce0dbf devices.console%s -D devices-console.adb 20250222165738 9daeba74 devices.console%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 6|17r6 51r10 52r10 73r7 -X 2 arch-debug.ads -19K14*Debug 49e15 6|17w11 51r15 52r15 73r12 -24b4*Supports_Read{boolean} 6|51r21 -28U14*Read 6|52s21 -40U14*Print 6|73s18 -X 4 devices.ads -22K9*Devices 279e12 5|17r9 39r5 6|19r14 77r5 -29A9*Operation_Data(7|70M9) 5|27r26 35r22 6|42r26 64r22 -34A9*UUID(7|70M9) -39R9*Resource 80e14 6|21r16 -40m7*Data{11|67M9} 6|24m11 -41a7*ID{34A9} 6|25m11 -42b7*Is_Block{boolean} 6|26m11 -43i7*Block_Size{natural} 6|27m11 -44m7*Block_Count{7|84M9} 6|28m11 -46p7*Read 6|29m11 -53p7*Write 6|30m11 -60p7*Sync(boolean) 6|31m11 -61p7*Sync_Range(boolean) 6|32m11 -65p7*IO_Control(boolean) 6|33m11 -69p7*Mmap(boolean) 6|34m11 -75p7*Poll 6|35m11 -98U14*Register 6|36s7 -145V13*Is_Initialized{boolean} 5|20s19 -X 5 devices-console.ads -17K17*Console 4|22k9 5|39l13 39e20 6|19b22 77l13 77t20 -19U14*Init 19<20 6|20b14 37l8 37t12 -19b20 Success{boolean} 6|20b20 36m36 -24U14 Read 25>8 26>8 27<8 28<8 29<8 30>8 6|29r26 39b14 59l8 59t12 -25m8 Key{11|67M9} 6|40b8 47r28 -26m8 Offset{7|84M9} 6|41b8 48r28 -27a8 Data{4|29A9} 6|42b8 52m27 53r23 -28i8 Ret_Count{natural} 6|43b8 53m10 56m10 -29b8 Success{boolean} 6|44b8 54m10 57m10 -30b8 Is_Blocking{boolean} 6|45b8 49r28 -32U14 Write 33>8 34>8 35>8 36<8 37<8 38>8 6|30r26 61b14 76l8 76t13 -33m8 Key{11|67M9} 6|62b8 69r28 -34m8 Offset{7|84M9} 6|63b8 70r28 -35a8 Data{4|29A9} 6|64b8 73r25 74r20 -36i8 Ret_Count{natural} 6|65b8 74m7 -37b8 Success{boolean} 6|66b8 75m7 -38b8 Is_Blocking{boolean} 6|67b8 71r28 -X 6 devices-console.adb -21r7 Device{4|39R9} 23m7 36r17 -X 7 interfac.ads -70M9*Unsigned_8 -84M9*Unsigned_64 5|26r22 34r22 6|41r22 63r22 -X 11 system.ads -37K9*System 5|25r22 33r22 6|24r26 40r22 62r22 11|155e11 -67M9*Address 5|25r29 33r29 6|40r29 62r29 -69m4*Null_Address{67M9} 6|24r33 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___devices__console__init 2 devices__register devices__is_initialized -GG EK_PROOF_DEPENDENCIES ada___devices__console__init 2 ada___devices__console__read ada___devices__console__write -GG EK_GLOBALS ada___devices__console__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__console devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 1 devices__is_initialized calls 1 devices__register calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__console__read 0 -GG EK_PROOF_DEPENDENCIES ada___devices__console__read 0 -GG EK_GLOBALS ada___devices__console__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__console devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__console__write 1 ada___arch__debug__print__3 -GG EK_PROOF_DEPENDENCIES ada___devices__console__write 0 -GG EK_GLOBALS ada___devices__console__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__console devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___arch__debug__print__3 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__console 0 -GG EK_PROOF_DEPENDENCIES ada___devices__console 0 -GG EK_GLOBALS ada___devices__console local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__console TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__console__init FALSE FALSE FALSE FALSE TRUE ada___devices__console VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__read FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___devices__console__read FALSE FALSE FALSE FALSE TRUE ada___devices__console PRIVATE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__print FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__print__2 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__print__3 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__console__write FALSE FALSE FALSE FALSE TRUE ada___devices__console PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-console.cswi b/obj/gnatprove/phase1/devices-console.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/devices-console.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-loopback.adb.stderr b/obj/gnatprove/phase1/devices-loopback.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-loopback.adb.stdout b/obj/gnatprove/phase1/devices-loopback.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-loopback.ali b/obj/gnatprove/phase1/devices-loopback.ali deleted file mode 100644 index e865b16..0000000 --- a/obj/gnatprove/phase1/devices-loopback.ali +++ /dev/null @@ -1,391 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U devices.loopback%b devices-loopback.adb e9e38411 OO PK -W devices%s devices.adb devices.ali -W devices.netinter%s devices-netinter.ads devices-netinter.ali -W networking%s networking.adb networking.ali -W networking.interfaces%s networking-interfaces.adb networking-interfaces.ali -W scheduler%s scheduler.adb scheduler.ali -Z system%s system.ads system.ali - -U devices.loopback%s devices-loopback.ads cd6acf4d OO PK -W devices%s devices.adb devices.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-loopback.ads 20250222165738 39340044 devices.loopback%s -D devices-loopback.adb 20250222165738 8c05de28 devices.loopback%b -D devices-netinter.ads 20250222165738 a12468cd devices.netinter%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D networking-arp.ads 20250222165738 eec21925 networking.arp%s -D networking-interfaces.ads 20250222165738 9c034257 networking.interfaces%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 5 devices.ads -22K9*Devices 279e12 6|17r9 52r5 7|19r6 21r14 133r5 -29A9*Operation_Data(9|70M9) 6|24r31 35r26 43r22 7|59r26 89r22 -34A9*UUID(9|70M9) -39R9*Resource 80e14 7|23r16 -40m7*Data{17|67M9} 7|30m11 -41a7*ID{34A9} 7|31m11 -42b7*Is_Block{boolean} 7|32m11 -43i7*Block_Size{natural} 7|33m11 -44m7*Block_Count{9|84M9} 7|34m11 -46p7*Read 7|35m11 -53p7*Write 7|36m11 -60p7*Sync(boolean) 7|37m11 -61p7*Sync_Range(boolean) 7|38m11 -65p7*IO_Control(boolean) 7|39m11 -69p7*Mmap(boolean) 7|40m11 -75p7*Poll 7|41m11 -83I9*Device_Handle 7|24r16 -98U14*Register 7|42s7 -105V13*Fetch{83I9} 7|44s17 -145V13*Is_Initialized{boolean} 6|20s19 -X 6 devices-loopback.ads -17K17*Loopback 5|22k9 6|52l13 52e21 7|21b22 133l13 133t21 -19U14*Init 19<20 7|22b14 54l8 54t12 -19b20 Success{boolean} 7|22b20 42m37 43r10 51m29 52m51 -24A12 Loopback_Buffer{5|29A9} 25r39 7|26r23 -25P9 Loopback_Buffer_Acc(24A12) 27r14 -26R9 Loopback_Data 29e14 30r37 7|25r50 66r13 96r13 -27p7*Data{25P9} 7|26m11 74r17 78r22 102r29 103r14 -28i7*Len{natural} 7|27m11 68r17 72r28 73r47 74r32 75r27 76m14 80m14 80r25 -. 98r17 104m14 -30P9 Loopback_Data_Acc(26R9) 7|25r25 -32U14 Read 33>8 34>8 35<8 36<8 37<8 38>8 7|35r26 56b14 84l8 84t12 -33m8 Key{17|67M9} 7|57b8 66r51 -34m8 Offset{9|84M9} 7|58b8 64r28 -35a8 Data{5|29A9} 7|59b8 72r10 73m10 73r16 73r30 78m10 78r33 79r23 80r31 -36i8 Ret_Count{natural} 7|60b8 75m10 79m10 -37b8 Success{boolean} 7|61b8 83m7 -38b8 Is_Blocking{boolean} 7|62b8 65r28 -40U14 Write 41>8 42>8 43>8 44<8 45<8 46>8 7|36r26 86b14 111l8 111t13 -41m8 Key{17|67M9} 7|87b8 96r51 -42m8 Offset{9|84M9} 7|88b8 94r28 -43a8 Data{5|29A9} 7|89b8 102r10 103r25 103r41 104r21 105r23 -44i8 Ret_Count{natural} 7|90b8 105m10 108m10 -45b8 Success{boolean} 7|91b8 106m10 109m10 -46b8 Is_Blocking{boolean} 7|92b8 95r28 -48V13 IO_Control{boolean} 49>8 50>8 51>8 7|39r26 113b13 132l8 132t18 -49m8 Data{17|67M9} 7|114b8 118r28 -50m8 Request{9|84M9} 7|115b8 120r12 -51m8 Argument{17|67M9} 7|116b8 123r70 -X 7 devices-loopback.adb -23r7 Device{5|39R9} 29m7 42r17 -24i7 Dev{5|83I9} 44m10 46r29 52r39 -25p7 Data{6|30P9} 30r26 -66r7 Dev{6|26R9} 68r13 72r24 73r43 74r13 74r28 75r23 76m10 78r18 80m10 80r21 -96r7 Dev{6|26R9} 98r13 102r25 103m10 103r10 104m10 -123a16 Addr{13|22A9} 125m16 -X 8 devices-netinter.ads -17K17*NetInter 7|19w14 121r15 8|20e21 -19N4*NET_GETMAC 7|121r24 -X 9 interfac.ads -70M9*Unsigned_8 -84M9*Unsigned_64 6|34r22 42r22 50r19 7|58r22 88r22 115r19 -X 13 networking.ads -20K9*Networking 7|17r6 45r10 52r10 123r23 13|55e15 -22A9*MAC_Address(9|70M9) 7|123r34 -X 15 networking-interfaces.ads -20K20*Interfaces 7|17w17 45r21 52r21 15|107e26 -33U14*Register_Interface 7|45s32 -56U14*Block 7|52s32 -X 16 scheduler.ads -25K9*Scheduler 7|18w6 69r10 99r10 16|183e14 -74U14*Yield_If_Able 7|69s20 99s20 -X 17 system.ads -37K9*System 6|33r22 41r22 49r19 51r19 7|57r22 87r22 114r19 116r19 17|155e11 -67M9*Address 6|33r29 41r29 49r26 51r26 7|57r29 87r29 114r26 116r26 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___devices__loopback__init 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES ada___devices__loopback__init 1 devices__is_initialized -GG EK_GLOBALS ada___devices__loopback__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__loopback devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 5 devices__register devices__fetch devices__is_initialized ada___networking__interfaces__register_interface ada___networking__interfaces__block FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__loopback__read 1 scheduler__yield_if_able -GG EK_PROOF_DEPENDENCIES ada___devices__loopback__read 0 -GG EK_GLOBALS ada___devices__loopback__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__loopback devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__loopback__write 1 scheduler__yield_if_able -GG EK_PROOF_DEPENDENCIES ada___devices__loopback__write 0 -GG EK_GLOBALS ada___devices__loopback__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__loopback devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__loopback__io_control 0 -GG EK_PROOF_DEPENDENCIES ada___devices__loopback__io_control 0 -GG EK_GLOBALS ada___devices__loopback__io_control local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__loopback devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__loopback 0 -GG EK_PROOF_DEPENDENCIES ada___devices__loopback 0 -GG EK_GLOBALS ada___devices__loopback local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__register_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__netinter TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__loopback TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___devices__loopback__init FALSE FALSE FALSE FALSE TRUE ada___devices__loopback VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__block FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__loopback__read FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__loopback__write FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__loopback__io_control FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-loopback.cswi b/obj/gnatprove/phase1/devices-loopback.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/devices-loopback.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-netinter.ads.stderr b/obj/gnatprove/phase1/devices-netinter.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-netinter.ads.stdout b/obj/gnatprove/phase1/devices-netinter.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-netinter.ali b/obj/gnatprove/phase1/devices-netinter.ali deleted file mode 100644 index 4554d44..0000000 --- a/obj/gnatprove/phase1/devices-netinter.ali +++ /dev/null @@ -1,161 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U devices.netinter%s devices-netinter.ads 557aa7c4 OO PK -W devices%s devices.adb devices.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-netinter.ads 20250222165738 a12468cd devices.netinter%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 3 devices.ads -22K9*Devices 279e12 4|17r9 20r5 -X 4 devices-netinter.ads -17K17*NetInter 3|22k9 4|20l13 20e21 -19N4*NET_GETMAC - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___devices__netinter 0 -GG EK_PROOF_DEPENDENCIES ada___devices__netinter 0 -GG EK_GLOBALS ada___devices__netinter local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__netinter TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-netinter.cswi b/obj/gnatprove/phase1/devices-netinter.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/devices-netinter.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-partitions.adb.stderr b/obj/gnatprove/phase1/devices-partitions.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-partitions.adb.stdout b/obj/gnatprove/phase1/devices-partitions.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-partitions.ali b/obj/gnatprove/phase1/devices-partitions.ali deleted file mode 100644 index f0c4b8b..0000000 --- a/obj/gnatprove/phase1/devices-partitions.ali +++ /dev/null @@ -1,438 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_DEALLOCATION -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_ATTRIBUTES -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U devices.partitions%b devices-partitions.adb b1f0e17e OO PK -W ada%s ada.ads ada.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W devices%s devices.adb devices.ali -W system%s system.ads system.ali -W system.address_to_access_conversions%s s-atacco.ads s-atacco.ali - -U devices.partitions%s devices-partitions.ads 1cd28138 OO PK -W devices%s devices.adb devices.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-partitions.ads 20250222165738 e88c4e31 devices.partitions%s -D devices-partitions.adb 20250222165738 c2bce090 devices.partitions%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-atacco.ads 20240507065137 5868e3ba system.address_to_access_conversions%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 7|18r6 107r26 -X 2 a-uncdea.ads -20u15*Unchecked_Deallocation 7|18w10 107r30 -X 5 devices.ads -22K9*Devices 279e12 6|17r9 79r5 7|20r14 108r8 108r32 121r14 139r40 140r16 -. 141r14 155r7 177r10 232r40 233r16 234r14 242r7 333r7 369r7 381r14 395r14 -. 400r5 -29A9*Operation_Data(8|70M9) 6|60r26 68r22 7|108r16 141r22 234r22 -. 308r26 344r22 -30P9*Operation_Data_Acc(29A9) 7|108r40 140r24 233r24 -34A9*UUID(8|70M9) 6|55r21 7|63r33 89r26 283r21 -40m7*Data{12|67M9} 7|288m10 -41a7*ID{34A9} 7|290m10 -42b7*Is_Block{boolean} 7|289m10 -43i7*Block_Size{natural} 7|291m10 -44m7*Block_Count{8|84M9} 7|292m10 -46p7*Read 7|295m10 -53p7*Write 7|296m10 -60p7*Sync(boolean) 7|293m10 -61p7*Sync_Range(boolean) 7|294m10 -65p7*IO_Control(boolean) 7|297m10 -69p7*Mmap(boolean) 7|298m10 -75p7*Poll 7|299m10 -83I9*Device_Handle 6|26r15 33r27 38r27 44r22 7|117r15 135r27 228r27 -98U14*Register 7|287s7 -150V13*Is_Block_Device{boolean} 7|121s22 -154V13*Get_Block_Size{natural} 7|139s48 232s48 -179V13*Synchronize{boolean} 7|381s22 395s22 -193U14*Read 7|155s15 177s18 242s15 333s15 -210U14*Write 7|369s15 -X 6 devices-partitions.ads -17K17*Partitions 5|22k9 6|79l13 79e23 7|20b22 400l13 400t23 -24V13*Parse_Partitions{boolean} 25>8 26>8 7|115b13 131l8 131t24 -25a8 Name{string} 7|116b8 125r29 129r29 -26i8 Dev{5|83I9} 7|117b8 121r39 125r35 129r35 -31U14 Parse_GPT_Partitions 32>8 33>8 34<8 35<8 7|125s7 133b14 224l8 224t28 -32a8 Name{string} 7|134b8 209r23 -33i8 Dev{5|83I9} 7|135b8 139r64 156r24 178r27 202r38 -34b8 Found_Partitions{boolean} 7|136b8 154m7 200m19 -35b8 Success{boolean} 7|137b8 153m7 160m24 161r14 162m10 168m10 182m27 183r17 -. 184m13 194m19 211m22 -36U14 Parse_MBR_Partitions 37>8 38>8 39<8 40<8 7|129s7 226b14 276l8 276t28 -37a8 Name{string} 7|227b8 267r30 -38i8 Dev{5|83I9} 7|228b8 232r64 243r24 263r33 -39b8 Found_Partitions{boolean} 7|229b8 241m7 261m13 -40b8 Success{boolean} 7|230b8 240m7 247m24 248r14 249m10 255m10 268m16 -43R9 Partition_Data 48e14 49r42 7|111r62 201r31 262r25 -44i7*Inner_Device{5|83I9} 7|202m22 263m17 334r29 370r29 382r26 396r26 -45i7*Block_Size{natural} 7|203m22 264m17 318r57 319r57 354r57 355r57 383r57 -. 384r57 397r58 -46m7*LBA_Offset{8|84M9} 7|204m22 265m17 318r26 354r26 383r26 397r27 -47m7*LBA_Length{8|84M9} 7|205m22 266m17 292r30 319r26 355r26 384r26 -49P9 Partition_Data_Acc(43R9) 54r21 7|144r16 237r17 282r21 314r14 317r21 -. 350r14 353r21 378r23 379r10 392r23 393r10 -50V13 Set_Part{boolean} 51>8 52>8 53>8 54>8 55>8 7|208s26 267s20 278b13 303l8 -. 303t16 -51a8 Name{string} 7|279b8 300r10 -52i8 Index{positive} 7|280b8 300r48 -53i8 Block_Size{natural} 7|281b8 291r25 -54p8 Part{49P9} 7|282b8 288r63 292r25 -55a8 ID{5|34A9} 7|283b8 290r25 -57U14 Read 58>8 59>8 60<8 61<8 62<8 63>8 7|295r25 305b14 339l8 339t12 -58m8 Key{12|67M9} 7|306b8 317r58 -59m8 Offset{8|84M9} 7|307b8 321r10 327r10 328r38 335r37 -60a8 Data{5|29A9} 7|308b8 327r19 330r25 337m20 337r20 337r26 337r40 -61i8 Ret_Count{natural} 7|309b8 322m10 336m24 -62b8 Success{boolean} 7|310b8 323m10 338m24 -63b8 Is_Blocking{boolean} 7|311b8 313r28 -65U14 Write 66>8 67>8 68>8 69<8 70<8 71>8 7|296r25 341b14 375l8 375t13 -66m8 Key{12|67M9} 7|342b8 353r58 -67m8 Offset{8|84M9} 7|343b8 357r10 363r10 364r38 371r37 -68a8 Data{5|29A9} 7|344b8 363r19 366r25 373r20 373r26 373r40 -69i8 Ret_Count{natural} 7|345b8 358m10 372m24 -70b8 Success{boolean} 7|346b8 359m10 374m24 -71b8 Is_Blocking{boolean} 7|347b8 349r28 -73V13 Sync{boolean} 73>19 7|293r25 377b13 385l8 385t12 -73m19 Key{12|67M9} 7|377b19 379r47 -75V13 Sync_Range{boolean} 76>8 77>8 78>8 7|294r25 387b13 399l8 399t18 -76m8 Key{12|67M9} 7|388b8 393r47 -77m8 Offset{8|84M9} 7|389b8 397r73 -78m8 Count{8|84M9} 7|390b8 398r21 -X 7 devices-partitions.adb -22A9 MBR_Byte_Data(8|70M9) 25r26 27r26 41r24 43r24 -23R9 MBR_Entry 30e15 31r8 39r42 -24m7*Status{8|70M9} 32r7 -25a7*CHS_First_Sector{22A9} 33r7 -26m7*Entry_Type{8|70M9} 34r7 -27a7*CHS_Last_Sector{22A9} 35r7 -28m7*First_Sector{8|81M9} 36r7 265r62 -29m7*Sector_Count{8|81M9} 37r7 260r29 266r62 -39A9 MBR_Entries(23R9) 42r24 -40R9 MBR_Data 44e15 45r8 50r36 112r62 -41a7*Boot_Code{22A9} 46r7 -42a7*Entries{39A9} 47r7 259r20 260r17 265r50 266r50 -43a7*Boot_Signature{22A9} 48r7 254r14 -50P9 MBR_Data_Acc(40R9) 236r17 252r14 -53R9 GPT_Header 68e15 69r8 85r38 113r62 -54a7*Signature{string} 70r7 167r14 -55m7*Revision{8|81M9} 71r7 -56m7*Header_Size{8|81M9} 72r7 -57m7*CRC32{8|81M9} 73r7 -58m7*Reserved_0{8|81M9} 74r7 -59m7*Current_LBA{8|84M9} 75r7 -60m7*Backup_LBA{8|84M9} 76r7 -61m7*First_Usable_LBA{8|84M9} 77r7 -62m7*Last_Usable_LBA{8|84M9} 78r7 -63a7*GUID{5|34A9} 79r7 -64m7*Partition_Entry_LBA{8|84M9} 80r7 -65m7*Number_Of_Partitions{8|81M9} 81r7 172r40 -66m7*Partition_Entry_Size{8|81M9} 82r7 174r53 -67m7*Partition_Entries_CRC32{8|81M9} 83r7 -85P9 GPT_Header_Acc(53R9) 143r16 165r14 -86R9 GPT_Partition_Entry 94e15 95r8 104r52 -87m7*Type_GUID_High{8|84M9} 96r7 197r29 -88m7*Type_GUID_Low{8|84M9} 97r7 198r29 -89a7*GUID{5|34A9} 98r7 209r70 -90m7*Starting_LBA{8|84M9} 99r7 204r48 206r48 -91m7*Ending_LBA{8|84M9} 100r7 205r48 -92m7*Attributes{8|84M9} 101r7 -93a7*Partition_Name{wide_string} 102r7 -104A9 GPT_Entries(86R9) 189r25 -107U14 Free[2|20] -107U14*Free[2|20] 223s7 275s7 -111K12 Con1[13|39] 288r25 288r42 317r41 353r41 379r30 393r30 -112K12 Con2[13|39] 252r28 -113K12 Con3[13|39] 165r30 -119b7 Success{boolean} 125m58 126r10 129m58 130r14 -119b16 Found_Partitions{boolean} 125m40 126r22 129m40 -139i7 Block_Size{natural} 141r43 157r37 161r41 173r27 174r27 183r44 203r38 -. 209r42 219r27 -140p7 Sector{5|30P9} 142r44 159r24 181r27 223m13 223r13 -142m7 S_Addr{12|67M9} 165r47 190r36 -143p7 GPT{85P9} 165m7 167r10 172r36 174r49 -144p7 Part{6|49P9} 201m19 209r54 -146i7 Parts_Per_Sector{natural} 174m7 189r43 -147i7 Part_Count{natural} 172m7 193r24 -148i7 Block{natural} 173m7 179r40 219m10 219r19 -149i7 I{natural} 193r19 216m16 216r21 -150i7 Added_Index{natural} 209r29 214m19 214r34 -151i7 Block_Return{natural} 158m24 161r25 180m27 183r28 -189a13 GPT_Parts{104A9} 192r30 197r19 198r19 204r38 205r38 206r38 209r60 -192r17 Partition=192:30{86R9} -222L6 Return_End 163r15 169r15 185r18 195r24 212r27 -232i7 Block_Size{natural} 234r43 248r41 264r33 267r39 -233p7 Sector{5|30P9} 235r44 246r24 275m13 275r13 -235m7 S_Addr{12|67M9} 252r45 -236p7 MBR{50P9} 252m7 254r10 259r16 260r13 265r46 266r46 -237p7 Part{6|49P9} 262m13 267r51 -238i7 Block_Return{natural} 245m24 248r25 -259i11 I{integer} 260r26 265r59 266r59 267r36 -274L6 Return_End 250r15 256r15 269r21 -285b7 Success{boolean} 301m10 302r14 -314p7 Part{6|49P9} 317m7 318r21 318r52 319r21 319r52 334r24 -315m7 LBA_Offset{8|84M9} 318m7 321r19 327r33 335r24 -315m19 LBA_Length{8|84M9} 319m7 321r32 327r46 328r25 -315m31 Final_Count{8|84M9} 328m10 330m10 337r62 -350p7 Part{6|49P9} 353m7 354r21 354r52 355r21 355r52 370r24 -351m7 LBA_Offset{8|84M9} 354m7 357r19 363r33 371r24 -351m19 LBA_Length{8|84M9} 355m7 357r32 363r46 364r25 -351m31 Final_Count{8|84M9} 364m10 366m10 373r62 -378p7 Part{6|49P9} 382r21 383r21 383r52 384r21 384r52 -392p7 Part{6|49P9} 396r21 397r22 397r53 -37R9 Object{6|43R9} 43r7[111] 47r38[111] 43r7[112] 47r38[112] 43r7[113] 47r38[113] -47P9*Object_Pointer(6|43R9) 288r47[111] 48r8[111] 50r31[111] 57r56[111] 59r33[111] -. 48r8[112] 50r31[112] 57r56[112] 59r33[112] 48r8[113] 50r31[113] 57r56[113] -. 59r33[113] -57V13*To_Pointer{13|47P9[113]} 165s35[113] 252s33[112] 317s46[111] 353s46[111] -. 379s35[111] 393s35[111] 62r30[111] 62r30[112] 62r30[113] -59V13*To_Address{12|67M9} 288s30[111] 63r30[111] 63r30[112] 63r30[113] -18P9*Name{5|30P9} 20r50[107] -20p39 X{5|30P9} 21r15[107] 22r23[107] 23r11[107] -X 8 interfac.ads -70M9*Unsigned_8 7|22r54 24r26 26r26 -81M9*Unsigned_32 7|28r26 29r26 55r33 56r33 57r33 58r33 65r33 66r33 67r33 -84M9*Unsigned_64 6|46r22 47r22 59r22 67r22 77r17 78r17 7|59r33 60r33 61r33 -. 62r33 64r33 87r26 88r26 90r26 91r26 92r26 157r24 179r27 265r33 266r33 307r22 -. 315r45 318r39 319r39 343r22 351r45 354r39 355r39 383r39 384r39 389r17 390r17 -. 397r40 -X 12 system.ads -37K9*System 6|58r22 66r22 73r25 76r17 7|17r6 111r24 112r24 113r24 142r25 -. 235r25 306r22 342r22 377r25 388r17 12|155e11 -67M9*Address 6|58r29 66r29 73r32 76r24 7|142r32 235r32 306r29 342r29 377r32 -. 388r24 -X 13 s-atacco.ads -39k16*Address_To_Access_Conversions 7|17w13 111r31 112r31 113r31 13|65e41 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___devices__partitions__parse_partitions 3 ada___devices__partitions__parse_gpt_partitions ada___devices__partitions__parse_mbr_partitions devices__is_block_device -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__parse_partitions 0 -GG EK_GLOBALS ada___devices__partitions__parse_partitions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__register devices__is_block_device devices__get_block_size devices__read TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__parse_gpt_partitions 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__parse_gpt_partitions 0 -GG EK_GLOBALS ada___devices__partitions__parse_gpt_partitions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__register devices__get_block_size devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__parse_mbr_partitions 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__parse_mbr_partitions 0 -GG EK_GLOBALS ada___devices__partitions__parse_mbr_partitions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__register devices__get_block_size devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__set_part 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__set_part 0 -GG EK_GLOBALS ada___devices__partitions__set_part local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__register TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__read 2 devices__read ada___devices__partitions__con1__to_pointer -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__read 0 -GG EK_GLOBALS ada___devices__partitions__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__write 2 devices__write ada___devices__partitions__con1__to_pointer -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__write 0 -GG EK_GLOBALS ada___devices__partitions__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__sync 2 devices__synchronize__2 ada___devices__partitions__con1__to_pointer -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__sync 0 -GG EK_GLOBALS ada___devices__partitions__sync local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__synchronize__2 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__sync_range 2 devices__synchronize__2 ada___devices__partitions__con1__to_pointer -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__sync_range 0 -GG EK_GLOBALS ada___devices__partitions__sync_range local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__synchronize__2 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__free 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__free 0 -GG EK_GLOBALS ada___devices__partitions__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__con1__to_pointer 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con1__to_pointer 0 -GG EK_GLOBALS ada___devices__partitions__con1__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con1 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__con1__to_address 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con1__to_address 0 -GG EK_GLOBALS ada___devices__partitions__con1__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con1 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__con1 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con1 0 -GG EK_GLOBALS ada___devices__partitions__con1 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__con2__to_pointer 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con2__to_pointer 0 -GG EK_GLOBALS ada___devices__partitions__con2__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__con2__to_address 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con2__to_address 0 -GG EK_GLOBALS ada___devices__partitions__con2__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__con2 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con2 0 -GG EK_GLOBALS ada___devices__partitions__con2 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__con3__to_pointer 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con3__to_pointer 0 -GG EK_GLOBALS ada___devices__partitions__con3__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con3 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__con3__to_address 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con3__to_address 0 -GG EK_GLOBALS ada___devices__partitions__con3__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___devices__partitions__con3 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions__con3 0 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions__con3 0 -GG EK_GLOBALS ada___devices__partitions__con3 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___devices__partitions devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__partitions 3 ada___devices__partitions__con1 ada___devices__partitions__con2 ada___devices__partitions__con3 -GG EK_PROOF_DEPENDENCIES ada___devices__partitions 0 -GG EK_GLOBALS ada___devices__partitions local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 3 ada___devices__partitions__con1 ada___devices__partitions__con2 ada___devices__partitions__con3 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___devices__partitions__freeGP4473 VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__parse_partitions FALSE FALSE FALSE FALSE TRUE ada___devices__partitions VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__parse_gpt_partitions FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__con2__to_pointer FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con2 VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___devices__partitions__freeGP4473 TRUE FALSE FALSE FALSE TRUE ada___devices__partitions BODY_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__con2__to_address FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con2 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__parse_mbr_partitions FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__con1 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___devices__partitions BODY_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__set_part FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__con3 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___devices__partitions BODY_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__read FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__con1__to_pointer FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con1 VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__address_to_access_conversions TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__con1__to_address FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con1 VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___devices__partitions__write FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___devices__partitions__con3__to_pointer FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con3 VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__sync FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__con3__to_address FALSE FALSE FALSE FALSE TRUE ada___devices__partitions__con3 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__sync_range FALSE FALSE FALSE FALSE TRUE ada___devices__partitions PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__partitions__con2 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___devices__partitions BODY_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-partitions.cswi b/obj/gnatprove/phase1/devices-partitions.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/devices-partitions.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-ramdev.adb.stderr b/obj/gnatprove/phase1/devices-ramdev.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-ramdev.adb.stdout b/obj/gnatprove/phase1/devices-ramdev.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-ramdev.ali b/obj/gnatprove/phase1/devices-ramdev.ali deleted file mode 100644 index 9f4a673..0000000 --- a/obj/gnatprove/phase1/devices-ramdev.ali +++ /dev/null @@ -1,300 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U devices.ramdev%b devices-ramdev.adb 9d49d4c9 OO PK -W devices%s devices.adb devices.ali -W lib%s lib.adb lib.ali -W lib.alignment%s lib-alignment.adb lib-alignment.ali -W system%s system.ads system.ali -Z system.storage_elements%s s-stoele.ads s-stoele.ali - -U devices.ramdev%s devices-ramdev.ads ef14bfc6 OO PK -W arch%s arch.ads arch.ali -W devices%s devices.adb devices.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-ramdev.ads 20250222165738 64925c51 devices.ramdev%s -D devices-ramdev.adb 20250222165738 851b4a80 devices.ramdev%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s -D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 4|17w6 21r29 25r35 5|28r29 44r35 -37R9*Boot_RAM_File 40e14 4|25r40 5|44r40 -38m7*Start{12|67M9} 5|47r35 -39i7*Length{13|53I12} 5|48r48 -41A9*Boot_RAM_Files(37R9) 4|21r34 5|28r34 -X 3 devices.ads -22K9*Devices 279e12 4|19r9 42r5 5|20r14 36r10 120r5 -29A9*Operation_Data(6|70M9) 4|30r26 38r22 5|68r26 76r27 96r22 104r18 -34A9*UUID(6|70M9) -39R9*Resource 80e14 4|25r62 5|30r18 44r62 -40m7*Data{12|67M9} 5|51m11 -41a7*ID{34A9} 5|53m11 -42b7*Is_Block{boolean} 5|52m11 -43i7*Block_Size{natural} 5|54m11 -44m7*Block_Count{6|84M9} 5|55m11 -46p7*Read 5|56m11 -53p7*Write 5|57m11 -60p7*Sync(boolean) 5|58m11 -61p7*Sync_Range(boolean) 5|59m11 -65p7*IO_Control(boolean) 5|60m11 -69p7*Mmap(boolean) 5|61m11 -75p7*Poll 5|62m11 -98U14*Register 5|36s18 -X 4 devices-ramdev.ads -19K17*Ramdev 3|22k9 4|42l13 42e19 5|20b22 120l13 120t19 -21V13*Init{boolean} 21>19 5|28b13 42l8 42t12 -21a19 Modules{1|41A9} 5|28b19 33r21 35r51 -25V13 Init_Module{3|39R9} 25>26 5|35s38 44b13 63l8 63t19 -25r26 Module{1|37R9} 5|44b26 47r28 48r41 -27U14 Read 28>8 29>8 30<8 31<8 32<8 33>8 5|56r26 65b14 91l8 91t12 -28m8 Key{12|67M9} 5|66b8 74r63 -29m8 Offset{6|84M9} 5|67b8 79r48 87r29 87r53 -30a8 Data{3|29A9} 5|68b8 79r58 80r39 86m7 86r13 86r27 -31i8 Ret_Count{natural} 5|69b8 89m7 -32b8 Success{boolean} 5|70b8 90m7 -33b8 Is_Blocking{boolean} 5|71b8 73r28 -35U14 Write 36>8 37>8 38>8 39<8 40<8 41>8 5|57r26 93b14 119l8 119t13 -36m8 Key{12|67M9} 5|94b8 102r63 -37m8 Offset{6|84M9} 5|95b8 107r48 114r26 114r50 -38a8 Data{3|29A9} 5|96b8 107r58 108r39 115r10 115r16 115r30 -39i8 Ret_Count{natural} 5|97b8 117m7 -40b8 Success{boolean} 5|98b8 118m7 -41b8 Is_Blocking{boolean} 5|99b8 101r28 -X 5 devices-ramdev.adb -22R9 Ramdev_Data 25e14 26r35 46r48 74r27 102r27 -23m7*Start_Address{12|67M9} 47m11 77r38 105r38 -24m7*Size{6|84M9} 48m11 55r50 75r58 103r58 -26P9 Ramdev_Data_Acc(22R9) 46r25 -29b7 Success{boolean} 36m47 37r17 -30r7 Dev_Res{3|39R9} 35m10 36r28 -31a7 Dev_Name{string} 34m10 34r20 36r37 -33i11 I{integer} 34r53 35r60 -45K15 A[8|19] 55r26 -46p7 Data{26P9} 51r26 55r45 -74r7 Dev{22R9} 75r54 77r34 -75i7 Dev_Size{natural} 76r48 82r22 83r46 -76a7 Dev_Data{3|29A9} 87r10 -79i7 Final_Loc{natural} 82r10 83r34 -80i7 To_Write{natural} 83m10 83r22 86r40 87r63 89r20 -102r7 Dev{22R9} 103r54 105r34 -103i7 Dev_Size{natural} 104r39 110r22 111r46 -104a7 Dev_Data{3|29A9} 114m7 -107i7 Final_Loc{natural} 110r10 111r34 -108i7 To_Write{natural} 111m10 111r22 114r60 115r43 117r20 -18M9 T{6|84M9} 27r42[45] 27r52[45] 35r44[45] 35r54[45] 40r50[45] 40r60[45] -. 41r49[45] 23r42[45] 23r52[45] 27r14[45] 30r44[45] 30r54[45] 34r14[45] 37r50[45] -. 37r60[45] -27V13 Align_Up{6|84M9} 29r20[45] -27m23 Value{6|84M9} 24r61[45] -27m30 Alignment{6|84M9} 28r20[45] 28r40[45] 28r55[45] 29r40[45] 25r61[45] -35V13 Align_Down{6|84M9} 37r20[45] -35m25 Value{6|84M9} 31r61[45] -35m32 Alignment{6|84M9} 36r20[45] 36r40[45] 36r55[45] 37r42[45] 32r61[45] -40V13 Divide_Round_Up{6|84M9} 55s28[45] 42r20[45] -40m30 Dividend{6|84M9} 41r21[45] 39r15[45] -40m40 Divisor{6|84M9} 41r33[45] 41r62[45] 42r47[45] 39r27[45] 39r43[45] -24m7 Value2{13|82M9} 27r18[45] -25m7 Align2{13|82M9} 27r27[45] 27r48[45] -31m7 Value2{13|82M9} 34r17[45] -32m7 Align2{13|82M9} 34r33[45] -X 6 interfac.ads -70M9*Unsigned_8 -84M9*Unsigned_64 4|29r22 37r22 5|24r23 45r39 48r28 67r22 95r22 -X 7 lib.ads -19K9*Lib 5|18r6 45r24 7|35e8 -X 8 lib-alignment.ads -19k13*Alignment 5|18w10 45r28 8|43e18 -X 12 system.ads -37K9*System 4|28r22 36r22 5|17w6 17r18 23r23 66r22 94r22 12|155e11 -67M9*Address 4|28r29 36r29 5|23r30 66r29 94r29 -X 13 s-stoele.ads -51I9*Storage_Offset -53I12*Storage_Count{51I9} -82M9*Integer_Address - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___devices__ramdev__init 2 ada___devices__ramdev__init_module devices__register -GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init 0 -GG EK_GLOBALS ada___devices__ramdev__init local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__ramdev devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 1 devices__register TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__ramdev__init_module__a__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module__a__align_up 0 -GG EK_GLOBALS ada___devices__ramdev__init_module__a__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___devices__ramdev__init_module__a ada___devices__ramdev__init_module ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__ramdev__init_module__a__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module__a__align_down 0 -GG EK_GLOBALS ada___devices__ramdev__init_module__a__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___devices__ramdev__init_module__a ada___devices__ramdev__init_module ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__ramdev__init_module__a__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module__a__divide_round_up 0 -GG EK_GLOBALS ada___devices__ramdev__init_module__a__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___devices__ramdev__init_module__a ada___devices__ramdev__init_module ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__ramdev__init_module__a 0 -GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module__a 0 -GG EK_GLOBALS ada___devices__ramdev__init_module__a local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___devices__ramdev__init_module ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__ramdev__init_module 0 -GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__init_module 0 -GG EK_GLOBALS ada___devices__ramdev__init_module local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___devices__ramdev devices proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__ramdev__read 0 -GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__read 0 -GG EK_GLOBALS ada___devices__ramdev__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__ramdev__write 0 -GG EK_PROOF_DEPENDENCIES ada___devices__ramdev__write 0 -GG EK_GLOBALS ada___devices__ramdev__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__ramdev devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__ramdev 0 -GG EK_PROOF_DEPENDENCIES ada___devices__ramdev 0 -GG EK_GLOBALS ada___devices__ramdev local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__ramdev__init_module__a__align_up FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev__init_module__a VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___devices__ramdev__init_module__a__align_down FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev__init_module__a VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__ramdev__init_module__a__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev__init_module__a VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__ramdev TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___devices__ramdev__init FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__ramdev__init_module FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___devices__ramdev__read FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev PRIVATE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__ramdev__write FALSE FALSE FALSE FALSE TRUE ada___devices__ramdev PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__ramdev__init_module__a TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___devices__ramdev__init_module BODY_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-ramdev.cswi b/obj/gnatprove/phase1/devices-ramdev.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/devices-ramdev.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-streams.adb.stderr b/obj/gnatprove/phase1/devices-streams.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-streams.adb.stdout b/obj/gnatprove/phase1/devices-streams.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-streams.ali b/obj/gnatprove/phase1/devices-streams.ali deleted file mode 100644 index 9abf8a7..0000000 --- a/obj/gnatprove/phase1/devices-streams.ali +++ /dev/null @@ -1,294 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U devices.streams%b devices-streams.adb 65916951 OO PK -W cryptography%s cryptography.ads cryptography.ali -W cryptography.random%s cryptography-random.adb cryptography-random.ali -W devices%s devices.adb devices.ali - -U devices.streams%s devices-streams.ads 4aac97e4 OO PK -W devices%s devices.adb devices.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D cryptography.ads 20250222165738 8132c7fc cryptography%s -D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-streams.ads 20250222165738 bef258ed devices.streams%s -D devices-streams.adb 20250222165738 24022e1a devices.streams%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 3 cryptography.ads -17K9*Cryptography 18e17 7|17r6 159r7 159r38 177r10 -X 4 cryptography-random.ads -19K22*Random 40e24 7|17w19 159r20 159r51 177r23 -21A9*Crypto_Data(8|70M9) 7|159r58 -22U14*Fill_Data 7|159s27 -25U14*Feed_Entropy 7|177s30 -X 5 devices.ads -22K9*Devices 279e12 6|17r9 71r5 7|19r14 186r5 -29A9*Operation_Data(8|70M9) 6|27r26 35r22 43r26 51r22 59r26 67r22 -. 7|83r26 101r22 117r26 134r22 150r26 167r22 -34A9*UUID(8|70M9) -40m7*Data{12|67M9} 7|26m12 39m12 52m12 65m12 -41a7*ID{34A9} 7|27m12 40m12 53m12 66m12 -42b7*Is_Block{boolean} 7|28m12 41m12 54m12 67m12 -43i7*Block_Size{natural} 7|29m12 42m12 55m12 68m12 -44m7*Block_Count{8|84M9} 7|30m12 43m12 56m12 69m12 -46p7*Read 7|31m12 44m12 57m12 70m12 -53p7*Write 7|32m12 45m12 58m12 71m12 -60p7*Sync(boolean) 7|33m12 46m12 59m12 72m12 -61p7*Sync_Range(boolean) 7|34m12 47m12 60m12 73m12 -65p7*IO_Control(boolean) 7|35m12 48m12 61m12 74m12 -69p7*Mmap(boolean) 7|36m12 49m12 62m12 75m12 -75p7*Poll 7|37m12 50m12 63m12 76m12 -98U14*Register 7|25s7 38s7 51s7 64s7 -145V13*Is_Initialized{boolean} 6|20s19 -X 6 devices-streams.ads -17K17*Streams 5|22k9 6|71l13 71e20 7|19b22 186l13 186t20 -19U14*Init 19<20 7|22b14 78l8 78t12 -19b20 Success{boolean} 7|22b20 77m7 -24U14 Null_Read 25>8 26>8 27<8 28<8 29<8 30>8 7|31r27 80b14 96l8 96t17 -25m8 Key{12|67M9} 7|81b8 88r28 -26m8 Offset{8|84M9} 7|82b8 89r28 -27a8 Data{5|29A9} 7|83b8 90r28 93m7 -28i8 Ret_Count{natural} 7|84b8 94m7 -29b8 Success{boolean} 7|85b8 95m7 -30b8 Is_Blocking{boolean} 7|86b8 91r28 -32U14 Null_Write 33>8 34>8 35>8 36<8 37<8 38>8 7|32r27 98b14 112l8 112t18 -33m8 Key{12|67M9} 7|99b8 106r28 -34m8 Offset{8|84M9} 7|100b8 107r28 -35a8 Data{5|29A9} 7|101b8 110r20 -36i8 Ret_Count{natural} 7|102b8 110m7 -37b8 Success{boolean} 7|103b8 111m7 -38b8 Is_Blocking{boolean} 7|104b8 108r28 -40U14 Zero_Read 41>8 42>8 43<8 44<8 45<8 46>8 7|44r27 114b14 129l8 129t17 -41m8 Key{12|67M9} 7|115b8 122r28 -42m8 Offset{8|84M9} 7|116b8 123r28 -43a8 Data{5|29A9} 7|117b8 126m7 127r20 -44i8 Ret_Count{natural} 7|118b8 127m7 -45b8 Success{boolean} 7|119b8 128m7 -46b8 Is_Blocking{boolean} 7|120b8 124r28 -48U14 Zero_Write 49>8 50>8 51>8 52<8 53<8 54>8 7|45r27 131b14 145l8 145t18 -49m8 Key{12|67M9} 7|132b8 139r28 -50m8 Offset{8|84M9} 7|133b8 140r28 -51a8 Data{5|29A9} 7|134b8 143r20 -52i8 Ret_Count{natural} 7|135b8 143m7 -53b8 Success{boolean} 7|136b8 144m7 -54b8 Is_Blocking{boolean} 7|137b8 141r28 -56U14 Random_Read 57>8 58>8 59<8 60<8 61<8 62>8 7|57r27 70r27 147b14 162l8 -. 162t19 -57m8 Key{12|67M9} 7|148b8 155r28 -58m8 Offset{8|84M9} 7|149b8 156r28 -59a8 Data{5|29A9} 7|150b8 159m71 159r71 160r20 -60i8 Ret_Count{natural} 7|151b8 160m7 -61b8 Success{boolean} 7|152b8 161m7 -62b8 Is_Blocking{boolean} 7|153b8 157r28 -64U14 Random_Write 65>8 66>8 67>8 68<8 69<8 70>8 7|58r27 71r27 164b14 185l8 -. 185t20 -65m8 Key{12|67M9} 7|165b8 172r28 -66m8 Offset{8|84M9} 7|166b8 173r28 -67a8 Data{5|29A9} 7|167b8 176r10 178r39 178r45 179r39 179r45 180r39 180r45 -. 181r39 181r45 183r20 -68i8 Ret_Count{natural} 7|168b8 183m7 -69b8 Success{boolean} 7|169b8 184m7 -70b8 Is_Blocking{boolean} 7|170b8 174r28 -X 7 devices-streams.adb -23b7 Success_1{boolean} 37m42 77r18 -23b18 Success_2{boolean} 50m42 77r32 -23b29 Success_3{boolean} 63m44 77r46 -23b40 Success_4{boolean} 76m45 77r60 -X 8 interfac.ads -70M9*Unsigned_8 -81M9*Unsigned_32 7|178r26 179r26 180r26 181r26 -84M9*Unsigned_64 6|26r22 34r22 42r22 50r22 58r22 66r22 7|82r22 100r22 116r22 -. 133r22 149r22 166r22 -141V13*Shift_Left{81M9} 7|178s14 179s14 180s14 181s14 -X 12 system.ads -37K9*System 6|25r22 33r22 41r22 49r22 57r22 65r22 7|26r27 39r27 52r27 65r27 -. 81r22 99r22 115r22 132r22 148r22 165r22 12|155e11 -67M9*Address 6|25r29 33r29 41r29 49r29 57r29 65r29 7|81r29 99r29 115r29 132r29 -. 148r29 165r29 -69m4*Null_Address{67M9} 7|26r34 39r34 52r34 65r34 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___devices__streams__init 2 devices__register devices__is_initialized -GG EK_PROOF_DEPENDENCIES ada___devices__streams__init 6 ada___devices__streams__null_read ada___devices__streams__null_write ada___devices__streams__zero_read ada___devices__streams__zero_write ada___devices__streams__random_read ada___devices__streams__random_write -GG EK_GLOBALS ada___devices__streams__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 1 devices__is_initialized calls 1 devices__register calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__streams__null_read 0 -GG EK_PROOF_DEPENDENCIES ada___devices__streams__null_read 0 -GG EK_GLOBALS ada___devices__streams__null_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__streams__null_write 0 -GG EK_PROOF_DEPENDENCIES ada___devices__streams__null_write 0 -GG EK_GLOBALS ada___devices__streams__null_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__streams__zero_read 0 -GG EK_PROOF_DEPENDENCIES ada___devices__streams__zero_read 0 -GG EK_GLOBALS ada___devices__streams__zero_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__streams__zero_write 0 -GG EK_PROOF_DEPENDENCIES ada___devices__streams__zero_write 0 -GG EK_GLOBALS ada___devices__streams__zero_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__streams__random_read 1 ada___cryptography__random__fill_data -GG EK_PROOF_DEPENDENCIES ada___devices__streams__random_read 0 -GG EK_GLOBALS ada___devices__streams__random_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___cryptography__random__fill_data calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__streams__random_write 2 interfaces__shift_left__3 ada___cryptography__random__feed_entropy -GG EK_PROOF_DEPENDENCIES ada___devices__streams__random_write 0 -GG EK_GLOBALS ada___devices__streams__random_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__streams devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__streams 0 -GG EK_PROOF_DEPENDENCIES ada___devices__streams 0 -GG EK_GLOBALS ada___devices__streams local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__null_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__null_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__zero_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__zero_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___devices__streams__random_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__random_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART -GG EK_FLOW_SCOPE ada___devices__streams__init FALSE FALSE FALSE FALSE TRUE ada___devices__streams VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-streams.cswi b/obj/gnatprove/phase1/devices-streams.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/devices-streams.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-termios.ads.stderr b/obj/gnatprove/phase1/devices-termios.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-termios.ads.stdout b/obj/gnatprove/phase1/devices-termios.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-termios.ali b/obj/gnatprove/phase1/devices-termios.ali deleted file mode 100644 index 9045ec3..0000000 --- a/obj/gnatprove/phase1/devices-termios.ali +++ /dev/null @@ -1,203 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U devices.termios%s devices-termios.ads f2f06868 OO PK -W devices%s devices.adb devices.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 3 devices.ads -22K9*Devices 279e12 4|17r9 81r5 -X 4 devices-termios.ads -17K17*TermIOs 3|22k9 4|81l13 81e20 -19A9*Special_Characters(5|81M9) 49r23 -20R9*Local_Modes 31e15 32r8 48r23 -21b7*Echo_Input{boolean} 33r7 -22b7*Do_Erase{boolean} 34r7 -23b7*Do_Kill{boolean} 35r7 -24b7*Echo_Newline{boolean} 36r7 -25b7*Canonical_Mode{boolean} 37r7 -26b7*Do_Implementation{boolean} 38r7 -27b7*Generate_Signals{boolean} 39r7 -28b7*No_Flushing_Signal{boolean} 40r7 -29b7*Send_Stop{boolean} 41r7 -30b7*Print_As_Erased{boolean} 42r7 -44R9*Main_Data 52e15 -45m7*Input_Modes{5|81M9} -46m7*Output_Modes{5|81M9} -47m7*Control_Modes{5|81M9} -48r7*Local_Mode{20R9} -49a7*Special_Chars{19A9} -50m7*Input_Baud{5|81M9} -51m7*Output_Baud{5|81M9} -54R9*Win_Size 59e14 -55m7*Rows{5|73M9} -56m7*Columns{5|73M9} -57m7*X_Pixels{5|73M9} -58m7*Y_Pixels{5|73M9} -62N4*TCIFLUSH -63N4*TCOFLUSH -64N4*TCIOFLUSH -67N4*TCOOFF -68N4*TCOON -69N4*TCIOFF -70N4*TCION -73N4*TCGETS -74N4*TCSETS -75N4*TCSETSW -76N4*TCSETSF -77N4*TCXONC -78N4*TCFLSH -79N4*TIOCGWINSZ -80N4*TIOCSWINSZ -X 5 interfac.ads -73M9*Unsigned_16 4|55r18 56r18 57r18 58r18 -81M9*Unsigned_32 4|19r50 45r23 46r23 47r23 50r23 51r23 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___devices__termios 0 -GG EK_PROOF_DEPENDENCIES ada___devices__termios 0 -GG EK_GLOBALS ada___devices__termios local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-termios.cswi b/obj/gnatprove/phase1/devices-termios.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/devices-termios.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices-uart.adb.stderr b/obj/gnatprove/phase1/devices-uart.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-uart.adb.stdout b/obj/gnatprove/phase1/devices-uart.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices-uart.ali b/obj/gnatprove/phase1/devices-uart.ali deleted file mode 100644 index df46a26..0000000 --- a/obj/gnatprove/phase1/devices-uart.ali +++ /dev/null @@ -1,203 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U devices.uart%b devices-uart.adb 882298b2 OO PK -W devices%s devices.adb devices.ali -Z system%s system.ads system.ali - -U devices.uart%s devices-uart.ads 0a4d0dda OO PK -W devices%s devices.adb devices.ali -W memory%s memory.ads memory.ali -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-uart.ads 20250222165738 15b33d8b devices.uart%s -D devices-uart.adb 20250222165738 9d91a539 devices.uart%b -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 3 devices.ads -22K9*Devices 279e12 4|21r9 37r5 5|17r14 35r5 -X 4 devices-uart.ads -21K17*UART 3|22k9 4|37l13 37e17 5|17b22 35l13 35t17 -23U14*Init_UART0 5|18b14 21l8 21t18 -26U14*Write_UART0 26>27 5|23b14 27l8 27t19 32s10 -26e27 Message{character} 5|23b27 24r49 -29U14*Write_UART0 29>27 5|29b14 34l8 34t19 -29a27 Message{string} 5|29b27 31r16 -33N4 UART_Base 36r46 -35m4 UART0_TX{6|70M9} 5|26m7 -X 5 devices-uart.adb -24m7 Data{6|70M9} 26r19 -31e11 C=31:16{character} -X 6 interfac.ads -70M9*Unsigned_8 4|35r15 5|24r14 -X 9 memory.ads -19K9*Memory 4|19w6 19r18 9|36e11 -29N4*Memory_Offset 4|36r30 -X 10 system.ads -37K9*System 4|17r6 17r35 18w6 10|155e11 -67M9*Address -X 11 s-stoele.ads -40K16*Storage_Elements 4|17w13 17r42 11|90e28 -84V13*To_Address{10|67M9} 4|36s18 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___devices__uart__init_uart0 0 -GG EK_PROOF_DEPENDENCIES ada___devices__uart__init_uart0 0 -GG EK_GLOBALS ada___devices__uart__init_uart0 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__uart devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__uart__write_uart0 0 -GG EK_PROOF_DEPENDENCIES ada___devices__uart__write_uart0 0 -GG EK_GLOBALS ada___devices__uart__write_uart0 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__uart devices proper_proof_in 0 proper_input 1 ada___devices__uart__uart0_tx proper_output 1 ada___devices__uart__uart0_tx refined_proof_in 0 refined_input 1 ada___devices__uart__uart0_tx refined_output 1 ada___devices__uart__uart0_tx calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___devices__uart__uart0_tx LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__uart__write_uart0__2 0 -GG EK_PROOF_DEPENDENCIES ada___devices__uart__write_uart0__2 0 -GG EK_GLOBALS ada___devices__uart__write_uart0__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___devices__uart devices proper_proof_in 0 proper_input 1 ada___devices__uart__uart0_tx proper_output 1 ada___devices__uart__uart0_tx refined_proof_in 0 refined_input 1 ada___devices__uart__uart0_tx refined_output 1 ada___devices__uart__uart0_tx calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___devices__uart 0 -GG EK_PROOF_DEPENDENCIES ada___devices__uart 0 -GG EK_GLOBALS ada___devices__uart local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart__init_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart__write_uart0 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__uart__write_uart0__2 FALSE FALSE FALSE FALSE TRUE ada___devices__uart VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_VOLATILES AR 1 ada___devices__uart__uart0_tx AW 1 ada___devices__uart__uart0_tx ER 1 ada___devices__uart__uart0_tx EW 1 ada___devices__uart__uart0_tx -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices-uart.cswi b/obj/gnatprove/phase1/devices-uart.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/devices-uart.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/devices.adb.stderr b/obj/gnatprove/phase1/devices.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices.adb.stdout b/obj/gnatprove/phase1/devices.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/devices.ali b/obj/gnatprove/phase1/devices.ali deleted file mode 100644 index 2d49c71..0000000 --- a/obj/gnatprove/phase1/devices.ali +++ /dev/null @@ -1,528 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ACCESS_SUBPROGRAMS -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U devices%b devices.adb ec24ada9 OO PK -W arch%s arch.ads arch.ali -W arch.hooks%s arch-hooks.adb arch-hooks.ali -W devices%s devices.adb devices.ali -W devices.console%s devices-console.adb devices-console.ali -W devices.loopback%s devices-loopback.adb devices-loopback.ali -W devices.streams%s devices-streams.adb devices-streams.ali -W lib%s lib.adb lib.ali -W lib.panic%s lib-panic.adb lib-panic.ali - -U devices%s devices.ads 58f85773 OO PK -W arch%s arch.ads arch.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W interfaces%s interfac.ads interfac.ali -W memory%s memory.ads memory.ali -W system%s system.ads system.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices.adb 20250222165738 49df614b devices%b -D devices-console.ads 20250222165738 37ce0dbf devices.console%s -D devices-loopback.ads 20250222165738 39340044 devices.loopback%s -D devices-streams.ads 20250222165738 bef258ed devices.streams%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 4 arch.ads -20K9*Arch 52e9 8|20r6 71r21 74r21 238r18 241r18 9|21r6 42r34 304r18 307r18 -X 6 arch-hooks.ads -17K14*Hooks 33e15 9|21w11 42r39 -19V13*Devices_Hook{boolean} 9|42s45 -X 7 arch-mmu.ads -22K14*MMU 250e13 8|20w11 71r26 74r26 238r23 241r23 9|304r23 307r23 -26R9*Page_Permissions 32e14 8|74r30 241r27 9|307r27 -43P9*Page_Table_Acc(42R9) 8|71r30 238r27 9|304r27 -X 8 devices.ads -22K9*Devices 279l5 279e12 9|17r6 18r6 19r6 23b14 383l5 383t12 -28I12*Operation_Count{natural} 29r38 -29A9*Operation_Data(13|70M9) 30r38 49r29 56r25 196r26 213r22 9|244r26 -. 268r22 -30P9*Operation_Data_Acc(29A9) -34A9*UUID(13|70M9) 36r25 41r21 111r25 123r48 9|87r25 102r18 146r48 -35A12*UUID_String{string} 117r30 9|101r30 -36a4*Zero_UUID{34A9} 9|89r16 102r26 -39R9*Resource 80e14 98r30 265r20 9|52r30 -40m7*Data{19|67M9} 9|219r45 233r45 236r45 252r58 276r58 296r45 312r45 327r45 -41a7*ID{34A9} 9|92r42 148r42 -42b7*Is_Block{boolean} 9|185r45 -43i7*Block_Size{natural} 9|195r45 -44m7*Block_Count{13|84M9} 9|190r45 -46p7*Read 9|250r41 251r41 -47m11 Key{19|67M9} -48m11 Offset{13|84M9} -49a11 Data{29A9} -50i11 Ret_Count{natural} -51b11 Success{boolean} -52b11 Is_Blocking{boolean} -53p7*Write 9|211r45 274r41 275r41 -54m11 Key{19|67M9} -55m11 Offset{13|84M9} -56a11 Data{29A9} -57i11 Ret_Count{natural} -58b11 Success{boolean} -59b11 Is_Blocking{boolean} -60p7*Sync(boolean) 9|217r41 218r52 234r44 235r52 -60m31 Key{19|67M9} -61p7*Sync_Range(boolean) 9|231r41 232r52 -62m11 Key{19|67M9} -63m11 Offset{13|84M9} -64m11 Count{13|84M9} -65p7*IO_Control(boolean) 9|294r41 295r48 -66m11 Key{19|67M9} -67m11 Request{13|84M9} -68m11 Argument{19|67M9} -69p7*Mmap(boolean) 9|310r41 311r48 -70m11 Key{19|67M9} -71p11 Map{7|43P9} -72m11 Address{18|35M12} -73m11 Length{13|84M9} -74r11 Flags{7|26R9} -75p7*Poll 9|325r41 326r41 -76m11 Handle{19|67M9} -77b11 Can_Read{boolean} -78b11 Can_Write{boolean} -79b11 Is_Error{boolean} -83I9*Device_Handle 84r54 85r28 105r42 111r38 117r50 123r26 131r17 -. 150r39 152r39 154r39 156r36 161r37 165r50 171r35 180r17 194r22 211r22 225r19 -. 237r18 250r20 258c9 259r31 267r34 9|75r42 87r38 101r50 103r18 146r26 152r17 -. 183r39 188r39 193r38 198r37 204r50 206r14 209r36 214r35 225r17 242r22 266r22 -. 289r19 303r18 319r20 -84A9*Device_List(83I9) 141r33 9|161r33 -85i4*Error_Handle{83I9} 134r60 151r59 153r59 155r59 157r59 162r59 172r59 -. 183r59 200r59 217r59 228r59 242r59 254r59 259c4 9|84r14 98r14 114r26 121r26 -. 133r22 165r28 179r43 -88i4*Max_Name_Length{natural} 99r63 106r63 135r36 136r47 260c4 263r33 264r39 -92U14*Init 9|27b14 50l8 50t12 -98U14*Register 98>24 98>40 98<55 9|52b14 73l8 73t16 -98r24 Dev{39R9} 9|52b24 68r57 -98a40 Name{string} 99r48 9|52b40 57r62 66r41 66r57 67r57 -98b55 Success{boolean} 9|52b55 55m7 69m13 -105V13*Fetch{83I9} 105>20 9|75b13 85l8 85t13 -105a20 Name{string} 106r48 9|75b20 79r70 -111V13*Fetch{83I9} 111>20 9|87b13 99l8 99t13 132s19 143s14 -111a20 ID{34A9} 9|87b20 89r10 92r47 -117V13*Fetch_UUID{83I9} 117>25 9|101b13 144l8 144t18 -117a25 ID{35A12} 9|101b25 110r16 113r19 117r24 118r24 119r24 127r53 128r53 -. 129r53 130r53 131r54 138r53 139r53 140r53 141r53 142r54 -123V13*Fetch{34A9} 123>20 9|146b13 149l8 149t13 -123i20 Dev{83I9} 9|146b20 148r28 -130U14*Fetch_Name 131>8 132<8 133<8 9|151b14 159l8 159t18 -131i8 Handle{83I9} 134r50 9|152b8 157r31 158r31 -132a8 Name{string} 135r22 9|153b8 157m7 -133i8 Length{natural} 136r21 136r37 9|154b8 158m7 -141U14*List 141<20 141<46 9|161b14 181l8 181t12 -141a20 Buffer{84A9} 9|161b20 165m7 171r29 172m16 172r24 178r29 179m10 179r18 -141i46 Total{natural} 9|161b46 164m7 168r33 170m13 170r22 178r16 -145V13*Is_Initialized{boolean} 92s32 99s21 100s20 106s21 112s19 118s20 124s19 -. 134s22 142s19 151s21 153s21 155s21 157s21 162s21 166s20 172s21 183s21 200s21 -. 217s21 228s21 242s21 254s21 272b13 -150V13*Is_Block_Device{boolean} 150>30 9|183b13 186l8 186t23 -150i30 Handle{83I9} 151r49 9|183b30 185r28 -152V13*Get_Block_Count{13|84M9} 152>30 9|188b13 191l8 191t23 -152i30 Handle{83I9} 153r49 9|188b30 190r28 -154V13*Get_Block_Size{natural} 154>30 9|193b13 196l8 196t22 -154i30 Handle{83I9} 155r49 9|193b29 195r28 -156V13*Is_Read_Only{boolean} 156>27 9|209b13 212l8 212t20 -156i27 Handle{83I9} 157r49 9|209b27 211r28 -161V13*Get_Unique_ID{natural} 161>28 9|198b13 202l8 202t21 -161i28 Handle{83I9} 162r49 9|198b28 201r23 -165V13*From_Unique_ID{83I9} 165>29 9|204b13 207l8 207t22 -165i29 ID{natural} 9|204b29 206r29 -171V13*Synchronize{boolean} 171>26 9|214b13 222l8 222t19 -171i26 Handle{83I9} 172r49 9|214b26 217r24 218r35 219r28 -179V13*Synchronize{boolean} 180>8 181>8 182>8 9|224b13 239l8 239t19 -180i8 Handle{83I9} 183r49 9|225b8 231r24 232r35 233r28 234r27 235r35 236r28 -181m8 Offset{13|84M9} 9|226b8 233r51 -182m8 Count{13|84M9} 9|227b8 233r59 -193U14*Read 194>8 195>8 196<8 197<8 198<8 199>8 9|241b14 263l8 263t12 -194i8 Handle{83I9} 200r49 9|242b8 250r24 251r24 252r41 -195m8 Offset{13|84M9} 9|243b8 253r27 -196a8 Data{29A9} 9|244b8 254m27 259m10 -197i8 Ret_Count{natural} 9|245b8 255m27 260m10 -198b8 Success{boolean} 9|246b8 256m27 261m10 -199b8 Is_Blocking{boolean} 9|247b8 257r29 -210U14*Write 211>8 212>8 213>8 214<8 215<8 216>8 9|265b14 286l8 286t13 -211i8 Handle{83I9} 217r49 9|266b8 274r24 275r24 276r41 -212m8 Offset{13|84M9} 9|267b8 277r27 -213a8 Data{29A9} 9|268b8 278r27 -214i8 Ret_Count{natural} 9|269b8 279m27 283m10 -215b8 Success{boolean} 9|270b8 280m27 284m10 -216b8 Is_Blocking{boolean} 9|271b8 281r29 -224V13*IO_Control{boolean} 225>8 226>8 227>8 9|288b13 300l8 300t18 -225i8 Handle{83I9} 228r49 9|289b8 294r24 295r31 296r28 -226m8 Request{13|84M9} 9|290b8 296r51 -227m8 Argument{19|67M9} 9|291b8 296r60 -236V13*Mmap{boolean} 237>8 238>8 239>8 240>8 241>8 9|302b13 316l8 316t12 -237i8 Handle{83I9} 242r49 9|303b8 310r24 311r31 312r28 -238p8 Map{7|43P9} 9|304b8 312r51 -239m8 Address{18|35M12} 9|305b8 312r56 -240m8 Length{13|84M9} 9|306b8 312r65 -241r8 Flags{7|26R9} 9|307b8 312r73 -249U14*Poll 250>8 251<8 252<8 253<8 9|318b14 334l8 334t12 -250i8 Handle{83I9} 254r49 9|319b8 325r24 326r24 327r28 -251b8 Can_Read{boolean} 9|320b8 327m51 330m10 -252b8 Can_Write{boolean} 9|321b8 327m61 331m10 -253b8 Is_Error{boolean} 9|322b8 328m14 332m10 -261R9 Device 266e14 267r66 -262b7*Is_Present{boolean} 9|33m14 57r15 64r34 65m30 78r30 91r33 169r30 -263a7*Name{string} 9|57r37 66m30 79r30 157r39 -264i7*Name_Len{integer} 9|57r50 67m30 79r58 158r39 -265r7*Contents{39R9} 9|68m30 92r33 148r33 185r36 190r36 195r36 211r36 217r32 -. 218r43 219r36 231r32 232r43 233r36 234r35 235r43 236r36 250r32 251r32 252r49 -. 274r32 275r32 276r49 294r32 295r39 296r36 310r32 311r39 312r36 325r32 326r32 -. 327r36 -267A9 Device_Arr(261R9)<83I9> 268r34 9|31r27 -268P9 Device_Arr_Acc(267A9) 270r19 -270p4 Devices_Data{268P9} 272r47 9|31m7 32r18 56r16 63r16 64r17 65r13 66r13 -. 67r13 68r13 77r16 78r13 79r13 79r41 90r19 91r16 92r16 148r14 157r17 158r17 -. 167r16 168r42 169r13 185r14 190r14 195r14 211r14 217r10 218r21 219r14 231r10 -. 232r21 233r14 234r13 235r21 236r14 250r10 251r10 252r27 274r10 275r10 276r27 -. 294r10 295r17 296r14 310r10 311r17 312r14 325r10 326r10 327r14 -274A9 UUID_Fragment(13|70M9) 277r37 278r37 9|127r19 128r19 129r19 -. 130r19 131r19 138r19 139r19 140r19 141r19 142r19 349r37 367r37 -276V13 To_Integer{13|70M9} 276>25 9|336b13 347l8 347t18 355s17 373s17 -276e25 C{character} 9|336b25 339r10 340r35 341r13 342r35 344r35 -277U14 Convert_LE 277<26 277>52 9|127s7 128s7 129s7 349b14 365l8 365t18 -277a26 Frag{274A9} 9|349b26 353m7 358m13 358r19 360m13 360r19 360r40 360r46 -277a52 Val{string} 9|349b52 354r24 355r29 357r18 -278U14 Convert_BE 278<26 278>52 9|130s7 131s7 138s7 139s7 140s7 141s7 142s7 -. 367b14 382l8 382t18 -278a26 Frag{274A9} 9|367b26 371m7 376m13 376r19 376r40 376r46 379m13 379r19 -278a52 Val{string} 9|367b52 372r16 373r29 375r18 -X 9 devices.adb -29b7 Success{boolean} 37m21 38r14 39m22 40r14 41m21 42r14 -32r11 Dev{8|261R9} -48L6 Panic_Error 38r32 40r32 43r15 -56r11 E{8|261R9} -63i11 I 64r31 65r27 66r27 67r27 68r27 -77i11 I 78r27 79r27 79r55 81r20 -90i14 I 91r30 92r30 94r23 -102a7 Result{8|34A9} 127m34 127r34 128m34 128r34 129m34 129r34 130m34 130r34 -. 131m34 131r34 132r26 138m34 138r34 139m34 139r34 140m34 140r34 141m34 141r34 -. 142m34 142r34 143r21 -103i7 Returned{8|83I9} 132m7 133r10 134r17 -110i11 I{integer} 111r15 113r23 117r28 118r28 119r28 -162i7 Curr_Index{natural} 171r16 172r39 173m16 173r30 -167i11 I 169r27 172r55 -178i11 I{integer} 179r33 -215b7 Success{boolean} 218m10 221r14 -229b7 Success{boolean} 232m10 235m10 238r14 -337i7 Result{natural} 340m10 342m10 344m10 346r26 -350m7 Res{13|70M9} 355m10 358r40 361r52 -351i7 Idx{natural} 358r32 360r32 360r59 362m13 362r20 -354i11 I{integer} 355r34 357r14 -368m7 Res{13|70M9} 373m10 376r67 379r52 -369i7 Idx{natural} 376r32 376r59 377m13 377r20 379r32 -372i11 I{integer} 373r34 375r14 -X 10 devices-console.ads -17K17*Console 9|17w14 37r7 10|39e20 -19U14*Init 9|37s15 -X 11 devices-loopback.ads -17K17*Loopback 9|18w14 39r7 11|52e21 -19U14*Init 9|39s16 -X 12 devices-streams.ads -17K17*Streams 9|19w14 41r7 12|71e20 -19U14*Init 9|41s15 -X 13 interfac.ads -38K9*Interfaces 8|18w6 18r22 13|233e15 -70M9*Unsigned_8 8|29r67 34r36 274r54 276r47 9|336r47 346r14 350r13 368r13 -84M9*Unsigned_64 8|44r21 48r25 55r25 63r20 64r20 67r22 73r21 152r61 181r17 -. 182r17 195r22 212r22 226r19 240r18 9|188r61 226r17 227r17 243r22 267r22 -. 290r19 306r18 -91V13*Shift_Left{70M9} 9|361s40 379s40 -X 14 lib.ads -19K9*Lib 9|20r6 49r7 14|35e8 -X 16 lib-panic.ads -21K13*Panic 9|20w10 49r11 16|39e14 -32U14*Hard_Panic 9|49s17 -X 18 memory.ads -19K9*Memory 8|19w6 72r21 239r18 9|305r18 18|36e11 -35M12*Virtual_Address{20|82M9} 8|72r28 239r25 9|305r25 -X 19 system.ads -37K9*System 8|17w6 40r21 47r25 54r25 60r37 62r20 66r22 68r22 70r21 76r23 -. 227r19 9|291r19 19|155e11 -67M9*Address 8|40r28 47r32 54r32 60r44 62r27 66r29 68r29 70r28 76r30 227r26 -. 9|291r26 -X 20 s-stoele.ads -82M9*Integer_Address - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS devices__init 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__init 1 devices__is_initialized -GG EK_GLOBALS devices__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 2 devices__devices_data __HEAP proper_output 2 devices__devices_data __HEAP refined_proof_in 0 refined_input 2 devices__devices_data __HEAP refined_output 2 devices__devices_data __HEAP calls_proof 0 calls 0 calls_conditional 5 ada___devices__console__init ada___devices__loopback__init ada___devices__streams__init ada___lib__panic__hard_panic ada___arch__hooks__devices_hook FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__register 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__register 0 -GG EK_GLOBALS devices__register local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 1 devices__devices_data refined_proof_in 0 refined_input 1 devices__devices_data refined_output 1 devices__devices_data calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__fetch 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__fetch 0 -GG EK_GLOBALS devices__fetch local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__fetch__2 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__fetch__2 0 -GG EK_GLOBALS devices__fetch__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__fetch_uuid 4 devices__fetch__2 devices__is_initialized devices__convert_le devices__convert_be -GG EK_PROOF_DEPENDENCIES devices__fetch_uuid 0 -GG EK_GLOBALS devices__fetch_uuid local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS devices__fetch__3 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__fetch__3 0 -GG EK_GLOBALS devices__fetch__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__fetch_name 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__fetch_name 0 -GG EK_GLOBALS devices__fetch_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__list 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__list 0 -GG EK_GLOBALS devices__list local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__is_initialized 0 -GG EK_PROOF_DEPENDENCIES devices__is_initialized 0 -GG EK_GLOBALS devices__is_initialized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__is_block_device 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__is_block_device 0 -GG EK_GLOBALS devices__is_block_device local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__get_block_count 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__get_block_count 0 -GG EK_GLOBALS devices__get_block_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__get_block_size 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__get_block_size 0 -GG EK_GLOBALS devices__get_block_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__is_read_only 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__is_read_only 0 -GG EK_GLOBALS devices__is_read_only local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__get_unique_id 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__get_unique_id 0 -GG EK_GLOBALS devices__get_unique_id local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 1 devices__devices_data proper_input 0 proper_output 0 refined_proof_in 1 devices__devices_data refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS devices__from_unique_id 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__from_unique_id 0 -GG EK_GLOBALS devices__from_unique_id local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 1 devices__devices_data proper_input 0 proper_output 0 refined_proof_in 1 devices__devices_data refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS devices__synchronize 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__synchronize 0 -GG EK_GLOBALS devices__synchronize local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__synchronize__2 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__synchronize__2 0 -GG EK_GLOBALS devices__synchronize__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__read 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__read 0 -GG EK_GLOBALS devices__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__write 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__write 0 -GG EK_GLOBALS devices__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__io_control 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__io_control 0 -GG EK_GLOBALS devices__io_control local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__mmap 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__mmap 0 -GG EK_GLOBALS devices__mmap local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__poll 1 devices__is_initialized -GG EK_PROOF_DEPENDENCIES devices__poll 0 -GG EK_GLOBALS devices__poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 1 devices__devices_data proper_output 0 refined_proof_in 0 refined_input 1 devices__devices_data refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 devices__devices_data LOCKS 0 -GG EK_DIRECT_CALLS devices__to_integer 0 -GG EK_PROOF_DEPENDENCIES devices__to_integer 0 -GG EK_GLOBALS devices__to_integer local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS devices__convert_le 2 devices__to_integer interfaces__shift_left -GG EK_PROOF_DEPENDENCIES devices__convert_le 0 -GG EK_GLOBALS devices__convert_le local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS devices__convert_be 2 devices__to_integer interfaces__shift_left -GG EK_PROOF_DEPENDENCIES devices__convert_be 0 -GG EK_GLOBALS devices__convert_be local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 devices proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS devices 0 -GG EK_PROOF_DEPENDENCIES devices 0 -GG EK_GLOBALS devices local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 devices__devices_data refined_initializes 1 devices__devices_data calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 devices__devices_data TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___devices__loopback__io_control FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__console__write FALSE FALSE FALSE FALSE TRUE ada___devices__console PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__zero_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__random_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__random_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__loopback TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___devices__loopback__init FALSE FALSE FALSE FALSE TRUE ada___devices__loopback VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__init FALSE FALSE FALSE FALSE TRUE ada___devices__streams VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__null_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__loopback__read FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__null_write FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE ada___devices__console TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___devices__console__init FALSE FALSE FALSE FALSE TRUE ada___devices__console VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__loopback__write FALSE FALSE FALSE FALSE TRUE ada___devices__loopback PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__console__read FALSE FALSE FALSE FALSE TRUE ada___devices__console PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__streams__zero_read FALSE FALSE FALSE FALSE TRUE ada___devices__streams PRIVATE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/devices.cswi b/obj/gnatprove/phase1/devices.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/devices.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-fifo.adb.stderr b/obj/gnatprove/phase1/ipc-fifo.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-fifo.adb.stdout b/obj/gnatprove/phase1/ipc-fifo.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-fifo.ali b/obj/gnatprove/phase1/ipc-fifo.ali deleted file mode 100644 index f40cc19..0000000 --- a/obj/gnatprove/phase1/ipc-fifo.ali +++ /dev/null @@ -1,500 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_DEALLOCATION -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U ipc.fifo%b ipc-fifo.adb 2e10e0b9 OO PK IU -W ada%s ada.ads ada.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W ipc%s ipc.ads ipc.ali -W scheduler%s scheduler.adb scheduler.ali -N A267:7 gnatprove false_positive "memory leak" "Cannot verify that the pipes have only 1 reference, but they do" - -U ipc.fifo%s ipc-fifo.ads e04893b5 OO PK IU -W arch%s arch.ads arch.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W devices%s devices.adb devices.ali -W ipc%s ipc.ads ipc.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-fifo.adb 20250222165738 1d0cfca1 ipc.fifo%b -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 11|17r6 23r26 24r26 -X 2 a-uncdea.ads -20u15*Unchecked_Deallocation 11|17w10 23r30 24r30 -X 3 arch.ads -20K9*Arch 52e9 10|19r6 137r46 -X 6 arch-mmu.ads -22K14*MMU 250e13 10|19w11 137r51 -49N7*Page_Size 10|137r55 -X 7 devices.ads -22K9*Devices 279e12 10|18w6 18r19 115r24 127r20 145r27 11|25r8 25r32 28r14 -. 30r19 128r20 132r28 145r24 209r20 -29A9*Operation_Data(8|70M9) 10|115r32 127r28 11|25r16 30r27 132r36 -. 145r32 209r28 -30P9*Operation_Data_Acc(29A9) 10|145r35 11|25r40 28r22 128r28 -X 8 interfac.ads -70M9*Unsigned_8 -X 9 ipc.ads -17K9*IPC 18e8 10|21r9 156r5 11|20r14 281r5 -X 10 ipc-fifo.ads -21K13*FIFO 9|17k9 10|156l9 156e13 11|20b18 281l9 281t13 -38R9*Inner 39r29 138c9 146e14 11|23r54 31r18 -39P9*Inner_Acc(38R9) 47r59 51r35 53r36 55r37 57r38 62r20 71r20 79r27 82r46 -. 84r46 88r39 94r28 102r28 114r20 126r20 133r27 148r27 154r46 11|23r61 27r59 -. 41r35 46r36 51r37 58r38 66r20 80r20 93r27 98r46 105r46 112r39 120r28 127r28 -. 144r20 208r20 266r46 -43i4*Default_Data_Length{natural} 137c4 11|30r48 -47V13*Create{39P9} 47>21 48r30 11|27b13 39l8 39t14 -47b21 Is_Blocking{boolean} 11|27b21 35r32 36r32 -51V13*Is_Read_Blocking{boolean} 51>31 11|41b13 44l8 44t24 -51p31 P{39P9} 52r37 11|41b31 43r14 -53V13*Is_Write_Blocking{boolean} 53>32 11|46b13 49l8 49t25 -53p32 P{39P9} 54r37 11|46b32 48r14 -55U14*Set_Read_Blocking 55>33 55>48 11|51b14 56l8 56t25 -55p33 P{39P9} 56r37 11|51b33 53r34 54r7 55r36 -55b48 B{boolean} 11|51b48 54r29 -57U14*Set_Write_Blocking 57>34 57>49 11|58b14 63l8 63t26 -57p34 P{39P9} 58r37 11|58b34 60r34 61r7 62r36 -57b49 B{boolean} 11|58b49 61r30 -61U14*Poll_Reader 62>8 63<8 64<8 65<8 66<8 11|65b14 77l8 77t19 -62p8 P{39P9} 67r29 67r51 11|66b8 73r34 76r20 76r39 -63b8 Can_Read{boolean} 11|67b8 73m7 -64b8 Can_Write{boolean} 11|68b8 74m7 -65b8 Is_Error{boolean} 11|69b8 75m7 -66b8 Is_Broken{boolean} 11|70b8 76m7 -70U14*Poll_Writer 71>8 72<8 73<8 74<8 75<8 11|79b14 91l8 91t19 -71p8 P{39P9} 76r29 11|80b8 88r20 88r36 -72b8 Can_Read{boolean} 11|81b8 87m7 -73b8 Can_Write{boolean} 11|82b8 88m7 -74b8 Is_Error{boolean} 11|83b8 89m7 -75b8 Is_Broken{boolean} 11|84b8 90m7 -79V13*Is_Empty{boolean} 79>23 11|73s24 93b13 96l8 96t16 -79p23 P{39P9} 79r75 11|93b23 95r14 -82U14*Close_Reader 82=28 11|98b14 103l8 103t20 -82p28 To_Close{39P9} 83r29 83r48 11|98b28 100r34 101r7 102m21 -84U14*Close_Writer 84=28 11|105b14 110l8 110t20 -84p28 To_Close{39P9} 85r29 85r48 11|105b28 107r34 108r7 109m21 -88U14*Close 88=21 11|112b14 118l8 118t13 -88p21 To_Close{39P9} 89r29 89r48 11|112b21 114r34 115r7 116r7 117m21 -94U14*Get_Size 94>24 94<39 11|120b14 125l8 125t16 -94p24 P{39P9} 95r29 11|120b24 122r34 123r15 124r36 -94i39 Size{natural} 11|120b39 123m7 -102U14*Set_Size 102>24 102>39 102<55 11|127b14 141l8 141t16 -102p24 P{39P9} 103r30 11|127b24 130r34 131r18 133r27 133r44 133r57 134r16 -. 135r10 140r36 -102i39 Size{natural} 103r37 11|127b39 131r10 132r57 -102b55 Success{boolean} 11|127b55 136m10 138m10 -106E9*Pipe_Status 106e75 117r24 129r24 11|147r24 211r24 -106n25*Pipe_Success{106E9} 11|161r29 173r27 204r20 257r23 -106n39*Broken_Failure{106E9} 11|218r23 -106n55*Would_Block_Failure{106E9} 11|175r27 233r26 260r23 -113U14*Read 114>8 115<8 116<8 117<8 11|143b14 205l8 205t12 -114p8 To_Read{39P9} 118r29 11|144b8 153r10 155r40 156r16 157r26 159r16 162r45 -. 165r42 169r37 170r13 172r16 177r42 182r22 183r23 190r10 192r19 192r41 193r13 -. 193r33 195r13 196r13 196r35 202r36 -115a8 Data{7|29A9} 11|145b8 149r30 151m7 185r10 186r38 189m7 189r13 189r27 -116i8 Ret_Count{natural} 11|146b8 160m16 171m13 203m7 -117e8 Success{106E9} 11|147b8 161m16 173m16 175m16 204m7 -125U14*Write 126>8 127>8 128<8 129<8 11|207b14 264l8 264t13 -126p8 To_Write{39P9} 130r29 11|208b8 216r10 222r10 224r40 225r23 225r46 226r42 -. 230r37 231r13 231r35 234r42 239r16 240r16 240r39 242r19 243r19 243r42 245r19 -. 249r19 252r10 253r10 253r25 255r10 263r36 -127a8 Data{7|29A9} 11|209b8 213r26 247r10 248r34 254r13 254r19 254r33 -128i8 Ret_Count{natural} 11|210b8 217m10 232m13 256m10 259m10 -129e8 Success{106E9} 11|211b8 218m10 233m13 257m10 260m10 -133V13*Is_Valid{boolean} 48s20 52s27 54s27 56s27 58s27 67s19 67s41 76s19 -. 79s65 83s19 85s19 89s19 95s19 103s20 118s19 130s19 133>23 148b13 -133p23 P{39P9} 149r8 150r8 151r8 151r24 152r8 -139r7*Mutex{13|22R9} 11|34m11 53m36 55m38 60m36 62m38 100m43 107m43 114m43 -. 122m36 124m38 130m36 140m38 155m48 162m53 165m50 169m45 177m50 202m44 224m49 -. 226m51 230m46 234m51 263m45 277m48 -140b7*Reader_Closed{boolean} 11|32m11 76r41 101m16 115m16 216r19 273r19 -141b7*Writer_Closed{boolean} 11|33m11 76r22 108m16 116m16 159r24 172r24 273r46 -142b7*Is_Read_Blocking{boolean} 11|35m11 43r16 54m9 153r18 -143b7*Is_Write_Blocking{boolean} 11|36m11 48r16 61m9 222r19 -144i7*Data_Count{natural} 151r10 11|37m11 88r22 95r16 131r20 133r29 133r59 -. 156r24 157r34 170r21 182r30 183r31 195r21 196m21 196r43 225r32 231r22 240r48 -. 243r51 245r28 249r28 252r19 253r34 255m19 -145p7*Data{7|30P9} 150r10 151r26 152r10 11|38m11 88r38 123r17 133r46 134m18 -. 135m12 190r18 192r27 192r49 193r21 193r41 225r55 231r44 239r25 240r25 242r28 -. 243r28 253r19 274m25 -154U14 Common_Close 154=28 11|102s7 109s7 117s7 266b14 280l8 280t20 -154p28 To_Close{39P9} 155r19 155r45 11|266b28 273r10 273r37 274r16 275m16 -. 277r39 279m7 -X 11 ipc-fifo.adb -23U14 Free[2|20] -23U14*Free[2|20] 275s10 -24U14 Free[2|20] -24U14*Free[2|20] 134s10 274s10 -28p7 Data{7|30P9} 30m7 38r32 -128p7 New_Buffer{7|30P9} 132m10 133r10 135r21 -149i7 Final_Len{natural} 182r10 183m10 185r38 186m10 189r40 190r29 191r21 -. 203r20 -191i11 I{integer} -192i14 J{integer} 193r27 193r47 -213i7 Len{natural} 239r10 240r10 243m10 245r41 247r38 248m10 249r41 254r46 -. 256r23 -214i7 Final{natural} 242m10 245m10 249m10 253r52 255r33 -18P9*Name{10|39P9} 20r50[23] 20r50[24] -20p39 X{10|39P9} 21r15[23] 22r23[23] 23r11[23] 21r15[24] 22r23[24] 23r11[24] -X 12 lib.ads -19K9*Lib 10|17r6 139r35 11|34r32 53r7 55r7 60r7 62r7 100r7 107r7 114r7 122r7 -. 124r7 130r7 140r7 155r13 162r16 165r13 169r10 177r13 202r7 224r13 226r13 -. 230r10 234r13 263r7 277r10 12|35e8 -X 13 lib-synchronization.ads -20K13*Synchronization 10|17w10 139r39 11|34r36 53r11 55r11 60r11 62r11 100r11 -. 107r11 114r11 122r11 124r11 130r11 140r11 155r17 162r20 165r17 169r14 177r17 -. 202r11 224r17 226r17 230r14 234r17 263r11 277r14 13|66e24 -22R9*Binary_Semaphore 10|139r55 13|57e14 -23r4*Unlocked_Semaphore{22R9} 11|34r52 -27U14*Seize 11|53s27 60s27 100s27 107s27 114s27 122s27 130s27 155s33 169s30 -. 224s33 230s30 -31U14*Release 11|55s27 62s27 124s27 140s27 162s36 165s33 177s33 202s27 226s33 -. 234s33 263s27 277s30 -X 15 scheduler.ads -25K9*Scheduler 11|18w6 166r13 227r13 15|183e14 -74U14*Yield_If_Able 11|166s23 227s23 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___ipc__fifo__create 1 ada___ipc__fifo__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__create 0 -GG EK_GLOBALS ada___ipc__fifo__create local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__is_read_blocking 1 ada___ipc__fifo__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__is_read_blocking 0 -GG EK_GLOBALS ada___ipc__fifo__is_read_blocking local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__is_write_blocking 1 ada___ipc__fifo__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__is_write_blocking 0 -GG EK_GLOBALS ada___ipc__fifo__is_write_blocking local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__set_read_blocking 3 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__set_read_blocking 0 -GG EK_GLOBALS ada___ipc__fifo__set_read_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__set_write_blocking 3 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__set_write_blocking 0 -GG EK_GLOBALS ada___ipc__fifo__set_write_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__poll_reader 2 ada___ipc__fifo__is_empty ada___ipc__fifo__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__poll_reader 0 -GG EK_GLOBALS ada___ipc__fifo__poll_reader local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__poll_writer 1 ada___ipc__fifo__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__poll_writer 0 -GG EK_GLOBALS ada___ipc__fifo__poll_writer local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__is_empty 1 ada___ipc__fifo__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__is_empty 0 -GG EK_GLOBALS ada___ipc__fifo__is_empty local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__close_reader 3 ada___ipc__fifo__is_valid ada___ipc__fifo__common_close ada___lib__synchronization__seize -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__close_reader 0 -GG EK_GLOBALS ada___ipc__fifo__close_reader local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__close_writer 3 ada___ipc__fifo__is_valid ada___ipc__fifo__common_close ada___lib__synchronization__seize -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__close_writer 0 -GG EK_GLOBALS ada___ipc__fifo__close_writer local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__close 3 ada___ipc__fifo__is_valid ada___ipc__fifo__common_close ada___lib__synchronization__seize -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__close 0 -GG EK_GLOBALS ada___ipc__fifo__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__get_size 3 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__get_size 0 -GG EK_GLOBALS ada___ipc__fifo__get_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__set_size 4 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release ada___ipc__fifo__free__2 -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__set_size 0 -GG EK_GLOBALS ada___ipc__fifo__set_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__read 4 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__read 0 -GG EK_GLOBALS ada___ipc__fifo__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__write 4 ada___ipc__fifo__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__write 0 -GG EK_GLOBALS ada___ipc__fifo__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__is_valid 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__is_valid 0 -GG EK_GLOBALS ada___ipc__fifo__is_valid local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__common_close 3 ada___lib__synchronization__release ada___ipc__fifo__free ada___ipc__fifo__free__2 -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__common_close 0 -GG EK_GLOBALS ada___ipc__fifo__common_close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__free 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__free 0 -GG EK_GLOBALS ada___ipc__fifo__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo__free__2 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo__free__2 0 -GG EK_GLOBALS ada___ipc__fifo__free__2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__fifo ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__fifo 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__fifo 0 -GG EK_GLOBALS ada___ipc__fifo local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__freeGP862 TRUE FALSE FALSE FALSE TRUE ada___ipc__fifo BODY_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__free__2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__fifo__freeGP934 VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__freeGP934 TRUE FALSE FALSE FALSE TRUE ada___ipc__fifo BODY_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__fifo__freeGP862 VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-fifo.cswi b/obj/gnatprove/phase1/ipc-fifo.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/ipc-fifo.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-filelock.adb.stderr b/obj/gnatprove/phase1/ipc-filelock.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-filelock.adb.stdout b/obj/gnatprove/phase1/ipc-filelock.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-filelock.ali b/obj/gnatprove/phase1/ipc-filelock.ali deleted file mode 100644 index 447ea88..0000000 --- a/obj/gnatprove/phase1/ipc-filelock.ali +++ /dev/null @@ -1,621 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U ipc.filelock%b ipc-filelock.adb 447f0202 OO PK IU -W ipc%s ipc.ads ipc.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W scheduler%s scheduler.adb scheduler.ali - -U ipc.filelock%s ipc-filelock.ads 3c28d1be OO PK IU -W interfaces%s interfac.ads interfac.ali -W ipc%s ipc.ads ipc.ali -W userland%s userland.ads userland.ali -W userland.process%s userland-process.adb userland-process.ali -W vfs%s vfs.adb vfs.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-filelock.ads 20250222165738 69934e3c ipc.filelock%s -D ipc-filelock.adb 20250222165738 d01080ee ipc.filelock%b -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 7 interfac.ads -38K9*Interfaces 233e15 10|17w6 17r28 -84M9*Unsigned_64 10|36r30 37r30 54r23 55r23 71r23 72r23 89r20 90r20 106r23 -. 107r23 11|24r18 25r18 38r30 39r30 62r23 63r23 100r23 101r23 161r23 162r23 -X 8 ipc.ads -17K9*IPC 18e8 10|21r9 111r5 11|20r14 185r5 -X 10 ipc-filelock.ads -21K13*FileLock 8|17k9 10|111l9 111e17 11|20b18 185l9 185t17 -33U14*Could_Acquire_Lock 34>8 35>8 36=8 37=8 38=8 39=8 40<8 11|35b14 57l8 -. 57t26 -34i8 Acquired_FS{26|74I9} 11|36b8 48r11 -35m8 Acquired_Ino{26|28M9} 11|37b8 48r24 -36m8 Start{7|84M9} 11|38b8 48r38 51m10 -37m8 Length{7|84M9} 11|39b8 48r45 52m10 -38i8 Acquirer{25|33I9} 11|40b8 53m10 -39b8 Is_Write{boolean} 11|41b8 48r53 54m10 -40b8 Success{boolean} 11|42b8 49m24 50r14 -51U14*Acquire_Lock 52>8 53>8 54>8 55>8 56>8 57>8 58>8 59<8 11|59b14 95l8 -. 95t20 -52i8 Acquired_FS{26|74I9} 11|60b8 74r14 80r33 -53m8 Acquired_Ino{26|28M9} 11|61b8 74r27 81r33 -54m8 Start{7|84M9} 11|62b8 74r41 82r33 -55m8 Length{7|84M9} 11|63b8 74r48 83r33 -56i8 Acquirer{25|33I9} 11|64b8 84r33 -57b8 Is_Write{boolean} 11|65b8 74r56 85r33 -58b8 Is_Blocking{boolean} 11|66b8 92r24 -59b8 Success{boolean} 11|67b8 75m27 76r13 77m13 86m19 92r39 -68U14*Release_Lock 69>8 70>8 71>8 72>8 73>8 74<8 11|97b14 110l8 110t20 -69i8 Acquired_FS{26|74I9} 11|98b8 109r21 -70m8 Acquired_Ino{26|28M9} 11|99b8 109r34 -71m8 Start{7|84M9} 11|100b8 105r28 -72m8 Length{7|84M9} 11|101b8 106r28 -73i8 Acquirer{25|33I9} 11|102b8 107r28 -74b8 Success{boolean} 11|103b8 109m48 -80U14*Release_Lock 81>8 82>8 83<8 11|109s7 112b14 131l8 131t20 -81i8 Acquired_FS{26|74I9} 11|113b8 122r20 -82m8 Acquired_Ino{26|28M9} 11|114b8 123r21 -83b8 Success{boolean} 11|115b8 119m7 126m13 -86R9*Lock_Info 93e14 94r49 -87i7*Acquirer{25|33I9} 11|145m20 -88b7*Is_Writing{boolean} 11|146m20 -89m7*Start{7|84M9} 11|147m20 -90m7*Length{7|84M9} 11|148m20 -91i7*FS{26|74I9} 11|149m20 -92m7*Ino{26|28M9} 11|150m20 -94A9*Lock_Arr(86R9) 99r37 11|133r37 -99U14*List_All 99<24 99<47 11|133b14 156l8 156t16 -99a24 Buffer{94A9} 11|133b24 136m7 143r29 144m16 144r24 -99i47 Length{natural} 11|133b47 137m7 142m13 142r23 -103U14 Inner_Could_Acquire 104>8 105>8 106>8 107>8 108>8 109<8 110<8 11|47s7 -. 73s10 158b14 184l8 184t27 -104i8 Acquired_FS{26|74I9} 11|159b8 172r32 -105m8 Acquired_Ino{26|28M9} 11|160b8 173r32 -106m8 Start{7|84M9} 11|161b8 176r39 -107m8 Length{7|84M9} 11|162b8 176r72 -108b8 Is_Write{boolean} 11|163b8 175r41 -109i8 Conflicting{natural} 11|164b8 169m7 178m16 -110b8 Success{boolean} 11|165b8 168m7 179m16 -X 11 ipc-filelock.adb -21R9 Lock_Inner 28e14 29r46 -22i7*FS{26|74I9} 80m21 122r15 149r47 172r26 -23m7*Ino{26|28M9} 81m21 123r15 150r47 173r26 -24m7*Start{7|84M9} 51r45 82m21 147r47 176r30 -25m7*Length{7|84M9} 52r45 83m21 148r47 176r62 -26i7*Acquirer{25|33I9} 53r45 79r21 84m21 121r15 125m15 141r26 145r47 171r26 -27b7*Is_Write{boolean} 54r45 85m21 146r47 175r29 -29A9 Lock_Inner_Arr(21R9) 32r32 -31r4 Registry_Mutex{15|22R9} 46m34 46r34 56m36 56r36 72m37 72r37 91m39 91r39 -. 118m34 118r34 130m36 130r36 139m34 139r34 155m36 155r36 -32a4 Registry{29A9} 51r22 52r22 53r22 54r22 78r22 79r19 80m19 81m19 82m19 -. 83m19 84m19 85m19 120r16 121r13 122r13 123r13 125m13 140r16 141r13 145r34 -. 146r34 147r34 148r34 149r34 150r34 170r16 171r13 172r13 173r13 175r16 176r17 -. 176r49 -44i7 Conflicting{natural} 49m11 51r32 52r32 53r32 54r32 -69i7 Conflicting{natural} 75m14 -78r17 L=78:22{21R9} -120r11 L=120:16{21R9} -134i7 Curr_Index{natural} 143r16 144r39 151m16 151r30 -140i11 I{integer} 141r23 145r44 146r44 147r44 148r44 149r44 150r44 -170i11 I{integer} 171r23 172r23 173r23 175r26 176r27 176r59 178r31 -X 14 lib.ads -19K9*Lib 11|17r6 17r31 46r7 56r7 72r10 91r10 118r7 130r7 139r7 155r7 14|35e8 -X 15 lib-synchronization.ads -20K13*Synchronization 11|17w10 17r35 46r11 56r11 72r14 91r14 118r11 130r11 -. 139r11 155r11 15|66e24 -22R9*Binary_Semaphore 11|31r29 15|57e14 -23r4*Unlocked_Semaphore{22R9} 11|31r49 -27U14*Seize 11|46s27 72s30 118s27 139s27 -31U14*Release 11|56s27 91s30 130s27 155s27 -X 18 scheduler.ads -25K9*Scheduler 11|18w6 93r10 18|183e14 -74U14*Yield_If_Able 11|93s20 -X 22 userland.ads -17K9*Userland 10|19r6 19r28 38r30 56r23 73r23 11|26r18 40r30 64r23 102r23 -. 22|23e13 -X 25 userland-process.ads -28K18*Process 10|19w15 19r37 38r39 56r32 73r32 11|26r27 40r39 64r32 102r32 -. 25|677e21 -33I9*PID 10|38r47 56r40 73r40 87r20 11|26r35 40r47 64r40 102r40 -34i4*Error_PID{33I9} 11|33r46 79r32 121r27 125r27 136r29 141r38 171r38 -X 26 vfs.ads -24K9*VFS 10|18w6 18r28 34r23 35r23 52r23 53r23 69r23 70r23 81r23 82r23 91r20 -. 92r20 104r23 105r23 11|22r18 23r18 33r19 36r23 37r23 60r23 61r23 98r23 -. 99r23 113r23 114r23 136r53 159r23 160r23 26|674e8 -28M9*File_Inode_Number<7|84M9> 10|35r27 53r27 70r27 82r27 92r24 105r27 11|23r22 -. 37r27 61r27 99r27 114r27 160r27 -74I9*FS_Handle 10|34r27 52r27 69r27 81r27 91r24 104r27 11|22r22 -. 36r27 60r27 98r27 113r27 159r27 -75i4*Error_Handle{74I9} 11|33r23 136r57 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___ipc__filelock__could_acquire_lock 3 ada___ipc__filelock__inner_could_acquire ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__could_acquire_lock 0 -GG EK_GLOBALS ada___ipc__filelock__could_acquire_lock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 1 ada___ipc__filelock__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 1 ada___ipc__filelock__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__filelock__acquire_lock 4 ada___ipc__filelock__inner_could_acquire ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able -GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__acquire_lock 0 -GG EK_GLOBALS ada___ipc__filelock__acquire_lock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__filelock__release_lock 1 ada___ipc__filelock__release_lock__2 -GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__release_lock 0 -GG EK_GLOBALS ada___ipc__filelock__release_lock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__filelock__release_lock__2 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__release_lock__2 0 -GG EK_GLOBALS ada___ipc__filelock__release_lock__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__filelock__list_all 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__list_all 0 -GG EK_GLOBALS ada___ipc__filelock__list_all local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry proper_output 1 ada___ipc__filelock__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_output 1 ada___ipc__filelock__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__filelock__inner_could_acquire 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__filelock__inner_could_acquire 0 -GG EK_GLOBALS ada___ipc__filelock__inner_could_acquire local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__filelock ipc proper_proof_in 0 proper_input 1 ada___ipc__filelock__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___ipc__filelock__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___ipc__filelock__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__filelock 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__filelock 0 -GG EK_GLOBALS ada___ipc__filelock local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry refined_initializes 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___ipc__filelock__registry_mutex ada___ipc__filelock__registry TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___ipc__filelock__could_acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___ipc__filelock__list_all FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__inner_could_acquire FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-filelock.cswi b/obj/gnatprove/phase1/ipc-filelock.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/ipc-filelock.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-futex.adb.stderr b/obj/gnatprove/phase1/ipc-futex.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-futex.adb.stdout b/obj/gnatprove/phase1/ipc-futex.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-futex.ali b/obj/gnatprove/phase1/ipc-futex.ali deleted file mode 100644 index 8c8bfc9..0000000 --- a/obj/gnatprove/phase1/ipc-futex.ali +++ /dev/null @@ -1,358 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U ipc.futex%b ipc-futex.adb 1529e641 OO PK IU -W arch%s arch.ads arch.ali -W arch.clocks%s arch-clocks.adb arch-clocks.ali -W ipc%s ipc.ads ipc.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W lib.time%s lib-time.adb lib-time.ali -W scheduler%s scheduler.adb scheduler.ali - -U ipc.futex%s ipc-futex.ads 759f3969 OO PK IU -W interfaces%s interfac.ads interfac.ali -W ipc%s ipc.ads ipc.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-futex.ads 20250222165738 e719aab2 ipc.futex%s -D ipc-futex.adb 20250222165738 c8a21bed ipc.futex%b -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D lib-time.ads 20250222165738 30059be5 lib.time%s -D memory.ads 20250222165738 335640bf memory%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 10|19r6 72r7 87r10 -X 2 arch-clocks.ads -19K14*Clocks 45e16 10|19w11 72r12 87r15 -31U14*Get_Monotonic_Time 10|72s19 87s22 -X 7 interfac.ads -38K9*Interfaces 233e15 9|17w6 17r22 -81M9*Unsigned_32 9|29r25 30r18 10|24r28 26r21 -84M9*Unsigned_64 9|41r22 42r22 10|35r22 36r22 38r52 -X 8 ipc.ads -17K9*IPC 18e8 9|19r9 47r5 10|22r14 109r5 -X 9 ipc-futex.ads -19K13*Futex 8|17k9 9|47l9 47e14 10|22b18 109l9 109t14 -28R9*Element 31e14 32r52 -29p7*Key(7|81M9) 10|43r22 49r44 58r53 102r37 -30m7*Expected{7|81M9} 10|43r42 -32A9*Element_Arr(28R9) 40r22 46r27 10|34r22 97r27 -39V13*Wait{boolean} 40>8 41>8 42>8 10|33b13 95l8 95t12 -40a8 Keys{32A9} 10|34b8 39r25 42r16 43r13 43r33 49r35 58r44 -41m8 Max_Seconds{7|84M9} 10|35b8 73r50 -42m8 Max_Nanos{7|84M9} 10|36b8 73r63 -46U14*Wake 46>20 10|97b14 108l8 108t12 -46a20 Keys{32A9} 10|97b20 99r16 102r35 -X 10 ipc-futex.adb -23R9 Futex_Inner 27e14 28r41 -24p7*Key(7|81M9) 49r29 56r29 58m29 80m29 102r29 -25b7*Wakey_Wakey{boolean} 59m29 77r26 103m29 -26m7*Waiters{7|81M9} 51m29 51r53 60m29 78m26 78r50 79r29 -28A9 Futex_Arr(23R9) 31r36 -30r4 Registry_Mutex{12|22R9} 47m37 47r37 65m39 65r39 68m39 68r39 76m37 76r37 -. 82m42 82r42 85m39 85r39 100m37 100r37 106m39 106r39 -31a4 Registry{28A9} 48r19 49r16 51m16 51r40 55r19 56r16 58m16 59m16 60m16 -. 77r13 78m13 78r37 79r16 80m16 101r19 102r16 103m16 -38m7 Curr_Sec{7|84M9} 87m42 89r14 -38m17 Curr_NSec{7|84M9} 87m52 89r24 -38m28 Final_Sec{7|84M9} 72m39 73m27 73r27 89r35 -38m39 Final_NSec{7|84M9} 72m50 73m38 73r38 89r46 -39a7 Idx(natural) 50m16 57m16 75r16 77r23 78r23 78r47 79r26 80r26 -42i11 I{integer} 43r19 43r39 49r41 50r21 57r21 58r50 -48i14 J{integer} 49r26 50r27 51r26 51r50 -55i14 J{integer} 56r26 57r27 58r26 59r26 60r26 -67L9 End_Of_Iter 52r21 61r21 -75i11 I=75:16{natural} -99r11 K=99:16{9|28R9} -101i14 I{integer} 102r26 103r26 -X 11 lib.ads -19K9*Lib 10|18r6 18r31 20r6 47r10 65r10 68r10 73r7 76r10 82r13 85r10 88r20 -. 100r10 106r10 11|35e8 -X 12 lib-synchronization.ads -20K13*Synchronization 10|18w10 18r35 47r14 65r14 68r14 76r14 82r17 85r14 -. 100r14 106r14 12|66e24 -22R9*Binary_Semaphore 10|30r29 12|57e14 -23r4*Unlocked_Semaphore{22R9} 10|30r49 -27U14*Seize 10|47s30 76s30 100s30 -31U14*Release 10|65s30 68s30 82s33 85s30 106s30 -X 13 lib-time.ads -19K13*Time 10|20w10 73r11 88r24 13|77e13 -37U14*Increment 10|73s16 -63V13*Is_Greater_Equal{boolean} 10|88s29 -X 15 scheduler.ads -25K9*Scheduler 10|17w6 91r10 15|183e14 -74U14*Yield_If_Able 10|91s20 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___ipc__futex__wait 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__futex__wait 0 -GG EK_GLOBALS ada___ipc__futex__wait local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__futex ipc proper_proof_in 0 proper_input 3 ada___ipc__futex__registry_mutex ada___ipc__futex__registry __HEAP proper_output 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry refined_proof_in 0 refined_input 3 ada___ipc__futex__registry_mutex ada___ipc__futex__registry __HEAP refined_output 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry calls_proof 0 calls 0 calls_conditional 6 scheduler__yield_if_able ada___lib__synchronization__seize ada___lib__synchronization__release ada___arch__clocks__get_monotonic_time ada___lib__time__increment ada___lib__time__is_greater_equal TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__futex__wake 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__futex__wake 0 -GG EK_GLOBALS ada___ipc__futex__wake local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__futex ipc proper_proof_in 0 proper_input 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry proper_output 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry refined_proof_in 0 refined_input 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry refined_output 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__futex__registry_mutex ada___ipc__futex__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__futex 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__futex 0 -GG EK_GLOBALS ada___ipc__futex local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___ipc__futex TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__futex__wait FALSE FALSE FALSE FALSE TRUE ada___ipc__futex VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__futex__wake FALSE FALSE FALSE FALSE TRUE ada___ipc__futex VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-futex.cswi b/obj/gnatprove/phase1/ipc-futex.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/ipc-futex.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-pty.adb.stderr b/obj/gnatprove/phase1/ipc-pty.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-pty.adb.stdout b/obj/gnatprove/phase1/ipc-pty.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-pty.ali b/obj/gnatprove/phase1/ipc-pty.ali deleted file mode 100644 index 6887c25..0000000 --- a/obj/gnatprove/phase1/ipc-pty.ali +++ /dev/null @@ -1,642 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_DEALLOCATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U ipc.pty%b ipc-pty.adb 31bc106c OO PK IU -W ada%s ada.ads ada.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W interfaces%s interfac.ads interfac.ali -W ipc%s ipc.ads ipc.ali -W lib%s lib.adb lib.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W scheduler%s scheduler.adb scheduler.ali - -U ipc.pty%s ipc-pty.ads e51b3842 OO PK IU -W arch%s arch.ads arch.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W devices%s devices.adb devices.ali -W devices.termios%s devices-termios.ads devices-termios.ali -W ipc%s ipc.ads ipc.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-pty.adb 20250222165738 2690cc5d ipc.pty%b -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 13|17r6 25r26 -X 2 a-uncdea.ads -20u15*Unchecked_Deallocation 13|17w10 25r30 -X 3 arch.ads -20K9*Arch 52e9 12|19r6 161r46 162r56 -X 7 arch-mmu.ads -22K14*MMU 250e13 12|19w11 161r51 162r61 -49N7*Page_Size 12|161r55 162r65 -X 8 devices.ads -22K9*Devices 279e12 12|17r6 52r24 60r20 68r24 76r20 113r50 117r46 121r50 -. 125r46 162r27 174r28 175r28 192r26 201r22 13|33r24 78r24 92r20 106r24 120r20 -. 190r50 197r46 205r50 212r46 320r26 379r22 -29A9*Operation_Data(10|70M9) 12|52r32 60r28 68r32 76r28 162r35 192r34 -. 201r30 13|78r32 92r28 106r32 120r28 320r34 379r30 -X 9 devices-termios.ads -17K17*TermIOs 81e20 12|17w14 113r58 117r54 121r58 125r54 174r36 175r36 13|33r32 -. 190r58 197r54 205r58 212r54 -20R9*Local_Modes 31e15 13|33r40 -44R9*Main_Data 52e15 12|113r66 117r62 174r44 13|190r66 197r62 -54R9*Win_Size 59e14 12|121r66 125r62 175r44 13|205r66 212r62 -X 10 interfac.ads -38K9*Interfaces 233e15 13|20w6 20r22 -70M9*Unsigned_8 -81M9*Unsigned_32 13|225r27 -X 11 ipc.ads -17K9*IPC 18e8 12|21r9 203r5 13|22r14 426r5 -X 12 ipc-pty.ads -21K13*PTY 11|17k9 12|203l9 203e12 13|22b18 426l9 426t12 -36R9*Inner 37r29 163c9 182e14 13|25r54 40r18 -37P9*Inner_Acc(36R9) 43r27 47r37 51r20 59r20 67r20 75r20 83r20 91r20 97r39 -. 101r40 105r41 109r42 113r31 117r31 121r31 125r31 129r28 133r33 137r35 141r33 -. 145r35 149r32 153r34 157r27 184r27 13|25r61 31r27 61r37 77r20 91r20 105r20 -. 119r20 133r20 151r20 162r39 169r40 176r41 183r42 190r31 197r31 205r31 212r31 -. 220r28 234r33 250r35 266r33 278r35 290r32 302r34 -40E9*Status 40e49 54r24 62r24 70r24 78r24 13|80r24 94r24 108r24 122r24 -40n20*PTY_Success{40E9} 13|87r18 101r18 115r18 129r18 -40n33*PTY_Would_Block{40E9} -43V13*Create{37P9} 13|31b13 59l8 59t14 -47U14*Close 47=21 13|61b14 74l8 74t13 -47p21 Closed{37P9} 47r70 13|61b21 63r34 64r34 65r34 66r10 67m16 69r10 70r39 -. 71r39 72r39 -50U14*Read_Primary 51>8 52<8 53<8 54<8 13|76b14 88l8 88t20 -51p8 To_Read{37P9} 55r29 13|77b8 84r11 84r41 85r11 85r40 86r11 -52a8 Data{8|29A9} 13|78b8 86m33 -53i8 Ret_Count{natural} 13|79b8 86m39 -54e8 Success{40E9} 13|80b8 87m7 -58U14*Write_Primary 59>8 60>8 61<8 62<8 13|90b14 102l8 102t21 -59p8 To_Write{37P9} 63r29 13|91b8 98r11 98r44 99r11 99r43 100r11 -60a8 Data{8|29A9} 13|92b8 100r38 -61i8 Ret_Count{natural} 13|93b8 100m44 -62e8 Success{40E9} 13|94b8 101m7 -66U14*Read_Secondary 67>8 68<8 69<8 70<8 13|104b14 116l8 116t22 -67p8 To_Read{37P9} 71r29 13|105b8 112r11 112r43 113r11 113r42 114r11 -68a8 Data{8|29A9} 13|106b8 114m35 -69i8 Ret_Count{natural} 13|107b8 114m41 -70e8 Success{40E9} 13|108b8 115m7 -74U14*Write_Secondary 75>8 76>8 77<8 78<8 13|118b14 130l8 130t23 -75p8 To_Write{37P9} 79r29 13|119b8 126r11 126r42 127r11 127r41 128r11 -76a8 Data{8|29A9} 13|120b8 128r40 -77i8 Ret_Count{natural} 13|121b8 128m46 -78e8 Success{40E9} 13|122b8 129m7 -82U14*Poll_Primary 83>8 84<8 85<8 86<8 13|132b14 148l8 148t20 -83p8 P{37P9} 87r29 13|133b8 139r34 140r19 141r7 142r36 144r34 145r20 146r20 -. 146r40 147r36 -84b8 Can_Read{boolean} 13|134b8 145m7 -85b8 Can_Write{boolean} 13|135b8 146m7 -86b8 Can_Prio{boolean} 13|136b8 140m7 -90U14*Poll_Secondary 91>8 92<8 93<8 13|150b14 160l8 160t22 -91p8 P{37P9} 94r29 13|151b8 156r34 157r20 158r20 158r42 159r36 -92b8 Can_Read{boolean} 13|152b8 157m7 -93b8 Can_Write{boolean} 13|153b8 158m7 -97U14*Is_Primary_Blocking 97>35 97<50 13|162b14 167l8 167t27 -97p35 P{37P9} 98r29 13|162b35 164r34 165r19 166r36 -97b50 Blocking{boolean} 13|162b50 165m7 -101U14*Set_Primary_Blocking 101>36 101>51 13|169b14 174l8 174t28 -101p36 P{37P9} 102r29 13|169b36 171r34 172r7 173r36 -101b51 Blocking{boolean} 13|169b51 172r26 -105U14*Is_Secondary_Blocking 105>37 105<52 13|176b14 181l8 181t29 -105p37 P{37P9} 106r29 13|176b37 178r34 179r19 180r36 -105b52 Blocking{boolean} 13|176b52 179m7 -109U14*Set_Secondary_Blocking 109>38 109>53 13|183b14 188l8 188t30 -109p38 P{37P9} 110r29 13|183b38 185r34 186r7 187r36 -109b53 Blocking{boolean} 13|183b53 186r28 -113U14*Get_TermIOs 113>27 113<42 13|190b14 195l8 195t19 -113p27 P{37P9} 114r29 13|190b27 192r34 193r12 194r36 -113r42 T{9|44R9} 13|190b42 193m7 -117U14*Set_TermIOs 117>27 117>42 13|197b14 203l8 203t19 -117p27 P{37P9} 118r29 13|197b27 199r34 200r7 201r7 202r36 -117r42 T{9|44R9} 13|197b42 200r22 -121U14*Get_WinSize 121>27 121<42 13|205b14 210l8 210t19 -121p27 P{37P9} 122r29 13|205b27 207r34 208r12 209r36 -121r42 W{9|54R9} 13|205b42 208m7 -125U14*Set_WinSize 125>27 125>42 13|212b14 218l8 218t19 -125p27 P{37P9} 126r29 13|212b27 214r34 215r7 216r7 217r36 -125r42 W{9|54R9} 13|212b42 215r22 -129U14*Get_Name 129>24 129<39 129<57 13|220b14 232l8 232t16 -129p24 P{37P9} 130r29 13|220b24 225r40 -129a39 Str{string} 13|220b39 227r10 228m10 228r15 228r28 229m10 229r15 229r47 -129i57 Len{natural} 13|220b57 226m7 227r24 229r59 -133U14*Flush_Primary 133>29 133>44 133>53 13|234b14 248l8 248t21 -133p29 P{37P9} 134r29 13|234b29 237r37 238r10 239r10 240r39 243r37 244r10 -. 245r10 246r39 -133b44 To_Read{boolean} 13|234b44 236r10 -133b53 To_Transmit{boolean} 13|234b53 242r10 -137U14*Flush_Secondary 137>31 137>46 137>55 13|250b14 264l8 264t23 -137p31 P{37P9} 138r29 13|250b31 253r37 254r10 255r10 256r39 259r37 260r10 -. 261r10 262r39 -137b46 To_Read{boolean} 13|250b46 252r10 -137b55 To_Transmit{boolean} 13|250b55 258r10 -141U14*Start_Primary 141>29 141>44 141>53 13|266b14 276l8 276t21 -141p29 P{37P9} 142r29 13|266b29 268r34 270r10 273r10 275r36 -141b44 To_Read{boolean} 13|266b44 269r10 -141b53 To_Transmit{boolean} 13|266b53 272r10 -145U14*Start_Secondary 145>31 145>46 145>55 13|278b14 288l8 288t23 -145p31 P{37P9} 146r29 13|278b31 280r34 282r10 285r10 287r36 -145b46 To_Read{boolean} 13|278b46 281r10 -145b55 To_Transmit{boolean} 13|278b55 284r10 -149U14*Stop_Primary 149>28 149>43 149>52 13|290b14 300l8 300t20 -149p28 P{37P9} 150r29 13|290b28 292r34 294r10 297r10 299r36 -149b43 To_Read{boolean} 13|290b43 293r10 -149b52 To_Transmit{boolean} 13|290b52 296r10 -153U14*Stop_Secondary 153>30 153>45 153>54 13|302b14 312l8 312t22 -153p30 P{37P9} 154r29 13|302b30 304r34 306r10 309r10 311r36 -153b45 To_Read{boolean} 13|302b45 305r10 -153b54 To_Transmit{boolean} 13|302b54 308r10 -157V13*Is_Valid{boolean} 47s60 55s19 63s19 71s19 79s19 87s19 94s19 98s19 -. 102s19 106s19 110s19 114s19 118s19 122s19 126s19 130s19 134s19 138s19 142s19 -. 146s19 150s19 154s19 157>23 184b13 -157p23 P{37P9} 184r57 -161I12 Data_Length{natural} 178r36 179r36 188r29 197r29 13|316r29 375r29 -162A12 TTY_Data{8|29A9} 180r36 181r36 189r29 198r29 13|317r29 376r29 -164r7*Primary_Mutex{16|22R9} 13|41m11 63m41 70m46 84m19 126m20 144m36 147m38 -. 164m36 166m38 171m36 173m38 237m39 240m41 259m39 262m41 -165r7*Secondary_Mutex{16|22R9} 13|42m11 64m41 71m46 98m20 112m19 156m36 159m38 -. 178m36 180m38 185m36 187m38 243m39 246m41 253m39 256m41 -166r7*Global_Data_Mutex{16|22R9} 13|43m11 65m41 72m46 139m36 142m38 192m36 -. 194m38 199m36 202m38 207m36 209m38 214m36 217m38 268m36 275m38 280m36 287m38 -. 292m36 299m38 304m36 311m38 -167b7*Primary_Block{boolean} 13|44m11 85r48 99r52 165r21 172m9 -168b7*Secondary_Block{boolean} 13|45m11 113r50 127r50 179r21 186m9 -169b7*Primary_Read{boolean} 13|46m11 86r19 270m12 294m12 -170b7*Primary_Transmit{boolean} 13|47m11 100r20 273m12 297m12 -171b7*Secondary_Read{boolean} 13|48m11 114r19 282m12 306m12 -172b7*Secondary_Transmit{boolean} 13|49m11 128r20 285m12 309m12 -173i7*Name_Index{natural} 13|50m11 225r42 -174r7*Term_Info{9|44R9} 13|51m11 193r14 200m9 -175r7*Term_Size{9|54R9} 13|52m11 208r14 215m9 -176b7*Was_Closed{boolean} 13|53m11 66r17 69m17 -177b7*Termios_Changed{boolean} 13|54m11 140r21 141m9 201m9 216m9 -178i7*Primary_Length{161I12} 13|55m11 84m49 126m51 145r22 146r22 239m12 261m12 -179i7*Secondary_Length{161I12} 13|56m11 98m53 112m51 157r22 158r22 245m12 -. 255m12 -180a7*Primary_Data{162A12} 13|57m11 85m19 127m20 146r42 238m12 260m12 -181a7*Secondary_Data{162A12} 13|58m11 99m20 113m19 158r44 244m12 254m12 -186U14 Read_From_End 187^8 188^8 189^8 190>8 191>8 192<8 193<8 13|83s7 111s7 -. 314b14 371l8 371t21 -187p8 End_Mutex(16|22R9) 13|315b8 333r43 335r45 340r37 343r42 370r36 -188p8 Inner_Len(161I12) 13|316b8 332r16 334r26 341r13 348r24 349r23 363r13 -. 364r13 364r30 -189p8 Inner_Data(162A12) 13|317b8 358r10 360r19 360r39 361r13 361r31 -190b8 Is_Blocking{boolean} 13|318b8 330r10 -191b8 Is_Able_To{boolean} 13|319b8 325r14 -192a8 Data{8|29A9} 13|320b8 324m7 348r10 351r23 353r10 354r38 357m7 357r13 -. 357r27 -193i8 Ret_Count{natural} 13|321b8 326m10 342m13 349m10 351m10 353r38 354m10 -. 357r40 358r27 359r21 -195U14 Write_To_End 196^8 197^8 198^8 199>8 200>8 201>8 202<8 13|97s7 125s7 -. 373b14 425l8 425t20 -196p8 End_Mutex(16|22R9) 13|374b8 392r43 394r45 399r37 402r42 424r36 -197p8 Inner_Len(161I12) 13|375b8 391r16 393r26 400r13 408r44 411r43 413r19 -. 418r19 421r19 423r7 -198p8 Inner_Data(162A12) 13|376b8 391r33 393r43 407r24 408r24 410r19 411r23 -. 421r7 -199b8 Is_Blocking{boolean} 13|377b8 389r10 -200b8 Is_Able_To{boolean} 13|378b8 384r14 -201a8 Data{8|29A9} 13|379b8 400r29 407r10 408r10 413r35 414r23 416r10 417r38 -. 422r10 422r16 422r30 -202i8 Ret_Count{natural} 13|380b8 385m10 401m13 411m10 414m10 416r38 417m10 -. 418r35 422r43 -X 13 ipc-pty.adb -25U14 Free[2|20] -25U14*Free[2|20] 67s10 -27r4 Tracked_Lock{16|22R9} 35m34 35r34 38m36 38r36 -29i4 Tracked_Name{natural} 36r21 37m7 37r23 -32i7 Name_Index{natural} 36m7 50r33 -33r7 Modes{9|20R9} 51r43 -221a7 Root_Name{string} 226r14 228r40 228r65 229r27 -222a7 Buffer{15|55A12} 225m55 230r13 230r21 230r53 -223i7 Buffer_Len{natural} 225m63 226r33 230r35 -359i11 I{integer} -360i14 J{integer} 361r25 361r43 -382i7 Final{natural} 410m10 413m10 418m10 421r40 423r24 -18P9*Name{12|37P9} 20r50[25] -20p39 X{12|37P9} 21r15[25] 22r23[25] 23r11[25] -X 14 lib.ads -19K9*Lib 12|18r6 164r36 165r36 166r36 187r29 196r29 13|19r6 27r27 28r7 35r7 -. 38r7 41r33 42r33 43r33 63r7 64r7 65r7 70r10 71r10 72r10 139r7 142r7 144r7 -. 147r7 156r7 159r7 164r7 166r7 171r7 173r7 178r7 180r7 185r7 187r7 192r7 -. 194r7 199r7 202r7 207r7 209r7 214r7 217r7 222r20 225r7 237r10 240r10 243r10 -. 246r10 253r10 256r10 259r10 262r10 268r7 275r7 280r7 287r7 292r7 299r7 -. 304r7 311r7 315r29 333r16 335r16 340r10 343r13 370r7 374r29 392r16 394r16 -. 399r10 402r13 424r7 14|35e8 -X 15 lib-messages.ads -21K13*Messages 13|19w10 222r24 225r11 15|103e17 -55A12*Translated_String{string} 13|222r33 -63U14*Image 13|225s20 -X 16 lib-synchronization.ads -20K13*Synchronization 12|18w10 164r40 165r40 166r40 187r33 196r33 13|27r31 -. 28r11 35r11 38r11 41r37 42r37 43r37 63r11 64r11 65r11 70r14 71r14 72r14 -. 139r11 142r11 144r11 147r11 156r11 159r11 164r11 166r11 171r11 173r11 178r11 -. 180r11 185r11 187r11 192r11 194r11 199r11 202r11 207r11 209r11 214r11 217r11 -. 237r14 240r14 243r14 246r14 253r14 256r14 259r14 262r14 268r11 275r11 280r11 -. 287r11 292r11 299r11 304r11 311r11 315r33 333r20 335r20 340r14 343r17 370r11 -. 374r33 392r20 394r20 399r14 402r17 424r11 16|66e24 -22R9*Binary_Semaphore 12|164r56 165r56 166r56 187r49 196r49 13|27r47 315r49 -. 374r49 16|57e14 -23r4*Unlocked_Semaphore{22R9} 13|28r27 41r53 42r53 43r53 -27U14*Seize 13|35s27 63s27 64s27 65s27 139s27 144s27 156s27 164s27 171s27 -. 178s27 185s27 192s27 199s27 207s27 214s27 237s30 243s30 253s30 259s30 268s27 -. 280s27 292s27 304s27 333s36 340s30 392s36 399s30 -31U14*Release 13|38s27 70s30 71s30 72s30 142s27 147s27 159s27 166s27 173s27 -. 180s27 187s27 194s27 202s27 209s27 217s27 240s30 246s30 256s30 262s30 275s27 -. 287s27 299s27 311s27 335s36 343s33 370s27 394s36 402s33 424s27 -X 18 scheduler.ads -25K9*Scheduler 13|18w6 337r13 396r13 18|183e14 -74U14*Yield_If_Able 13|337s23 396s23 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___ipc__pty__create 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__create 0 -GG EK_GLOBALS ada___ipc__pty__create local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name proper_output 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name refined_proof_in 0 refined_input 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name refined_output 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__close 4 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release ada___ipc__pty__free -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__close 0 -GG EK_GLOBALS ada___ipc__pty__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__read_primary 1 ada___ipc__pty__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__read_primary 1 ada___ipc__pty__is_valid -GG EK_GLOBALS ada___ipc__pty__read_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__write_primary 1 ada___ipc__pty__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__write_primary 1 ada___ipc__pty__is_valid -GG EK_GLOBALS ada___ipc__pty__write_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__read_secondary 1 ada___ipc__pty__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__read_secondary 1 ada___ipc__pty__is_valid -GG EK_GLOBALS ada___ipc__pty__read_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__write_secondary 1 ada___ipc__pty__is_valid -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__write_secondary 1 ada___ipc__pty__is_valid -GG EK_GLOBALS ada___ipc__pty__write_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__poll_primary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__poll_primary 0 -GG EK_GLOBALS ada___ipc__pty__poll_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__poll_secondary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__poll_secondary 0 -GG EK_GLOBALS ada___ipc__pty__poll_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__is_primary_blocking 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__is_primary_blocking 0 -GG EK_GLOBALS ada___ipc__pty__is_primary_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__set_primary_blocking 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__set_primary_blocking 0 -GG EK_GLOBALS ada___ipc__pty__set_primary_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__is_secondary_blocking 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__is_secondary_blocking 0 -GG EK_GLOBALS ada___ipc__pty__is_secondary_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__set_secondary_blocking 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__set_secondary_blocking 0 -GG EK_GLOBALS ada___ipc__pty__set_secondary_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__get_termios 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__get_termios 0 -GG EK_GLOBALS ada___ipc__pty__get_termios local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__set_termios 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__set_termios 0 -GG EK_GLOBALS ada___ipc__pty__set_termios local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__get_winsize 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__get_winsize 0 -GG EK_GLOBALS ada___ipc__pty__get_winsize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__set_winsize 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__set_winsize 0 -GG EK_GLOBALS ada___ipc__pty__set_winsize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__get_name 2 ada___ipc__pty__is_valid ada___lib__messages__image -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__get_name 0 -GG EK_GLOBALS ada___ipc__pty__get_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___lib__messages__image calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__flush_primary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__flush_primary 0 -GG EK_GLOBALS ada___ipc__pty__flush_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__flush_secondary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__flush_secondary 0 -GG EK_GLOBALS ada___ipc__pty__flush_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__start_primary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__start_primary 0 -GG EK_GLOBALS ada___ipc__pty__start_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__start_secondary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__start_secondary 0 -GG EK_GLOBALS ada___ipc__pty__start_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__stop_primary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__stop_primary 0 -GG EK_GLOBALS ada___ipc__pty__stop_primary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__stop_secondary 3 ada___ipc__pty__is_valid ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__stop_secondary 0 -GG EK_GLOBALS ada___ipc__pty__stop_secondary local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__is_valid 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__is_valid 0 -GG EK_GLOBALS ada___ipc__pty__is_valid local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__read_from_end 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__read_from_end 0 -GG EK_GLOBALS ada___ipc__pty__read_from_end local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__write_to_end 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__write_to_end 0 -GG EK_GLOBALS ada___ipc__pty__write_to_end local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty__free 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__pty__free 0 -GG EK_GLOBALS ada___ipc__pty__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__pty ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__pty 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__pty 0 -GG EK_GLOBALS ada___ipc__pty local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name refined_initializes 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___ipc__pty__tracked_lock ada___ipc__pty__tracked_name TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__pty__freeGP911 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__freeGP911 TRUE FALSE FALSE FALSE TRUE ada___ipc__pty BODY_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-pty.cswi b/obj/gnatprove/phase1/ipc-pty.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/ipc-pty.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-shm.adb.stderr b/obj/gnatprove/phase1/ipc-shm.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-shm.adb.stdout b/obj/gnatprove/phase1/ipc-shm.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-shm.ali b/obj/gnatprove/phase1/ipc-shm.ali deleted file mode 100644 index 97dc477..0000000 --- a/obj/gnatprove/phase1/ipc-shm.ali +++ /dev/null @@ -1,365 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U ipc.shm%b ipc-shm.adb d270d4f6 OO PK IU -W interfaces%s interfac.ads interfac.ali -W interfaces.c%s i-c.adb i-c.ali -W ipc%s ipc.ads ipc.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W memory%s memory.ads memory.ali -W memory.physical%s memory-physical.adb memory-physical.ali -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali - -U ipc.shm%s ipc-shm.ads 743d9457 OO PK IU -W interfaces%s interfac.ads interfac.ali -W ipc%s ipc.ads ipc.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D i-c.ads 20240507065137 aac316ce interfaces.c%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-shm.ads 20250222165738 e6bb078c ipc.shm%s -D ipc-shm.adb 20250222165738 0fa53a76 ipc.shm%b -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s -D system.ads 20240507065137 14286b0f system%s -D s-parame.ads 20240507065137 3597fc11 system.parameters%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 2 interfac.ads -38K9*Interfaces 233e15 5|17w6 17r22 6|20r6 20r24 -81M9*Unsigned_32 5|25r26 30r22 32r22 33r22 40r22 41r22 45r32 61r14 62r14 -. 72r15 73r15 77r21 79r21 80r21 81r21 82r21 6|26r26 27r26 28r26 29r26 30r26 -. 44r22 46r22 47r22 82r22 83r22 112r32 167r14 168r14 207r15 208r15 -84M9*Unsigned_64 5|31r22 34r22 39r22 42r22 49r18 50r22 56r22 57r22 74r15 -. 78r21 83r21 93r41 6|31r26 45r22 48r22 81r22 84r22 127r18 128r22 140r21 -. 150r22 151r22 156r21 157r18 209r15 231r29 245r41 251r28 -X 3 i-c.ads -30K20*C 598e17 6|20w17 20r35 -89M9*size_t 6|70r17 99r23 261r16 -X 4 ipc.ads -17K9*IPC 18e8 5|19r9 98r5 6|23r14 264r5 -X 5 ipc-shm.ads -19K13*SHM 4|17k9 5|98l9 98e12 6|23b18 264l9 264t12 -25M12*Segment_ID{2|81M9} 26r24 34r42 42r42 45r52 51r22 55r18 60r14 64r36 -. 68r38 71r15 88r16 97r41 6|37r31 48r42 50r18 84r42 86r18 112r52 113r18 129r22 -. 149r18 166r14 184r36 194r38 206r15 222r16 257r41 -26m4*Error_ID{25M12} 6|50r32 57r56 86r32 113r32 133r15 -29V13*Create_Segment{25M12} 30>8 31>8 32>8 33>8 34>8 6|43b13 78l8 78t22 -30m8 Wanted_Key{2|81M9} 35r19 6|44b8 54r60 63r34 -31m8 Wanted_Size{2|84M9} 6|45b8 70r25 71r48 -32m8 Creator_UID{2|81M9} 6|46b8 64r40 66r42 -33m8 Creator_GID{2|81M9} 6|47b8 65r40 67r42 -34m8 Mode{2|84M9} 6|48b8 68r35 -38V13*Create_Unkeyed_Segment{25M12} 39>8 40>8 41>8 42>8 6|80b13 110l8 110t30 -39m8 Wanted_Size{2|84M9} 6|81b8 99r31 100r47 -40m8 Creator_UID{2|81M9} 6|82b8 93r39 95r41 -41m8 Creator_GID{2|81M9} 6|83b8 94r39 96r41 -42m8 Mode{2|84M9} 6|84b8 97r34 -45V13*Get_Segment{25M12} 45>26 6|112b13 124l8 124t19 -45m26 Key{2|81M9} 6|112b26 117r60 -48U14*Get_Segment_And_Size 49>8 50<8 51<8 6|126b14 146l8 146t28 -49m8 Address{2|84M9} 6|127b8 138r70 -50m8 Size{2|84M9} 6|128b8 132m7 140m13 -51m8 ID{25M12} 6|129b8 133m7 141m13 -54U14*Get_Address 55>8 56<8 57<8 6|148b14 163l8 163t19 -55m8 ID{25M12} 6|149b8 155r20 156r44 157r41 -56m8 Address{2|84M9} 6|150b8 156m10 159m10 -57m8 Size{2|84M9} 6|151b8 157m10 160m10 -59V13*Check_Permissions{boolean} 60>8 61>8 62>8 6|165b13 182l8 182t25 -60m8 ID{25M12} 6|166b8 173r20 174r36 175r30 176r24 -61m8 UID{2|81M9} 6|167b8 174r20 -62m8 GID{2|81M9} 6|168b8 175r14 -64U14*Mark_Refcounted 64>31 6|184b14 192l8 192t23 -64m31 ID{25M12} 6|184b31 187r20 188r20 189r32 -68U14*Modify_Attachment 68>33 68>50 6|194b14 203l8 203t25 -68m33 ID{25M12} 6|194b33 197r20 198r20 199r23 200r32 -68b50 Increment{boolean} 6|194b50 199r42 -70U14*Modify_Permissions 71>8 72>8 73>8 74>8 6|205b14 219l8 219t26 -71m8 ID{25M12} 6|206b8 213r20 214r20 215r20 216r20 -72m8 UID{2|81M9} 6|207b8 214r37 -73m8 GID{2|81M9} 6|208b8 215r37 -74m8 Mode{2|84M9} 6|209b8 216r32 -76R9*Segment_Information 85e14 89r20 6|223r20 -77m7*Key{2|81M9} 6|230m14 -78m7*Size{2|84M9} 6|231m14 -79m7*Owner_UID{2|81M9} 6|232m14 -80m7*Owner_GID{2|81M9} 6|233m14 -81m7*Creator_UID{2|81M9} 6|234m14 -82m7*Creator_GID{2|81M9} 6|235m14 -83m7*Mode{2|84M9} 6|236m14 -84i7*Refcount{natural} 6|237m14 -87U14*Fetch_Information 88>8 89<8 90<8 6|221b14 243l8 243t25 -88m8 ID{25M12} 6|222b8 228r20 230r39 231r52 232r39 233r39 234r39 235r39 236r39 -. 237r39 -89r8 Info{76R9} 6|223b8 229m10 -90b8 Found{boolean} 6|224b8 238m10 240m10 -93U14*Get_Total_Size 93<30 6|245b14 255l8 255t22 -93m30 Size{2|84M9} 6|245b30 247m7 251m13 251r21 -97U14 Check_And_Maybe_Free 97>36 6|189s10 200s10 257b14 263l8 263t28 -97m36 ID{25M12} 6|257b36 259r20 259r51 260r20 261r34 -X 6 ipc-shm.adb -24R9 Segment_Inner 36e14 37r60 -25b7*Is_Present{boolean} 54r26 57r30 62m27 90r30 91m26 117r26 137r26 155r24 -. 173r24 187r24 197r24 213r24 228r24 250r17 260m24 -26m7*Key{2|81M9} 54r54 63m27 92m26 117r54 230r43 -27m7*Owner_UID{2|81M9} 64m27 93m26 174r40 214m24 232r43 -28m7*Owner_GID{2|81M9} 65m27 94m26 175r34 215m24 233r43 -29m7*Creator_UID{2|81M9} 66m27 95m26 234r43 -30m7*Creator_GID{2|81M9} 67m27 96m26 235r43 -31m7*Mode{2|84M9} 68m27 97m26 176r28 216m24 236r43 -32m7*Physical_Address{9|34M12} 69m27 98m26 138r26 156r48 261r38 -33m7*Size{9|20M9} 71m27 100m26 140r47 157r45 231r56 251r45 -34i7*Refcount{natural} 72m27 101m26 198m24 199r27 237r43 259r24 -35b7*Is_Refcounted{boolean} 73m27 102m26 188m24 259r55 -37A9 Segment_Arr(24R9)<2|81M9> 40r15 -39r4 Registry_Mutex{8|22R9} 52m34 52r34 76m36 76r36 88m34 88r34 108m36 108r36 -. 115m34 115r34 122m36 122r36 135m34 135r34 145m36 145r36 154m34 154r34 162m36 -. 162r36 172m34 172r34 180m36 180r36 186m34 186r34 191m36 191r36 196m34 196r34 -. 202m36 202r36 212m34 212r34 218m36 218r36 227m34 227r34 242m36 242r36 248m34 -. 248r34 254m36 254r36 -40a4 Registry{37A9} 53r16 54r13 54r41 57r17 62m7 63m7 64m7 65m7 66m7 67m7 -. 68m7 69m7 71m7 72m7 73m7 89r16 90r17 91m13 92m13 93m13 94m13 95m13 96m13 -. 97m13 98m13 100m13 101m13 102m13 116r16 117r13 117r41 136r16 137r13 138r13 -. 140r34 155r10 156r34 157r31 173r10 174r26 175r20 176r14 187r10 188m10 197r10 -. 198m10 199r13 213r10 214m10 215m10 216m10 228r10 230r29 231r42 232r29 233r29 -. 234r29 235r29 236r29 237r29 249r18 250r13 251r41 259r10 259r41 260m10 261r24 -50m7 Returned{5|25M12} 57r45 58m13 62r17 63r17 64r17 65r17 66r17 67r17 68r17 -. 69r17 71r17 72r17 73r17 77r14 -53m11 I{2|81M9} 54r23 54r51 57r27 58r25 -75L6 Cleanup 55r18 -86m7 Returned{5|25M12} 103m13 109r14 -89m11 I{2|81M9} 90r27 91r23 92r23 93r23 94r23 95r23 96r23 97r23 98r23 100r23 -. 101r23 102r23 103r25 -113m7 Returned{5|25M12} 118m13 123r14 -116m11 I{2|81M9} 117r23 117r51 118r25 -136m11 I{2|81M9} 137r23 138r23 140r44 141r21 -170b7 Result{boolean} 174m10 178m10 181r14 -249r11 Reg=249:18{24R9} -X 7 lib.ads -19K9*Lib 6|17r6 17r31 52r7 76r7 88r7 108r7 115r7 122r7 135r7 145r7 154r7 -. 162r7 172r7 180r7 186r7 191r7 196r7 202r7 212r7 218r7 227r7 242r7 248r7 -. 254r7 7|35e8 -X 8 lib-synchronization.ads -20K13*Synchronization 6|17w10 17r35 52r11 76r11 88r11 108r11 115r11 122r11 -. 135r11 145r11 154r11 162r11 172r11 180r11 186r11 191r11 196r11 202r11 212r11 -. 218r11 227r11 242r11 248r11 254r11 8|66e24 -22R9*Binary_Semaphore 6|39r29 8|57e14 -23r4*Unlocked_Semaphore{22R9} 6|39r49 -27U14*Seize 6|52s27 88s27 115s27 135s27 154s27 172s27 186s27 196s27 212s27 -. 227s27 248s27 -31U14*Release 6|76s27 108s27 122s27 145s27 162s27 180s27 191s27 202s27 218s27 -. 242s27 254s27 -X 9 memory.ads -19K9*Memory 6|18w6 19r6 19r27 32r26 33r26 70r41 71r35 99r47 100r34 138r45 -. 9|36e11 -20M9*Size 6|33r33 71r42 100r41 -29N4*Memory_Offset 6|70r48 99r54 -34M12*Physical_Address{13|82M9} 6|32r33 138r52 -X 10 memory-physical.ads -20K16*Physical 6|19w13 19r34 10|60e20 -34V13*Alloc{9|35M12} 6|70s10 99s16 -40U14*Free 6|261s10 -X 11 system.ads -37K9*System 6|21r6 21r35 11|155e11 -X 13 s-stoele.ads -40K16*Storage_Elements 6|21w13 21r42 13|90e28 -82M9*Integer_Address - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___ipc__shm__create_segment 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___memory__physical__alloc -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__create_segment 0 -GG EK_GLOBALS ada___ipc__shm__create_segment local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___memory__physical__alloc TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__create_unkeyed_segment 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___memory__physical__alloc -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__create_unkeyed_segment 0 -GG EK_GLOBALS ada___ipc__shm__create_unkeyed_segment local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___memory__physical__alloc TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__get_segment 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__get_segment 0 -GG EK_GLOBALS ada___ipc__shm__get_segment local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__get_segment_and_size 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__get_segment_and_size 0 -GG EK_GLOBALS ada___ipc__shm__get_segment_and_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__get_address 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__get_address 0 -GG EK_GLOBALS ada___ipc__shm__get_address local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__check_permissions 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__check_permissions 0 -GG EK_GLOBALS ada___ipc__shm__check_permissions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__mark_refcounted 3 ada___ipc__shm__check_and_maybe_free ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__mark_refcounted 0 -GG EK_GLOBALS ada___ipc__shm__mark_refcounted local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__modify_attachment 3 ada___ipc__shm__check_and_maybe_free ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__modify_attachment 0 -GG EK_GLOBALS ada___ipc__shm__modify_attachment local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__modify_permissions 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__modify_permissions 0 -GG EK_GLOBALS ada___ipc__shm__modify_permissions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__fetch_information 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__fetch_information 0 -GG EK_GLOBALS ada___ipc__shm__fetch_information local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__get_total_size 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__get_total_size 0 -GG EK_GLOBALS ada___ipc__shm__get_total_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry_mutex refined_proof_in 0 refined_input 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm__check_and_maybe_free 1 ada___memory__physical__free -GG EK_PROOF_DEPENDENCIES ada___ipc__shm__check_and_maybe_free 0 -GG EK_GLOBALS ada___ipc__shm__check_and_maybe_free local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__shm ipc proper_proof_in 0 proper_input 1 ada___ipc__shm__registry proper_output 1 ada___ipc__shm__registry refined_proof_in 0 refined_input 1 ada___ipc__shm__registry refined_output 1 ada___ipc__shm__registry calls_proof 0 calls 0 calls_conditional 1 ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___ipc__shm__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__shm 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__shm 0 -GG EK_GLOBALS ada___ipc__shm local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry refined_initializes 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___ipc__shm__registry_mutex ada___ipc__shm__registry TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__get_segment_and_size FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__get_address FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__check_permissions FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__mark_refcounted FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__modify_attachment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__modify_permissions FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__fetch_information FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__get_total_size FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__check_and_maybe_free FALSE FALSE FALSE FALSE TRUE ada___ipc__shm PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__create_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__create_unkeyed_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__get_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory -GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-shm.cswi b/obj/gnatprove/phase1/ipc-shm.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/ipc-shm.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc-socket.adb.stderr b/obj/gnatprove/phase1/ipc-socket.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-socket.adb.stdout b/obj/gnatprove/phase1/ipc-socket.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc-socket.ali b/obj/gnatprove/phase1/ipc-socket.ali deleted file mode 100644 index 7a92d9b..0000000 --- a/obj/gnatprove/phase1/ipc-socket.ali +++ /dev/null @@ -1,936 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_DEALLOCATION -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U ipc.socket%b ipc-socket.adb 9327d966 OO PK IU -W ada%s ada.ads ada.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W ipc%s ipc.ads ipc.ali -W networking%s networking.adb networking.ali -W networking.interfaces%s networking-interfaces.adb networking-interfaces.ali -W networking.ipv4%s networking-ipv4.adb networking-ipv4.ali -W networking.ipv6%s networking-ipv6.adb networking-ipv6.ali -W scheduler%s scheduler.adb scheduler.ali -Z system%s system.ads system.ali - -U ipc.socket%s ipc-socket.ads b04b93ec OO PK IU -W devices%s devices.adb devices.ali -W ipc%s ipc.ads ipc.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W networking%s networking.adb networking.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D ipc-socket.adb 20250222165738 7b5a2e7d ipc.socket%b -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D networking-arp.ads 20250222165738 eec21925 networking.arp%s -D networking-interfaces.ads 20250222165738 9c034257 networking.interfaces%s -D networking-ipv4.ads 20250222165738 1c38e59d networking.ipv4%s -D networking-ipv6.ads 20250222165738 617a68ce networking.ipv6%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 11|17r6 24r26 25r26 -X 2 a-uncdea.ads -20u15*Unchecked_Deallocation 11|17w10 24r30 25r30 -X 7 devices.ads -22K9*Devices 279e12 10|18w6 18r19 111r24 123r20 241r24 259r20 345r24 363r20 -. 443r24 459r20 477r27 510r24 516r20 523r24 529r20 552r24 558r20 11|151r24 -. 165r20 302r24 311r14 318r22 326r13 344r20 353r14 364r22 376r13 462r24 471r14 -. 478r22 486r13 503r20 512r14 523r22 535r13 706r24 721r20 736r24 752r20 768r24 -. 784r20 822r24 899r20 -29A9*Operation_Data(8|70M9) 10|111r32 123r28 241r32 259r28 345r32 -. 363r28 443r32 459r28 477r35 510r32 516r28 523r32 529r28 552r32 558r28 11|26r8 -. 151r32 165r28 302r32 344r28 358r18 372r29 462r32 503r28 517r18 531r29 706r32 -. 721r28 736r32 752r28 768r32 784r28 822r32 899r28 -30P9*Operation_Data_Acc(29A9) 11|26r24 354r18 513r18 -83I9*Device_Handle 11|311r22 353r22 471r22 512r22 -85i4*Error_Handle{83I9} 11|318r30 364r30 478r30 523r30 -193U14*Read 11|326s21 486s21 -210U14*Write 11|376s21 535s21 -X 8 interfac.ads -70M9*Unsigned_8 -73M9*Unsigned_16 -X 9 ipc.ads -17K9*IPC 18e8 10|21r9 573r5 11|23r14 1029r5 -X 10 ipc-socket.ads -21K13*Socket 9|17k9 10|573l9 573e15 11|23b18 1029l9 1029t15 -25E9*Domain 28e13 36r23 56r22 63r51 471r23 11|29r22 90r51 -26n8*IPv4{25E9} 178r61 190r61 201r61 214r61 229r39 247r39 265r39 281r61 488r15 -. 11|35r15 40r37 104r15 138r15 157r15 171r15 186r15 223r15 -27n8*IPv6{25E9} 293r61 304r61 317r61 333r39 351r39 369r39 448r39 464r39 496r15 -. 11|48r15 53r37 104r22 138r22 158r15 172r15 186r22 223r22 -28n8*UNIX{25E9} 386r61 398r61 406r61 416r61 432r39 476r15 11|61r15 66r39 -. 78r41 106r15 143r15 159r15 173r15 188r15 225r15 -30E9*DataType 33e12 36r37 57r22 70r49 471r37 11|30r22 95r49 -31n8*Stream{30E9} 153r59 163r59 230r37 248r38 266r38 334r37 352r38 370r38 -. 433r37 449r38 465r38 480r21 11|63r21 67r39 642r15 841r15 907r15 994r15 -32n8*Datagram{30E9} 11|75r21 79r41 -33n8*Raw{30E9} 490r21 498r21 11|37r21 41r37 50r21 54r37 84r21 276r15 316r15 -. 362r15 436r15 476r15 521r15 -36R9*Socket 36d17 36d31 37r30 471c9 505e14 11|24r54 38r30 51r30 64r30 76r30 -36e17 Dom{25E9} 471r17 475r12 11|40m21 53m21 66m21 78m21 92r19 103r21 137r17 -. 156r17 170r17 185r17 222r17 685r40 -36e31 Typ{30E9} 471r31 479r18 489r18 497r18 11|41m21 54m21 67m21 79m21 97r19 -. 275r17 315r17 361r17 435r17 475r17 520r17 641r17 686r40 840r17 906r17 993r17 -37P9*Socket_Acc(36R9) 58r46 63r32 70r30 75r39 81r33 87r35 97r20 110r20 122r20 -. 137r27 144r34 152r28 160r22 162r26 174r18 186r18 198r15 211r15 223r23 227r27 -. 240r20 258r20 277r18 289r18 301r15 314r15 327r23 331r27 344r20 362r20 382r18 -. 394r18 405r26 415r29 426r30 430r34 442r20 458r20 482r36 483r36 484r36 486r38 -. 509r20 515r20 522r20 528r20 536r18 546r46 548r43 551r20 557r20 563r20 570r27 -. 11|24r62 31r46 90r32 95r30 100r39 112r33 121r35 129r20 150r20 164r20 178r27 -. 195r34 204r28 214r22 216r26 232r18 245r18 258r15 270r15 286r23 290r27 301r20 -. 343r20 391r18 404r18 418r15 430r15 446r23 450r27 461r20 502r20 550r18 574r18 -. 601r26 630r29 631r20 667r30 671r34 673r13 705r20 712r23 720r20 727r23 735r20 -. 751r20 767r20 783r20 798r46 808r43 821r20 898r20 986r20 1016r27 -40E9*Socket_Status 43e20 113r24 125r24 245r24 263r24 349r24 367r24 446r24 -. 462r24 512r24 518r24 525r24 531r24 554r24 560r24 11|153r24 167r24 306r24 -. 348r24 466r24 507r24 709r24 724r24 738r24 754r24 770r24 786r24 824r24 901r24 -41n8*Plain_Success{40E9} 11|331r27 380r27 491r27 539r27 880r24 886r29 955r26 -. 976r29 -42n8*Is_Bad_Type{40E9} 11|338r24 386r24 497r26 545r26 845r29 910r29 -43n8*Would_Block{40E9} 11|321r29 333r27 366r29 382r27 481r29 493r27 525r29 -. 541r27 854r32 889r29 935r32 964r29 979r29 -46i4*Default_Socket_Size{natural} 469c4 477r56 478r46 11|919r22 929r50 940r22 -. 941r22 943r25 944r25 961r31 971r31 1003r54 -55V13*Create{37P9} 56>8 57>8 58>8 11|28b13 88l8 88t14 684s26 -56e8 Dom{25E9} 11|29b8 34r12 -57e8 Typ{30E9} 11|30b8 36r18 49r18 62r18 -58b8 Is_Blocking{boolean} 11|31b8 42r37 55r37 69r39 80r41 -63V13*Get_Domain{25E9} 63>25 178s41 190s41 201s41 214s41 229s19 247s19 265s19 -. 281s41 293s41 304s41 317s41 333s19 351s19 369s19 386s41 398s41 406s41 416s41 -. 432s19 448s19 464s19 11|90b13 93l8 93t18 -63p25 Sock{37P9} 64r19 11|90b25 92r14 -70V13*Get_Type{30E9} 70>23 153s41 163s41 230s19 248s19 266s19 334s19 352s19 -. 370s19 433s19 449s19 465s19 11|95b13 98l8 98t16 -70p23 Sock{37P9} 71r19 11|95b23 97r14 -75U14*Close 75=21 11|100b14 110l8 110t13 -75p21 To_Close{37P9} 76r19 76r45 11|100b21 102r34 103r12 107r31 109m13 -81V13*Is_Blocking{boolean} 81>26 11|112b13 119l8 119t19 -81p26 Sock{37P9} 82r19 11|112b26 115r34 116r17 117r36 -87U14*Set_Blocking 87>28 87>47 11|121b14 126l8 126t20 -87p28 Sock{37P9} 88r19 11|121b28 123r34 124r7 125r36 -87b47 Is_Blocking{boolean} 11|121b47 124r27 -96U14*Poll 97>8 98<8 99<8 100<8 101<8 11|128b14 147l8 147t12 -97p8 Sock{37P9} 102r19 11|129b8 136r34 137r12 144r30 146r36 -98b8 Can_Read{boolean} 11|130b8 139m13 144m36 -99b8 Can_Write{boolean} 11|131b8 140m13 144m46 -100b8 Is_Broken{boolean} 11|132b8 141m13 144m57 -101b8 Is_Error{boolean} 11|133b8 142m13 144m68 -109U14*Read 110>8 111<8 112<8 113<8 11|149b14 161l8 161t12 -110p8 Sock{37P9} 114r19 11|150b8 156r12 157r40 158r40 159r40 -111a8 Data{7|29A9} 11|151b8 157m46 158m46 159m46 -112i8 Ret_Count{natural} 11|152b8 157m52 158m52 159m52 -113e8 Success{40E9} 11|153b8 157m63 158m63 159m63 -121U14*Write 122>8 123>8 124<8 125<8 11|163b14 175l8 175t13 -122p8 Sock{37P9} 126r19 11|164b8 170r12 171r41 172r41 173r41 -123a8 Data{7|29A9} 11|165b8 171r47 172r47 173r47 -124i8 Ret_Count{natural} 11|166b8 171m53 172m53 173m53 -125e8 Success{40E9} 11|167b8 171m64 172m64 173m64 -136V13*Shutdown{boolean} 137>8 138>8 139>8 11|177b13 193l8 193t16 -137p8 Sock{37P9} 11|178b8 184r34 185r12 189r41 191r36 -138b8 Do_Receptions{boolean} 11|179b8 189r47 -139b8 Do_Transmissions{boolean} 11|180b8 189r62 -144V13*Is_Listening{boolean} 144>27 11|195b13 202l8 202t20 -144p27 Sock{37P9} 145r19 11|195b27 198r34 199r17 200r36 -152V13*Listen{boolean} 152>21 152>40 11|204b13 211l8 211t14 -152p21 Sock{37P9} 153r19 153r51 11|204b21 207r34 208r7 209r36 -152i40 Backlog{natural} 11|204b40 205r28 -159U14*Accept_Connection 160>8 161>8 162<8 11|213b14 229l8 229t25 -160p8 Sock{37P9} 163r19 163r51 11|214b8 221r34 222r12 226r32 228r36 -161b8 Is_Blocking{boolean} 11|215b8 226r38 -162p8 Result{37P9} 11|216b8 224m13 226m62 -173U14*Get_Bound 174>8 175<8 176<8 177<8 11|231b14 242l8 242t17 -174p8 Sock{37P9} 178r19 178r53 11|232b8 237r28 -175a8 Addr{15|23A9} 11|233b8 239m7 -176m8 Port{15|25M9} 11|234b8 240m7 -177b8 Success{boolean} 11|235b8 241m7 -185U14*Get_Peer 186>8 187<8 188<8 189<8 11|244b14 255l8 255t16 -186p8 Sock{37P9} 190r19 190r53 11|245b8 250r28 -187a8 Addr{15|23A9} 11|246b8 252m7 -188m8 Port{15|25M9} 11|247b8 253m7 -189b8 Success{boolean} 11|248b8 254m7 -197V13*Bind{boolean} 198>8 199>8 200>8 11|257b13 267l8 267t12 -198p8 Sock{37P9} 201r19 201r53 11|258b8 262r28 -199a8 Addr{15|23A9} 11|259b8 263r28 -200m8 Port{15|25M9} 11|260b8 264r28 -210V13*Connect{boolean} 211>8 212>8 213>8 11|269b13 283l8 283t15 -211p8 Sock{37P9} 214r19 214r53 11|270b8 275r12 277r13 278r13 -212a8 Addr{15|23A9} 11|271b8 277r41 -213m8 Port{15|25M9} 11|272b8 278r38 -222U14*Accept_Connection 223>8 224>8 225<8 226<8 227<8 11|285b14 298l8 298t25 -223p8 Sock{37P9} 228r19 229r31 230r29 11|286b8 292r28 -224b8 Is_Blocking{boolean} 11|287b8 293r28 -225a8 Peer_Address{15|23A9} 11|288b8 295m7 -226m8 Peer_Port{15|25M9} 11|289b8 296m7 -227p8 Result{37P9} 11|290b8 297m7 -239U14*Read 240>8 241<8 242<8 243>8 244>8 245<8 11|300b14 340l8 340t12 741s7 -240p8 Sock{37P9} 246r19 247r31 248r29 11|301b8 315r12 -241a8 Data{7|29A9} 11|302b8 319m16 326m35 327m13 327r19 327r33 328r16 328r22 -. 328r53 336m13 -242i8 Ret_Count{natural} 11|303b8 320m16 326m41 329m13 329r26 337m13 -243a8 Addr{15|23A9} 11|304b8 317r59 -244m8 Port{15|25M9} 11|305b8 308r28 -245e8 Success{40E9} 11|306b8 321m16 331m16 333m16 338m13 -257U14*Write 258>8 259>8 260<8 261>8 262>8 263<8 11|342b14 388l8 388t13 757s7 -258p8 Sock{37P9} 264r19 265r31 266r29 11|343b8 361r12 -259a8 Data{7|29A9} 11|344b8 371r64 372r50 374r64 -260i8 Ret_Count{natural} 11|345b8 365m16 376m50 385m13 -261a8 Addr{15|23A9} 11|346b8 363r59 371r58 -262m8 Port{15|25M9} 11|347b8 350r28 -263e8 Success{40E9} 11|348b8 366m16 380m16 382m16 386m13 -276U14*Get_Bound 277>8 278<8 279<8 280<8 11|390b14 401l8 401t17 -277p8 Sock{37P9} 281r19 281r53 11|391b8 396r28 -278a8 Addr{15|24A9} 11|392b8 398m7 -279m8 Port{15|26M9} 11|393b8 399m7 -280b8 Success{boolean} 11|394b8 400m7 -288U14*Get_Peer 289>8 290<8 291<8 292<8 11|403b14 414l8 414t16 -289p8 Sock{37P9} 293r19 293r53 11|404b8 409r28 -290a8 Addr{15|24A9} 11|405b8 411m7 -291m8 Port{15|26M9} 11|406b8 412m7 -292b8 Success{boolean} 11|407b8 413m7 -300V13*Bind{boolean} 301>8 302>8 303>8 11|417b13 427l8 427t12 -301p8 Sock{37P9} 304r19 304r53 11|418b8 422r28 -302a8 Addr{15|24A9} 11|419b8 423r28 -303m8 Port{15|26M9} 11|420b8 424r28 -313V13*Connect{boolean} 314>8 315>8 316>8 11|429b13 443l8 443t15 -314p8 Sock{37P9} 317r19 317r53 11|430b8 435r12 437r13 438r13 -315a8 Addr{15|24A9} 11|431b8 437r41 -316m8 Port{15|26M9} 11|432b8 438r38 -326U14*Accept_Connection 327>8 328>8 329<8 330<8 331<8 11|445b14 458l8 458t25 -327p8 Sock{37P9} 332r19 333r31 334r29 11|446b8 452r28 -328b8 Is_Blocking{boolean} 11|447b8 453r28 -329a8 Peer_Address{15|24A9} 11|448b8 455m7 -330m8 Peer_Port{15|26M9} 11|449b8 456m7 -331p8 Result{37P9} 11|450b8 457m7 -343U14*Read 344>8 345<8 346<8 347>8 348>8 349<8 11|460b14 499l8 499t12 773s7 -344p8 Sock{37P9} 350r19 351r31 352r29 11|461b8 475r12 -345a8 Data{7|29A9} 11|462b8 479m16 486m35 487m13 487r19 487r33 488r16 488r22 -. 488r53 -346i8 Ret_Count{natural} 11|463b8 480m16 486m41 489m13 489r26 496m13 -347a8 Addr{15|24A9} 11|464b8 477r59 -348m8 Port{15|26M9} 11|465b8 468r28 -349e8 Success{40E9} 11|466b8 481m16 491m16 493m16 497m13 -361U14*Write 362>8 363>8 364<8 365>8 366>8 367<8 11|501b14 547l8 547t13 789s7 -362p8 Sock{37P9} 368r19 369r31 370r29 11|502b8 520r12 -363a8 Data{7|29A9} 11|503b8 530r64 531r50 533r64 -364i8 Ret_Count{natural} 11|504b8 524m16 535m50 544m13 -365a8 Addr{15|24A9} 11|505b8 522r59 530r58 -366m8 Port{15|26M9} 11|506b8 509r28 -367e8 Success{40E9} 11|507b8 525m16 539m16 541m16 545m13 -381U14*Get_Bound 382>8 383<8 384<8 385<8 11|549b14 571l8 571t17 -382p8 Sock{37P9} 386r19 386r53 11|550b8 562r24 -383a8 Path{string} 11|551b8 556m7 563m13 563r19 563r33 -384i8 Length{natural} 11|552b8 557m7 565m13 -385b8 Success{boolean} 11|553b8 558m7 566m13 -393U14*Get_Peer 394>8 395<8 396<8 397<8 11|573b14 599l8 599t16 -394p8 Sock{37P9} 398r19 398r53 11|574b8 586r24 -395a8 Path{string} 11|575b8 580m7 587r16 588m16 588r22 588r36 591m16 591r39 -396i8 Length{natural} 11|576b8 581m7 593m13 -397b8 Success{boolean} 11|577b8 582m7 594m13 -405V13*Bind{boolean} 405>19 405>38 11|601b13 628l8 628t12 -405p19 Sock{37P9} 406r19 406r53 11|601b19 611r24 617r25 -405a38 Path{string} 11|601b38 604r10 604r29 618r28 618r44 619r29 -415V13*Connect{boolean} 415>22 415>41 11|630b13 664l8 664t15 714s18 729s18 -415p22 Sock{37P9} 416r19 416r53 11|630b22 641r12 643r13 646r48 652r26 656r13 -415a41 Path{string} 11|630b41 636r32 -425U14*Accept_Connection 426>8 427>8 428<8 429<8 430<8 11|226s13 666b14 702l8 -. 702t25 -426p8 Sock{37P9} 431r19 432r31 433r29 11|667b8 679r34 681r10 683r16 685r20 -. 686r20 689r23 690r38 693r16 696r27 701r36 -427b8 Is_Blocking{boolean} 11|668b8 687r20 -428a8 Peer_Address{string} 11|669b8 675m7 -429i8 Peer_Address_Length{natural} 11|670b8 676m7 -430p8 Result{37P9} 11|671b8 677m7 684m16 690r16 691r38 692r16 -441U14*Read 442>8 443<8 444<8 445>8 446<8 11|704b14 717l8 717t12 -442p8 Sock{37P9} 447r19 448r31 449r29 11|705b8 712r37 714r27 715r24 716r7 -443a8 Data{7|29A9} 11|706b8 715m30 -444i8 Ret_Count{natural} 11|707b8 715m36 -445a8 Path{string} 11|708b8 714r33 -446e8 Success{40E9} 11|709b8 715m47 -457U14*Write 458>8 459>8 460<8 461>8 462<8 11|719b14 732l8 732t13 -458p8 Sock{37P9} 463r19 464r31 465r29 11|720b8 727r37 729r27 730r25 731r7 -459a8 Data{7|29A9} 11|721b8 730r31 -460i8 Ret_Count{natural} 11|722b8 730m37 -461a8 Path{string} 11|723b8 729r33 -462e8 Success{40E9} 11|724b8 730m48 -472r7*Mutex{13|22R9} 11|39m21 52m21 65m21 77m21 102m43 115m39 117m41 123m39 -. 125m41 136m39 146m41 184m39 191m41 198m39 200m41 207m39 209m41 221m39 228m41 -. 679m39 701m41 831m45 833m47 837m42 849m53 894m41 917m66 920m68 924m63 927m45 -. 931m53 957m62 958m47 969m62 981m64 -473b7*Is_Blocking{boolean} 11|42m21 55m21 69m21 80m21 116r22 124m12 696r32 -. 829r15 848r24 915r21 930r24 -477a13*Data{7|29A9} 11|73m21 82m21 867r21 869r30 869r49 870m24 870r41 884r24 -. 949m33 973m38 -478i13*Data_Length{integer} 11|74m21 83m21 832r28 847r24 859r27 860r28 872r24 -. 873m24 873r44 882r21 883r32 884r40 885r34 918r49 929r36 941r64 944r67 946r45 -. 950r37 952m33 970r38 974m38 1001r34 1003r39 1008r31 -481b19*Is_Listener{boolean} 11|68m21 199r22 208m12 681r15 842r21 908r21 995r21 -482p19*Connected{37P9} 11|70m21 643m18 -483p19*Pending_Accept{37P9} 11|71m21 645r30 646m30 652r31 683r21 685r25 686r25 -. 689r28 691m20 692m23 693m21 842r41 908r41 917r51 918r34 920r53 924r48 929r21 -. 941r49 944r52 946r30 949r18 950r22 952r18 957r47 996r34 1002r34 1003r24 -484p19*Established{37P9} 11|72m21 586r29 690m23 1023r15 1024r15 1024m27 1025m15 -486p19*Simple_Connected{37P9} 11|81m21 656m18 712r42 716m12 727r42 731m12 -. 960r21 969r45 970r21 973r21 974r21 981r47 1009r31 -491a19*IPv4_Cached_Address{15|23A9} 11|43m21 277m18 745r29 761r29 -492m19*IPv4_Cached_Port{15|25M9} 11|44m21 278m18 746r29 762r29 -499a19*IPv6_Cached_Address{15|24A9} 11|56m21 437m18 777r29 793r29 -500m19*IPv6_Cached_Port{15|26M9} 11|57m21 438m18 778r29 794r29 -508U14 Inner_IPv4_Read 509>8 510<8 511<8 512<8 11|157s23 734b14 748l8 748t23 -509p8 Sock{37P9} 11|735b8 742r24 745r24 746r24 -510a8 Data{7|29A9} 11|736b8 743m24 -511i8 Ret_Count{natural} 11|737b8 744m24 -512e8 Success{40E9} 11|738b8 747m24 -514U14 Inner_IPv4_Write 515>8 516>8 517<8 518<8 11|171s23 750b14 764l8 764t24 -515p8 Sock{37P9} 11|751b8 758r24 761r24 762r24 -516a8 Data{7|29A9} 11|752b8 759r24 -517i8 Ret_Count{natural} 11|753b8 760m24 -518e8 Success{40E9} 11|754b8 763m24 -521U14 Inner_IPv6_Read 522>8 523<8 524<8 525<8 11|158s23 766b14 780l8 780t23 -522p8 Sock{37P9} 11|767b8 774r24 777r24 778r24 -523a8 Data{7|29A9} 11|768b8 775m24 -524i8 Ret_Count{natural} 11|769b8 776m24 -525e8 Success{40E9} 11|770b8 779m24 -527U14 Inner_IPv6_Write 528>8 529>8 530<8 531<8 11|172s23 782b14 796l8 796t24 -528p8 Sock{37P9} 11|783b8 790r24 793r24 794r24 -529a8 Data{7|29A9} 11|784b8 791r24 -530i8 Ret_Count{natural} 11|785b8 792m24 -531e8 Success{40E9} 11|786b8 795m24 -534N4 Bind_Path_Max 537r31 538r37 11|604r43 -535R9 Bound_Socket 539e14 543r44 -536p7*Sock{37P9} 544m19 11|562r17 586r17 611r17 616r17 617m17 801r17 802r24 -. 812r17 813m17 -537a7*Path{string} 544m33 11|564r20 589r23 591r28 618m17 801r43 -538i7*Path_Len{integer} 544m58 11|563r50 564r35 565r28 587r35 588r53 589r38 -. 593r28 619m17 801r58 -541r4 UNIX_Bound_Mutex{13|22R9} 11|560m34 560r34 570m36 570r36 584m34 584r34 -. 598m36 598r36 608m34 608r34 626m36 626r36 634m34 634r34 662m36 662r36 810m34 -. 810r34 817m36 817r36 -543a4 UNIX_Bound_Sockets(535R9) 11|561r18 562r13 563r46 564r16 564r31 565r24 -. 585r18 586r13 587r31 588r49 589r19 589r34 591r24 593r24 610r18 611r13 615r18 -. 616r13 617m13 618m13 619m13 800r18 801r13 801r39 801r54 802r20 811r18 812r13 -. 813m13 -546V13 Get_Bound{37P9} 546>24 11|636s21 798b13 806l8 806t17 -546a24 Path{string} 11|798b24 801r70 -548U14 Inner_UNIX_Close 548>32 11|107s13 808b14 818l8 818t24 -548p32 To_Close{37P9} 11|808b32 812r24 -550U14 Inner_UNIX_Read 551>8 552<8 553<8 554<8 11|159s23 715s7 820b14 895l8 -. 895t23 -551p8 Sock{37P9} 11|821b8 829r10 831r40 832r23 833r42 837r37 840r12 842r16 -. 842r36 847r19 848r19 849r48 859r22 860r23 867r16 869r25 869r44 870r19 870r36 -. 872r19 873r19 873r39 882r16 883r27 884r19 884r35 885r29 894r36 -552a8 Data{7|29A9} 11|822b8 826r24 843m16 852m19 862r16 863r38 866m13 866r19 -. 866r33 882r36 883m16 -553i8 Ret_Count{natural} 11|823b8 844m16 853m19 879m13 885m16 888m16 -554e8 Success{40E9} 11|824b8 845m16 854m19 880m13 886m16 889m16 -556U14 Inner_UNIX_Write 557>8 558>8 559<8 560<8 11|173s23 730s7 897b14 983l8 -. 983t24 -557p8 Sock{37P9} 11|898b8 906r12 908r16 908r36 915r16 917r46 918r29 920r48 -. 924r43 927r40 929r16 930r19 931r48 941r44 944r47 946r25 949r13 950r17 952r13 -. 957r42 958r42 960r16 969r40 970r16 973r16 974r16 981r42 -558a8 Data{7|29A9} 11|899b8 903r26 951r16 951r22 951r36 961r16 971r16 973r49 -. 973r65 974r53 975r29 -559i8 Ret_Count{natural} 11|900b8 909m16 934m19 954m13 963m16 975m16 978m16 -560e8 Success{40E9} 11|901b8 910m16 935m19 955m13 964m16 976m16 979m16 -562U14 Inner_UNIX_Poll 563>8 564<8 565<8 566<8 567<8 11|144s13 985b14 1013l8 -. 1013t23 -563p8 Sock{37P9} 11|986b8 993r12 995r16 996r29 1001r29 1002r29 1003r19 1008r26 -. 1009r26 -564b8 Can_Read{boolean} 11|987b8 996m16 997r29 1001m16 1008m13 -565b8 Can_Write{boolean} 11|988b8 997m16 1002m16 1009m13 -566b8 Is_Broken{boolean} 11|989b8 998m16 1004m16 1010m13 -567b8 Is_Error{boolean} 11|990b8 999m16 1005m16 1011m13 -569V13 Inner_UNIX_Shutdown{boolean} 570>8 571>8 572>8 11|189s20 1015b13 1028l8 -. 1028t27 -570p8 Sock{37P9} 11|1016b8 1023r10 1024r10 1025r10 -571b8 Do_Receptions{boolean} 11|1017b8 1020r28 -572b8 Do_Transmissions{boolean} 11|1018b8 1021r28 -X 11 ipc-socket.adb -24U14 Free[2|20] -24U14*Free[2|20] 109s7 -25U14 Free[2|20] -25U14*Free[2|20] 377s13 536s13 -113b7 Result{boolean} 116m7 118r14 -182b7 Suc{boolean} 187m13 189m13 192r14 -196b7 Result{boolean} 199m7 201r14 -218a7 Path{string} 226m51 -219i7 Len{natural} 226m57 -310b7 Succ{boolean} 326m52 330r16 -311i7 Dev{7|83I9} 317m65 318r16 324r58 326r27 -312a7 Src{15|23A9} 324m63 -313i7 Hdr_Size{natural} 327r46 328r36 329r39 -352b7 Succ{boolean} 376m61 379r16 -353i7 Dev{7|83I9} 363m65 364r16 369r58 376r28 -354p7 Tmp_Data{7|30P9} 372m13 373r13 374r13 374r46 376r36 377m19 377r19 -355a7 Src{15|23A9} 369m63 371r53 -356r7 Hdr{18|29R9} 358r39 359m34 359r34 371m13 372r65 -358a7 Hdr_Data{7|29A9} 373r28 373r48 374r23 -470b7 Succ{boolean} 486m52 490r16 -471i7 Dev{7|83I9} 477m65 478r16 484r58 486r27 -472a7 Src{15|24A9} 484m63 -473i7 Hdr_Size{natural} 487r46 488r36 489r39 -511b7 Succ{boolean} 535m61 538r16 -512i7 Dev{7|83I9} 522m65 523r16 528r58 535r28 -513p7 Tmp_Data{7|30P9} 531m13 532r13 533r13 533r46 535r36 536m19 536r19 -514a7 Src{15|24A9} 528m63 530r53 -515r7 Hdr{19|26R9} 517r39 518m34 518r34 530m13 531r65 -517a7 Hdr_Data{7|29A9} 532r28 532r48 533r23 -561r11 Ent=561:18{10|535R9} -585r11 Ent=585:18{10|535R9} -602b7 Success{boolean} 620m13 627r14 -610r11 Ent=610:18{10|535R9} -615r11 Ent=615:18{10|535R9} -625L6 Cleanup 612r18 621r18 -631p7 To_Connect{10|37P9} 636m7 637r10 643r31 645r19 646r19 656r38 -632b7 Success{boolean} 638m10 659m7 663r14 -661L6 End_Return 639r15 -673p7 Tmp{10|37P9} 689m16 691r16 692r41 -711b7 Discard{boolean} 714m7 -712p7 Temp{10|37P9} 716r32 -726b7 Discard{boolean} 729m7 -727p7 Temp{10|37P9} 731r32 -800r11 Ent=800:18{10|535R9} -811r11 Ent=811:18{10|535R9} -826i7 Len{natural} 859r16 860m16 862r44 863m16 866r46 867r32 868r27 879r26 -828L6 Retry 850r24 -868i17 I{integer} -869i20 J{integer} 870r30 870r47 -893L6 Cleanup 846r21 855r24 -903i7 Len{natural} 940r16 941r16 944m16 946r59 951r49 954r26 -904i7 Final{natural} 943m16 946m16 950r56 952r48 -914L12 Retry 932r24 -956L12 Cleanup 936r24 -18P9*Name{10|37P9} 20r50[24] 20r50[25] -20p39 X{10|37P9} 21r15[24] 22r23[24] 23r11[24] 21r15[25] 22r23[25] 23r11[25] -X 12 lib.ads -19K9*Lib 10|17r6 472r29 541r33 542r7 11|39r37 52r37 65r39 77r41 102r7 115r7 -. 117r7 123r7 125r7 136r7 146r7 184r7 191r7 198r7 200r7 207r7 209r7 221r7 -. 228r7 560r7 570r7 584r7 598r7 608r7 626r7 634r7 662r7 679r7 701r7 810r7 -. 817r7 831r13 833r13 837r10 849r19 894r7 917r19 920r19 924r16 927r13 931r19 -. 957r13 958r13 969r13 981r13 12|35e8 -X 13 lib-synchronization.ads -20K13*Synchronization 10|17w10 472r33 541r37 542r11 11|39r41 52r41 65r43 -. 77r45 102r11 115r11 117r11 123r11 125r11 136r11 146r11 184r11 191r11 198r11 -. 200r11 207r11 209r11 221r11 228r11 560r11 570r11 584r11 598r11 608r11 626r11 -. 634r11 662r11 679r11 701r11 810r11 817r11 831r17 833r17 837r14 849r23 894r11 -. 917r23 920r23 924r20 927r17 931r23 957r17 958r17 969r17 981r17 13|66e24 -22R9*Binary_Semaphore 10|472r49 541r53 13|57e14 -23r4*Unlocked_Semaphore{22R9} 10|542r27 11|39r57 52r57 65r59 77r61 -27U14*Seize 11|102s27 115s27 123s27 136s27 184s27 198s27 207s27 221s27 560s27 -. 584s27 608s27 634s27 679s27 810s27 831s33 837s30 917s39 924s36 927s33 969s33 -31U14*Release 11|117s27 125s27 146s27 191s27 200s27 209s27 228s27 570s27 -. 598s27 626s27 662s27 701s27 817s27 833s33 849s39 894s27 920s39 931s39 957s33 -. 958s33 981s33 -X 15 networking.ads -20K9*Networking 10|19w6 175r22 176r22 187r22 188r22 199r15 200r15 212r15 -. 213r15 225r27 226r27 243r20 244r20 261r20 262r20 278r22 279r22 290r22 291r22 -. 302r15 303r15 315r15 316r15 329r27 330r27 347r20 348r20 365r20 366r20 491r41 -. 492r41 499r41 500r41 11|19r6 20r6 21r6 233r22 234r22 246r22 247r22 259r15 -. 260r15 271r15 272r15 288r27 289r27 304r20 305r20 312r14 313r38 317r13 324r13 -. 346r20 347r20 355r14 356r14 363r13 369r13 371r20 392r22 393r22 405r22 406r22 -. 419r15 420r15 431r15 432r15 448r27 449r27 464r20 465r20 472r14 473r38 477r13 -. 484r13 505r20 506r20 514r14 515r14 522r13 528r13 530r20 15|55e15 -23A9*IPv4_Address(8|70M9) 10|175r33 187r33 199r26 212r26 225r38 -. 243r31 261r31 491r52 11|233r33 246r33 259r26 271r26 288r38 304r31 312r25 -. 346r31 355r25 -24A9*IPv6_Address(8|70M9) 10|278r33 290r33 302r26 315r26 329r38 -. 347r31 365r31 499r52 11|392r33 405r33 419r26 431r26 448r38 464r31 472r25 -. 505r31 514r25 -25M9*IPv4_Port<8|73M9> 10|176r33 188r33 200r26 213r26 226r38 244r31 262r31 -. 492r52 11|234r33 247r33 260r26 272r26 289r38 305r31 347r31 -26M9*IPv6_Port<8|73M9> 10|279r33 291r33 303r26 316r26 330r38 348r31 366r31 -. 500r52 11|393r33 406r33 420r26 432r26 449r38 465r31 506r31 -X 17 networking-interfaces.ads -20K20*Interfaces 11|21w17 317r24 324r24 363r24 369r24 477r24 484r24 522r24 -. 528r24 17|107e26 -42U14*Get_Interface_Address 11|324s35 369s35 -47U14*Get_Interface_Address 11|484s35 528s35 -62U14*Get_Suitable_Interface 11|317s35 363s35 -67U14*Get_Suitable_Interface 11|477s35 522s35 -X 18 networking-ipv4.ads -19K20*IPv4 11|19w17 313r49 356r25 371r31 18|67e20 -29R9*IPv4_Packet_Header 11|313r54 356r30 18|43e15 -62V13*Generate_Header{29R9} 11|371s36 -X 19 networking-ipv6.ads -19K20*IPv6 11|20w17 473r49 515r25 530r31 19|54e20 -26R9*IPv6_Packet_Header 11|473r54 515r30 19|35e15 -49V13*Generate_Header{26R9} 11|530s36 -X 20 scheduler.ads -25K9*Scheduler 11|18w6 649r16 653r16 697r13 834r13 921r19 20|183e14 -74U14*Yield_If_Able 11|649s26 653s26 697s23 834s23 921s29 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___ipc__socket__create 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__create 0 -GG EK_GLOBALS ada___ipc__socket__create local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__get_domain 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_domain 0 -GG EK_GLOBALS ada___ipc__socket__get_domain local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__get_type 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_type 0 -GG EK_GLOBALS ada___ipc__socket__get_type local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__close 3 ada___ipc__socket__inner_unix_close ada___lib__synchronization__seize ada___ipc__socket__free -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__close 0 -GG EK_GLOBALS ada___ipc__socket__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets proper_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_proof_in 0 refined_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__is_blocking 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__is_blocking 0 -GG EK_GLOBALS ada___ipc__socket__is_blocking local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__set_blocking 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__set_blocking 0 -GG EK_GLOBALS ada___ipc__socket__set_blocking local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__poll 3 ada___ipc__socket__inner_unix_poll ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__poll 0 -GG EK_GLOBALS ada___ipc__socket__poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__read 3 ada___ipc__socket__inner_ipv4_read ada___ipc__socket__inner_ipv6_read ada___ipc__socket__inner_unix_read -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__read 0 -GG EK_GLOBALS ada___ipc__socket__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 8 ada___lib__synchronization__seize ada___lib__synchronization__release devices__read scheduler__yield_if_able ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__write 3 ada___ipc__socket__inner_ipv4_write ada___ipc__socket__inner_ipv6_write ada___ipc__socket__inner_unix_write -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__write 0 -GG EK_GLOBALS ada___ipc__socket__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 10 ada___lib__synchronization__seize ada___lib__synchronization__release devices__write scheduler__yield_if_able ada___networking__ipv4__generate_header ada___networking__ipv6__generate_header ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__shutdown 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__shutdown 0 -GG EK_GLOBALS ada___ipc__socket__shutdown local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__is_listening 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__is_listening 0 -GG EK_GLOBALS ada___ipc__socket__is_listening local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__listen 1 ada___ipc__socket__get_type -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__listen 1 ada___ipc__socket__get_type -GG EK_GLOBALS ada___ipc__socket__listen local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__accept_connection 4 ada___ipc__socket__get_type ada___ipc__socket__accept_connection__4 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__accept_connection 0 -GG EK_GLOBALS ada___ipc__socket__accept_connection local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__get_bound 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_bound 0 -GG EK_GLOBALS ada___ipc__socket__get_bound local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__get_peer 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_peer 0 -GG EK_GLOBALS ada___ipc__socket__get_peer local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__bind 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__bind 0 -GG EK_GLOBALS ada___ipc__socket__bind local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__connect 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__connect 1 ada___ipc__socket__get_domain -GG EK_GLOBALS ada___ipc__socket__connect local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__accept_connection__2 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__accept_connection__2 0 -GG EK_GLOBALS ada___ipc__socket__accept_connection__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__read__2 5 ada___ipc__socket__get_domain ada___ipc__socket__get_type devices__read ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__read__2 0 -GG EK_GLOBALS ada___ipc__socket__read__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__read ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__write__2 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__write__2 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type -GG EK_GLOBALS ada___ipc__socket__write__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__write ada___networking__ipv4__generate_header ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__get_bound__2 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_bound__2 0 -GG EK_GLOBALS ada___ipc__socket__get_bound__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__get_peer__2 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_peer__2 0 -GG EK_GLOBALS ada___ipc__socket__get_peer__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__bind__2 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__bind__2 0 -GG EK_GLOBALS ada___ipc__socket__bind__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__connect__2 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__connect__2 1 ada___ipc__socket__get_domain -GG EK_GLOBALS ada___ipc__socket__connect__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__accept_connection__3 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__accept_connection__3 0 -GG EK_GLOBALS ada___ipc__socket__accept_connection__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__read__3 5 ada___ipc__socket__get_domain ada___ipc__socket__get_type devices__read ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__read__3 0 -GG EK_GLOBALS ada___ipc__socket__read__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__read ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__write__3 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__write__3 2 ada___ipc__socket__get_domain ada___ipc__socket__get_type -GG EK_GLOBALS ada___ipc__socket__write__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__write ada___networking__ipv6__generate_header ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__get_bound__3 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_bound__3 1 ada___ipc__socket__get_domain -GG EK_GLOBALS ada___ipc__socket__get_bound__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets proper_output 1 ada___ipc__socket__unix_bound_mutex refined_proof_in 0 refined_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_output 1 ada___ipc__socket__unix_bound_mutex calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__get_peer__3 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_peer__3 1 ada___ipc__socket__get_domain -GG EK_GLOBALS ada___ipc__socket__get_peer__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP proper_output 1 ada___ipc__socket__unix_bound_mutex refined_proof_in 0 refined_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP refined_output 1 ada___ipc__socket__unix_bound_mutex calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__bind__3 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__bind__3 1 ada___ipc__socket__get_domain -GG EK_GLOBALS ada___ipc__socket__bind__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets proper_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_proof_in 0 refined_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__connect__3 1 ada___ipc__socket__get_domain -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__connect__3 1 ada___ipc__socket__get_domain -GG EK_GLOBALS ada___ipc__socket__connect__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP proper_output 2 ada___ipc__socket__unix_bound_mutex __HEAP refined_proof_in 0 refined_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP refined_output 2 ada___ipc__socket__unix_bound_mutex __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___ipc__socket__unix_bound_mutex LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__accept_connection__4 6 ada___ipc__socket__create ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__accept_connection__4 0 -GG EK_GLOBALS ada___ipc__socket__accept_connection__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__yield_if_able FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__read__4 4 ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__connect__3 ada___ipc__socket__inner_unix_read -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__read__4 0 -GG EK_GLOBALS ada___ipc__socket__read__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP proper_output 2 ada___ipc__socket__unix_bound_mutex __HEAP refined_proof_in 0 refined_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP refined_output 2 ada___ipc__socket__unix_bound_mutex __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__write__4 4 ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__connect__3 ada___ipc__socket__inner_unix_write -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__write__4 0 -GG EK_GLOBALS ada___ipc__socket__write__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP proper_output 2 ada___ipc__socket__unix_bound_mutex __HEAP refined_proof_in 0 refined_input 3 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets __HEAP refined_output 2 ada___ipc__socket__unix_bound_mutex __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__inner_ipv4_read 1 ada___ipc__socket__read__2 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_ipv4_read 0 -GG EK_GLOBALS ada___ipc__socket__inner_ipv4_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__read ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__inner_ipv4_write 1 ada___ipc__socket__write__2 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_ipv4_write 0 -GG EK_GLOBALS ada___ipc__socket__inner_ipv4_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__write ada___networking__ipv4__generate_header ada___networking__interfaces__get_interface_address ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__inner_ipv6_read 1 ada___ipc__socket__read__3 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_ipv6_read 0 -GG EK_GLOBALS ada___ipc__socket__inner_ipv6_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__read ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__inner_ipv6_write 1 ada___ipc__socket__write__3 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_ipv6_write 0 -GG EK_GLOBALS ada___ipc__socket__inner_ipv6_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__write ada___networking__ipv6__generate_header ada___networking__interfaces__get_interface_address__2 ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__get_bound__4 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__get_bound__4 0 -GG EK_GLOBALS ada___ipc__socket__get_bound__4 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 ada___ipc__socket__unix_bound_sockets proper_output 0 refined_proof_in 0 refined_input 1 ada___ipc__socket__unix_bound_sockets refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___ipc__socket__unix_bound_sockets LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_close 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_close 0 -GG EK_GLOBALS ada___ipc__socket__inner_unix_close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets proper_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_proof_in 0 refined_input 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_output 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_read 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_read 0 -GG EK_GLOBALS ada___ipc__socket__inner_unix_read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_write 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_write 0 -GG EK_GLOBALS ada___ipc__socket__inner_unix_write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__yield_if_able FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_poll 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_poll 0 -GG EK_GLOBALS ada___ipc__socket__inner_unix_poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__inner_unix_shutdown 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__inner_unix_shutdown 0 -GG EK_GLOBALS ada___ipc__socket__inner_unix_shutdown local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__free 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__free 0 -GG EK_GLOBALS ada___ipc__socket__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket__free__2 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket__free__2 0 -GG EK_GLOBALS ada___ipc__socket__free__2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___ipc__socket ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___ipc__socket 0 -GG EK_PROOF_DEPENDENCIES ada___ipc__socket 0 -GG EK_GLOBALS ada___ipc__socket local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 ipc proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets refined_initializes 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___ipc__socket__unix_bound_mutex ada___ipc__socket__unix_bound_sockets TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__ipv4 TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__ipv6__generate_header FALSE FALSE FALSE FALSE TRUE ada___networking__ipv6 VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__socket__freeGP906 VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__freeGP906 TRUE FALSE FALSE FALSE TRUE ada___ipc__socket BODY_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__free__2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___ipc__socket__freeGP980 VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__freeGP980 TRUE FALSE FALSE FALSE TRUE ada___ipc__socket BODY_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__ipv4__generate_header FALSE FALSE FALSE FALSE TRUE ada___networking__ipv4 VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__register_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__block FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__ipv6 TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc-socket.cswi b/obj/gnatprove/phase1/ipc-socket.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/ipc-socket.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/ipc.ads.stderr b/obj/gnatprove/phase1/ipc.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc.ads.stdout b/obj/gnatprove/phase1/ipc.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/ipc.ali b/obj/gnatprove/phase1/ipc.ali deleted file mode 100644 index c34ffc9..0000000 --- a/obj/gnatprove/phase1/ipc.ali +++ /dev/null @@ -1,59 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U ipc%s ipc.ads 03976a1a OO PK IU - -D ipc.ads 20250222165738 03976a1a ipc%s -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ipc.ads -17K9*IPC 18l5 18e8 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ipc 0 -GG EK_PROOF_DEPENDENCIES ipc 0 -GG EK_GLOBALS ipc local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/ipc.cswi b/obj/gnatprove/phase1/ipc.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/ipc.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/kernel_main.adb.stderr b/obj/gnatprove/phase1/kernel_main.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/kernel_main.adb.stdout b/obj/gnatprove/phase1/kernel_main.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/kernel_main.ali b/obj/gnatprove/phase1/kernel_main.ali deleted file mode 100644 index 3f5238d..0000000 --- a/obj/gnatprove/phase1/kernel_main.ali +++ /dev/null @@ -1,733 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U kernel_main%b kernel_main.adb 0872eabd OO PK -W arch%s arch.ads arch.ali -W arch.clocks%s arch-clocks.adb arch-clocks.ali -W arch.hooks%s arch-hooks.adb arch-hooks.ali -W config%s config.ads config.ali -W devices%s devices.adb devices.ali -W lib%s lib.adb lib.ali -W lib.cmdline%s lib-cmdline.adb lib-cmdline.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W lib.panic%s lib-panic.adb lib-panic.ali -W lib.runtime%s lib-runtime.adb lib-runtime.ali -W networking%s networking.adb networking.ali -W networking.arp%s networking-arp.adb networking-arp.ali -W scheduler%s scheduler.adb scheduler.ali -W userland%s userland.ads userland.ali -W userland.loader%s userland-loader.adb userland-loader.ali -W userland.process%s userland-process.adb userland-process.ali -W vfs%s vfs.adb vfs.ali - -U kernel_main%s kernel_main.ads fba3ee83 OO PK - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D config.ads 20250222165738 98924657 config%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D i-c.ads 20240507065137 aac316ce interfaces.c%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D kernel_main.ads 20250222165738 fba3ee83 kernel_main%s -D kernel_main.adb 20250222165738 3470b9b8 kernel_main%b -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-cmdline.ads 20250222165738 711caa36 lib.cmdline%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-runtime.ads 20250222165738 e2d5964f lib.runtime%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D networking-arp.ads 20250222165738 eec21925 networking.arp%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-parame.ads 20240507065137 3597fc11 system.parameters%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-loader.ads 20250222165738 4d432fbc userland.loader%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 4 arch.ads -20K9*Arch 52e9 20|17w6 18r6 19r6 51r7 69r7 -X 5 arch-clocks.ads -19K14*Clocks 45e16 20|18w11 51r12 -23U14*Initialize_Sources 20|51s19 -X 7 arch-hooks.ads -17K14*Hooks 33e15 20|19w11 69r12 -32U14*Register_RAM_Files 20|69s18 -X 10 config.ads -17K9*Config 29e11 20|32w6 58r30 58r50 59r57 -22a4*Name{string} 20|58r37 -23a4*Version{string} 20|58r57 -25a4*Bug_Site{string} 20|59r64 -X 11 devices.ads -22K9*Devices 279e12 20|20w6 20r19 39r34 42r21 65r7 90r32 92r22 93r25 94r13 -35A12*UUID_String{string} 20|90r40 -83I9*Device_Handle 20|42r29 -85i4*Error_Handle{83I9} 20|93r33 -88i4*Max_Name_Length{natural} 20|39r42 -92U14*Init 20|65s15 -117V13*Fetch_UUID{83I9} 20|92s30 -130U14*Fetch_Name 20|94s21 -X 13 interfac.ads -84M9*Unsigned_64 -X 19 kernel_main.ads -17K9*Kernel_Main 26l5 26e16 20|34b14 224l5 224t16 -25U14*Entrypoint 25>26 20|35b14 223l8 223t18 -25a26 Cmdline{string} 20|35b26 77r38 81r38 89r11 100r14 112r11 121r11 179r11 -X 20 kernel_main.adb -36p7 Init_Path{35|19P9} 114m10 138r30 165r33 167r55 -37p7 Init_Args{35|22P9} 137m13 138r13 156r16 167m10 168r52 181r10 194r17 -. 194r59 198r30 -38a7 Init_Env{35|21A9} 195r17 -39a7 Value{string} 89m47 91r53 92r42 94m43 96r56 100m45 103r52 104r21 106r54 -. 112m42 114r35 121m46 130r22 131r19 141r30 142r19 143r31 149r22 150r22 157r31 -. 165r55 179m42 181r39 184r28 -40i7 Value_Len{natural} 89m61 90r20 91r65 92r54 94m50 96r68 100m59 102r20 -. 103r64 104r33 106r66 112m56 113r20 114r47 121m60 122r20 130r34 141r42 142r31 -. 143r43 149r34 165r67 179m56 180r20 181r51 184r40 -41b7 Found{boolean} 89m54 90r10 100m52 102r10 104m64 105r17 112m49 113r10 -. 121m53 122r10 172m61 173r14 179m49 180r10 -42i7 Init_Dev{11|83I9} 92m10 93r13 94r33 -43i7 Init_FS{40|74I9} 185m28 194r40 202m34 209r52 213r20 -44m7 Init_Ino{40|28M9} 186m28 194r49 203m34 209r61 213r29 -45i7 Init_PID{39|33I9} 193m13 196r16 198r20 209r42 -46e7 Success{40|234E9} 187m28 192r13 204m34 -47a7 Init_Stdin{string} 195r27 -48a7 Init_Stdout{string} 195r39 195r52 -124i13 Arg_Count{natural} 132m19 132r32 135m13 135r26 137r66 -125i13 First_Idx{natural} 140m13 143r19 148r28 157r38 159m16 -126i13 Last_Idx{natural} 141m13 142r50 148m16 149r53 150r29 153m19 153r31 -. 157r51 159r29 -127i13 Arg_Len{natural} 147m16 152m19 152r31 -128i13 List_Idx{natural} 139m13 156r27 158m16 158r29 -130e17 C{character} -161L12 END_PARSE 144r24 -X 21 lib.ads -19K9*Lib 20|22r6 23r6 24r6 30r6 54r7 58r7 59r7 73r10 77r10 77r47 78r10 81r10 -. 81r47 83r10 88r7 89r20 91r10 96r13 99r10 100r23 103r10 106r13 111r7 112r20 -. 116r10 120r7 121r20 164r10 168r10 174r10 178r7 179r20 211r16 215r13 218r10 -. 21|35e8 -X 22 lib-cmdline.ads -17K13*Cmdline 20|22w10 77r14 77r51 81r14 81r51 88r11 89r24 99r14 100r27 111r11 -. 112r24 120r11 121r24 178r11 179r24 22|54e16 -23a4*Root_Key{string} 20|100r35 -24a4*Root_UUID_Key{string} 20|89r32 -25a4*Init_Key{string} 20|112r32 179r32 -26a4*Init_Arg_Key{string} 20|121r32 -27a4*No_Program_ASLR{string} 20|77r59 -28a4*No_Location_ASLR{string} 20|81r59 -34U14*Get_Key_Value 20|88s19 99s22 111s19 120s19 178s19 -45V13*Is_Key_Present{boolean} 20|77s22 81s22 -X 23 lib-messages.ads -21K13*Messages 20|23w10 54r11 58r11 59r11 78r14 83r14 91r14 96r17 103r14 -. 106r17 164r14 168r14 23|103e17 -31U14*Enable_Logging 20|54s20 -41U14*Put_Line 20|58s20 59s20 78s23 83s23 91s23 96s26 103s23 106s26 164s23 -. 168s23 -X 24 lib-panic.ads -21K13*Panic 20|24w10 73r14 116r14 174r14 211r20 215r17 218r14 24|39e14 -32U14*Hard_Panic 20|73s20 116s20 174s20 211s26 215s23 218s20 -X 25 lib-runtime.ads -23K13*Runtime 20|30w10 31r26 25|45e16 -X 28 networking.ads -20K9*Networking 20|29r6 64r7 28|55e15 -X 29 networking-arp.ads -17K20*ARP 20|29w17 64r18 29|86e19 -25U14*Initialize 20|64s22 -X 30 scheduler.ads -25K9*Scheduler 20|28w6 72r14 222r7 30|183e14 -33V13*Init{boolean} 20|72s24 -37U14*Idle_Core 20|222s17 -X 35 userland.ads -17K9*Userland 20|25r6 26r6 26r28 27w6 36r21 37r21 38r21 63r7 79r10 84r10 -. 137r34 167r27 193r25 197r16 209r16 35|23e13 -19P9*String_Acc(string) 20|36r30 -20A9*Argument_Arr(19P9) 20|137r43 167r36 -21A9*Environment_Arr(19P9) 20|38r30 -22P9*Argument_Arr_Acc(20A9) 20|37r30 -X 37 userland-loader.ads -20K18*Loader 20|25w15 79r19 193r34 37|65e20 -23U14*Disable_ASLR 20|79s26 -29V13*Start_Program{39|33I9} 20|193s41 -X 39 userland-process.ads -28K18*Process 20|26w15 26r37 63r16 84r19 197r25 209r25 39|677e21 -33I9*PID 20|45r21 -34i4*Error_PID{33I9} 20|196r28 -146U14*Init 20|63s24 -149U14*Disable_ASLR 20|84s27 -418U14*Set_CWD 20|209s33 -443U14*Set_Identifier 20|197s33 -X 40 vfs.ads -24K9*VFS 20|21w6 21r15 43r21 44r21 46r21 66r7 104r10 172r7 172r35 192r23 -. 40|674e8 -28M9*File_Inode_Number<13|84M9> 20|44r25 -73n23*FS_DEV{73E9} 20|172r39 -74I9*FS_Handle 20|43r25 -79U14*Init 20|66s11 -87U14*Mount 20|104s14 -104U14*Mount 20|172s11 -234E9*FS_Status 20|46r25 40|242e16 -235n8*FS_Success{234E9} 20|192r27 -359U14*Close 20|213s13 -593U14*Open 20|183s10 200s16 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS kernel_main__entrypoint 24 ada___arch__clocks__initialize_sources ada___arch__hooks__register_ram_files devices__init devices__fetch_uuid devices__fetch_name vfs__init vfs__mount vfs__mount__2 vfs__close vfs__open__2 ada___lib__cmdline__get_key_value ada___lib__cmdline__is_key_present ada___lib__messages__enable_logging ada___lib__messages__put_line ada___lib__panic__hard_panic ada___userland__loader__disable_aslr ada___userland__loader__start_program ada___userland__process__init ada___userland__process__disable_aslr ada___userland__process__set_cwd ada___userland__process__set_identifier scheduler__init scheduler__idle_core ada___networking__arp__initialize -GG EK_PROOF_DEPENDENCIES kernel_main__entrypoint 0 -GG EK_GLOBALS kernel_main__entrypoint local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 kernel_main proper_proof_in 0 proper_input 2 ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 2 ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 5 ada___arch__hooks__register_ram_files devices__init vfs__init ada___userland__process__init ada___networking__arp__initialize calls_conditional 15 devices__fetch_uuid devices__fetch_name vfs__mount vfs__mount__2 vfs__close vfs__open__2 ada___lib__cmdline__get_key_value ada___lib__cmdline__is_key_present ada___userland__loader__disable_aslr ada___userland__loader__start_program ada___userland__process__disable_aslr ada___userland__process__set_cwd ada___userland__process__set_identifier scheduler__init scheduler__idle_core FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 -GG EK_DIRECT_CALLS kernel_main 0 -GG EK_PROOF_DEPENDENCIES kernel_main 0 -GG EK_GLOBALS kernel_main local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__runtime__last_chance_handler FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime__memcmp FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___userland__loader__start_program FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime__memcpy FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_program__2 FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_elf FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime__memmove FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__cmdline TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_shebang FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime__memset FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__cmdline__get_key_value FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__cmdline__is_key_present FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__cmdline__find_key FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE config TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE kernel_main TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE kernel_main__entrypoint FALSE FALSE FALSE FALSE TRUE kernel_main VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_REMOTE_STATES 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/kernel_main.cswi b/obj/gnatprove/phase1/kernel_main.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/kernel_main.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-alignment.adb.stderr b/obj/gnatprove/phase1/lib-alignment.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-alignment.adb.stdout b/obj/gnatprove/phase1/lib-alignment.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-alignment.ali b/obj/gnatprove/phase1/lib-alignment.ali deleted file mode 100644 index e701954..0000000 --- a/obj/gnatprove/phase1/lib-alignment.ali +++ /dev/null @@ -1,88 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U lib.alignment%b lib-alignment.adb 07806a02 OO PK GE -W lib%s lib.adb lib.ali -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali - -U lib.alignment%s lib-alignment.ads e57d5fee BN OO PU PK GE -W lib%s lib.adb lib.ali - -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s -D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 lib.ads -19K9*Lib 35e8 2|19r9 43r5 3|19r14 41r5 -X 2 lib-alignment.ads -18M9 T 27r42 27r52 35r44 35r54 40r50 40r60 41r49 3|23r42 23r52 27r14 30r44 -. 30r54 34r14 37r50 37r60 -19k13*Alignment 1|19k9 2|18z9 43l9 43e18 3|19b18 41l9 41t18 -27V13*Align_Up{18M9} 27>23 27>30 29r20 3|23b13 28l8 28t16 -27*23 Value{18M9} 3|23b23 24r61 -27*30 Alignment{18M9} 28r20 28r40 28r55 29r40 3|23b30 25r61 -35V13*Align_Down{18M9} 35>25 35>32 37r20 3|30b13 35l8 35t18 -35*25 Value{18M9} 3|30b25 31r61 -35*32 Alignment{18M9} 36r20 36r40 36r55 37r42 3|30b32 32r61 -40V13*Divide_Round_Up{18M9} 40>30 40>40 42r20 3|37b13 40l8 40t23 -40*30 Dividend{18M9} 41r21 3|37b30 39r15 -40*40 Divisor{18M9} 41r33 41r62 42r47 3|37b40 39r27 39r43 -X 3 lib-alignment.adb -24m7 Value2{5|82M9} 27r18 -25m7 Align2{5|82M9} 27r27 27r48 -31m7 Value2{5|82M9} 34r17 -32m7 Align2{5|82M9} 34r33 -X 4 system.ads -37K9*System 3|17r6 17r35 4|155e11 -X 5 s-stoele.ads -40K16*Storage_Elements 3|17w13 17r42 5|90e28 -82M9*Integer_Address 3|24r25 24r44 25r25 25r44 31r25 31r44 32r25 32r44 - -QQ SPARKVERSION 0.0w -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-alignment.cswi b/obj/gnatprove/phase1/lib-alignment.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/lib-alignment.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-atomic.ads.stderr b/obj/gnatprove/phase1/lib-atomic.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-atomic.ads.stdout b/obj/gnatprove/phase1/lib-atomic.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-atomic.ali b/obj/gnatprove/phase1/lib-atomic.ali deleted file mode 100644 index 9f16ed1..0000000 --- a/obj/gnatprove/phase1/lib-atomic.ali +++ /dev/null @@ -1,173 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U lib.atomic%s lib-atomic.ads 45ef3c55 OO PK -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W system%s system.ads system.ali - -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-atomic.ads 20250222165738 4d435862 lib.atomic%s -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 interfac.ads -38K9*Interfaces 233e15 3|18w6 18r22 -70M9*Unsigned_8 3|38r48 -73M9*Unsigned_16 3|39r48 -81M9*Unsigned_32 3|40r48 -84M9*Unsigned_64 3|41r48 -X 2 lib.ads -19K9*Lib 35e8 3|20r9 68r5 -X 3 lib-atomic.ads -20K13*Atomic 2|19k9 3|68l9 68e15 -22N4*Mem_Relaxed 29r39 -23N4*Mem_Consume -24N4*Mem_Acquire -25N4*Mem_Release -26N4*Mem_Acq_Rel -27N4*Mem_Seq_Cst 29r54 35r28 48r28 56r28 61r30 66r30 -29I12*Mem_Model{integer} 35r15 48r15 56r15 61r17 66r17 -32M12 Atomic_Type 35r48 35r48[38] 35r48[39] 35r48[40] 35r48[41] -33v13*Atomic_Load 34>7 35>7 36b30 38r35 39r35 40r35 41r35 -34m7 Ptr{4|67M9} -35i7 Model{29I12} -38V13*Atomic_Load_8[33]{1|70M9} -39V13*Atomic_Load_16[33]{1|73M9} -40V13*Atomic_Load_32[33]{1|81M9} -41V13*Atomic_Load_64[33]{1|84M9} -44M12 Atomic_Type2 47r15 48r48 -45v13*Atomic_Fetch_Add 46>7 47>7 48>7 49b30 -46m7 Ptr{4|67M9} -47*7 Val{44M12} -48i7 Model{29I12} -52M12 Atomic_Type3 55r15 56r48 -53v13*Atomic_Fetch_Sub 54>7 55>7 56>7 57b30 -54m7 Ptr{4|67M9} -55*7 Val{52M12} -56i7 Model{29I12} -59V13*Atomic_Test_And_Set{boolean} 60>7 61>7 62b30 -60m7 Pointer{4|67M9} -61i7 Model{29I12} -64U14*Atomic_Clear 65>7 66>7 67b30 -65m7 Pointer{4|67M9} -66i7 Model{29I12} -X 4 system.ads -37K9*System 3|17w6 34r15 46r15 54r15 60r17 65r17 4|155e11 -67M9*Address 3|34r22 46r22 54r22 60r24 65r24 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___lib__atomic__atomic_load_8 0 -GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_load_8 0 -GG EK_GLOBALS ada___lib__atomic__atomic_load_8 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__atomic__atomic_load_16 0 -GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_load_16 0 -GG EK_GLOBALS ada___lib__atomic__atomic_load_16 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__atomic__atomic_load_32 0 -GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_load_32 0 -GG EK_GLOBALS ada___lib__atomic__atomic_load_32 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__atomic__atomic_load_64 0 -GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_load_64 0 -GG EK_GLOBALS ada___lib__atomic__atomic_load_64 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__atomic__atomic_test_and_set 0 -GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_test_and_set 0 -GG EK_GLOBALS ada___lib__atomic__atomic_test_and_set local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__atomic__atomic_clear 0 -GG EK_PROOF_DEPENDENCIES ada___lib__atomic__atomic_clear 0 -GG EK_GLOBALS ada___lib__atomic__atomic_clear local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__atomic lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__atomic 0 -GG EK_PROOF_DEPENDENCIES ada___lib__atomic 0 -GG EK_GLOBALS ada___lib__atomic local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_16 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_16GP1637 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_fetch_sub FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_8GP1577 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_test_and_set FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_64GP1759 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_32GP1698 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_fetch_add FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_clear FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_64 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_64GP1759 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_16GP1637 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_32 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_32GP1698 VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_8GP1577 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-atomic.cswi b/obj/gnatprove/phase1/lib-atomic.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/lib-atomic.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-cmdline.adb.stderr b/obj/gnatprove/phase1/lib-cmdline.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-cmdline.adb.stdout b/obj/gnatprove/phase1/lib-cmdline.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-cmdline.ali b/obj/gnatprove/phase1/lib-cmdline.ali deleted file mode 100644 index 80e8b92..0000000 --- a/obj/gnatprove/phase1/lib-cmdline.ali +++ /dev/null @@ -1,123 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U lib.cmdline%b lib-cmdline.adb 5d6c1fd0 OO PK -W lib%s lib.adb lib.ali - -U lib.cmdline%s lib-cmdline.ads fc895ccf OO PK -W lib%s lib.adb lib.ali - -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-cmdline.ads 20250222165738 711caa36 lib.cmdline%s -D lib-cmdline.adb 20250222165738 2c70b5e6 lib.cmdline%b -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 lib.ads -19K9*Lib 35e8 2|17r9 54r5 3|17r14 115r5 -X 2 lib-cmdline.ads -17K13*Cmdline 1|19k9 2|54l9 54e16 3|17b18 115l9 115t16 -23a4*Root_Key{string} -24a4*Root_UUID_Key{string} -25a4*Init_Key{string} -26a4*Init_Arg_Key{string} -27a4*No_Program_ASLR{string} -28a4*No_Location_ASLR{string} -34U14*Get_Key_Value 35>8 35>17 36<8 37<8 38<8 3|21b14 86l8 86t21 -35a8 Cmdline{string} 3|22b8 33r17 39r10 39r44 44r10 45r29 55r13 60r13 64r16 -. 70r37 -35a17 Key{string} 39r19 3|22b17 33r26 -36a8 Returned{string} 39r39 3|23b8 29r36 31m7 56r13 70m10 -37b8 Found{boolean} 3|24b8 33m31 34r14 79m7 84m7 -38i8 Length{natural} 3|25b8 53m7 72m10 72r26 80m7 85m7 -45V13*Is_Key_Present{boolean} 45>29 45>38 3|88b13 94l8 94t22 -45a29 Cmdline{string} 46r19 3|88b29 92r17 -45a38 Key{string} 46r43 3|88b38 92r26 -50U14 Find_Key 51>8 51>17 52<8 53<8 3|33s7 92s7 96b14 114l8 114t16 -51a8 Cmdline{string} 3|97b8 103r21 104r24 105r19 -51a17 Key{string} 3|97b17 103r38 105r13 105r56 107r40 -52b8 Found{boolean} 3|98b8 106m13 112m7 -53i8 End_Index{natural} 3|99b8 107m13 113m7 -X 3 lib-cmdline.adb -27i7 Last_Index{integer} 33m38 38m7 38r21 39r25 39r53 43m7 43r21 44r25 45r38 -. 47m13 47r27 55r29 60r22 64r25 70r46 73m10 73r26 -28b7 Do_Until_Quotes{boolean} 45m10 46r13 50m10 61r20 65r16 -29i7 Returned_Idx{natural} 56r29 70r20 71m10 71r26 -78L6 Not_Found 35r15 -83L6 Found_But_No_Value 40r15 57r18 -89b7 Found{boolean} 92m31 93r14 -90i7 Discard{natural} 92m38 -101i7 Curr_Index{integer} 104m10 105r28 105r42 107r26 -103i11 I{integer} 104r41 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___lib__cmdline__get_key_value 1 ada___lib__cmdline__find_key -GG EK_PROOF_DEPENDENCIES ada___lib__cmdline__get_key_value 0 -GG EK_GLOBALS ada___lib__cmdline__get_key_value local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__cmdline lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__cmdline__is_key_present 1 ada___lib__cmdline__find_key -GG EK_PROOF_DEPENDENCIES ada___lib__cmdline__is_key_present 0 -GG EK_GLOBALS ada___lib__cmdline__is_key_present local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__cmdline lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__cmdline__find_key 0 -GG EK_PROOF_DEPENDENCIES ada___lib__cmdline__find_key 0 -GG EK_GLOBALS ada___lib__cmdline__find_key local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__cmdline lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__cmdline 0 -GG EK_PROOF_DEPENDENCIES ada___lib__cmdline 0 -GG EK_GLOBALS ada___lib__cmdline local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__cmdline__get_key_value FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__cmdline__find_key FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline PRIVATE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__cmdline TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___lib__cmdline__is_key_present FALSE FALSE FALSE FALSE TRUE ada___lib__cmdline VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-cmdline.cswi b/obj/gnatprove/phase1/lib-cmdline.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/lib-cmdline.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-messages.adb.stderr b/obj/gnatprove/phase1/lib-messages.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-messages.adb.stdout b/obj/gnatprove/phase1/lib-messages.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-messages.ali b/obj/gnatprove/phase1/lib-messages.ali deleted file mode 100644 index 680e86a..0000000 --- a/obj/gnatprove/phase1/lib-messages.ali +++ /dev/null @@ -1,308 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U lib.messages%b lib-messages.adb 2ef0876c OO PK -W ada%s ada.ads ada.ali -W ada.characters%s a-charac.ads a-charac.ali -W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali -W arch%s arch.ads arch.ali -W arch.debug%s arch-debug.adb arch-debug.ali -W lib%s lib.adb lib.ali - -U lib.messages%s lib-messages.ads 35644953 OO PK -W arch%s arch.ads arch.ali -W arch.clocks%s arch-clocks.adb arch-clocks.ali -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-debug.ads 20250222165738 7987b5ed arch.debug%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-messages.adb 20250222165738 f522e680 lib.messages%b -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 12|17r6 57r25 58r25 -X 2 a-charac.ads -16K13*Characters 18e19 12|17r10 57r29 58r29 -X 3 a-chlat1.ads -16K24*Latin_1 294e27 12|17w21 57r40 58r40 -33e4*LF{character} 12|58r48 -36e4*CR{character} 12|57r48 -X 4 arch.ads -20K9*Arch 52e9 11|18r6 44r10 100r33 12|18r6 56r7 57r7 58r7 127r7 -X 5 arch-clocks.ads -19K14*Clocks 45e16 11|18w11 44r15 100r38 12|127r12 -20@23*Monotonic_Clock_State 11|44r22 100r45 -31U14*Get_Monotonic_Time 12|127s19 -X 6 arch-debug.ads -19K14*Debug 49e15 12|18w11 56r12 57r12 58r12 -32U14*Print 12|57s18 58s18 -36U14*Print 12|56s18 -X 9 interfac.ads -38K9*Interfaces 233e15 11|17w6 17r22 -81M9*Unsigned_32 11|64r18 12|92r18 -84M9*Unsigned_64 11|75r18 12|98r14 102r18 108r29 109r29 125r19 -X 10 lib.ads -19K9*Lib 35e8 11|19r6 19r31 21r9 103r5 12|20r14 29r7 32r7 46r7 65r7 71r7 -. 88r7 131r5 -X 11 lib-messages.ads -21K13*Messages 10|19k9 11|103l9 103e17 12|20b18 131l9 131t17 -22@22*Message_State 23r22 34r33 45r10 52r34 90r23 92r23 94r23 96r23 12|21r22 -26N4*Max_Line 42r37 86r68 12|37r32 76r42 78r54 83r61 85r23 -31U14*Enable_Logging 12|27b14 33l8 33t22 -37a4*Warning_String{string} -41U14*Put_Line 41>24 12|35b14 66l8 66t16 -41a24 Message{string} 42r19 12|35b24 44r20 44r44 -50U14*Dump_Logs 50<25 50<46 12|68b14 89l8 89t17 -50a25 Buffer{string} 51r41 12|68b25 73r16 74m10 78r10 78r36 83m10 83r18 83r40 -50i46 Length{natural} 12|68b46 76m7 78r26 -55A12*Translated_String{string} 65r22 76r22 12|93r22 103r22 123r17 -56I12*Translated_Length{natural} 66r22 77r22 12|94r22 104r22 -63U14*Image 64>8 65<8 66<8 67>8 12|91b14 99l8 99t13 -64m8 Value{9|81M9} 12|92b8 98r27 -65a8 Buffer{55A12} 12|93b8 98m35 -66i8 Length{56I12} 12|94b8 98m43 -67b8 Use_Hex{boolean} 12|95b8 98r51 -74U14*Image 75>8 76<8 77<8 78>8 12|98s7 101b14 120l8 120t13 128s7 -75m8 Value{9|84M9} 12|102b8 108r44 -76a8 Buffer{55A12} 12|103b8 110r44 112m7 113r44 114r44 115m10 119r17 -77i8 Length{56I12} 12|104b8 119m7 -78b8 Use_Hex{boolean} 12|105b8 109r48 -81V13*Is_Initialized{boolean} 32s26 33s22 51s22 102b13 -86A9 Message_Buffer(string) 87r38 93r23 12|30r30 -87P9 Message_Buffer_Acc(86A9) 95r23 -89r4 Messages_Mutex{13|22R9} 12|22r8 29m34 29r34 32m36 32r36 46m34 46r34 -. 65m36 65r36 71m34 71r34 88m36 88r36 -91i4 Curr_Entry{natural} 12|22r24 50r27 53r28 60m7 60r21 61r10 62m10 -93a4 Small_Log_Buffer{86A9} 12|22r36 31r29 31r57 52r22 53m10 -95p4 Log_Ring_Buffer{87P9} 102r47 12|22r54 30m7 31r7 48r10 49r22 50r10 76r17 -. 82r19 -98A12 Timestamp_Str{string} 99r45 12|122r45 -99U14 Get_Timestamp 99<29 12|40s7 122b14 130l8 130t21 -99a29 Timestamp{98A12} 12|122b29 129m7 -X 12 lib-messages.adb -36a7 Timestamp{string} 40m22 42r26 -37a7 Final{string} 41m7 42m7 43m7 44m7 50r42 53r43 56r25 -38i7 Last_Idx{natural} 49m10 52m10 61r23 -69i7 Idx{natural} 83r33 83r55 85m10 85r17 -73e11 C=73:16{character} -82a11 Line{string} -107a7 Conversion{string} 115r30 -108m7 To_Convert{9|84M9} 113r13 115r51 116m10 116r30 -109m7 Base{9|84M9} 115r66 116r43 -110i7 Current{natural} 113r33 114r33 115r18 117m10 117r30 119r33 -123a7 Stp{11|55A12} 128m19 129r20 129r31 -124i7 Stp_Len{natural} 128m24 -125m7 Sec{9|84M9} 127m39 128r14 -125m12 NSec{9|84M9} 127m44 -X 13 lib-synchronization.ads -20K13*Synchronization 11|19w10 19r35 12|29r11 32r11 46r11 65r11 71r11 88r11 -. 13|66e24 -22R9*Binary_Semaphore 11|89r31 13|57e14 -23r4*Unlocked_Semaphore{22R9} 11|89r51 -27U14*Seize 12|29s27 46s27 71s27 -31U14*Release 12|32s27 65s27 88s27 - -QQ SPARKVERSION 0.0w -GG EK_STATE_MAP ada___lib__messages__message_state 4 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer -GG EK_DIRECT_CALLS ada___lib__messages__enable_logging 3 ada___lib__messages__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___lib__messages__enable_logging 0 -GG EK_GLOBALS ada___lib__messages__enable_logging local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 1 ada___lib__messages__message_state proper_output 1 ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___lib__messages__messages_mutex ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer refined_output 2 ada___lib__messages__messages_mutex ada___lib__messages__log_ring_buffer calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___lib__messages__messages_mutex ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__messages__put_line 5 ada___lib__messages__get_timestamp ada___lib__synchronization__seize ada___lib__synchronization__release ada___arch__debug__print ada___arch__debug__print__2 -GG EK_PROOF_DEPENDENCIES ada___lib__messages__put_line 0 -GG EK_GLOBALS ada___lib__messages__put_line local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 5 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer ada___arch__clocks__monotonic_clock_state refined_output 5 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer ada___arch__clocks__monotonic_clock_state calls_proof 0 calls 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___arch__debug__print ada___arch__debug__print__2 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 5 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer ada___arch__clocks__monotonic_clock_state LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__messages__dump_logs 3 ada___lib__messages__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___lib__messages__dump_logs 0 -GG EK_GLOBALS ada___lib__messages__dump_logs local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 1 ada___lib__messages__message_state proper_output 1 ada___lib__messages__message_state refined_proof_in 0 refined_input 2 ada___lib__messages__messages_mutex ada___lib__messages__log_ring_buffer refined_output 1 ada___lib__messages__messages_mutex calls_proof 0 calls 1 ada___lib__synchronization__seize calls_conditional 1 ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___lib__messages__messages_mutex ada___lib__messages__log_ring_buffer LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__messages__image 1 ada___lib__messages__image__2 -GG EK_PROOF_DEPENDENCIES ada___lib__messages__image 0 -GG EK_GLOBALS ada___lib__messages__image local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__messages__image__2 0 -GG EK_PROOF_DEPENDENCIES ada___lib__messages__image__2 0 -GG EK_GLOBALS ada___lib__messages__image__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__messages__is_initialized 0 -GG EK_PROOF_DEPENDENCIES ada___lib__messages__is_initialized 0 -GG EK_GLOBALS ada___lib__messages__is_initialized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 1 ada___lib__messages__message_state proper_output 0 refined_proof_in 0 refined_input 1 ada___lib__messages__log_ring_buffer refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___lib__messages__log_ring_buffer LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__messages__get_timestamp 2 ada___lib__messages__image__2 ada___arch__clocks__get_monotonic_time -GG EK_PROOF_DEPENDENCIES ada___lib__messages__get_timestamp 0 -GG EK_GLOBALS ada___lib__messages__get_timestamp local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__messages lib proper_proof_in 0 proper_input 1 ada___arch__clocks__monotonic_clock_state proper_output 1 ada___arch__clocks__monotonic_clock_state refined_proof_in 0 refined_input 1 ada___arch__clocks__monotonic_clock_state refined_output 1 ada___arch__clocks__monotonic_clock_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__clocks__monotonic_clock_state LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__messages 0 -GG EK_PROOF_DEPENDENCIES ada___lib__messages 0 -GG EK_GLOBALS ada___lib__messages local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___lib__messages__message_state refined_initializes 4 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 4 ada___lib__messages__messages_mutex ada___lib__messages__curr_entry ada___lib__messages__small_log_buffer ada___lib__messages__log_ring_buffer TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__read FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__print FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__print__2 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__debug__print__3 FALSE FALSE FALSE FALSE TRUE ada___arch__debug VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_REMOTE_STATES 1 ada___arch__clocks__monotonic_clock_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-messages.cswi b/obj/gnatprove/phase1/lib-messages.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/lib-messages.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-panic.adb.stderr b/obj/gnatprove/phase1/lib-panic.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-panic.adb.stdout b/obj/gnatprove/phase1/lib-panic.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-panic.ali b/obj/gnatprove/phase1/lib-panic.ali deleted file mode 100644 index f2816fe..0000000 --- a/obj/gnatprove/phase1/lib-panic.ali +++ /dev/null @@ -1,221 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U lib.panic%b lib-panic.adb 4d5d208b OO PK -W arch%s arch.ads arch.ali -W arch.hooks%s arch-hooks.adb arch-hooks.ali -W arch.snippets%s arch-snippets.adb arch-snippets.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali - -U lib.panic%s lib-panic.ads 12d75f7b OO PK -W ada%s ada.ads ada.ali -W ada.characters%s a-charac.ads a-charac.ali -W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali -W arch%s arch.ads arch.ali -W arch.clocks%s arch-clocks.adb arch-clocks.ali -W lib%s lib.adb lib.ali -W lib.messages%s lib-messages.adb lib-messages.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s -D arch-snippets.ads 20250222165738 3613a65c arch.snippets%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-panic.adb 20250222165738 06ea6c1d lib.panic%b -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 11|19r6 26r38 27r38 -X 2 a-charac.ads -16K13*Characters 18e19 11|19r10 26r42 27r42 -X 3 a-chlat1.ads -16K24*Latin_1 294e27 11|19w21 26r53 27r53 -51e4*ESC{character} 11|26r61 27r61 -X 4 arch.ads -20K9*Arch 52e9 11|18r6 36r35 12|17r6 18r6 33r7 46r7 -X 5 arch-clocks.ads -19K14*Clocks 45e16 11|18w11 36r40 -20@23*Monotonic_Clock_State 11|36r47 -X 6 arch-hooks.ads -17K14*Hooks 33e15 12|17w11 33r12 -26U14*Panic_SMP_Hook 12|33s18 -X 7 arch-snippets.ads -20K14*Snippets 81e18 12|18w11 46r12 -26U14*HCF 12|46s21 -X 9 lib.ads -19K9*Lib 35e8 11|17r6 21r9 39r5 12|19r6 21r14 48r5 -X 10 lib-messages.ads -21K13*Messages 103e17 11|17w10 34r28 37r22 12|36r7 37r7 38r7 39r7 40r7 41r7 -. 42r7 43r7 44r7 45r7 -22@22*Message_State 11|37r31 -26N4*Max_Line 11|34r37 -41U14*Put_Line 12|36s16 37s16 38s16 39s16 40s16 41s16 42s16 43s16 44s16 45s16 -X 11 lib-panic.ads -21K13*Panic 9|19k9 11|39l9 39e14 12|21b18 48l9 48t14 -22@22*Panic_State 23r22 36r22 12|22r22 -26a4*HP{string} 28r38 12|36r26 37r26 38r26 39r26 40r26 41r26 42r26 43r26 -. 44r26 -27a4*RC{string} 34r70 12|36r76 37r76 38r76 39r76 40r76 41r76 42r76 43r76 -. 44r76 45r51 -28a4*Panic_Header{string} 34r48 12|45r26 -32U14*Hard_Panic 32>26 12|27b14 47l8 47t18 -32a26 Message{string} 34r10 12|27b26 45r41 -X 12 lib-panic.adb -24r4 Panic_Mutex{13|22R9} 22r37 30m30 30r30 -X 13 lib-synchronization.ads -20K13*Synchronization 12|19w10 24r26 25r7 30r7 13|66e24 -22R9*Binary_Semaphore 12|24r42 13|57e14 -23r4*Unlocked_Semaphore{22R9} 12|25r23 -27U14*Seize 12|30s23 - -QQ SPARKVERSION 0.0w -GG EK_STATE_MAP ada___lib__panic__panic_state 1 ada___lib__panic__panic_mutex -GG EK_DIRECT_CALLS ada___lib__panic__hard_panic 4 ada___lib__messages__put_line ada___lib__synchronization__seize ada___arch__hooks__panic_smp_hook ada___arch__snippets__hcf -GG EK_PROOF_DEPENDENCIES ada___lib__panic__hard_panic 0 -GG EK_GLOBALS ada___lib__panic__hard_panic local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__panic lib proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___lib__panic__panic_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 3 ada___lib__panic__panic_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___lib__panic__panic_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__panic 0 -GG EK_PROOF_DEPENDENCIES ada___lib__panic 0 -GG EK_GLOBALS ada___lib__panic local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___lib__panic__panic_state refined_initializes 1 ada___lib__panic__panic_mutex calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 ada___lib__panic__panic_mutex TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___arch__snippets TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__hcf FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__enable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__disable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__pause FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__read_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__write_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_REMOTE_STATES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-panic.cswi b/obj/gnatprove/phase1/lib-panic.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/lib-panic.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-runtime.adb.stderr b/obj/gnatprove/phase1/lib-runtime.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-runtime.adb.stdout b/obj/gnatprove/phase1/lib-runtime.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-runtime.ali b/obj/gnatprove/phase1/lib-runtime.ali deleted file mode 100644 index 3a41458..0000000 --- a/obj/gnatprove/phase1/lib-runtime.ali +++ /dev/null @@ -1,280 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U lib.runtime%b lib-runtime.adb 1eea1dc3 OO PK -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W lib.panic%s lib-panic.adb lib-panic.ali -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali - -U lib.runtime%s lib-runtime.ads d1ab1d77 OO PK -W interfaces%s interfac.ads interfac.ali -W interfaces.c%s i-c.adb i-c.ali -W lib%s lib.adb lib.ali -W system%s system.ads system.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D i-c.ads 20240507065137 aac316ce interfaces.c%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-runtime.ads 20250222165738 e2d5964f lib.runtime%s -D lib-runtime.adb 20250222165738 290e217a lib.runtime%b -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D system.ads 20240507065137 14286b0f system%s -D s-parame.ads 20240507065137 3597fc11 system.parameters%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 6 interfac.ads -38K9*Interfaces 233e15 11|18r6 18r24 12|20w6 20r35 -70M9*Unsigned_8 12|39r35 40r35 58r34 59r34 71r34 72r34 93r22 93r36 94r34 -81M9*Unsigned_32 12|32r23 -X 7 i-c.ads -30K20*C 598e17 11|18w17 18r35 -59I9*int 11|30r68 12|38r68 -89M9*size_t 11|30r53 34r24 38r24 43r16 12|38r53 56r24 69r24 91r16 -X 8 lib.ads -19K9*Lib 35e8 11|23r9 45r5 12|17r6 18r6 22r14 29r34 33r7 101r5 -23V13*C_String_Length{natural} 12|29s38 -X 9 lib-messages.ads -21K13*Messages 103e17 12|17w10 28r21 32r7 -55A12*Translated_String{string} 12|28r30 -63U14*Image 12|32s16 -X 10 lib-panic.ads -21K13*Panic 39e14 12|18w10 33r11 -32U14*Hard_Panic 12|33s17 -X 11 lib-runtime.ads -23K13*Runtime 8|19k9 11|45l9 45e16 12|22b18 101l9 101t16 -25U14*Last_Chance_Handler 25>35 25>58 12|26b14 36l8 36t27 -25m35 File{14|67M9} 12|26b35 29r55 30r26 -25i58 Line{integer} 12|26b58 32r36 -30V13*MemCmp{7|59I9} 30>21 30>25 30>46 12|38b13 52l8 52t14 -30m21 S1{14|67M9} 12|38b21 39r62 -30m25 S2{14|67M9} 12|38b25 40r62 -30m46 Size{7|89M9} 12|38b46 39r26 40r26 42r21 -32V13*MemCpy{14|67M9} 33>8 33>15 34>8 12|54b13 65l8 65t14 -33m8 Desto{14|67M9} 12|55b8 58r61 64r14 -33m15 Source{14|67M9} 12|55b15 59r61 -34m8 Size{7|89M9} 12|56b8 58r25 59r25 61r21 -36V13*MemMove{14|67M9} 37>8 37>15 38>8 12|67b13 86l8 86t15 -37m8 Desto{14|67M9} 12|68b8 71r61 73r60 85r14 -37m15 Source{14|67M9} 12|68b15 72r61 74r60 -38m8 Size{7|89M9} 12|69b8 71r25 72r25 -40V13*MemSet{14|67M9} 41>8 42>8 43>8 12|88b13 100l8 100t14 -41m8 Desto{14|67M9} 12|89b8 94r61 99r14 -42i8 Value{integer} 12|90b8 93r48 -43m8 Size{7|89M9} 12|91b8 94r25 -X 12 lib-runtime.adb -27i7 Line_Len{natural} 32m56 35r43 -28a7 Line_Buffer{9|55A12} 32m43 35r11 35r24 35r59 -29a7 File_String{string} 34r43 -39a7 Str1(6|70M9) 43r13 44r16 -40a7 Str2(6|70M9) 43r25 44r27 -42m11 I{7|89M9} 43r19 43r31 44r22 44r33 -58a7 Dst(6|70M9) 62m10 -59a7 Src(6|70M9) 62r21 -61m11 I{7|89M9} 62r15 62r26 -71a7 Dst(6|70M9) 77r19 78m13 81r27 82m13 -72a7 Src(6|70M9) 78r24 82r24 -73m7 Desto_Int{16|82M9} 76r23 80r26 -74m7 Source_Int{16|82M9} 76r10 80r13 -77m14 I{7|89M9} 78r18 78r29 -81m14 I{7|89M9} 82r18 82r29 -93m7 Val{6|70M9} 97r15 -94a7 Dst(6|70M9) 96r16 97m10 -96m11 C=96:16{6|70M9} -X 14 system.ads -37K9*System 11|17w6 25r42 30r30 33r24 34r39 37r24 38r39 41r16 43r31 12|19r6 -. 19r35 26r42 38r30 55r24 56r39 68r24 69r39 89r16 91r31 14|155e11 -67M9*Address 11|25r49 30r37 33r31 34r46 37r31 38r46 41r23 43r38 12|26r49 -. 38r37 55r31 56r46 68r31 69r46 89r23 91r38 -X 16 s-stoele.ads -40K16*Storage_Elements 12|19w13 19r42 16|90e28 -82M9*Integer_Address 12|73r29 74r29 -87V13*To_Integer{82M9} 12|73s48 74s48 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___lib__runtime__last_chance_handler 0 -GG EK_PROOF_DEPENDENCIES ada___lib__runtime__last_chance_handler 0 -GG EK_GLOBALS ada___lib__runtime__last_chance_handler local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 lib__c_string_length ada___lib__messages__image ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__runtime__memcmp 0 -GG EK_PROOF_DEPENDENCIES ada___lib__runtime__memcmp 0 -GG EK_GLOBALS ada___lib__runtime__memcmp local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__runtime__memcpy 0 -GG EK_PROOF_DEPENDENCIES ada___lib__runtime__memcpy 0 -GG EK_GLOBALS ada___lib__runtime__memcpy local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__runtime__memmove 0 -GG EK_PROOF_DEPENDENCIES ada___lib__runtime__memmove 0 -GG EK_GLOBALS ada___lib__runtime__memmove local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__storage_elements__to_integer TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__runtime__memset 0 -GG EK_PROOF_DEPENDENCIES ada___lib__runtime__memset 0 -GG EK_GLOBALS ada___lib__runtime__memset local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__runtime lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__runtime 0 -GG EK_PROOF_DEPENDENCIES ada___lib__runtime 0 -GG EK_GLOBALS ada___lib__runtime local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime__memset FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces -GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime__last_chance_handler FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime__memcmp FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime__memcpy FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__runtime__memmove FALSE FALSE FALSE FALSE TRUE ada___lib__runtime VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-runtime.cswi b/obj/gnatprove/phase1/lib-runtime.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/lib-runtime.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-synchronization.adb.stderr b/obj/gnatprove/phase1/lib-synchronization.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-synchronization.adb.stdout b/obj/gnatprove/phase1/lib-synchronization.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-synchronization.ali b/obj/gnatprove/phase1/lib-synchronization.ali deleted file mode 100644 index 08e0a7e..0000000 --- a/obj/gnatprove/phase1/lib-synchronization.ali +++ /dev/null @@ -1,205 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U lib.synchronization%b lib-synchronization.adb f95ab937 OO PK -W arch%s arch.ads arch.ali -W arch.snippets%s arch-snippets.adb arch-snippets.ali -W lib%s lib.adb lib.ali -W lib.atomic%s lib-atomic.ads lib-atomic.ali -Z system%s system.ads system.ali - -U lib.synchronization%s lib-synchronization.ads 94a5d800 OO PK -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W system%s system.ads system.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-snippets.ads 20250222165738 3613a65c arch.snippets%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-atomic.ads 20250222165738 4d435862 lib.atomic%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D lib-synchronization.adb 20250222165738 61dbd7a0 lib.synchronization%b -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 7|18w6 19r6 44r10 49r10 61r10 68r10 -X 2 arch-snippets.ads -20K14*Snippets 81e18 7|19w11 44r15 49r15 61r15 68r15 -29U14*Enable_Interrupts 7|49s24 61s24 -30U14*Disable_Interrupts 7|44s24 -37U14*Pause 7|68s24 -X 3 interfac.ads -38K9*Interfaces 233e15 6|17w6 17r22 -70M9*Unsigned_8 6|56r19 61r19 -X 4 lib.ads -19K9*Lib 35e8 6|20r9 66r5 7|17r6 17r22 21r14 71r5 -X 5 lib-atomic.ads -20K13*Atomic 68e15 7|17w10 17r26 -22N4*Mem_Relaxed 7|67r37 -24N4*Mem_Acquire 7|28r67 45r62 -25N4*Mem_Release 7|38r50 59r45 -38V13*Atomic_Load_8[33]{3|70M9} 7|67s13 -59V13*Atomic_Test_And_Set{boolean} 7|28s17 45s17 -64U14*Atomic_Clear 7|38s7 59s7 -X 6 lib-synchronization.ads -20K13*Synchronization 4|19k9 6|66l9 66e24 7|21b18 71l9 71t24 -22R9*Binary_Semaphore 23r34 27r48 31r50 55c9 57e14 58r34 7|25r48 36r50 -23r4*Unlocked_Semaphore{22R9} 58c4 -27U14*Seize 27=21 7|25b14 34l8 34t13 -27r21 Semaphore{22R9} 7|25b21 28m38 28r38 32m27 32r27 -31U14*Release 31=23 7|36b14 39l8 39t15 -31r23 Semaphore{22R9} 7|36b23 38m21 38r21 -38R9*Critical_Lock 39r33 44r43 50r36 60c9 62e14 63r33 7|41r43 55r36 -39r4*Unlocked_Critical{38R9} 63c4 -44U14*Seize 44=21 7|41b14 52l8 52t13 -44r21 Lock{38R9} 7|41b21 45m38 45r38 50m27 50r27 -49U14*Release 50=7 51>7 7|54b14 63l8 63t15 -50r7 Lock{38R9} 7|55b7 59m21 59r21 -51b7 Do_Not_Lift{boolean} 7|56b7 60r14 -56m7*Is_Locked{3|70M9} 7|28m48 32m37 38m31 -61m7*Is_Locked{3|70M9} 7|45m43 50m32 59m26 -65U14 Poll_Until_Zero 65>31 7|32s10 50s10 65b14 70l8 70t23 -65m31 Address{9|67M9} 7|65b31 67r28 -X 9 system.ads -37K9*System 6|18w6 65r41 7|65r41 9|155e11 -67M9*Address 6|65r48 7|65r48 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___lib__synchronization__seize 0 -GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__seize 0 -GG EK_GLOBALS ada___lib__synchronization__seize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___lib__atomic__atomic_test_and_set ada___arch__snippets__pause ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__synchronization__release 0 -GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__release 0 -GG EK_GLOBALS ada___lib__synchronization__release local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___lib__atomic__atomic_clear FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__synchronization__seize__2 0 -GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__seize__2 0 -GG EK_GLOBALS ada___lib__synchronization__seize__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___lib__atomic__atomic_test_and_set ada___arch__snippets__enable_interrupts ada___arch__snippets__disable_interrupts ada___arch__snippets__pause ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__synchronization__release__2 0 -GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__release__2 0 -GG EK_GLOBALS ada___lib__synchronization__release__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___lib__atomic__atomic_clear ada___arch__snippets__enable_interrupts FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__synchronization__poll_until_zero 0 -GG EK_PROOF_DEPENDENCIES ada___lib__synchronization__poll_until_zero 0 -GG EK_GLOBALS ada___lib__synchronization__poll_until_zero local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__synchronization lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___arch__snippets__pause ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__synchronization 0 -GG EK_PROOF_DEPENDENCIES ada___lib__synchronization 0 -GG EK_GLOBALS ada___lib__synchronization local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_32GP1698 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_64 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_64GP1759 VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_8GP1577 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_16 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_16GP1637 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__snippets TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__snippets__hcf FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__enable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_64GP1759 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__disable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_test_and_set FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_16GP1637 TRUE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_fetch_add FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_32 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_32GP1698 VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__pause FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__read_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_clear FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_load_8 FALSE FALSE FALSE TRUE ada___lib__atomic__atomic_load TRUE ada___lib__atomic__atomic_load_8GP1577 VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__write_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__atomic__atomic_fetch_sub FALSE FALSE FALSE FALSE TRUE ada___lib__atomic VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-synchronization.cswi b/obj/gnatprove/phase1/lib-synchronization.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/lib-synchronization.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib-time.adb.stderr b/obj/gnatprove/phase1/lib-time.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-time.adb.stdout b/obj/gnatprove/phase1/lib-time.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib-time.ali b/obj/gnatprove/phase1/lib-time.ali deleted file mode 100644 index d916c03..0000000 --- a/obj/gnatprove/phase1/lib-time.ali +++ /dev/null @@ -1,160 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U lib.time%b lib-time.adb 4f0bb3f3 OO PK -W lib%s lib.adb lib.ali - -U lib.time%s lib-time.ads 2c8194dd OO PK -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -N A29:7 gnatprove false_positive "postcondition might fail" "Impossible with the mod in the body, idk why it doesn't catch it" - -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-time.ads 20250222165738 30059be5 lib.time%s -D lib-time.adb 20250222165738 7f0e2816 lib.time%b -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 interfac.ads -38K9*Interfaces 233e15 3|17w6 17r22 -84M9*Unsigned_64 3|27r55 38r40 39r33 49r40 50r33 63r50 67r33 75r33 4|21r55 -. 22r37 24r21 27r21 33r40 34r33 37r21 38r22 47r40 48r33 59r50 -X 2 lib.ads -19K9*Lib 35e8 3|19r9 77r5 4|17r14 63r5 -X 3 lib-time.ads -19K13*Time 2|19k9 3|77l9 77e13 4|17b18 63l9 63t13 -27U14*Normalize 27=25 27=34 4|21b14 30l8 30t17 43s7 -27m25 Seconds{1|84M9} 4|21b25 24r10 25m10 25r21 27m10 -27m34 Nanoseconds{1|84M9} 28r35 4|21b34 22r52 29m7 29r22 -37U14*Increment 38=8 38=18 39>8 39>18 4|32b14 44l8 44t17 -38m8 Seconds1{1|84M9} 4|33b8 37r10 38m10 40m10 40r22 43m18 -38m18 Nanoseconds1{1|84M9} 40r35 4|33b18 42m7 42r23 43m28 -39m8 Seconds2{1|84M9} 4|34b8 37r40 40r33 -39m18 Nanoseconds2{1|84M9} 4|34b18 42r38 -48U14*Substract 49=8 49=18 50>8 50>18 4|46b14 57l8 57t17 -49m8 Seconds1{1|84M9} 54r28 4|47b8 51m7 51r19 53m10 53r22 -49m18 Nanoseconds1{1|84M9} 52r25 54r38 55r35 4|47b18 52r10 54m10 54r41 56m7 -. 56r23 -50m8 Seconds2{1|84M9} 54r52 4|48b8 51r30 -50m18 Nanoseconds2{1|84M9} 53r25 54r62 4|48b18 52r25 56r38 -63V13*Is_Greater_Equal{boolean} 54s10 63>31 63>35 63>40 63>44 4|59b13 62l8 -. 62t24 -63m31 S1{1|84M9} 4|59b31 61r15 61r29 -63m35 NS1{1|84M9} 64r34 4|59b35 61r43 -63m40 S2{1|84M9} 4|59b40 61r20 61r34 -63m44 NS2{1|84M9} 64r58 4|59b44 61r50 -67V13*Is_Normalized{boolean} 28s20 40s20 52s10 53s10 55s20 64s19 64s43 67>28 -. 75b13 -67m28 NS{1|84M9} 76r8 -71N4 MSec_Per_Sec 73r48 -72N4 USec_Per_MSec 73r32 -73N4 USec_Per_Sec 76r13 4|22r66 29r38 54r26 -X 4 lib-time.adb -22m7 Nanosecond_Seconds{1|84M9} 24r40 25r31 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___lib__time__normalize 1 ada___lib__time__is_normalized -GG EK_PROOF_DEPENDENCIES ada___lib__time__normalize 0 -GG EK_GLOBALS ada___lib__time__normalize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__time__increment 2 ada___lib__time__normalize ada___lib__time__is_normalized -GG EK_PROOF_DEPENDENCIES ada___lib__time__increment 0 -GG EK_GLOBALS ada___lib__time__increment local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__time__substract 2 ada___lib__time__is_greater_equal ada___lib__time__is_normalized -GG EK_PROOF_DEPENDENCIES ada___lib__time__substract 0 -GG EK_GLOBALS ada___lib__time__substract local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__time__is_greater_equal 1 ada___lib__time__is_normalized -GG EK_PROOF_DEPENDENCIES ada___lib__time__is_greater_equal 0 -GG EK_GLOBALS ada___lib__time__is_greater_equal local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__time__is_normalized 0 -GG EK_PROOF_DEPENDENCIES ada___lib__time__is_normalized 0 -GG EK_GLOBALS ada___lib__time__is_normalized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___lib__time lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___lib__time 0 -GG EK_PROOF_DEPENDENCIES ada___lib__time 0 -GG EK_GLOBALS ada___lib__time local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib-time.cswi b/obj/gnatprove/phase1/lib-time.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/lib-time.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/lib.adb.stderr b/obj/gnatprove/phase1/lib.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib.adb.stdout b/obj/gnatprove/phase1/lib.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/lib.ali b/obj/gnatprove/phase1/lib.ali deleted file mode 100644 index 5dd66fe..0000000 --- a/obj/gnatprove/phase1/lib.ali +++ /dev/null @@ -1,133 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U lib%b lib.adb b1d79efc OO PK -W ada%s ada.ads ada.ali -W ada.characters%s a-charac.ads a-charac.ali -W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali - -U lib%s lib.ads 99bd9df6 OO PU PK -W system%s system.ads system.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib.adb 20250222165738 104b929b lib%b -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 5|17r6 38r27 -X 2 a-charac.ads -16K13*Characters 18e19 5|17r10 38r31 -X 3 a-chlat1.ads -16K24*Latin_1 294e27 5|17w21 38r42 -23e4*NUL{character} 5|38r50 -X 4 lib.ads -19K9*Lib 35l5 35e8 5|20b14 65l5 65t8 -23V13*C_String_Length{natural} 23>30 5|30b13 43l8 43t23 -23m30 Addr{6|67M9} 24r19 5|30b30 36r32 -27V13*Least_Common_Multiple{integer} 27>36 27>42 5|45b13 51l8 51t29 -27i36 Val1{integer} 28r21 28r34 5|45b36 47r10 50r20 50r61 -27i42 Val2{integer} 29r21 29r34 5|45b42 47r22 50r27 50r67 -32V13*Greatest_Common_Divisor{integer} 32>38 32>44 34r20 5|50s36 53b13 64l8 -. 64t31 -32i38 Val1{integer} 33r20 5|53b38 54r22 -32i44 Val2{integer} 33r33 5|53b44 55r22 -X 5 lib.adb -31i7 Length{natural} 36r55 38r57 39m13 39r23 42r14 -35e13 C{character} 38r23 -54i7 M{integer} 59r15 60m10 63r14 -55i7 N{integer} 58r13 60r15 61m10 61r21 -56i7 T{integer} 59m10 61r15 -X 6 system.ads -37K9*System 4|17w6 17r18 24r27 5|18r6 18r35 6|155e11 -67M9*Address 4|23r37 5|30r37 -69m4*Null_Address{67M9} 4|24r34 -81V14*"="{boolean} 4|24r24 -X 7 s-stoele.ads -40K16*Storage_Elements 5|18w13 18r42 7|90e28 -51I9*Storage_Offset 5|36r39 -67V14*"+"{6|67M9} 5|36r37 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS lib__c_string_length 0 -GG EK_PROOF_DEPENDENCIES lib__c_string_length 0 -GG EK_GLOBALS lib__c_string_length local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS lib__least_common_multiple 1 lib__greatest_common_divisor -GG EK_PROOF_DEPENDENCIES lib__least_common_multiple 0 -GG EK_GLOBALS lib__least_common_multiple local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS lib__greatest_common_divisor 0 -GG EK_PROOF_DEPENDENCIES lib__greatest_common_divisor 0 -GG EK_GLOBALS lib__greatest_common_divisor local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 lib proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS lib 0 -GG EK_PROOF_DEPENDENCIES lib 0 -GG EK_GLOBALS lib local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/lib.cswi b/obj/gnatprove/phase1/lib.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/lib.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/main.adb.stderr b/obj/gnatprove/phase1/main.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/main.adb.stdout b/obj/gnatprove/phase1/main.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/main.ali b/obj/gnatprove/phase1/main.ali deleted file mode 100644 index 68fedc0..0000000 --- a/obj/gnatprove/phase1/main.ali +++ /dev/null @@ -1,94 +0,0 @@ -V "GNAT Lib v14" -M P W=b -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U main%b main.adb 5d198ec1 OO SU -W arch%s arch.ads arch.ali -W arch.entrypoint%s arch-entrypoint.adb arch-entrypoint.ali -W kernel_main%s kernel_main.adb kernel_main.ali -Z system%s system.ads system.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-entrypoint.ads 20250222165738 3e52ad86 arch.entrypoint%s -D kernel_main.ads 20250222165738 fba3ee83 kernel_main%s -D main.adb 20250222165738 98e8cdc4 main%b -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 4|22r6 -X 2 arch-entrypoint.ads -17K14*Entrypoint 20e20 4|22w11 23r27 -X 3 kernel_main.ads -17K9*Kernel_Main 26e16 4|24w6 28r4 -25U14*Entrypoint 4|28s16 -X 4 main.adb -26U11*Main 26b11 29l5 29t9 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS main 1 kernel_main__entrypoint -GG EK_PROOF_DEPENDENCIES main 0 -GG EK_GLOBALS main local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 kernel_main__entrypoint calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___arch__entrypoint TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___arch__entrypoint__bootstrap_main FALSE FALSE FALSE FALSE TRUE ada___arch__entrypoint VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE main FALSE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE kernel_main TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE kernel_main__entrypoint FALSE FALSE FALSE FALSE TRUE kernel_main VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/main.cswi b/obj/gnatprove/phase1/main.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/main.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/memory-physical.adb.stderr b/obj/gnatprove/phase1/memory-physical.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/memory-physical.adb.stdout b/obj/gnatprove/phase1/memory-physical.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/memory-physical.ali b/obj/gnatprove/phase1/memory-physical.ali deleted file mode 100644 index 5d49718..0000000 --- a/obj/gnatprove/phase1/memory-physical.ali +++ /dev/null @@ -1,454 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U memory.physical%b memory-physical.adb dfebe3b0 OO PK -W arch%s arch.ads arch.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W config%s config.ads config.ali -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W lib.alignment%s lib-alignment.adb lib-alignment.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W lib.panic%s lib-panic.adb lib-panic.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W memory%s memory.ads memory.ali -W system%s system.ads system.ali -Z system.storage_elements%s s-stoele.ads s-stoele.ali -Z system.unsigned_types%s s-unstyp.ads s-unstyp.ali -W userland%s userland.ads userland.ali -W userland.oom_failure%s userland-oom_failure.adb userland-oom_failure.ali - -U memory.physical%s memory-physical.ads 1461ad4d OO PK -W arch%s arch.ads arch.ali -W interfaces%s interfac.ads interfac.ali -W interfaces.c%s i-c.adb i-c.ali -W memory%s memory.ads memory.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D config.ads 20250222165738 98924657 config%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D i-c.ads 20240507065137 aac316ce interfaces.c%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s -D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s -D memory-physical.adb 20250222165738 d87b6a63 memory.physical%b -D system.ads 20240507065137 14286b0f system%s -D s-parame.ads 20240507065137 3597fc11 system.parameters%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-oom_failure.ads 20250222165738 8ec1521c userland.oom_failure%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 4 arch.ads -20K9*Arch 52e9 17|17w6 17r16 23r39 18|21r6 28r37 52r39 57r25 73r25 99r28 -23n8*Memory_Free{22E9} 18|57r30 73r30 99r33 -30m7*Start{19|67M9} 18|62r72 75r46 105r18 109r59 -31i7*Length{21|53I12} 18|58r50 63r60 73r54 76r34 110r47 -32e7*MemType{22E9} 18|57r15 73r15 99r18 -34A9*Boot_Memory_Map(29R9) 17|23r44 18|52r44 -X 6 arch-mmu.ads -22K14*MMU 250e13 18|21w11 28r42 -49N7*Page_Size 18|28r46 -X 7 config.ads -17K9*Config 29e11 18|24w6 144r14 211r13 229r30 -28b4*Support_Alloc_Only{boolean} 18|144r21 211r20 229r37 -X 8 interfac.ads -38K9*Interfaces 233e15 17|18r6 34r25 40r30 18|17w6 17r22 121r25 134r30 222r30 -70M9*Unsigned_8 18|204r65 -84M9*Unsigned_64 18|31r26 35r36 38r36 70r24 90r18 92r38 106r32 107r32 109r32 -. 110r32 128r28 129r28 190r43 224r22 244r28 247r42 -X 9 i-c.ads -30K20*C 598e17 17|18w17 34r36 40r41 18|121r36 134r41 222r41 -89M9*size_t 17|34r38 40r43 18|121r38 134r43 222r43 -X 10 lib.ads -19K9*Lib 35e8 18|18r6 19r6 19r31 20r6 23r6 83r10 122r28 135r10 149r7 176r10 -. 178r10 180r10 182r10 196r7 241r10 250r13 253r10 259r7 264r7 -X 11 lib-alignment.ads -19k13*Alignment 43e18 18|20w10 122r32 -X 13 lib-messages.ads -21K13*Messages 103e17 18|23w10 178r14 250r17 -41U14*Put_Line 18|178s23 250s26 -X 14 lib-panic.ads -21K13*Panic 39e14 18|18w10 83r14 135r14 176r14 -32U14*Hard_Panic 18|83s20 135s20 176s20 -X 15 lib-synchronization.ads -20K13*Synchronization 66e24 18|19w10 19r35 149r11 180r14 182r14 196r11 241r14 -. 253r14 259r11 264r11 -22R9*Binary_Semaphore 57e14 18|39r31 -23r4*Unlocked_Semaphore{22R9} 18|39r51 -27U14*Seize 18|149s27 182s30 241s30 259s27 -31U14*Release 18|180s30 196s27 253s30 264s27 -X 16 memory.ads -19K9*Memory 36e11 17|20r9 34r53 48r19 49r19 50r19 60r5 18|27r14 34r50 36r36 -. 122r43 130r28 130r43 131r28 134r17 161r37 266r5 -20M9*Size 17|48r26 49r26 50r26 59r42 59r55 18|34r57 36r43 43r21 44r21 47r42 -. 47r55 58r42 62r25 62r33 63r25 63r33 71r24 73r46 122r50 130r35 130r50 131r35 -. 134r24 161r44 -23N4*Null_Address 18|37r51 82r27 -29N4*Memory_Offset 18|75r55 105r55 202r64 231r28 232r41 244r49 -35M12*Virtual_Address{21|82M9} 17|34r60 18|37r32 121r53 201r25 202r13 223r22 -. 223r41 -X 17 memory-physical.ads -20K16*Physical 16|19k9 17|60l12 60e20 18|27b21 266l12 266t20 -23U14*Init_Allocator 23>30 18|52b14 119l8 119t22 -23a30 Memmap{4|34A9} 18|52b30 56r16 57r13 58r48 62r51 62r59 63r39 63r47 72r16 -. 73r13 73r52 75r44 76r32 77r32 98r19 99r16 105r16 109r57 110r45 -34V13*Alloc{16|35M12} 34>20 18|121b13 220l8 220t13 -34m20 Sz{9|89M9} 18|121b20 130r56 -40U14*Free 40>20 18|222b14 255l8 255t12 -40m20 Address{9|89M9} 18|222b20 223r58 -47R9*Statistics 51e14 55r42 18|257r42 -48m7*Total{16|20M9} 18|261m11 -49m7*Available{16|20M9} 18|262m11 -50m7*Free{16|20M9} 18|263m11 -55U14*Get_Statistics 55<30 18|257b14 265l8 265t22 -55r30 Stats{47R9} 18|257b30 260m7 -59V13 Calculate_Signature{16|20M9} 59>34 18|47b13 50l8 50t27 216s32 243s13 -59m34 Count{16|20M9} 18|47b34 49r14 -X 18 memory-physical.adb -28N4 Block_Size 70r53 114r53 115r33 142r51 143r36 195r63 202r50 204r50 217r26 -. 237r62 244r66 245r64 -29b4 Block_Free{boolean} 100r31 152r31 247r66 -30b4 Block_Used{boolean} 95r21 102r31 190r67 -31A9 Bitmap(boolean)<8|84M9> 88r24 124r21 225r22 -34m4 Total_Memory{16|20M9} 66m10 70r37 261r24 -34m18 Available_Memory{16|20M9} 65m10 262r24 -34m36 Free_Memory{16|20M9} 58m13 58r28 65r30 78m13 78r32 195m7 195r27 245m13 -. 245r28 263r24 -35m4 Block_Count{8|84M9} 70m7 71r30 88r37 124r34 151r40 225r35 -36m4 Bitmap_Length{16|20M9} 71m7 73r64 76r58 77r57 78r46 -37m4 Bitmap_Address{16|35M12} 75m13 82r10 89r50 105r38 125r47 226r38 -38m4 Bitmap_Last_Used{8|84M9} 151r16 169r10 170m10 194m7 -39r4 Alloc_Mutex{15|22R9} 149m34 149r34 180m39 180r39 182m37 182r37 196m36 -. 196r36 241m37 241r37 253m39 253r39 259m34 259r34 264m36 264r36 -42R9 Allocation_Header 45e14 203r19 239r19 -43m7*Block_Count{16|20M9} 215m17 243r41 245r50 246r34 -44m7*Signature{16|20M9} 216m17 243r63 -53i7 Adjusted_Length{21|53I12} 76m13 107r45 -54m7 Adjusted_Start{19|67M9} 77m13 106r57 -56r11 E=56:16{4|29R9} -62m10 Sta{16|20M9} 66r30 -63m10 Len{16|20M9} 66r36 -72r11 E=72:16{4|29R9} -88a10 Bitmap_Body{31A9} 89m14 89r14 94r22 95m13 114m16 -90m10 Index{8|84M9} 113r19 114r44 115m16 115r25 -91b10 Block_Value{boolean} 100m16 102m16 114r68 -92m10 Block_Start{8|84M9} 106m16 109m16 114r30 -92m23 Block_Length{8|84M9} 107m16 110m16 113r27 -94b14 Item=94:22{boolean} -98r14 E=98:19{4|29R9} -122K15 Align[11|19] 142r29 -124a7 Bitmap_Body{31A9} 125m11 125r11 152r13 169r30 170r30 190m10 -127b7 Did_OOM_Once{boolean} 175r10 179m10 -128m7 First_Found_Index{8|84M9} 153r16 153r46 155m16 183m10 190r23 194r27 -. 202r30 -129m7 Found_Count{8|84M9} 153r66 156m16 158m16 158r31 161r50 184m10 -130m7 Size{16|20M9} 134r10 136r13 137m10 142m7 142r45 143r29 -131m7 Blocks_To_Allocate{16|20M9} 143m7 145m10 145r32 161r16 189r21 195r42 -. 204r29 215r32 216r53 -150L6 Search_Blocks 171r15 185r15 -151m11 I{8|84M9} 152r26 153r41 155r37 -188L6 Fill_Bitmap 162r21 -189m11 I{16|20M9} 190r56 -201m10 Ret{16|35M12} 203r73 205r49 212r20 217r20 -203r10 Header{42R9} 214m13 -204a10 Data(8|70M9) 207r19 208m13 -207m14 V=207:19{8|70M9} -223m7 Real_Address{16|35M12} 229r10 231r13 232m10 232r26 237r47 -224m7 Real_Block{8|84M9} 244m13 247r29 -225a7 Bitmap_Body{31A9} 247m16 -237m10 IAddr{21|82M9} 238r59 244r41 -238m10 SAddr{19|67M9} 239r61 -239r10 Header{42R9} 243r34 243r56 245r43 246r27 -246m17 I{16|20M9} 247r55 -18M9 T{16|20M9} 27r42[122] 27r52[122] 35r44[122] 35r54[122] 40r50[122] 40r60[122] -. 41r49[122] 23r42[122] 23r52[122] 27r14[122] 30r44[122] 30r54[122] 34r14[122] -. 37r50[122] 37r60[122] -27V13 Align_Up{16|20M9} 142s35[122] 29r20[122] -27m23 Value{16|20M9} 24r61[122] -27m30 Alignment{16|20M9} 28r20[122] 28r40[122] 28r55[122] 29r40[122] 25r61[122] -35V13 Align_Down{16|20M9} 37r20[122] -35m25 Value{16|20M9} 31r61[122] -35m32 Alignment{16|20M9} 36r20[122] 36r40[122] 36r55[122] 37r42[122] 32r61[122] -40V13 Divide_Round_Up{16|20M9} 42r20[122] -40m30 Dividend{16|20M9} 41r21[122] 39r15[122] -40m40 Divisor{16|20M9} 41r33[122] 41r62[122] 42r47[122] 39r27[122] 39r43[122] -24m7 Value2{21|82M9} 27r18[122] -25m7 Align2{21|82M9} 27r27[122] 27r48[122] -31m7 Value2{21|82M9} 34r17[122] -32m7 Align2{21|82M9} 34r33[122] -X 19 system.ads -37K9*System 18|22w6 22r18 54r25 54r43 238r29 19|155e11 -67M9*Address 18|54r32 238r36 -69m4*Null_Address{67M9} 18|54r50 -81V14*"="{boolean} 18|105r24 -X 21 s-stoele.ads -51I9*Storage_Offset -53I12*Storage_Count{51I9} 18|53r25 76r43 77r42 -67V14*"+"{19|67M9} 18|77r40 -82M9*Integer_Address 18|237r28 -84V13*To_Address{19|67M9} 18|89s38 105s26 125s35 203s61 205s37 226s26 238s47 -87V13*To_Integer{82M9} 18|62s39 75s32 106s45 109s45 -X 23 userland.ads -17K9*Userland 18|25r6 181r10 23|23e13 -X 24 userland-oom_failure.ads -19K18*OOM_Failure 18|25w15 181r19 24|35e25 -29U14*Handle_Failure 18|181s31 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___memory__physical__init_allocator 3 ada___system__storage_elements__to_address ada___system__storage_elements__to_integer ada___lib__panic__hard_panic -GG EK_PROOF_DEPENDENCIES ada___memory__physical__init_allocator 0 -GG EK_GLOBALS ada___memory__physical__init_allocator local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 5 ada___memory__physical__free_memory ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 9 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 5 ada___memory__physical__free_memory ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 9 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 9 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 -GG EK_DIRECT_CALLS ada___memory__physical__alloc__align__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc__align__align_up 0 -GG EK_GLOBALS ada___memory__physical__alloc__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___memory__physical__alloc__align ada___memory__physical__alloc ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___memory__physical__alloc__align__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc__align__align_down 0 -GG EK_GLOBALS ada___memory__physical__alloc__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___memory__physical__alloc__align ada___memory__physical__alloc ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___memory__physical__alloc__align__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc__align__divide_round_up 0 -GG EK_GLOBALS ada___memory__physical__alloc__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___memory__physical__alloc__align ada___memory__physical__alloc ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___memory__physical__alloc__align 0 -GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc__align 0 -GG EK_GLOBALS ada___memory__physical__alloc__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___memory__physical__alloc ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___memory__physical__alloc 0 -GG EK_PROOF_DEPENDENCIES ada___memory__physical__alloc 0 -GG EK_GLOBALS ada___memory__physical__alloc local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 5 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex proper_output 3 ada___memory__physical__free_memory ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex refined_proof_in 0 refined_input 5 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex refined_output 3 ada___memory__physical__free_memory ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___lib__panic__hard_panic ada___lib__messages__put_line ada___lib__synchronization__seize ada___lib__synchronization__release ada___userland__oom_failure__handle_failure TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 5 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex LOCKS 0 -GG EK_DIRECT_CALLS ada___memory__physical__free 5 ada___memory__physical__calculate_signature ada___system__storage_elements__to_address ada___lib__messages__put_line ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___memory__physical__free 0 -GG EK_GLOBALS ada___memory__physical__free local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 6 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 4 ada___memory__physical__free_memory ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 6 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 4 ada___memory__physical__free_memory ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 6 ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_address ada___memory__physical__alloc_mutex ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 -GG EK_DIRECT_CALLS ada___memory__physical__get_statistics 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___memory__physical__get_statistics 0 -GG EK_GLOBALS ada___memory__physical__get_statistics local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 4 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__alloc_mutex proper_output 1 ada___memory__physical__alloc_mutex refined_proof_in 0 refined_input 4 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__alloc_mutex refined_output 1 ada___memory__physical__alloc_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 4 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__alloc_mutex LOCKS 0 -GG EK_DIRECT_CALLS ada___memory__physical__calculate_signature 0 -GG EK_PROOF_DEPENDENCIES ada___memory__physical__calculate_signature 0 -GG EK_GLOBALS ada___memory__physical__calculate_signature local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___memory__physical memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___memory__physical 0 -GG EK_PROOF_DEPENDENCIES ada___memory__physical 0 -GG EK_GLOBALS ada___memory__physical local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 memory proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 5 ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex refined_initializes 5 ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 8 ada___memory__physical__total_memory ada___memory__physical__available_memory ada___memory__physical__free_memory ada___memory__physical__block_count ada___memory__physical__bitmap_length ada___memory__physical__bitmap_address ada___memory__physical__bitmap_last_used ada___memory__physical__alloc_mutex TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces -GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___memory__physical__alloc__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___memory__physical__alloc BODY_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure__get_killing_config FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure__configure_killing FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__alloc__align__align_up FALSE FALSE FALSE FALSE TRUE ada___memory__physical__alloc__align VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__alloc__align__align_down FALSE FALSE FALSE FALSE TRUE ada___memory__physical__alloc__align VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE config TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___memory__physical__alloc__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___memory__physical__alloc__align VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_REMOTE_STATES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/memory-physical.cswi b/obj/gnatprove/phase1/memory-physical.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/memory-physical.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/memory.ads.stderr b/obj/gnatprove/phase1/memory.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/memory.ads.stdout b/obj/gnatprove/phase1/memory.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/memory.ali b/obj/gnatprove/phase1/memory.ali deleted file mode 100644 index dc7f20a..0000000 --- a/obj/gnatprove/phase1/memory.ali +++ /dev/null @@ -1,89 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_ATTRIBUTES -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U memory%s memory.ads ff889457 OO PK -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali - -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 memory.ads -19K9*Memory 36l5 36e11 -20M9*Size 28r32 -23N4*Null_Address -28N4*Kernel_Offset 33r31 -29N4*Memory_Offset 33r47 -33N4*Physical_Max 34r59 -34M12*Physical_Address{3|82M9} -35M12*Virtual_Address{3|82M9} -X 2 system.ads -37K9*System 1|17r6 17r35 2|155e11 -X 3 s-stoele.ads -40K16*Storage_Elements 1|17w13 17r42 3|90e28 -82M9*Integer_Address 1|34r32 35r32 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS memory 0 -GG EK_PROOF_DEPENDENCIES memory 0 -GG EK_GLOBALS memory local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/memory.cswi b/obj/gnatprove/phase1/memory.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/memory.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking-arp.adb.stderr b/obj/gnatprove/phase1/networking-arp.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking-arp.adb.stdout b/obj/gnatprove/phase1/networking-arp.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking-arp.ali b/obj/gnatprove/phase1/networking-arp.ali deleted file mode 100644 index 244ebfc..0000000 --- a/obj/gnatprove/phase1/networking-arp.ali +++ /dev/null @@ -1,212 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U networking.arp%b networking-arp.adb 0844581d OO PK -W networking%s networking.adb networking.ali - -U networking.arp%s networking-arp.ads 9e287770 OO PK -W networking%s networking.adb networking.ali - -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D networking.ads 20250222165738 70ea6e55 networking%s -D networking-arp.ads 20250222165738 eec21925 networking.arp%s -D networking-arp.adb 20250222165738 e6864138 networking.arp%b -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 interfac.ads -70M9*Unsigned_8 -X 4 networking.ads -20K9*Networking 55e15 5|17r9 86r5 6|17r14 127r5 -22A9*MAC_Address(1|70M9) 5|33r21 41r21 47r21 53r28 57r28 61r51 65r51 -. 74r20 6|31r21 47r21 62r21 76r28 90r28 104r51 116r51 -23A9*IPv4_Address(1|70M9) 5|34r21 35r21 42r21 43r21 53r58 61r27 -. 75r20 76r20 6|32r21 33r21 48r21 49r21 76r58 104r27 -24A9*IPv6_Address(1|70M9) 5|36r21 37r21 48r21 49r21 57r58 65r27 -. 77r20 78r20 6|34r21 35r21 63r21 64r21 90r58 116r27 -X 5 networking-arp.ads -17K20*ARP 4|20k9 5|86l16 86e19 6|17b25 127l16 127t19 -25U14*Initialize 6|20b14 28l8 28t18 -32U14*Add_Static 33>8 34>8 35>8 36>8 37>8 6|30b14 44l8 44t18 -33a8 MAC{4|22A9} 6|31b8 40r19 -34a8 IP4{4|23A9} 6|32b8 40r24 -35a8 IP4_Subnet{4|23A9} 6|33b8 40r29 -36a8 IP6{4|24A9} 6|34b8 40r41 -37a8 IP6_Subnet{4|24A9} 6|35b8 40r46 -40U14*Modify_Static 41>8 42>8 43>8 6|46b14 59l8 59t21 -41a8 MAC{4|22A9} 6|47b8 53r21 -42a8 IP4{4|23A9} 6|48b8 54r22 -43a8 IP4_Subnet{4|23A9} 6|49b8 55r29 -46U14*Modify_Static 47>8 48>8 49>8 6|61b14 74l8 74t21 -47a8 MAC{4|22A9} 6|62b8 68r21 -48a8 IP6{4|24A9} 6|63b8 69r22 -49a8 IP6_Subnet{4|24A9} 6|64b8 70r29 -53U14*Lookup 53>22 53<41 53<45 6|76b14 88l8 88t14 -53a22 MAC{4|22A9} 6|76b22 79r21 -53a41 IP{4|23A9} 6|76b41 80m13 86m7 -53a45 Subnet{4|23A9} 6|76b45 81m13 87m7 -57U14*Lookup 57>22 57<41 57<45 6|90b14 102l8 102t14 -57a22 MAC{4|22A9} 6|90b22 93r21 -57a41 IP{4|24A9} 6|90b41 94m13 100m7 -57a45 Subnet{4|24A9} 6|90b45 95m13 101m7 -61U14*Lookup 61>22 61<41 6|104b14 114l8 114t14 -61a22 IP{4|23A9} 6|104b22 107r21 -61a41 MAC{4|22A9} 6|104b41 108m13 113m7 -65U14*Lookup 65>22 65<41 6|116b14 126l8 126t14 -65a22 IP{4|24A9} 6|116b22 119r21 -65a41 MAC{4|22A9} 6|116b41 120m13 125m7 -69V13*Is_Initialized{boolean} 26s24 27s20 38s19 44s19 50s19 54s19 58s19 62s19 -. 66s19 85b13 -73R9 ARP_Entry 79e14 80r43 -74a7*MAC{4|22A9} 6|23m11 39r15 53r15 68r15 79r15 93r15 108r22 120r22 -75a7*IP4{4|23A9} 6|24m11 54m15 80r25 107r15 -76a7*IP4_Subnet{4|23A9} 6|25m11 55m15 81r25 -77a7*IP6{4|24A9} 6|26m11 69m15 94r25 119r15 -78a7*IP6_Subnet{4|24A9} 6|27m11 70m15 95r25 -80A9 ARP_Entries(73R9) 81r35 6|22r32 -81P9 ARP_Entries_Acc(80A9) 83r24 -83p4 Interface_Entries{81P9} 85r47 6|22m7 38r16 52r16 67r16 78r16 92r16 106r16 -. 118r16 -X 6 networking-arp.adb -38r11 E{5|73R9} -52r11 E{5|73R9} -67r11 E{5|73R9} -78r11 E{5|73R9} -92r11 E{5|73R9} -106r11 E{5|73R9} -118r11 E{5|73R9} - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___networking__arp__initialize 1 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__arp__initialize 0 -GG EK_GLOBALS ada___networking__arp__initialize local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 1 ada___networking__arp__interface_entries refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__arp__add_static 1 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__arp__add_static 0 -GG EK_GLOBALS ada___networking__arp__add_static local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 1 ada___networking__arp__interface_entries refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__arp__modify_static 1 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__arp__modify_static 0 -GG EK_GLOBALS ada___networking__arp__modify_static local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 1 ada___networking__arp__interface_entries refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__arp__modify_static__2 1 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__arp__modify_static__2 0 -GG EK_GLOBALS ada___networking__arp__modify_static__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 1 ada___networking__arp__interface_entries refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__arp__lookup 1 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__arp__lookup 0 -GG EK_GLOBALS ada___networking__arp__lookup local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__arp__lookup__2 1 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__arp__lookup__2 0 -GG EK_GLOBALS ada___networking__arp__lookup__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__arp__lookup__3 1 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__arp__lookup__3 0 -GG EK_GLOBALS ada___networking__arp__lookup__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__arp__lookup__4 1 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__arp__lookup__4 0 -GG EK_GLOBALS ada___networking__arp__lookup__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__arp__is_initialized 0 -GG EK_PROOF_DEPENDENCIES ada___networking__arp__is_initialized 0 -GG EK_GLOBALS ada___networking__arp__is_initialized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___networking__arp networking proper_proof_in 0 proper_input 1 ada___networking__arp__interface_entries proper_output 0 refined_proof_in 0 refined_input 1 ada___networking__arp__interface_entries refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___networking__arp__interface_entries LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__arp 0 -GG EK_PROOF_DEPENDENCIES ada___networking__arp 0 -GG EK_GLOBALS ada___networking__arp local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___networking__arp__interface_entries refined_initializes 1 ada___networking__arp__interface_entries calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 ada___networking__arp__interface_entries TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking-arp.cswi b/obj/gnatprove/phase1/networking-arp.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/networking-arp.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking-interfaces.adb.stderr b/obj/gnatprove/phase1/networking-interfaces.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking-interfaces.adb.stdout b/obj/gnatprove/phase1/networking-interfaces.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking-interfaces.ali b/obj/gnatprove/phase1/networking-interfaces.ali deleted file mode 100644 index 79b0405..0000000 --- a/obj/gnatprove/phase1/networking-interfaces.ali +++ /dev/null @@ -1,342 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U networking.interfaces%b networking-interfaces.adb 968f107b OO PK -W devices%s devices.adb devices.ali -W devices.netinter%s devices-netinter.ads devices-netinter.ali -W networking%s networking.adb networking.ali -Z system%s system.ads system.ali -N A198:7 gnatprove false_positive "cannot prove upper bound for Buffer'Length" "not entirely sure how that happens" - -U networking.interfaces%s networking-interfaces.ads f675fa2e OO PK -W devices%s devices.adb devices.ali -W networking%s networking.adb networking.ali -W networking.arp%s networking-arp.adb networking-arp.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-netinter.ads 20250222165738 a12468cd devices.netinter%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D networking-arp.ads 20250222165738 eec21925 networking.arp%s -D networking-interfaces.ads 20250222165738 9c034257 networking.interfaces%s -D networking-interfaces.adb 20250222165738 aba83ae1 networking.interfaces%b -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 3 devices.ads -22K9*Devices 279e12 11|17w6 17r19 34r22 43r21 48r21 57r21 64r25 69r25 73r21 -. 80r21 88r21 12|17r6 17r28 31r19 34r22 46r26 58r21 75r21 92r21 111r25 116r21 -. 119r27 136r25 141r21 144r27 160r21 179r21 205r26 215r38 -83I9*Device_Handle 11|34r30 43r29 48r29 57r29 64r33 69r33 73r29 -. 80r29 88r29 12|23r20 34r30 58r29 75r29 92r29 111r33 136r33 160r29 179r29 -85i4*Error_Handle{83I9} 12|31r27 46r34 116r29 119r35 141r29 144r35 205r34 -. 215r46 -224V13*IO_Control{boolean} 12|49s24 -X 4 devices-netinter.ads -17K17*NetInter 20e21 12|17w14 17r36 -19N4*NET_GETMAC 12|49r48 -X 5 interfac.ads -70M9*Unsigned_8 -X 7 lib-synchronization.ads -22R9*Binary_Semaphore 57e14 12|29r30 -23r4*Unlocked_Semaphore{22R9} 12|29r50 -27U14*Seize 12|44s7 64s7 81s7 98s7 117s7 142s7 167s7 186s7 213s7 -31U14*Release 12|54s7 71s7 88s7 106s7 131s7 156s7 175s7 194s7 237s7 -X 9 networking.ads -20K9*Networking 55e15 11|18r6 20r9 107r5 12|19r14 239r5 -22A9*MAC_Address(5|70M9) 11|90r21 12|24r20 -23A9*IPv4_Address(5|70M9) 11|35r22 36r22 44r25 63r21 74r21 75r21 -. 91r21 92r21 12|35r22 36r22 59r25 61r16 110r21 113r16 114r16 161r21 162r21 -24A9*IPv6_Address(5|70M9) 11|37r22 38r22 49r25 68r21 81r21 82r21 -. 93r21 94r21 12|37r22 38r22 76r25 78r16 135r21 138r16 139r16 180r21 181r21 -X 10 networking-arp.ads -17K20*ARP 86e19 11|18w17 45r19 50r19 65r19 70r19 77r19 84r19 102r19 12|50r13 -. 67r13 84r13 120r13 145r13 170r13 189r13 224r16 228r16 -32U14*Add_Static 12|50s17 -40U14*Modify_Static 12|170s17 -46U14*Modify_Static 12|189s17 -53U14*Lookup 12|67s17 120s17 224s20 -57U14*Lookup 12|84s17 145s17 228s20 -69V13*Is_Initialized{boolean} 11|45s23 50s23 65s23 70s23 77s23 84s23 102s23 -X 11 networking-interfaces.ads -20K20*Interfaces 9|20k9 11|107l16 107e26 12|19b25 239l16 239t26 -25i4*Max_Interface_Count{natural} 106c4 12|27r34 -33U14*Register_Interface 34>8 35>8 36>8 37>8 38>8 39<8 12|33b14 55l8 55t26 -34i8 Interfaced{3|83I9} 12|34b8 47r27 49r36 -35a8 IPv4{9|23A9} 12|35b8 50r38 -36a8 IPv4_Subnet{9|23A9} 12|36b8 50r44 -37a8 IPv6{9|24A9} 12|37b8 50r57 -38a8 IPv6_Subnet{9|24A9} 12|38b8 50r63 -39b8 Success{boolean} 12|39b8 43m7 49m13 -42U14*Get_Interface_Address 43>8 44<8 12|57b14 72l8 72t29 -43i8 Interfaced{3|83I9} 12|58b8 66r26 -44a8 IP{9|23A9} 12|59b8 63m7 67m34 -47U14*Get_Interface_Address 48>8 49<8 12|74b14 89l8 89t29 -48i8 Interfaced{3|83I9} 12|75b8 83r26 -49a8 IP{9|24A9} 12|76b8 80m7 84m34 -56U14*Block 57>8 58>8 59<8 12|91b14 107l8 107t13 -57i8 Interfaced{3|83I9} 12|92b8 100r26 -58b8 Is_Blocked{boolean} 12|93b8 101r31 -59b8 Success{boolean} 12|94b8 97m7 102m13 -62U14*Get_Suitable_Interface 63>8 64<8 12|109b14 132l8 132t30 -63a8 IP{9|23A9} 12|110b8 122r44 -64i8 Interfaced{3|83I9} 12|111b8 116m7 126m13 -67U14*Get_Suitable_Interface 68>8 69<8 12|134b14 157l8 157t30 -68a8 IP{9|24A9} 12|135b8 147r44 -69i8 Interfaced{3|83I9} 12|136b8 141m7 151m13 -72U14*Modify_Addresses 73>8 74>8 75>8 76<8 12|159b14 176l8 176t24 -73i8 Interfaced{3|83I9} 12|160b8 169r26 -74a8 IP{9|23A9} 12|161b8 170r41 -75a8 IP_Subnet{9|23A9} 12|162b8 170r45 -76b8 Success{boolean} 12|163b8 166m7 171m13 -79U14*Modify_Addresses 80>8 81>8 82>8 83<8 12|178b14 195l8 195t24 -80i8 Interfaced{3|83I9} 12|179b8 188r26 -81a8 IP{9|24A9} 12|180b8 189r41 -82a8 IP_Subnet{9|24A9} 12|181b8 189r45 -83b8 Success{boolean} 12|182b8 185m7 190m13 -87R9*Interface_Info 95e14 96r54 -88i7*Handle{3|83I9} 12|205m11 218m51 -89b7*Is_Blocked{boolean} 12|206m11 220m51 -90a7*MAC{9|22A9} 12|207m11 222m51 225r55 229r55 -91a7*IPv4{9|23A9} 12|208m11 226m55 -92a7*IPv4_Subnet{9|23A9} 12|209m11 227m55 -93a7*IPv6{9|24A9} 12|210m11 230m55 -94a7*IPv6_Subnet{9|24A9} 12|211m11 231m55 -96A9*Interface_Arr(87R9) 101r44 12|197r44 -101U14*List_Interfaces 101<31 101<59 12|197b14 238l8 238t23 -101a31 Buffer{96A9} 12|197b31 204m7 217r29 218m16 218r24 220m16 220r24 222m16 -. 222r24 225r20 225r28 226m20 226r20 226r28 227m20 227r20 227r28 229r20 229r28 -. 230m20 230r20 230r28 231m20 231r20 231r28 -101i59 Len{natural} 12|197b59 203m7 216m13 216r20 -X 12 networking-interfaces.adb -22R9 Inner_Interface 26e14 27r58 -23i7*Handle{3|83I9} 46r17 47m17 66r17 83r17 100r17 119r17 126r31 144r17 151r31 -. 169r17 188r17 215r28 219r34 -24a7*MAC{9|22A9} 49m64 50r33 67r29 84r29 120r29 145r29 170r36 189r36 222r73 -25b7*Is_Blocked{boolean} 48m17 101m17 119r60 144r60 221r34 -27A9 Inner_Arr(22R9) 30r22 -29r4 Interfaces_Lock{7|22R9} 44m14 44r14 54m16 54r16 64m14 64r14 71m16 71r16 -. 81m14 81r14 88m16 88r16 98m14 98r14 106m16 106r16 117m14 117r14 131m16 -. 131r16 142m14 142r14 156m16 156r16 167m14 167r14 175m16 175r16 186m14 186r14 -. 194m16 194r16 213m14 213r14 237m16 237r16 -30a4 Interfaces{27A9} 45r18 46r13 47m13 48m13 49r60 50r29 65r18 66r13 67r25 -. 82r18 83r13 84r25 99r18 100r13 101m13 118r18 119r13 119r56 120r25 126r27 -. 143r18 144r13 144r56 145r25 151r27 168r18 169r13 170r32 187r18 188r13 189r32 -. 214r16 215r13 219r19 221r19 222r58 -45r11 Int=45:18{22R9} -61a7 IP_Sub{9|23A9} 67m38 -65r11 Int=65:18{22R9} -78a7 IP_Sub{9|24A9} 84m38 -82r11 Int=82:18{22R9} -99r11 Int=99:18{22R9} -113a7 IP_Sub{9|23A9} 120m39 121r22 122r19 -114a7 IP2{9|23A9} 120m34 122r54 -118r11 Int=118:18{22R9} -121i17 I{integer} 122r27 122r48 122r59 -128L12 End_Iter 123r24 -138a7 IP_Sub{9|24A9} 145m39 146r22 147r19 -139a7 IP2{9|24A9} 145m34 147r54 -143r11 Int=143:18{22R9} -146i17 I{integer} 147r27 147r48 147r59 -153L12 End_Iter 148r24 -168r11 Int=168:18{22R9} -187r11 Int=187:18{22R9} -201i7 Curr_Index{natural} 217r16 218r39 220r39 222r39 225r43 226r43 227r43 -. 229r43 230r43 231r43 233m16 233r30 -214i11 I{integer} 215r25 219r31 221r31 222r70 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___networking__interfaces__register_interface 0 -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__register_interface 0 -GG EK_GLOBALS ada___networking__interfaces__register_interface local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces calls_proof 0 calls 0 calls_conditional 4 ada___lib__synchronization__seize ada___lib__synchronization__release devices__io_control ada___networking__arp__add_static FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__interfaces__get_interface_address 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__get_interface_address 0 -GG EK_GLOBALS ada___networking__interfaces__get_interface_address local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__interfaces__get_interface_address__2 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup__2 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__get_interface_address__2 0 -GG EK_GLOBALS ada___networking__interfaces__get_interface_address__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__interfaces__block 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__block 0 -GG EK_GLOBALS ada___networking__interfaces__block local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__interfaces__get_suitable_interface 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__get_suitable_interface 0 -GG EK_GLOBALS ada___networking__interfaces__get_suitable_interface local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__interfaces__get_suitable_interface__2 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup__2 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__get_suitable_interface__2 0 -GG EK_GLOBALS ada___networking__interfaces__get_suitable_interface__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__interfaces__modify_addresses 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__modify_static ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__modify_addresses 0 -GG EK_GLOBALS ada___networking__interfaces__modify_addresses local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__interfaces__modify_addresses__2 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__modify_static__2 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__modify_addresses__2 0 -GG EK_GLOBALS ada___networking__interfaces__modify_addresses__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__interfaces__list_interfaces 5 ada___lib__synchronization__seize ada___lib__synchronization__release ada___networking__arp__lookup ada___networking__arp__lookup__2 ada___networking__arp__is_initialized -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces__list_interfaces 0 -GG EK_GLOBALS ada___networking__interfaces__list_interfaces local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___networking__interfaces networking proper_proof_in 0 proper_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces proper_output 1 ada___networking__interfaces__interfaces_lock refined_proof_in 0 refined_input 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_output 1 ada___networking__interfaces__interfaces_lock calls_proof 1 ada___networking__arp__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___networking__arp__lookup ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__interfaces 0 -GG EK_PROOF_DEPENDENCIES ada___networking__interfaces 0 -GG EK_GLOBALS ada___networking__interfaces local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces refined_initializes 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___networking__interfaces__interfaces_lock ada___networking__interfaces__interfaces TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__block FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__netinter TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__register_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking-interfaces.cswi b/obj/gnatprove/phase1/networking-interfaces.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/networking-interfaces.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking-ipv4.adb.stderr b/obj/gnatprove/phase1/networking-ipv4.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking-ipv4.adb.stdout b/obj/gnatprove/phase1/networking-ipv4.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking-ipv4.ali b/obj/gnatprove/phase1/networking-ipv4.ali deleted file mode 100644 index 618cc3b..0000000 --- a/obj/gnatprove/phase1/networking-ipv4.ali +++ /dev/null @@ -1,153 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U networking.ipv4%b networking-ipv4.adb cfb8055c OO PK -W networking%s networking.adb networking.ali - -U networking.ipv4%s networking-ipv4.ads 78fae0c7 OO PK -W networking%s networking.adb networking.ali -W system%s system.ads system.ali - -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D networking.ads 20250222165738 70ea6e55 networking%s -D networking-ipv4.ads 20250222165738 1c38e59d networking.ipv4%s -D networking-ipv4.adb 20250222165738 d380e0c1 networking.ipv4%b -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 interfac.ads -70M9*Unsigned_8 5|38r25 39r25 6|35r30 -73M9*Unsigned_16 5|34r25 35r25 40r25 66r28 6|24r23 31r43 -X 4 networking.ads -20K9*Networking 55e15 5|19r9 67r5 6|17r14 41r5 -23A9*IPv4_Address(1|70M9) 5|41r25 42r25 63r30 6|21r30 -X 5 networking-ipv4.ads -19K20*IPv4 4|20k9 5|67l16 67e20 6|17b25 41l16 41t20 -21M9*Unsigned_2 33r25 -22M9*Unsigned_3 36r25 -23M9*Unsigned_4 30r25 31r25 -24M9*Unsigned_6 32r25 -25M9*Unsigned_13 37r25 -29R9*IPv4_Packet_Header 43e15 45r8 64r46 66r48 6|22r46 24r38 -30m7*Version{23M9} 46r7 6|27m11 -31m7*IHL{23M9} 47r7 6|28m11 -32m7*DSCP{24M9} 48r7 6|29m11 -33m7*ECN{21M9} 49r7 6|30m11 -34m7*Total_Length{1|73M9} 50r7 6|31m11 -35m7*Identification{1|73M9} 51r7 6|32m11 -36m7*Flags{22M9} 52r7 6|33m11 -37m7*Fragment_Offset{25M9} 53r7 6|34m11 -38m7*Time_To_Live{1|70M9} 54r7 6|35m11 -39m7*Protocol{1|70M9} 55r7 6|36m11 -40m7*Header_Checksum{1|73M9} 56r7 6|37m11 -41a7*Source_IP{4|23A9} 57r7 6|38m11 -42a7*Destination_IP{4|23A9} 58r7 6|39m11 -62V13*Generate_Header{29R9} 63>8 63>19 64>8 6|20b13 40l8 40t23 -63a8 Source_IP{4|23A9} 6|21b8 38r30 -63a19 Desto_IP{4|23A9} 6|21b19 39r30 -64i8 Data_Length{natural} 65r19 6|22b8 31r56 -X 6 networking-ipv4.adb -24m7 Size{1|73M9} 31r31 -X 7 system.ads -37K9*System 5|17w6 43r46 44r31 7|155e11 -91n23*High_Order_First{91E9} 5|43r53 44r38 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___networking__ipv4__generate_header 0 -GG EK_PROOF_DEPENDENCIES ada___networking__ipv4__generate_header 0 -GG EK_GLOBALS ada___networking__ipv4__generate_header local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___networking__ipv4 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__ipv4 0 -GG EK_PROOF_DEPENDENCIES ada___networking__ipv4 0 -GG EK_GLOBALS ada___networking__ipv4 local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___networking__ipv4 TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___networking__ipv4__generate_header FALSE FALSE FALSE FALSE TRUE ada___networking__ipv4 VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking-ipv4.cswi b/obj/gnatprove/phase1/networking-ipv4.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/networking-ipv4.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking-ipv6.adb.stderr b/obj/gnatprove/phase1/networking-ipv6.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking-ipv6.adb.stdout b/obj/gnatprove/phase1/networking-ipv6.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking-ipv6.ali b/obj/gnatprove/phase1/networking-ipv6.ali deleted file mode 100644 index 8de685e..0000000 --- a/obj/gnatprove/phase1/networking-ipv6.ali +++ /dev/null @@ -1,143 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U networking.ipv6%b networking-ipv6.adb 82a67bf3 OO PK -W networking%s networking.adb networking.ali - -U networking.ipv6%s networking-ipv6.ads 05b86d94 OO PK -W networking%s networking.adb networking.ali -W system%s system.ads system.ali - -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D networking.ads 20250222165738 70ea6e55 networking%s -D networking-ipv6.ads 20250222165738 617a68ce networking.ipv6%s -D networking-ipv6.adb 20250222165738 e3dc133d networking.ipv6%b -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 interfac.ads -70M9*Unsigned_8 5|28r25 31r25 32r25 6|31r30 -73M9*Unsigned_16 5|30r25 53r28 6|29r30 -X 4 networking.ads -20K9*Networking 55e15 5|19r9 54r5 6|17r14 35r5 -24A9*IPv6_Address(1|70M9) 5|33r25 34r25 50r30 6|21r30 -X 5 networking-ipv6.ads -19K20*IPv6 4|20k9 5|54l16 54e20 6|17b25 35l16 35t20 -21M9*Unsigned_4 27r25 -22M9*Unsigned_20 29r25 -26R9*IPv6_Packet_Header 35e15 37r8 51r46 53r48 6|22r46 -27m7*Version{21M9} 38r7 6|26m11 -28m7*Trafic_Class{1|70M9} 39r7 6|27m11 -29m7*Flow_Label{22M9} 40r7 6|28m11 -30m7*Payload_Length{1|73M9} 41r7 6|29m11 -31m7*Next_Header{1|70M9} 42r7 6|30m11 -32m7*Hop_Limit{1|70M9} 43r7 6|31m11 -33a7*Source_IP{4|24A9} 44r7 6|32m11 -34a7*Destination_IP{4|24A9} 45r7 6|33m11 -49V13*Generate_Header{26R9} 50>8 50>19 51>8 6|20b13 34l8 34t23 -50a8 Source_IP{4|24A9} 6|21b8 32r30 -50a19 Desto_IP{4|24A9} 6|21b19 33r30 -51i8 Data_Length{natural} 52r19 6|22b8 29r43 -X 7 system.ads -37K9*System 5|17w6 35r46 36r31 7|155e11 -91n23*High_Order_First{91E9} 5|35r53 36r38 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___networking__ipv6__generate_header 0 -GG EK_PROOF_DEPENDENCIES ada___networking__ipv6__generate_header 0 -GG EK_GLOBALS ada___networking__ipv6__generate_header local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___networking__ipv6 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___networking__ipv6 0 -GG EK_PROOF_DEPENDENCIES ada___networking__ipv6 0 -GG EK_GLOBALS ada___networking__ipv6 local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__ipv6 TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___networking__ipv6__generate_header FALSE FALSE FALSE FALSE TRUE ada___networking__ipv6 VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking-ipv6.cswi b/obj/gnatprove/phase1/networking-ipv6.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/networking-ipv6.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/networking.adb.stderr b/obj/gnatprove/phase1/networking.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking.adb.stdout b/obj/gnatprove/phase1/networking.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/networking.ali b/obj/gnatprove/phase1/networking.ali deleted file mode 100644 index 7c28180..0000000 --- a/obj/gnatprove/phase1/networking.ali +++ /dev/null @@ -1,165 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U networking%b networking.adb ed5f0138 OO PK -W ada%s ada.ads ada.ali -W ada.characters%s a-charac.ads a-charac.ali -W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali - -U networking%s networking.ads 7df22ba3 OO PK -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D networking.ads 20250222165738 70ea6e55 networking%s -D networking.adb 20250222165738 7d62411b networking%b -D system.ads 20240507065137 14286b0f system%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 8|17r6 24r26 -X 2 a-charac.ads -16K13*Characters 18e19 8|17r10 24r30 -X 3 a-chlat1.ads -16K24*Latin_1 294e27 8|17w21 24r41 -23e4*NUL{character} 8|24r49 -X 4 interfac.ads -38K9*Interfaces 233e15 7|17w6 17r22 -70M9*Unsigned_8 7|22r44 23r44 24r44 -73M9*Unsigned_16 7|25r26 26r26 -X 5 lib.ads -19K9*Lib 35e8 7|18r6 18r31 -X 6 lib-synchronization.ads -20K13*Synchronization 66e24 7|18w10 18r35 -22R9*Binary_Semaphore 57e14 7|51r30 -23r4*Unlocked_Semaphore{22R9} 7|51r50 -27U14*Seize 8|32s7 44s7 -31U14*Release 8|34s7 47s7 -X 7 networking.ads -20K9*Networking 55l5 55e15 8|19b14 50l5 50t15 -22A9*MAC_Address(4|70M9) -23A9*IPv4_Address(4|70M9) 29r32 -24A9*IPv6_Address(4|70M9) 30r32 -25M9*IPv4_Port<4|73M9> -26M9*IPv6_Port<4|73M9> -29a4*IPv4_8_Submask{23A9} -30a4*IPv6_128_Submask{24A9} -33i4*Hostname_Max_Len{natural} 40r47 49c4 52r41 53r28 -38U14*Get_Hostname 38<28 38<47 8|22b14 35l8 35t20 -38a28 Name{string} 39r19 40r19 8|22b28 24m7 26r10 27r20 33m7 33r13 33r27 -38i47 Length{natural} 8|22b47 27m10 29m10 33r40 33r70 -45U14*Set_Hostname 45>28 45<43 8|37b14 49l8 49t20 -45a28 Name{string} 8|37b28 39r10 39r29 45r26 46r22 46r38 -45b43 Success{boolean} 8|37b43 40m10 48m7 -51r4 Hostname_Lock{6|22R9} 8|32m14 32r14 34m16 34r16 44m14 44r14 47m16 47r16 -52i4 Hostname_Length{natural} 8|26r24 29r20 45m7 -53a4 Hostname{string} 8|33r55 39r43 46m7 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS networking__get_hostname 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES networking__get_hostname 0 -GG EK_GLOBALS networking__get_hostname local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 3 networking__hostname_lock networking__hostname_length networking__hostname proper_output 1 networking__hostname_lock refined_proof_in 0 refined_input 3 networking__hostname_lock networking__hostname_length networking__hostname refined_output 1 networking__hostname_lock calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 networking__hostname_lock networking__hostname_length networking__hostname LOCKS 0 -GG EK_DIRECT_CALLS networking__set_hostname 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES networking__set_hostname 0 -GG EK_GLOBALS networking__set_hostname local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 networking proper_proof_in 0 proper_input 3 networking__hostname_lock networking__hostname_length networking__hostname proper_output 3 networking__hostname_lock networking__hostname_length networking__hostname refined_proof_in 0 refined_input 3 networking__hostname_lock networking__hostname_length networking__hostname refined_output 3 networking__hostname_lock networking__hostname_length networking__hostname calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 networking__hostname_lock networking__hostname_length networking__hostname LOCKS 0 -GG EK_DIRECT_CALLS networking 0 -GG EK_PROOF_DEPENDENCIES networking 0 -GG EK_GLOBALS networking local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 3 networking__hostname_lock networking__hostname_length networking__hostname refined_initializes 3 networking__hostname_lock networking__hostname_length networking__hostname calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 3 networking__hostname_lock networking__hostname_length networking__hostname TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/networking.cswi b/obj/gnatprove/phase1/networking.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/networking.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/scheduler.adb.stderr b/obj/gnatprove/phase1/scheduler.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/scheduler.adb.stdout b/obj/gnatprove/phase1/scheduler.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/scheduler.ali b/obj/gnatprove/phase1/scheduler.ali deleted file mode 100644 index 689e1a2..0000000 --- a/obj/gnatprove/phase1/scheduler.ali +++ /dev/null @@ -1,1072 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U scheduler%b scheduler.adb c2e4a723 OO PK -W arch%s arch.ads arch.ali -W arch.clocks%s arch-clocks.adb arch-clocks.ali -W arch.local%s arch-local.adb arch-local.ali -W arch.snippets%s arch-snippets.adb arch-snippets.ali -W lib%s lib.adb lib.ali -W lib.panic%s lib-panic.adb lib-panic.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W lib.time%s lib-time.adb lib-time.ali -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali -W userland%s userland.ads userland.ali -W userland.process%s userland-process.adb userland-process.ali - -U scheduler%s scheduler.ads e1b67c79 OO PK -W arch%s arch.ads arch.ali -W arch.context%s arch-context.adb arch-context.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W interfaces%s interfac.ads interfac.ali -W memory%s memory.ads memory.ali -W system%s system.ads system.ali -W userland%s userland.ads userland.ali -W userland.elf%s userland-elf.adb userland-elf.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-local.ads 20250222165738 e5953d14 arch.local%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D arch-snippets.ads 20250222165738 3613a65c arch.snippets%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D lib-time.ads 20250222165738 30059be5 lib.time%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D scheduler.adb 20250222165738 6fbe4959 scheduler%b -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 4 arch.ads -20K9*Arch 52e9 25|22r6 23r6 45r21 54r21 62r19 63r19 64r19 129r37 26|22w6 -. 23r6 24r6 25r6 56r25 58r25 59r25 60r25 128r10 130r7 138r21 144r36 153r19 -. 154r19 162r7 242r10 246r10 263r21 270r18 271r18 273r7 277r7 289r19 290r19 -. 291r19 339r7 356r34 362r10 369r32 376r7 399r7 418r7 582r37 583r37 585r21 -. 591r7 698r7 707r54 709r13 710r13 712r13 718r7 731r7 734r14 737r7 738r7 -. 740r7 743r7 744r7 747r7 796r7 797r12 -X 5 arch-clocks.ads -19K14*Clocks 45e16 26|24w11 399r12 418r12 591r12 718r12 -31U14*Get_Monotonic_Time 26|399s19 418s19 591s19 718s19 -X 6 arch-context.ads -20K14*Context 70e17 25|23w11 62r24 63r24 129r42 26|58r30 59r30 60r30 153r24 -. 154r24 242r15 246r15 270r23 271r23 273r12 277r12 289r24 290r24 339r12 582r42 -. 585r26 709r18 710r18 712r18 744r12 747r12 -22R15*GP_Context{7|21R9} 25|62r32 129r50 26|58r38 153r32 270r31 289r32 582r50 -. 585r34 -23A15*FP_Context(13|70M9) 25|63r32 26|59r38 154r32 271r31 290r32 -24M15*Core_Context{13|84M9} 26|60r38 -33U14*Init_GP_Context 26|242s23 273s20 -39U14*Load_GP_Context 26|747s20 -42U14*Save_Core_Context 26|709s26 -46U14*Success_Fork_Result 26|339s20 -49U14*Init_FP_Context 26|246s23 277s20 -50U14*Save_FP_Context 26|710s26 -51U14*Load_FP_Context 26|744s20 -52U14*Destroy_FP_Context 26|712s26 -X 8 arch-local.ads -21K14*Local 40e15 26|23w11 130r12 356r39 362r15 369r37 376r12 583r42 698r12 -. 707r59 731r12 737r12 738r12 740r12 743r12 -23U14*Reschedule_In 26|698s18 731s18 -24U14*Reschedule_ASAP 26|130s18 362s21 376s18 -27V13*Fetch_TCB{27|67M9} 26|707s65 -28U14*Load_TCB 26|743s18 -31U14*Set_Stacks 26|740s18 -36V13*Get_Current_Thread{25|27I9} 26|356s45 369s43 583s48 -38U14*Set_Current_Thread 26|738s18 -39U14*Set_Current_Process 26|737s18 -X 9 arch-mmu.ads -22K14*MMU 250e13 25|22w11 45r26 54r26 64r24 26|56r30 138r26 144r41 162r12 -. 263r26 291r24 734r19 -26R9*Page_Permissions 32e14 26|144r45 -27b7*Is_User_Accesible{boolean} 26|145m11 -28b7*Can_Read{boolean} 26|146m11 -29b7*Can_Write{boolean} 26|147m11 -30b7*Can_Execute{boolean} 26|148m11 -31b7*Is_Global{boolean} 26|149m11 -43P9*Page_Table_Acc(42R9) 25|45r30 54r30 64r28 26|56r34 138r30 263r30 291r28 -81V13*Make_Active{boolean} 26|734s23 -139U14*Map_Allocated_Range 26|162s16 -X 10 arch-snippets.ads -20K14*Snippets 81e18 26|25w11 128r15 796r12 797r17 -29U14*Enable_Interrupts 26|796s21 -33U14*Wait_For_Interrupt 26|797s26 -37U14*Pause 26|128s24 -X 13 interfac.ads -38K9*Interfaces 233e15 25|18w6 18r22 -70M9*Unsigned_8 26|31r57 33r64 -81M9*Unsigned_32 25|125r60 175r50 26|89r48 562r60 589r15 821r50 -84M9*Unsigned_64 25|48r21 55r21 56r21 82r49 83r49 26|32r57 42r26 43r26 63r25 -. 64r25 65r25 66r25 67r25 68r25 69r25 70r25 71r25 72r25 90r18 141r21 156r19 -. 223r46 232r46 244r55 264r21 265r21 382r49 383r49 395r17 415r29 588r29 801r15 -. 802r15 804r17 805r18 807r18 808r19 -X 18 lib.ads -19K9*Lib 35e8 26|18r6 19r6 26w6 27r6 62r33 82r30 118r7 298r7 337r7 342r7 -. 348r7 352r7 361r10 363r10 364r10 371r7 375r7 386r7 391r7 398r7 404r7 408r7 -. 411r7 417r7 426r10 431r10 435r7 445r7 449r7 457r7 470r7 477r7 493r7 500r7 -. 507r7 514r7 523r7 564r7 579r7 593r7 612r10 613r10 616r10 697r7 735r10 746r7 -. 756r7 768r7 777r7 791r7 -X 20 lib-panic.ads -21K13*Panic 39e14 26|19w10 735r14 -32U14*Hard_Panic 26|735s20 -X 21 lib-synchronization.ads -20K13*Synchronization 66e24 26|18w10 62r37 82r34 118r11 298r11 337r11 342r11 -. 348r11 352r11 361r14 363r14 364r14 371r11 375r11 386r11 391r11 398r11 411r11 -. 417r11 435r11 445r11 449r11 457r11 470r11 477r11 493r11 500r11 507r11 514r11 -. 523r11 564r11 579r11 593r11 612r14 697r11 746r11 756r11 768r11 777r11 791r11 -22R9*Binary_Semaphore 57e14 26|62r53 -27U14*Seize 26|361s30 363s30 -31U14*Release 26|337s27 364s30 612s30 -38R9*Critical_Lock 62e14 26|82r50 -44U14*Seize 26|298s27 348s27 371s27 386s27 398s27 417s27 445s27 457s27 477s27 -. 500s27 514s27 564s27 593s27 756s27 777s27 -49U14*Release 26|118s27 342s27 352s27 375s27 391s27 411s27 435s27 449s27 -. 470s27 493s27 507s27 523s27 579s27 697s27 746s27 768s27 791s27 -X 22 lib-time.ads -19K13*Time 77e13 26|27w10 404r11 408r11 426r14 431r14 613r14 616r14 -37U14*Increment 26|408s16 431s19 616s19 -48U14*Substract 26|404s16 426s19 613s19 -X 23 memory.ads -19K9*Memory 36e11 25|19w6 19r18 -35M12*Virtual_Address{28|82M9} 25|42r21 53r21 26|135r21 165r41 262r21 -X 25 scheduler.ads -25K9*Scheduler 183l5 183e14 26|29b14 828l5 828t14 -27I9*TID 29r26 49r37 58r37 67r42 70r38 81r17 87r44 88r43 108r54 -. 115r36 116r37 118r33 119r33 132r31 134r46 138r17 160c9 162r27 173r32 177r31 -. 179r46 180r29 180r59 26|74r39 74r54 142r37 152r19 267r37 269r18 294r42 -. 296r17 346r38 356r27 369r25 381r17 394r44 414r43 511r54 527r36 532r37 537r33 -. 551r33 583r30 584r30 815r32 -28I9*TCID 30r26 47r21 57r21 65r19 98r27 103r39 105r35 106r39 108r39 -. 133r30 135r46 139r17 145r22 161c9 163r26 171r37 173r41 178r30 181r46 182r29 -. 182r61 26|45r35 45r51 54r25 140r21 266r21 292r19 439r27 453r39 474r35 475r18 -. 497r39 511r39 587r36 800r37 815r41 -29i4*Error_TID{27I9} 162c4 180r44 26|152r26 296r24 358r22 584r37 610r25 675r28 -. 703r25 753r28 -30i4*Error_TCID{28I9} 163c4 182r45 26|491r19 587r44 630r31 640r31 753r39 -. 774r28 -33V13*Init{boolean} 26|93b13 120l8 120t12 -37U14*Idle_Core 26|122b14 132l8 132t17 -41V13*Create_User_Thread{27I9} 42>8 43>8 44>8 45>8 46>8 47>8 48>8 49>8 26|134b13 -. 259l8 259t26 -42m8 Address{23|35M12} 26|135b8 245r26 -43a8 Args{30|20A9} 26|136b8 191r29 194r30 202r35 230r29 231r35 237r31 -44a8 Env{30|21A9} 26|137b8 181r28 184r30 202r49 221r28 222r35 -45p8 Map{9|43P9} 26|138b8 163r29 251r27 -46r8 Vector{31|31R9} 26|139b8 207r35 209r35 211r35 213r35 -47i8 Cluster{28I9} 26|140b8 253r27 -48m8 Stack_Size{13|84M9} 26|141b8 161r58 166r45 174r48 -49i8 PID{natural} 26|142b8 151r73 252r27 -52V13*Create_User_Thread{27I9} 53>8 54>8 55>8 56>8 57>8 58>8 26|261b13 286l8 -. 286t26 -53m8 Address{23|35M12} 26|262b8 276r23 -54p8 Map{9|43P9} 26|263b8 281r23 -55m8 Stack_Addr{13|84M9} 26|264b8 275r40 -56m8 TLS_Addr{13|84M9} 26|265b8 284r52 -57i8 Cluster{28I9} 26|266b8 283r23 -58i8 PID{natural} 26|267b8 282r23 -61V13*Create_User_Thread{27I9} 62>8 63>8 64>8 65>8 66>8 67>8 26|248s21 278s18 -. 288b13 344l8 344t26 -62r8 GP_State{6|22R15} 26|289b8 323r41 -63a8 FP_State{6|23A15} 26|290b8 324r41 -64p8 Map{9|43P9} 26|291b8 321r40 -65i8 Cluster{28I9} 26|292b8 320r40 -66i8 PID{natural} 26|293b8 325r66 -67m8 TCB{27|67M9} 26|294b8 322r44 -70U14*Delete_Thread 70>29 26|346b14 353l8 353t21 -70i29 Thread{27I9} 26|346b29 349r23 350r23 -74U14*Yield_If_Able 26|355b14 366l8 366t21 -77U14*Bail 26|368b14 378l8 378t12 -80U14*Get_Runtime_Times 81>8 82<8 82<24 83<8 83<22 26|380b14 392l8 392t25 -81i8 Thread{27I9} 26|381b8 387r38 388r42 389r36 390r40 -82m8 System_Seconds{13|84M9} 26|382b8 387m7 -82m24 System_Nanoseconds{13|84M9} 26|382b24 388m7 -83m8 User_Seconds{13|84M9} 26|383b8 389m7 -83m22 User_Nanoseconds{13|84M9} 26|383b22 390m7 -87U14*Signal_Kernel_Entry 87>35 26|394b14 412l8 412t27 -87i35 Thread{27I9} 26|394b35 401r20 402r20 406r24 407r24 409r24 409r55 -88U14*Signal_Kernel_Exit 88>34 26|414b14 436l8 436t26 -88i34 Thread{27I9} 26|414b34 420r20 421r20 423r23 424r23 429r43 430r43 432r27 -. 432r60 -93E9*Cluster_Algorithm 95e28 99r27 146r22 26|38r26 440r27 -94n8*Cluster_RR{93E9} 26|110r61 482r37 654r18 774r40 -95n8*Cluster_Cooperative{93E9} 26|662r18 -97V13*Set_Scheduling_Algorithm{boolean} 98>8 99>8 100>8 101>8 26|438b13 451l8 -. 451t32 -98i8 Cluster{28I9} 26|439b8 446r21 447r21 448r21 -99e8 Algo{93E9} 26|440b8 446r50 -100i8 Quantum{natural} 26|441b8 447r50 -101b8 Is_Interruptible{boolean} 26|442b8 448r50 -103V13*Set_Time_Slice{boolean} 103>29 103>45 26|453b13 472l8 472t22 -103i29 Cluster{28I9} 26|453b29 459r50 464r24 465r24 -103i45 Per{natural} 26|453b45 464r48 465r47 -105V13*Create_Cluster{28I9} 26|474b13 495l8 495t22 -106V13*Delete_Cluster{boolean} 106>29 26|497b13 509l8 509t22 -106i29 Cluster{28I9} 26|497b29 501r24 502r24 -108V13*Switch_Cluster{boolean} 108>29 108>45 26|511b13 525l8 525t22 -108i29 Cluster{28I9} 26|511b29 515r24 518r42 -108i45 Thread{27I9} 26|511b45 516r23 518r23 -112I12*Niceness{integer} 113r32 115r48 116r49 26|53r25 527r48 532r49 -113i4*Default_Niceness{112I12} -115V13*Get_Niceness{112I12} 115>27 26|527b13 530l8 530t20 -115i27 Thread{27I9} 26|527b27 529r27 -116U14*Set_Niceness 116>28 116>42 26|532b14 535l8 535t20 -116i28 Thread{27I9} 26|532b28 534r20 -116i42 Nice{112I12} 26|532b42 534r36 -118U14*Get_Name 118>24 118<38 118<57 26|537b14 549l8 549t16 -118i24 Thread{27I9} 26|537b24 539r38 540r23 542r56 543r26 543r58 544r30 -118a38 Name{string} 26|537b38 539r10 542m10 542r16 542r30 546m10 -118i57 Len{natural} 26|537b57 544m10 547m10 -119U14*Set_Name 119>24 119>38 119<53 26|551b14 560l8 560t16 -119i24 Thread{27I9} 26|551b24 553r38 554r23 555r23 -119a38 Name{string} 26|551b38 553r10 554r42 554r58 555r58 -119b53 Success{boolean} 26|551b53 556m10 558m10 -125U14*Get_Load_Averages 125<33 125<40 125<47 26|562b14 580l8 580t25 -125m33 Avg_1{13|81M9} 26|562b33 565m7 -125m40 Avg_5{13|81M9} 26|562b40 567m7 569m10 569r19 571m7 571r16 -125m47 Avg_15{13|81M9} 26|562b47 573m7 575m10 575r20 577m7 577r17 -129U14*Scheduler_ISR 129>29 26|582b14 748l8 748t21 -129r29 State{6|22R15} 26|582b29 708r54 -132V13*Convert{natural} 132>22 177b13 -132i22 Thread{27I9} 177r64 -133V13*Convert{natural} 133>22 178b13 -133i22 Group{28I9} 178r64 -134V13*Convert{27I9} 134>22 179b13 -134i22 Value{natural} 180r12 180r64 -135V13*Convert{28I9} 135>22 181b13 -135i22 Value{natural} 182r12 182r67 -137R9*Thread_Listing 141e14 142r59 -138i7*Thread{27I9} -139i7*Cluster{28I9} -140i7*Proc{natural} -142A9*Thread_Listing_Arr(137R9) 155r35 26|750r35 -144R9*Cluster_Listing 149e14 150r60 -145i7*Cluster{28I9} -146e7*Cluster_Algo{93E9} -147b7*Cluster_Int{boolean} -148i7*Cluster_Quan{natural} -150A9*Cluster_Listing_Arr(144R9) 156r35 26|771r35 -155U14*List_All 155<24 155<55 26|750b14 769l8 769t16 -155a24 List{142A9} 26|750b24 753m7 761m16 761r22 -155i55 Total{natural} 26|750b55 754m7 759m13 759r22 -156U14*List_All 156<24 156<56 26|771b14 792l8 792t16 -156a24 List{150A9} 26|771b24 774m7 782m16 782r22 -156i56 Total{natural} 26|771b56 775m7 780m13 780r22 -165b4 Is_Initialized{boolean} 26|117m7 126r21 -169U14 Waiting_Spot 26|131s7 377s7 794b14 798l8 798t20 -171V13 Has_Available_Time{boolean} 171>33 26|620s13 625s19 632s22 800b13 -. 813l8 813t26 -171i33 C{28I9} 26|800b33 801r44 802r44 812r42 -173V13 Is_Switchable{boolean} 173>28 173>37 26|670s16 677s19 815b13 819l8 -. 819t21 -173i28 T{27I9} 26|815b28 816r45 -173i37 C{28I9} 26|815b37 818r67 -175U14 Add_Bucket_And_Shift 175>36 26|605s10 821b14 827l8 827t28 -175m36 Last_Bucket{13|81M9} 26|821b36 826r34 -X 26 scheduler.adb -30N4 Kernel_Stack_Size 33r42 -31A9 Thread_Stack(13|70M9) 175r19 -32A9 Thread_Stack_64(13|84M9) 176r19 -33A9 Kernel_Stack(13|70M9) 34r36 312r52 742r48 -34P9 Kernel_Stack_Acc(33A9) 57r25 -36R9 Thread_Cluster 44e14 45r65 -37b7*Is_Present{boolean} 103m13 109m41 459r30 464r33 479r34 481m17 501r33 -. 502m33 515r33 779r30 -38e7*Algorithm{25|93E9} 110m41 446m30 482m17 653r43 784r37 -39i7*RR_Quantum{natural} 112m41 447m30 484m17 656r47 657r49 786r37 -40b7*Is_Interruptible{boolean} 111m41 359r56 448m30 483m17 785r37 -41i7*Percentage{integer} 113m41 460r53 465m33 485m17 650r56 812r45 -42m7*Progress_Seconds{13|84M9} 104m13 114m41 617m42 642m21 801r47 -43m7*Progress_Nanos{13|84M9} 105m13 115m41 618m42 643m21 651r50 802r47 -45A9 Cluster_Arr(36R9)<25|28I9> 46r35 97r27 -46P9 Cluster_Arr_Acc(45A9) 83r22 -48R9 Thread_Info 73e14 74r67 816r12 -49b7*Is_Present{boolean} 99m13 302r33 315m29 349r31 350m31 372r31 373m31 -. 516r31 601r32 686r32 706r39 758r29 818r17 -50b7*Is_Running{boolean} 302r68 316m29 686r67 704m36 739m30 818r39 -51a7*Path{string} 317m29 543r34 553r46 554m31 -52i7*Path_Len{integer} 318m29 539r46 540r31 542r64 543r66 544r38 555m31 -53i7*Nice{25|112I12} 319m29 529r35 534m28 658r46 -54i7*Cluster{25|28I9} 320m29 359r47 518m31 611r52 689r48 762r39 818r57 -55m7*TCB_Pointer{27|67M9} 322m29 707m39 743r51 -56p7*PageMap{9|43P9} 321m29 734r59 -57p7*Kernel_Stack{34P9} 100m13 311r32 312m32 742r34 -58r7*GP_State{6|22R15} 323m29 339m63 708m39 745r44 -59a7*FP_State{6|23A15} 324m29 710m69 713m43 744r60 -60m7*C_State{6|24M15} 709m71 741r34 -61i7*Process{33|33I9} 325m29 737r62 763r62 -62r7*Yield_Mutex{21|22R9} 337m58 361m60 363m62 364m62 612m65 -63m7*Last_Sched_Sec{13|84M9} 326m29 614m40 719m34 725r36 -64m7*Last_Sched_NSec{13|84M9} 327m29 615m40 720m34 727r36 -65m7*System_Sec{13|84M9} 328m29 387r46 432m35 -66m7*System_NSec{13|84M9} 329m29 388r50 432m68 -67m7*User_Sec{13|84M9} 330m29 389r44 409m32 -68m7*User_NSec{13|84M9} 331m29 390r48 409m63 -69m7*System_Tmp_Sec{13|84M9} 332m29 401m28 423r31 429r51 -70m7*System_Tmp_NSec{13|84M9} 333m29 402m28 424r31 430r51 -71m7*User_Tmp_Sec{13|84M9} 334m29 406r32 420m28 721r33 724m33 -72m7*User_Tmp_NSec{13|84M9} 335m29 407r32 421m28 722r33 726m33 -74A9 Thread_Info_Arr(48R9)<25|27I9> 75r39 96r27 -75P9 Thread_Info_Arr_Acc(74A9) 84r22 -80N4 Total_Slice 650r14 812r14 -82r4 Scheduler_Mutex{21|38R9} 118m36 118r36 298m34 298r34 342m36 342r36 348m34 -. 348r34 352m36 352r36 371m34 371r34 375m36 375r36 386m34 386r34 391m36 391r36 -. 398m34 398r34 411m36 411r36 417m34 417r34 435m36 435r36 445m34 445r34 449m36 -. 449r36 457m34 457r34 470m36 470r36 477m34 477r34 493m36 493r36 500m34 500r34 -. 507m36 507r36 514m34 514r34 523m36 523r36 564m34 564r34 579m36 579r36 593m34 -. 593r34 697m36 697r36 746m36 746r36 756m34 756r34 768m36 768r36 777m34 777r34 -. 791m36 791r36 -83p4 Cluster_Pool{46P9} 97m7 102r17 102r31 102r57 109r7 109r21 110r7 110r21 -. 111r7 111r21 112r7 112r21 113r7 113r21 114r7 114r21 115r7 115r21 359r10 -. 446r7 447r7 448r7 458r16 459r13 460r36 464r10 465r10 478r16 479r17 480r13 -. 501r10 502r10 515r10 617r14 618r14 624r42 631r25 641r25 650r28 651r22 653r15 -. 656r19 657r21 778r16 779r13 784r20 785r20 786r20 801r30 802r30 812r28 -84p4 Thread_Pool{75P9} 96m7 98r17 301r16 302r17 302r52 311r10 312r10 315r7 -. 316r7 317r7 318r7 319r7 320r7 321r7 322r7 323r7 324r7 325r7 326r7 327r7 -. 328r7 329r7 330r7 331r7 332r7 333r7 334r7 335r7 337r36 339r41 349r10 350r10 -. 359r24 361r37 363r39 364r39 372r10 373r10 387r25 388r29 389r23 390r27 401r7 -. 402r7 406r11 407r11 409r11 409r42 420r7 421r7 423r10 424r10 429r30 430r30 -. 432r14 432r47 516r10 518r10 529r14 534r7 539r25 540r10 542r43 543r13 543r45 -. 544r17 553r25 554r10 555r10 600r19 600r40 601r16 611r26 612r39 614r14 615r14 -. 658r20 669r38 676r22 685r19 686r16 686r51 689r32 704r10 706r13 707r13 708r13 -. 709r45 710r43 713r17 719r11 720r11 721r10 722r10 724r10 725r13 726r10 727r13 -. 734r36 737r39 739r7 741r11 742r11 743r28 744r37 745r21 757r16 758r13 760r29 -. 762r23 763r46 781r29 816r32 -89A9 Stats_Bucket_Arr(13|81M9) 91r18 -90m4 Last_Bucket{13|84M9} 597r22 598m10 -91a4 Buckets{89A9} 565r16 565r25 568r18 568r27 568r44 569r28 574r18 575r30 -. 823r24 823r41 824m10 824r29 826m7 826r16 -98r11 Th{48R9} -102r11 Cl{36R9} -123b7 To_Test{boolean} 126m10 127r20 -144r7 Stack_Permissions{9|26R9} 167r29 -151i7 Proc{33|33I9} 160r53 161r40 -152i7 New_TID{25|27I9} 248m10 258r14 -153r7 GP_State{6|22R15} 243m14 249r26 -154a7 FP_State{6|23A15} 246m40 250r26 -155m7 Result{27|67M9} 164m29 175r66 176r73 -156m7 Stack_Top{13|84M9} 160m7 161r46 165r58 223r34 232r34 244r43 -157b7 Success{boolean} 168m29 169r14 -174i10 Sz{natural} 175r38 176r41 -175a10 Stk_8{31A9} 177r32 182m13 185m16 192m13 195m16 218r21 -176a10 Stk_64{32A9} 178r32 205m10 206m10 207m10 208m10 209m10 210m10 211m10 -. 212m10 213m10 214m10 219m10 223m13 228m10 232m13 237m10 -177i10 Index_8{natural} 182r20 183m13 183r24 185r23 186m16 186r27 192r20 -. 193m13 193r24 195r23 196m16 196r27 201r23 201r40 218m10 222m13 222r25 223r59 -. 231m13 231r25 232r59 -178i10 Index_64{natural} 201m10 202m10 202r22 205r18 206r18 207r18 208r18 -. 209r18 210r18 211r18 212r18 213r18 214r18 215m10 215r22 219r18 220m10 220r22 -. 223r21 224m13 224r25 228r18 229m10 229r22 232r21 233m13 233r25 237r18 238m10 -. 238r22 241m10 241r22 244r68 -181p14 En=181:28{30|19P9} -184e17 C{character} -191p14 Arg=191:29{30|19P9} -194e17 C{character} -221p14 En=221:28{30|19P9} -230p14 Arg=230:29{30|19P9} -257L6 Cleanup 170r15 -269i7 New_TID{25|27I9} 278m7 285r14 -270r7 GP_State{6|22R15} 274m11 279r23 -271a7 FP_State{6|23A15} 277m37 280r23 -296i7 New_TID{25|27I9} 304m13 311r23 312r23 315r20 316r20 317r20 318r20 319r20 -. 320r20 321r20 322r20 323r20 324r20 325r20 326r20 327r20 328r20 329r20 330r20 -. 331r20 332r20 333r20 334r20 335r20 337r49 339r54 343r14 -301i11 I 302r30 302r65 304r24 -310L6 Found_TID 305r18 -341L6 End_Return 308r12 -356i7 Curr_TID{25|27I9} 358r10 359r37 361r50 363r52 364r52 -369i7 Thread{25|27I9} 372r23 373r23 -395m7 T1{13|84M9} 399m39 401r46 405m11 405r11 410r11 -395m11 T2{13|84M9} 399m43 402r47 405m15 405r15 410r15 -396b7 Discard{boolean} -415m7 Temp_Sec{13|84M9} 418m39 420r44 427m30 427r30 433r14 -415m17 Temp_NSec{13|84M9} 418m49 421r45 428m30 428r30 433r24 -454i7 Consumed{natural} 460m13 460r25 464r62 -455b7 Success{boolean} 466m10 468m10 471r14 -458i11 I 459r27 459r45 460r50 -475i7 Returned{25|28I9} 487m13 491m7 494r14 -478i11 I 479r31 480r27 487r25 -492L6 Cleanup 488r18 -498b7 Success{boolean} 503m10 505m10 508r14 -512b7 Success{boolean} 519m10 521m10 524r14 -568m11 Val{13|81M9} -574m11 Val=574:18{13|81M9} -583i7 Current_TID{25|27I9} 610r10 611r39 612r52 614r27 615r27 658r33 669r19 -. 675r13 676r43 703r10 704r23 706r26 707r26 708r26 709r58 710r56 713r30 -584i7 Next_TID{25|27I9} 671m16 678m19 688m16 719r24 720r24 721r23 722r23 -. 724r23 725r26 726r23 727r26 734r49 737r52 738r38 739r20 741r24 742r24 743r41 -. 744r50 745r34 -585r7 Next_State{6|22R15} 745m7 747r37 -586i7 Timeout{natural} 655m16 659r19 660m19 663m16 684m10 698r33 731r33 -586i16 Max_Next_Timeout{natural} 649m10 659r29 660r30 663r27 -587i7 Curr_Cluster{25|28I9} 611m10 617r28 618r28 620r33 621r29 624r22 631r47 -. 645r32 650r42 651r36 -587i21 Next_Cluster{25|28I9} 621m13 626m19 630r16 633m22 640r16 645m16 653r29 -. 656r33 657r35 670r34 677r37 689m16 -588m7 Curr_Sec{13|84M9} 591m39 597r10 598r25 615r57 618r58 -588m17 Curr_NSec{13|84M9} 591m49 615r67 618r68 -589m7 Count{13|81M9} 599m10 602m16 602r25 605r32 -600i14 I 601r29 -624i17 I 625r39 626r35 -631i20 I 632r42 633r38 -641r20 C{36R9} -669i14 I 670r31 671r28 -676i17 I 677r34 678r31 -685i14 I 686r29 686r64 688r28 689r45 -701L6 Found_TID_TCID_Combo 672r21 679r24 690r21 -751i7 Curr_Index{natural} 760r16 761r35 764m16 764r30 -757i11 I 758r26 762r20 762r36 763r59 -772i7 Curr_Index{natural} 781r16 782r35 787m16 787r30 -778i11 I 779r27 783r20 784r34 785r34 786r34 -801m7 Secs{13|84M9} 804r10 805m10 811r23 -802m7 Nanos{13|84M9} 807r10 808m10 811r40 -816r7 Th{48R9} -823i11 I{integer} 824r19 824r38 -X 27 system.ads -37K9*System 25|17w6 67r19 26|17w6 20r6 20r35 55r25 155r19 254r27 294r19 27|155e11 -67M9*Address 25|67r26 26|55r32 155r26 294r26 -69m4*Null_Address{67M9} 26|254r34 -X 28 s-stoele.ads -40K16*Storage_Elements 26|20w13 20r42 28|90e28 -51I9*Storage_Offset 26|166r29 -82M9*Integer_Address 26|244r26 275r23 284r35 -84V13*To_Address{27|67M9} 26|165s29 244s14 245s14 275s11 276s11 284s23 -X 30 userland.ads -17K9*Userland 25|20w6 21r6 43r21 44r21 46r21 26|21r6 61r25 136r21 137r21 -. 139r21 151r23 151r47 160r20 161r7 206r35 208r35 210r35 212r35 214r35 325r40 -. 763r20 30|23e13 -19P9*String_Acc(string) -20A9*Argument_Arr(19P9) 25|43r30 26|136r30 -21A9*Environment_Arr(19P9) 25|44r30 26|137r30 -X 31 userland-elf.ads -22K18*ELF 25|21w15 46r30 26|139r30 206r44 208r44 210r44 212r44 214r44 31|142e17 -26N4*Auxval_Null 26|206r48 -27N4*Auxval_Program_Headers 26|210r48 -28N4*Auxval_Header_Size 26|214r48 -29N4*Auxval_Header_Count 26|212r48 -30N4*Auxval_Entrypoint 26|208r48 -31R9*Auxval 25|46r34 26|139r34 31|36e14 -32m7*Entrypoint{13|84M9} 26|207r42 -33m7*Program_Headers{13|84M9} 26|209r42 -34m7*Program_Header_Count{13|84M9} 26|211r42 -35m7*Program_Header_Size{13|84M9} 26|213r42 -X 33 userland-process.ads -28K18*Process 26|21w15 61r34 151r32 151r56 160r29 161r16 325r49 763r29 33|677e21 -33I9*PID 26|61r42 151r40 -350V13*Get_Stack_Base{13|84M9} 26|160s37 -356U14*Set_Stack_Base 26|161s24 -573V13*Convert{natural} 26|763s37 -579V13*Convert{33I9} 26|151s64 325s57 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS scheduler__init 0 -GG EK_PROOF_DEPENDENCIES scheduler__init 0 -GG EK_GLOBALS scheduler__init local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 5 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__is_initialized __HEAP proper_output 5 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__is_initialized __HEAP refined_proof_in 0 refined_input 5 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__is_initialized __HEAP refined_output 5 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__is_initialized __HEAP calls_proof 0 calls 0 calls_conditional 1 ada___lib__synchronization__release__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__idle_core 3 scheduler__waiting_spot ada___arch__local__reschedule_asap ada___arch__snippets__pause -GG EK_PROOF_DEPENDENCIES scheduler__idle_core 0 -GG EK_GLOBALS scheduler__idle_core local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 1 scheduler__is_initialized proper_output 1 scheduler__is_initialized refined_proof_in 0 refined_input 1 scheduler__is_initialized refined_output 1 scheduler__is_initialized calls_proof 0 calls 3 ada___arch__local__reschedule_asap ada___arch__snippets__enable_interrupts ada___arch__snippets__wait_for_interrupt calls_conditional 1 ada___arch__snippets__pause FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS scheduler__create_user_thread 0 -GG EK_PROOF_DEPENDENCIES scheduler__create_user_thread 0 -GG EK_GLOBALS scheduler__create_user_thread local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__map_allocated_range ada___lib__synchronization__release ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__context__init_gp_context ada___arch__context__success_fork_result ada___arch__context__init_fp_context ada___userland__process__get_stack_base ada___userland__process__set_stack_base ada___userland__process__convert__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS scheduler__create_user_thread__2 0 -GG EK_PROOF_DEPENDENCIES scheduler__create_user_thread__2 0 -GG EK_GLOBALS scheduler__create_user_thread__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___lib__synchronization__release ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__context__init_gp_context ada___arch__context__success_fork_result ada___arch__context__init_fp_context ada___userland__process__convert__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS scheduler__create_user_thread__3 0 -GG EK_PROOF_DEPENDENCIES scheduler__create_user_thread__3 0 -GG EK_GLOBALS scheduler__create_user_thread__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 5 ada___lib__synchronization__release ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__context__success_fork_result ada___userland__process__convert__2 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__delete_thread 0 -GG EK_PROOF_DEPENDENCIES scheduler__delete_thread 0 -GG EK_GLOBALS scheduler__delete_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__yield_if_able 0 -GG EK_PROOF_DEPENDENCIES scheduler__yield_if_able 0 -GG EK_GLOBALS scheduler__yield_if_able local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__cluster_pool scheduler__thread_pool __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 3 scheduler__cluster_pool scheduler__thread_pool __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 4 ada___lib__synchronization__seize ada___lib__synchronization__release ada___arch__local__reschedule_asap ada___arch__local__get_current_thread FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__cluster_pool scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__bail 0 -GG EK_PROOF_DEPENDENCIES scheduler__bail 0 -GG EK_GLOBALS scheduler__bail local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 6 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__local__reschedule_asap ada___arch__local__get_current_thread ada___arch__snippets__enable_interrupts ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__get_runtime_times 0 -GG EK_PROOF_DEPENDENCIES scheduler__get_runtime_times 0 -GG EK_GLOBALS scheduler__get_runtime_times local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 1 scheduler__scheduler_mutex refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 1 scheduler__scheduler_mutex calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__signal_kernel_entry 0 -GG EK_PROOF_DEPENDENCIES scheduler__signal_kernel_entry 0 -GG EK_GLOBALS scheduler__signal_kernel_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 5 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__clocks__get_monotonic_time ada___lib__time__increment ada___lib__time__substract FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__signal_kernel_exit 0 -GG EK_PROOF_DEPENDENCIES scheduler__signal_kernel_exit 0 -GG EK_GLOBALS scheduler__signal_kernel_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 5 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__clocks__get_monotonic_time ada___lib__time__increment ada___lib__time__substract FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__set_scheduling_algorithm 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 -GG EK_PROOF_DEPENDENCIES scheduler__set_scheduling_algorithm 0 -GG EK_GLOBALS scheduler__set_scheduling_algorithm local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 2 scheduler__scheduler_mutex scheduler__cluster_pool calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__set_time_slice 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 -GG EK_PROOF_DEPENDENCIES scheduler__set_time_slice 0 -GG EK_GLOBALS scheduler__set_time_slice local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 2 scheduler__scheduler_mutex scheduler__cluster_pool calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__create_cluster 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 -GG EK_PROOF_DEPENDENCIES scheduler__create_cluster 0 -GG EK_GLOBALS scheduler__create_cluster local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 2 scheduler__scheduler_mutex scheduler__cluster_pool calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__delete_cluster 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 -GG EK_PROOF_DEPENDENCIES scheduler__delete_cluster 0 -GG EK_GLOBALS scheduler__delete_cluster local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 2 scheduler__scheduler_mutex scheduler__cluster_pool calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__switch_cluster 0 -GG EK_PROOF_DEPENDENCIES scheduler__switch_cluster 0 -GG EK_GLOBALS scheduler__switch_cluster local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 4 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool __HEAP proper_output 2 scheduler__scheduler_mutex __HEAP refined_proof_in 0 refined_input 4 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool __HEAP refined_output 2 scheduler__scheduler_mutex __HEAP calls_proof 0 calls 0 calls_conditional 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__get_niceness 0 -GG EK_PROOF_DEPENDENCIES scheduler__get_niceness 0 -GG EK_GLOBALS scheduler__get_niceness local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 0 refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__set_niceness 0 -GG EK_PROOF_DEPENDENCIES scheduler__set_niceness 0 -GG EK_GLOBALS scheduler__set_niceness local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__get_name 0 -GG EK_PROOF_DEPENDENCIES scheduler__get_name 0 -GG EK_GLOBALS scheduler__get_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 0 refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__set_name 0 -GG EK_PROOF_DEPENDENCIES scheduler__set_name 0 -GG EK_GLOBALS scheduler__set_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__get_load_averages 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 -GG EK_PROOF_DEPENDENCIES scheduler__get_load_averages 0 -GG EK_GLOBALS scheduler__get_load_averages local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__buckets proper_output 1 scheduler__scheduler_mutex refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__buckets refined_output 1 scheduler__scheduler_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__buckets LOCKS 0 -GG EK_DIRECT_CALLS scheduler__scheduler_isr 0 -GG EK_PROOF_DEPENDENCIES scheduler__scheduler_isr 0 -GG EK_GLOBALS scheduler__scheduler_isr local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 6 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__last_bucket scheduler__buckets __HEAP proper_output 4 scheduler__scheduler_mutex scheduler__last_bucket scheduler__buckets __HEAP refined_proof_in 0 refined_input 6 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__last_bucket scheduler__buckets __HEAP refined_output 4 scheduler__scheduler_mutex scheduler__last_bucket scheduler__buckets __HEAP calls_proof 0 calls 0 calls_conditional 20 ada___arch__mmu__make_active ada___lib__synchronization__release ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___arch__context__load_gp_context ada___arch__context__save_core_context ada___arch__context__save_fp_context ada___arch__context__load_fp_context ada___arch__context__destroy_fp_context ada___lib__panic__hard_panic ada___arch__clocks__get_monotonic_time ada___arch__local__reschedule_in ada___arch__local__fetch_tcb ada___arch__local__load_tcb ada___arch__local__set_stacks ada___arch__local__get_current_thread ada___arch__local__set_current_thread ada___arch__local__set_current_process ada___lib__time__increment ada___lib__time__substract FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 4 scheduler__scheduler_mutex scheduler__cluster_pool scheduler__thread_pool scheduler__last_bucket LOCKS 0 -GG EK_DIRECT_CALLS scheduler__convert 0 -GG EK_PROOF_DEPENDENCIES scheduler__convert 0 -GG EK_GLOBALS scheduler__convert local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS scheduler__convert__2 0 -GG EK_PROOF_DEPENDENCIES scheduler__convert__2 0 -GG EK_GLOBALS scheduler__convert__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS scheduler__convert__3 0 -GG EK_PROOF_DEPENDENCIES scheduler__convert__3 0 -GG EK_GLOBALS scheduler__convert__3 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS scheduler__convert__4 0 -GG EK_PROOF_DEPENDENCIES scheduler__convert__4 0 -GG EK_GLOBALS scheduler__convert__4 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS scheduler__list_all 0 -GG EK_PROOF_DEPENDENCIES scheduler__list_all 0 -GG EK_GLOBALS scheduler__list_all local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP proper_output 1 scheduler__scheduler_mutex refined_proof_in 0 refined_input 3 scheduler__scheduler_mutex scheduler__thread_pool __HEAP refined_output 1 scheduler__scheduler_mutex calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 ada___userland__process__convert FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__list_all__2 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 -GG EK_PROOF_DEPENDENCIES scheduler__list_all__2 0 -GG EK_GLOBALS scheduler__list_all__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__scheduler_mutex scheduler__cluster_pool proper_output 1 scheduler__scheduler_mutex refined_proof_in 0 refined_input 2 scheduler__scheduler_mutex scheduler__cluster_pool refined_output 1 scheduler__scheduler_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize__2 ada___lib__synchronization__release__2 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 scheduler__scheduler_mutex scheduler__cluster_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__waiting_spot 2 ada___arch__snippets__enable_interrupts ada___arch__snippets__wait_for_interrupt -GG EK_PROOF_DEPENDENCIES scheduler__waiting_spot 0 -GG EK_GLOBALS scheduler__waiting_spot local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___arch__snippets__enable_interrupts ada___arch__snippets__wait_for_interrupt calls_conditional 0 FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS scheduler__has_available_time 0 -GG EK_PROOF_DEPENDENCIES scheduler__has_available_time 0 -GG EK_GLOBALS scheduler__has_available_time local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 1 scheduler__cluster_pool proper_output 0 refined_proof_in 0 refined_input 1 scheduler__cluster_pool refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__cluster_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__is_switchable 0 -GG EK_PROOF_DEPENDENCIES scheduler__is_switchable 0 -GG EK_GLOBALS scheduler__is_switchable local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 2 scheduler__thread_pool __HEAP proper_output 0 refined_proof_in 0 refined_input 2 scheduler__thread_pool __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__thread_pool LOCKS 0 -GG EK_DIRECT_CALLS scheduler__add_bucket_and_shift 0 -GG EK_PROOF_DEPENDENCIES scheduler__add_bucket_and_shift 0 -GG EK_GLOBALS scheduler__add_bucket_and_shift local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 scheduler proper_proof_in 0 proper_input 1 scheduler__buckets proper_output 1 scheduler__buckets refined_proof_in 0 refined_input 1 scheduler__buckets refined_output 1 scheduler__buckets calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 scheduler__buckets LOCKS 0 -GG EK_DIRECT_CALLS scheduler 0 -GG EK_PROOF_DEPENDENCIES scheduler 0 -GG EK_GLOBALS scheduler local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 scheduler__is_initialized refined_initializes 1 scheduler__is_initialized calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 scheduler__is_initialized TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___arch__snippets__hcf FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__enable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___arch__snippets__disable_interrupts FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__wait_for_interrupt FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__pause FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__snippets__read_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__snippets__write_sstatus FALSE FALSE FALSE FALSE TRUE ada___arch__snippets VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_VOLATILES AR 1 scheduler__is_initialized AW 1 scheduler__is_initialized ER 1 scheduler__is_initialized EW 1 scheduler__is_initialized -GG EK_SYNCHRONIZED 1 scheduler__is_initialized -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/scheduler.cswi b/obj/gnatprove/phase1/scheduler.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/scheduler.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-corefile.adb.stderr b/obj/gnatprove/phase1/userland-corefile.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-corefile.adb.stdout b/obj/gnatprove/phase1/userland-corefile.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-corefile.ali b/obj/gnatprove/phase1/userland-corefile.ali deleted file mode 100644 index 4caa4d7..0000000 --- a/obj/gnatprove/phase1/userland-corefile.ali +++ /dev/null @@ -1,592 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RV NO_ENUMERATION_MAPS -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland.corefile%b userland-corefile.adb cdea35db OO PK -W arch%s arch.ads arch.ali -W arch.local%s arch-local.adb arch-local.ali -W devices%s devices.adb devices.ali -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W lib.messages%s lib-messages.adb lib-messages.ali -Z system%s system.ads system.ali -W userland%s userland.ads userland.ali -W userland.mac%s userland-mac.adb userland-mac.ali -W userland.process%s userland-process.adb userland-process.ali -W vfs%s vfs.adb vfs.ali - -U userland.corefile%s userland-corefile.ads 987e4e69 OO PK -W arch%s arch.ads arch.ali -W arch.context%s arch-context.adb arch-context.ali -W userland%s userland.ads userland.ali -W vfs%s vfs.adb vfs.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-local.ads 20250222165738 e5953d14 arch.local%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-corefile.ads 20250222165738 964467dc userland.corefile%s -D userland-corefile.adb 20250222165738 b1395197 userland.corefile%b -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 24|17r6 22r39 25|19r6 26r39 27r42 -X 3 arch-context.ads -20K14*Context 70e17 24|17w11 22r44 25|26r44 -22R15*GP_Context{4|21R9} 24|22r52 25|26r52 -X 5 arch-local.ads -21K14*Local 40e15 25|19w11 27r47 -37V13*Get_Current_Process{28|33I9} 25|27s53 -X 7 devices.ads -22K9*Devices 279e12 25|17w6 37r18 -29A9*Operation_Data(9|70M9) 25|37r26 -X 9 interfac.ads -38K9*Interfaces 233e15 25|18w6 18r22 -70M9*Unsigned_8 -84M9*Unsigned_64 25|28r27 28r42 -X 14 lib.ads -19K9*Lib 35e8 25|22r6 32r18 46r7 54r13 60r13 66r13 71r10 -X 15 lib-messages.ads -21K13*Messages 103e17 25|22w10 32r22 46r11 54r17 60r17 66r17 71r14 -41U14*Put_Line 25|54s26 60s26 66s26 71s23 -55A12*Translated_String{string} 25|32r31 -74U14*Image 25|46s20 -X 23 userland.ads -17K9*Userland 23e13 24|20r9 24r5 25|20r6 20r28 21r6 21r28 25r14 76r5 -X 24 userland-corefile.ads -20K18*Corefile 23|17k9 24|24l14 24e22 25|25b23 76l14 76t22 -22U14*Generate_Corefile 22>33 25|26b14 75l8 75t25 -22r33 Ctx{3|22R15} 25|26b33 37r47 38r34 -X 25 userland-corefile.adb -27i7 Proc{28|33I9} 28r72 29r53 30r53 -28m7 PID_Val{9|84M9} 46r27 -29m7 Core_Lim{27|58M9} 40r10 42r13 43r22 -30m7 File_Lim{27|58M9} 42r24 43m10 -31i7 PID_Len{natural} 46m45 50r37 -32a7 PID_Buf{15|55A12} 46m36 50r13 50r22 50r52 -33e7 Success{29|234E9} 52m64 53r13 58m50 59r13 64m68 65r13 70m10 73r35 -34i7 Core_FS{29|74I9} 58m31 64r21 70r38 -35m7 Core_Ino{29|28M9} 58m40 64r30 70r47 -36i7 Ctx_Len{natural} 64m53 65r42 -37a7 Ctx_Data{7|29A9} 64r43 65r53 -49a10 File_Path{string} 52r27 54r68 58r20 60r66 66r67 72r34 -X 27 userland-mac.ads -20K18*MAC 25|21w15 21r37 27|180e17 -58M9*Limit_Value<9|84M9> 25|29r27 30r27 -60n8*Core_Size_Limit{59E9} 25|29r59 -62n8*File_Size_Limit{59E9} 25|30r59 -X 28 userland-process.ads -28K18*Process 25|20w15 20r37 27r27 28r55 28|677e21 -33I9*PID 25|27r35 -573V13*Convert{natural} 25|28s63 -604V13*Get_Limit{27|58M9} 25|29s42 30s42 -X 29 vfs.ads -24K9*VFS 24|18w6 23r19 25|23w6 23r15 33r18 34r18 35r18 52r10 52r38 53r24 -. 58r10 59r24 64r10 65r24 70r21 73r14 29|674e8 -28M9*File_Inode_Number<9|84M9> 25|35r22 -39n23*File_Regular{39E9} 25|52r42 -74I9*FS_Handle 25|34r22 -234E9*FS_Status 25|33r22 73r18 29|242e16 -235n8*FS_Success{234E9} 25|53r28 59r28 65r28 -418U14*Write 25|64s14 -511V13*Synchronize{234E9} 25|70s25 -593U14*Open 25|58s14 -618U14*Create_Node 25|52s14 -639V13*Is_Initialized{boolean} 24|23s23 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___userland__corefile__generate_corefile 0 -GG EK_PROOF_DEPENDENCIES ada___userland__corefile__generate_corefile 0 -GG EK_GLOBALS ada___userland__corefile__generate_corefile local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__corefile userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 vfs__write vfs__synchronize__2 vfs__open__2 vfs__create_node__2 vfs__is_initialized ada___arch__local__get_current_process ada___userland__process__convert ada___userland__process__get_limit ada___lib__messages__put_line ada___lib__messages__image__2 FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__corefile 0 -GG EK_PROOF_DEPENDENCIES ada___userland__corefile 0 -GG EK_GLOBALS ada___userland__corefile local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__corefile TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__corefile__generate_corefile FALSE FALSE FALSE FALSE TRUE ada___userland__corefile VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-corefile.cswi b/obj/gnatprove/phase1/userland-corefile.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland-corefile.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-elf.adb.stderr b/obj/gnatprove/phase1/userland-elf.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-elf.adb.stdout b/obj/gnatprove/phase1/userland-elf.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-elf.ali b/obj/gnatprove/phase1/userland-elf.ali deleted file mode 100644 index 5a69fe1..0000000 --- a/obj/gnatprove/phase1/userland-elf.ali +++ /dev/null @@ -1,847 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland.elf%b userland-elf.adb 30d0e83b OO PK -W devices%s devices.adb devices.ali -W lib%s lib.adb lib.ali -W lib.alignment%s lib-alignment.adb lib-alignment.ali -W memory%s memory.ads memory.ali -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali -W userland%s userland.ads userland.ali -W userland.syscall%s userland-syscall.adb userland-syscall.ali - -U userland.elf%s userland-elf.ads ab5ea72d OO PK -W arch%s arch.ads arch.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W interfaces%s interfac.ads interfac.ali -W system%s system.ads system.ali -W userland%s userland.ads userland.ali -W vfs%s vfs.adb vfs.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s -D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-elf.adb 20250222165738 a1012059 userland.elf%b -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D userland-syscall.ads 20250222165738 b384b127 userland.syscall%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 23|20r6 51r25 140r17 24|27r25 69r18 148r17 156r35 160r24 185r20 -. 185r57 190r7 -X 4 arch-mmu.ads -22K14*MMU 250e13 23|20w11 51r30 140r22 24|27r30 69r23 148r22 156r40 160r29 -. 185r25 185r62 190r12 -26R9*Page_Permissions 32e14 24|160r33 -27b7*Is_User_Accesible{boolean} 24|161m11 -28b7*Can_Read{boolean} 24|162m11 -29b7*Can_Write{boolean} 24|163m11 176r39 -30b7*Can_Execute{boolean} 24|164m11 176r17 -31b7*Is_Global{boolean} 24|165m11 -43P9*Page_Table_Acc(42R9) 23|51r34 140r26 24|27r34 148r26 -49N7*Page_Size 24|69r27 156r44 185r29 185r66 -139U14*Map_Allocated_Range 24|190s16 -X 5 devices.ads -22K9*Devices 279e12 24|20w6 35r22 85r23 130r18 202r18 -29A9*Operation_Data(7|70M9) 24|35r30 85r31 130r26 202r26 -X 7 interfac.ads -38K9*Interfaces 233e15 23|18w6 18r22 -70M9*Unsigned_8 23|92r53 -73M9*Unsigned_16 23|97r30 98r30 104r30 105r30 106r30 107r30 108r30 109r30 -81M9*Unsigned_32 23|71r25 72r25 99r30 103r30 -84M9*Unsigned_64 23|32r30 33r30 34r30 35r30 52r25 73r25 74r25 77r25 78r25 -. 101r30 102r30 141r17 24|28r25 32r22 50r19 56r20 74r35 77r10 82r27 83r13 -. 84r27 94r23 128r18 149r17 152r40 155r27 157r28 171r20 -X 12 lib.ads -19K9*Lib 35e8 24|19r6 152r25 153r25 -X 13 lib-alignment.ads -19k13*Alignment 43e18 24|19w10 152r29 153r29 -X 16 memory.ads -19K9*Memory 36e11 24|18w6 18r18 -35M12*Virtual_Address{20|82M9} 24|158r30 159r10 -X 19 system.ads -37K9*System 155e11 23|17w6 40r21 75r25 100r30 24|17r6 17r35 40r26 169r20 -67M9*Address 23|40r28 75r32 100r37 24|169r27 -69m4*Null_Address{67M9} 24|40r33 -X 20 s-stoele.ads -40K16*Storage_Elements 90e28 24|17w13 17r42 -51I9*Storage_Offset 24|73r48 203r46 -53I12*Storage_Count{51I9} 24|193r30 -67V14*"+"{19|67M9} 24|73r46 203r44 -82M9*Integer_Address 24|153r40 170r20 183r44 -84V13*To_Address{19|67M9} 24|192s30 -87V13*To_Integer{82M9} 24|74s48 -X 22 userland.ads -17K9*Userland 23e13 23|22r9 142r5 24|21r6 23r14 173r19 209r5 -X 23 userland-elf.ads -22K18*ELF 22|17k9 23|142l14 142e17 24|23b23 209l14 209t17 -23P9*String_Acc(string) 41r21 133r40 24|125r40 129r22 -26N4*Auxval_Null -27N4*Auxval_Program_Headers -28N4*Auxval_Header_Size -29N4*Auxval_Header_Count -30N4*Auxval_Entrypoint -31R9*Auxval 36e14 42r21 -32m7*Entrypoint{7|84M9} 24|43m14 74m21 -33m7*Program_Headers{7|84M9} 24|44m14 106m33 -34m7*Program_Header_Count{7|84M9} 24|45m14 76m21 -35m7*Program_Header_Size{7|84M9} 24|46m14 75m21 -38R9*Parsed_ELF 44e14 52r45 24|28r45 38r16 -39b7*Was_Loaded{boolean} 24|39m11 117m17 -40m7*Entrypoint{19|67M9} 24|40m11 73m14 74r67 -41p7*Linker_Path{23P9} 24|41m11 108m26 -42r7*Vector{31R9} 24|42m11 74m14 75m14 76m14 106m26 -43b7*Exec_Stack{boolean} 24|47m10 110m26 -48V13*Load_ELF{38R9} 49>8 50>8 51>8 52>8 24|24b13 120l8 120t16 -49i8 FS{28|74I9} 24|25b8 55r17 93r20 102r39 108r53 -50m8 Ino{28|28M9} 24|26b8 55r21 93r24 102r43 108r57 -51p8 Map{4|43P9} 24|27b8 102r53 -52m8 Requested_Base{7|84M9} 24|28b8 32r37 -57N4 ET_DYN 24|68r28 -60N4 Program_Loadable_Segment 24|101r21 -61N4 Program_Dynamic_Segment -62N4 Program_Interpreter_Segment 24|107r21 -63N4 Program_Header_Table_Segment 24|105r21 -64N4 Program_GNU_Stack 24|109r21 -67N4 Flags_Executable 24|110r55 164r50 -68N4 Flags_Write 24|163r50 -69N4 Flags_Read 24|162r50 -70R9 Program_Header 79e14 80r8 90r8 133r17 139r17 24|75r45 81r62 125r17 147r17 -71m7*Segment_Type{7|81M9} 81r7 24|100r22 -72m7*Flags{7|81M9} 82r7 24|110r45 162r40 163r40 164r40 -73m7*Offset{7|84M9} 83r7 24|136r33 205r36 -74m7*Virt_Address{7|84M9} 84r7 24|106r63 156r17 159r41 -75m7*Phys_Address{19|67M9} 85r7 -76i7*File_Size_Bytes{natural} 86r7 24|129r60 130r54 137r54 202r54 206r62 -77m7*Mem_Size_Bytes{7|84M9} 87r7 24|157r61 -78m7*Alignment{7|84M9} 88r7 24|177r17 178r18 178r40 183r68 184r49 -92A9 ELF_ID_Field(7|70M9) 93r29 96r30 -93a4 ELF_Signature{92A9} 24|58r40 -95R9 ELF_Header 110e14 111r8 127r8 24|33r22 34r42 -96a7*Identifier{92A9} 112r7 24|58r17 -97m7*ELF_Type{7|73M9} 113r7 24|68r17 -98m7*Machine{7|73M9} 114r7 -99m7*Version{7|81M9} 115r7 -100m7*Entrypoint{19|67M9} 116r7 -101m7*Program_Header_List{7|84M9} 117r7 24|92r24 -102m7*Section_Header_List{7|84M9} 118r7 -103m7*Flags{7|81M9} 119r7 -104m7*Header_Size{7|73M9} 120r7 -105m7*Program_Header_Size{7|73M9} 121r7 24|83r33 -106m7*Program_Header_Count{7|73M9} 122r7 24|77r30 81r37 -107m7*Section_Header_Size{7|73M9} 123r7 -108m7*Section_Header_Count{7|73M9} 124r7 -109m7*Section_Names_Index{7|73M9} 125r7 -130V13 Get_Linker{23P9} 131>8 132>8 133>8 24|108s41 122b13 142l8 142t18 -131i8 FS{28|74I9} 24|123b8 136r17 -132m8 Ino{28|28M9} 24|124b8 136r21 -133r8 Header{70R9} 24|125b8 129r53 130r47 136r26 137r47 -136V13 Load_Header{boolean} 137>8 138>8 139>8 140>8 141>8 24|102s26 144b13 -. 208l8 208t19 -137i8 FS{28|74I9} 24|145b8 205r20 -138m8 Ino{28|28M9} 24|146b8 205r24 -139r8 Header{70R9} 24|147b8 156r10 157r54 159r34 162r33 163r33 164r33 177r10 -. 178r11 178r33 183r61 184r42 202r47 205r29 206r55 -140p8 Map{4|43P9} 24|148b8 174r11 191r30 -141m8 Base{7|84M9} 24|149b8 159r27 -X 24 userland-elf.adb -32m7 Base{7|84M9} 68r39 69m10 73r64 102r58 106r52 -33r7 Header{23|95R9} 36m34 36r34 58r10 68r10 73r28 77r23 81r30 83r26 92r17 -34i7 Header_Bytes{natural} 35r51 57r48 -35a7 Header_Data{5|29A9} 55m31 -38r7 Result{23|38R9} 60r17 73m7 74m7 74r60 75m7 76m7 89r20 96r20 103r29 106m19 -. 108m19 110m19 117m10 118r17 -49i7 Ret_Count{natural} 55m44 56r33 57r35 93m46 94r36 95r38 -50m7 Pos{7|84M9} 55r26 56m7 56r14 92m10 93r29 94m10 94r17 -51b7 Discard{boolean} -52e7 Success{28|234E9} 55m61 57r10 93m63 95r13 -81a10 PHDRs(23|70R9) 84r50 86m37 86r37 88r26 99r21 100r18 102r48 106r59 108r62 -. 110r41 -82m10 HSize{7|84M9} 84r42 88r13 -84m10 RSize{7|84M9} 85r61 95r60 -85a10 PHDRs_Data{5|29A9} 93m34 -99r14 HDR=99:21{23|70R9} -128m7 Discard{7|84M9} -129p7 Ret{23|23P9} 131r34 138r17 -130a7 Ret_Data{5|29A9} 136m41 -132i7 Ret_Count{natural} 136m51 137r35 -133b7 Discard2{boolean} -134e7 Success{28|234E9} 136m68 137r10 -152K15 A1[13|19] 184r16 -153K15 A2[13|19] 183r16 -155m7 MisAlign{7|84M9} 157r43 203r62 -157m7 Load_Size{7|84M9} 174r29 184r31 -158m7 ELF_Virtual{16|35M12} 174r16 183r31 -160r7 Flags{4|26R9} 176r11 176r33 194r30 -166i7 Ret_Count{natural} 205m51 206r43 -167b7 Success1{boolean} 173m7 175r14 196m30 197r14 -168e7 Success2{28|234E9} 205m68 206r17 -169m7 Result{19|67M9} 195m30 203r37 -170m7 Ali_V{20|82M9} 183m7 185r10 192r42 -171m7 Ali_L{7|84M9} 184m7 185r47 193r45 -202a10 Load2{5|29A9} 205m44 -18M9 T{7|84M9} 27r42[152] 27r52[152] 35r44[152] 35r54[152] 40r50[152] 40r60[152] -. 41r49[152] 27r42[153] 27r52[153] 35r44[153] 35r54[153] 40r50[153] 40r60[153] -. 41r49[153] 23r42[152] 23r52[152] 27r14[152] 30r44[152] 30r54[152] 34r14[152] -. 37r50[152] 37r60[152] 23r42[153] 23r52[153] 27r14[153] 30r44[153] 30r54[153] -. 34r14[153] 37r50[153] 37r60[153] -27V13 Align_Up{7|84M9} 184s19[152] 29r20[152] 29r20[153] -27m23 Value{7|84M9} 24r61[152] 24r61[153] -27m30 Alignment{7|84M9} 28r20[152] 28r40[152] 28r55[152] 29r40[152] 28r20[153] -. 28r40[153] 28r55[153] 29r40[153] 25r61[152] 25r61[153] -35V13 Align_Down{20|82M9} 183s19[153] 37r20[152] 37r20[153] -35m25 Value{7|84M9} 31r61[152] 31r61[153] -35m32 Alignment{7|84M9} 36r20[152] 36r40[152] 36r55[152] 37r42[152] 36r20[153] -. 36r40[153] 36r55[153] 37r42[153] 32r61[152] 32r61[153] -40V13 Divide_Round_Up{7|84M9} 42r20[152] 42r20[153] -40m30 Dividend{7|84M9} 41r21[152] 41r21[153] 39r15[152] 39r15[153] -40m40 Divisor{7|84M9} 41r33[152] 41r62[152] 42r47[152] 41r33[153] 41r62[153] -. 42r47[153] 39r27[152] 39r43[152] 39r27[153] 39r43[153] -24m7 Value2{20|82M9} 27r18[152] 27r18[153] -25m7 Align2{20|82M9} 27r27[152] 27r48[152] 27r27[153] 27r48[153] -31m7 Value2{20|82M9} 34r17[152] 34r17[153] -32m7 Align2{20|82M9} 34r33[152] 34r33[153] -X 27 userland-syscall.ads -33K18*Syscall 24|21w15 173r28 27|1356e21 -1257V13*Check_Userland_Mappability{boolean} 24|173s36 -X 28 vfs.ads -24K9*VFS 23|19w6 49r25 50r25 131r17 132r17 137r17 138r17 24|25r25 26r25 30r11 -. 55r7 93r10 123r17 124r17 127r11 136r7 145r17 146r17 151r11 205r10 28|674e8 -28M9*File_Inode_Number<7|84M9> 23|50r29 132r21 138r21 24|26r29 124r21 146r21 -74I9*FS_Handle 23|49r29 131r21 137r21 24|25r29 123r21 145r21 -234E9*FS_Status 24|52r19 134r19 168r20 28|242e16 -235n8*FS_Success{234E9} 24|57r21 95r24 137r20 206r28 -400U14*Read 24|55s11 93s14 136s11 205s14 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___userland__elf__load_elf 4 ada___userland__elf__get_linker ada___userland__elf__load_header vfs__read ada___system__storage_elements__to_integer -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_elf 0 -GG EK_GLOBALS ada___userland__elf__load_elf local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__elf userland proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 4 vfs__read ada___system__storage_elements__to_address ada___arch__mmu__map_allocated_range ada___userland__syscall__check_userland_mappability TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__get_linker 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__get_linker 0 -GG EK_GLOBALS ada___userland__elf__get_linker local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__elf userland proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 vfs__read TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__load_header__a1__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a1__align_up 0 -GG EK_GLOBALS ada___userland__elf__load_header__a1__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a1 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__load_header__a1__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a1__align_down 0 -GG EK_GLOBALS ada___userland__elf__load_header__a1__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a1 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__load_header__a1__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a1__divide_round_up 0 -GG EK_GLOBALS ada___userland__elf__load_header__a1__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a1 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__load_header__a1 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a1 0 -GG EK_GLOBALS ada___userland__elf__load_header__a1 local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__load_header__a2__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a2__align_up 0 -GG EK_GLOBALS ada___userland__elf__load_header__a2__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a2 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__load_header__a2__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a2__align_down 0 -GG EK_GLOBALS ada___userland__elf__load_header__a2__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a2 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__load_header__a2__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a2__divide_round_up 0 -GG EK_GLOBALS ada___userland__elf__load_header__a2__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__elf__load_header__a2 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__load_header__a2 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header__a2 0 -GG EK_GLOBALS ada___userland__elf__load_header__a2 local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__elf__load_header ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf__load_header 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf__load_header 0 -GG EK_GLOBALS ada___userland__elf__load_header local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__elf userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 vfs__read ada___system__storage_elements__to_address ada___arch__mmu__map_allocated_range ada___userland__syscall__check_userland_mappability TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__elf 0 -GG EK_PROOF_DEPENDENCIES ada___userland__elf 0 -GG EK_GLOBALS ada___userland__elf local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__readlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__open FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_sock_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header__a1 TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__elf__load_header BODY_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmdt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__close FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_peer_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__read FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmget FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header__a1__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a1 VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__write FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shutdown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__seek FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header__a1__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a1 VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__getsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__futex FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__setsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__getdents FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__elf__load_header__a1__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a1 VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__clock FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__makenode FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__munmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__clock_nanosleep FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__unlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_pid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_ppid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__truncate FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__exec FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__failure_policy FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_rusage FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__do_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__recvfrom FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__do_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__clone FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pre_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__post_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header__a2 TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__elf__load_header BODY_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sendto FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_mappability FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__do_remote_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__syscall__common_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__wait FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__bind FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header__a2__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a2 VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__symlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___userland__elf__load_header__a2__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a2 VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__connect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__config_netinterface FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__3 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__socket FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sysconf FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__open_pty FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__utimes FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header__a2__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__elf__load_header__a2 VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__4 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_hostname FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__spawn FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fsync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__create_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__link FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__switch_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_tid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__to_string FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ptrace FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_mmap_prot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__manage_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__execute_mac_failure FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pty_ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__listen FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sys_accept FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mac_syscall_to_kernel FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigaction FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_add_file FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__send_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___userland__syscall__fcntl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__resolve_at_directive FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__exit_thread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__faccess FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_random FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fstat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mprotect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_egid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__chdir FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_gids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__syscall__sched_yield FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__ppoll FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__delete_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__tty_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pipe FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_euid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_uids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__rename FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fchmod FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fadvise FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__syscall__add_mac_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__umask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__reboot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fchown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sys_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__arch_prctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__umount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pwrite FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-elf.cswi b/obj/gnatprove/phase1/userland-elf.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland-elf.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-loader.adb.stderr b/obj/gnatprove/phase1/userland-loader.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-loader.adb.stdout b/obj/gnatprove/phase1/userland-loader.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-loader.ali b/obj/gnatprove/phase1/userland-loader.ali deleted file mode 100644 index ca63bdb..0000000 --- a/obj/gnatprove/phase1/userland-loader.ali +++ /dev/null @@ -1,791 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_DEALLOCATION -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland.loader%b userland-loader.adb 7b36b6b2 OO PK -W ada%s ada.ads ada.ali -W ada.characters%s a-charac.ads a-charac.ali -W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W arch%s arch.ads arch.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W cryptography%s cryptography.ads cryptography.ali -W cryptography.random%s cryptography-random.adb cryptography-random.ali -W devices%s devices.adb devices.ali -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W lib.alignment%s lib-alignment.adb lib-alignment.ali -W memory%s memory.ads memory.ali -W scheduler%s scheduler.adb scheduler.ali -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali -W userland%s userland.ads userland.ali -W userland.elf%s userland-elf.adb userland-elf.ali -W userland.mac%s userland-mac.adb userland-mac.ali -W userland.memory_locations%s userland-memory_locations.ads userland-memory_locations.ali - -U userland.loader%s userland-loader.ads 9c0fe15c OO PK -W userland%s userland.ads userland.ali -W userland.process%s userland-process.adb userland-process.ali -W vfs%s vfs.adb vfs.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D cryptography.ads 20250222165738 8132c7fc cryptography%s -D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s -D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-loader.ads 20250222165738 4d432fbc userland.loader%s -D userland-loader.adb 20250222165738 01a71cce userland.loader%b -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-memory_locations.ads 20250222165738 d86e3770 userland.memory_locations%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 31|17r6 18r6 251r29 298r18 309r18 -X 2 a-charac.ads -16K13*Characters 18e19 31|17r10 298r22 309r22 -X 3 a-chlat1.ads -16K24*Latin_1 294e27 31|17w21 298r33 309r33 -33e4*LF{character} 31|298r41 309r41 -X 4 a-uncdea.ads -20u15*Unchecked_Deallocation 31|18w10 251r33 -X 5 arch.ads -20K9*Arch 52e9 31|22r6 62r11 62r32 201r49 -X 8 arch-mmu.ads -22K14*MMU 250e13 31|22w11 62r16 62r37 201r54 -43P9*Page_Table_Acc(42R9) -49N7*Page_Size 31|201r58 -58p4*Kernel_Table{43P9} 31|62r41 -70V13*Fork_Table{43P9} 31|62s20 -X 9 cryptography.ads -17K9*Cryptography 18e17 31|28r6 197r13 -X 10 cryptography-random.ads -19K22*Random 40e24 31|28w19 197r26 -32U14*Get_Integer 31|197s33 -X 11 devices.ads -22K9*Devices 279e12 31|29w6 257r19 261r19 -29A9*Operation_Data(13|70M9) 31|257r27 261r27 -X 13 interfac.ads -38K9*Interfaces 233e15 31|19w6 19r22 -70M9*Unsigned_8 -84M9*Unsigned_64 31|168r41 172r18 224r28 255r19 276r20 292r23 304r23 -X 18 lib.ads -19K9*Lib 35e8 31|27r6 168r26 -X 19 lib-alignment.ads -19k13*Alignment 43e18 31|27w10 168r30 -X 22 memory.ads -19K9*Memory 36e11 31|23w6 23r18 -35M12*Virtual_Address{26|82M9} 31|171r22 -X 24 scheduler.ads -25K9*Scheduler 183e14 31|25w6 25r21 217r34 217r51 223r28 233r13 -27I9*TID 31|217r44 -28I9*TCID -29i4*Error_TID{27I9} 31|227r28 -41V13*Create_User_Thread{27I9} 31|217s61 -70U14*Delete_Thread 31|233s23 -135V13*Convert{28I9} 31|223s38 -X 25 system.ads -37K9*System 155e11 31|20w6 21r6 21r35 -67M9*Address -X 26 s-stoele.ads -40K16*Storage_Elements 90e28 31|21w13 21r42 -82M9*Integer_Address -87V13*To_Integer{82M9} 31|207s24 213s24 -X 28 userland.ads -17K9*Userland 23e13 30|17r6 17r28 20r9 65r5 31|24r6 24r24 26r6 30r6 30r24 -. 32r14 346r5 -19P9*String_Acc(string) 31|251r65 268r20 269r20 -20A9*Argument_Arr(19P9) 30|33r22 45r22 53r22 62r22 31|44r22 152r22 -. 164r22 247r22 -21A9*Environment_Arr(19P9) 30|34r22 46r22 54r22 63r22 31|45r22 153r22 -. 165r22 248r22 -X 29 userland-elf.ads -22K18*ELF 142e17 31|24w15 24r33 170r28 180r21 205r20 -23P9*String_Acc(string) -38R9*Parsed_ELF 44e14 31|170r32 -39b7*Was_Loaded{boolean} 31|182r25 208r24 -40m7*Entrypoint{25|67M9} 31|207r43 213r47 -41p7*Linker_Path{23P9} 31|186r21 189r35 190r24 190r53 191r45 -42r7*Vector{31R9} 31|222r39 -48V13*Load_ELF{38R9} 31|180s25 205s24 -X 30 userland-loader.ads -20K18*Loader 28|17k9 30|65l14 65e20 31|32b23 346l14 346t20 -23U14*Disable_ASLR 31|35b14 38l8 38t20 -29V13*Start_Program{34|33I9} 30>8 31>8 32>8 33>8 34>8 35>8 36>8 37>8 31|40b13 -. 146l8 146t21 -30a8 Exec_Path{string} 31|41b8 63r29 -31i8 FS{35|74I9} 31|42b8 63r40 -32m8 Ino{35|28M9} 31|43b8 63r44 -33a8 Arguments{28|20A9} 31|44b8 63r49 -34a8 Environment{28|21A9} 31|45b8 63r60 -35a8 StdIn_Path{string} 31|46b8 101r35 -36a8 StdOut_Path{string} 31|47b8 112r35 -37a8 StdErr_Path{string} 31|48b8 123r35 -41V13*Start_Program{boolean} 42>8 43>8 44>8 45>8 46>8 47>8 31|63s14 148b13 -. 159l8 159t21 325s22 333s22 -42a8 Exec_Path{string} 31|149b8 158r29 -43i8 FS{35|74I9} 31|150b8 157r29 158r40 -44m8 Ino{35|28M9} 31|151b8 157r33 158r44 -45a8 Arguments{28|20A9} 31|152b8 157r38 158r49 -46a8 Environment{28|21A9} 31|153b8 157r49 158r60 -47i8 Proc{34|33I9} 31|154b8 157r62 158r73 -50V13*Start_ELF{boolean} 51>8 52>8 53>8 54>8 55>8 31|157s14 161b13 241l8 -. 241t17 -51i8 FS{35|74I9} 31|162b8 180r35 -52m8 Ino{35|28M9} 31|163b8 180r39 -53a8 Arguments{28|20A9} 31|164b8 219r28 -54a8 Environment{28|21A9} 31|165b8 220r28 -55i8 Proc{34|33I9} 31|166b8 180r68 205r73 221r52 224r52 225r45 231r30 -58V13*Start_Shebang{boolean} 59>8 60>8 61>8 62>8 63>8 64>8 31|158s14 243b13 -. 345l8 345t21 -59a8 Exec_Path{string} 31|244b8 326r29 334r29 -60i8 FS{35|74I9} 31|245b8 271r13 281r16 291r16 303r16 -61m8 Ino{35|28M9} 31|246b8 271r17 281r20 291r20 303r20 -62a8 Arguments{28|20A9} 31|247b8 329r51 337r42 -63a8 Environment{28|21A9} 31|248b8 330r29 338r29 -64i8 Proc{34|33I9} 31|249b8 331r29 339r29 -X 31 userland-loader.adb -33b4 Do_ASLR{boolean} 37m7 196r13 -50i7 Returned_PID{34|33I9} 56m42 57r10 61r11 64r29 134r25 135r25 136r25 139r17 -. 143r31 -51i7 Discard{natural} 134m52 135m52 136m52 -52e7 Success{35|234E9} 104m25 108r10 115m25 119r10 126m25 130r10 -53b7 Success1{boolean} 134m61 138r10 -53b17 Success2{boolean} 135m61 138r23 -53b27 Success3{boolean} 136m61 138r36 -54p7 User_Stdin{34|57P9} 69m7 102r25 103r25 134r39 -54p19 User_StdOut{34|57P9} 79m7 113r25 114r25 135r39 -54p32 User_StdErr{34|57P9} 89m7 124r25 125r25 136r39 -142L6 Error_Process 66r15 -144L6 Error 58r15 -168K15 Aln[19|19] 201r25 -170r7 Loaded_ELF{29|38R9} 180m7 182r14 186r10 189r24 190r13 190r42 191r34 -. 213r36 222r28 -170r19 LD_ELF{29|38R9} 205m10 207r36 208r17 -171m7 Entrypoint{22|35M12} 207m10 213m10 218r28 -172m7 LD_Slide{13|84M9} 200m17 201m13 201r39 203m13 206r34 -173a7 LD_Path{string} 189m10 191r16 -174i7 LD_FS{35|74I9} 191m70 205r34 211r17 -175m7 LD_Ino{35|28M9} 192m16 205r41 211r24 -176e7 Success{35|234E9} 192m24 193r13 -177b7 Success2{boolean} 231m50 232r17 -217i10 Returned_TID{24|27I9} 227r13 231r36 233r38 -239L6 Error 183r15 194r18 209r18 228r18 234r18 -251U17 Free[4|20] -251U17 Free[4|20] 342s7 343s7 -253i7 Path_Len{natural} 271m45 272r39 276r33 279m7 299m28 299r40 299r60 315r24 -. 321r42 -254i7 Arg_Len{natural} 310m28 310r39 310r57 322r42 324r10 -255m7 Pos{13|84M9} 276m7 276r14 281r25 286m28 286r35 291r25 292m10 292r17 -. 303r25 304m10 304r17 -256a7 Path{string} 258m34 258r34 272r56 299m54 315r13 321r31 -257a7 Path_Data{11|29A9} 271m25 271r25 -259a7 Arg{string} 310m52 322r31 -260e7 Char{character} 262m34 262r34 285r15 296r15 299r73 308r15 310r69 -261a7 Char_Data{11|29A9} 281m30 291m30 303m30 -263i7 Char_Len{natural} 281m41 282r42 291m41 292r36 293r42 303m41 304r36 -. 305r42 -264e7 Success{35|234E9} 271m61 272r10 281m57 282r13 291m57 293r13 303m57 -. 305r13 315m58 317r10 -265b7 Returned{boolean} 325m10 333m10 344r14 -266i7 Banged_FS{35|74I9} 315m35 327r29 335r29 -267m7 Banged_Ino{35|28M9} 315m46 328r29 336r29 -268p7 Path_Acc{28|19P9} 321m7 329r30 337r30 342m13 342r13 -269p7 Arg_Acc{28|19P9} 322m7 329r40 343m13 343r13 -314L6 Return_Shebang 298r52 -18P9 Name{28|19P9} 20r50[251] -20p39 X{28|19P9} 21r15[251] 22r23[251] 23r11[251] -18M9 T{13|84M9} 27r42[168] 27r52[168] 35r44[168] 35r54[168] 40r50[168] 40r60[168] -. 41r49[168] 23r42[168] 23r52[168] 27r14[168] 30r44[168] 30r54[168] 34r14[168] -. 37r50[168] 37r60[168] -27V13 Align_Up{13|84M9} 201s29[168] 29r20[168] -27m23 Value{13|84M9} 24r61[168] -27m30 Alignment{13|84M9} 28r20[168] 28r40[168] 28r55[168] 29r40[168] 25r61[168] -35V13 Align_Down{13|84M9} 37r20[168] -35m25 Value{13|84M9} 31r61[168] -35m32 Alignment{13|84M9} 36r20[168] 36r40[168] 36r55[168] 37r42[168] 32r61[168] -40V13 Divide_Round_Up{13|84M9} 42r20[168] -40m30 Dividend{13|84M9} 41r21[168] 39r15[168] -40m40 Divisor{13|84M9} 41r33[168] 41r62[168] 42r47[168] 39r27[168] 39r43[168] -24m7 Value2{26|82M9} 27r18[168] -25m7 Align2{26|82M9} 27r27[168] 27r48[168] -31m7 Value2{26|82M9} 34r17[168] -32m7 Align2{26|82M9} 34r33[168] -X 32 userland-mac.ads -20K18*MAC 31|30w15 30r33 32|180e17 -58M9*Limit_Value<13|84M9> -64n8*Stack_Size_Limit{59E9} 31|224r58 -X 33 userland-memory_locations.ads -17K18*Memory_Locations 31|26w15 181r10 198r17 199r17 203r25 33|30e30 -20N4*Program_Offset 31|181r27 -24N4*LD_Offset_Min 31|198r34 203r42 -25N4*LD_Offset_Max 31|199r34 -X 34 userland-process.ads -28K18*Process 30|17w15 17r37 31|56r7 60r7 134r7 135r7 136r7 143r7 180r44 -. 205r49 221r28 225r28 231r10 34|677e21 -33I9*PID 30|37r37 47r22 55r22 64r22 31|48r37 50r22 154r22 166r22 -. 249r22 -34i4*Error_PID{33I9} 31|56r31 57r25 109r17 120r17 131r17 145r14 -54n8*Description_Inode{49E9} 31|71r32 81r32 91r32 -56R9*File_Description 31|69r25 79r26 89r26 34|80e14 -57P9*File_Description_Acc(56R9) 31|54r46 -58e27*Description{49E9} 31|71m11 81m11 91m11 -59i7*Children_Count{natural} 31|70m11 80m11 90m11 -70b13*Inner_Is_Locked{boolean} 31|72m11 82m11 92m11 -71b13*Inner_Is_Blocking{boolean} 31|73m11 83m11 93m11 -72b13*Inner_Ino_Read{boolean} 31|74m11 84m11 94m11 -73b13*Inner_Ino_Write{boolean} 31|75m11 85m11 95m11 -74m13*Inner_Ino_Pos{13|84M9} 31|76m11 86m11 96m11 -75i13*Inner_Ino_FS{35|74I9} 31|77m11 87m11 97m11 102m36 113m37 124m37 -76m13*Inner_Ino{35|28M9} 31|78m11 88m11 98m11 103m36 114m37 125m37 -181U14*Create_Process 31|56s15 -185U14*Delete_Process 31|143s15 -203U14*Add_Thread 31|231s18 -252U14*Add_File 31|134s15 135s15 136s15 -338U14*Set_Common_Map 31|60s15 -344V13*Get_Common_Map{8|43P9} 31|180s52 205s57 221s36 -573V13*Convert{natural} 31|225s36 -604V13*Get_Limit{32|58M9} 31|224s41 -X 35 vfs.ads -24K9*VFS 30|18w6 18r28 31|52r22 77r32 87r32 97r32 100r7 111r7 122r7 193r24 -. 264r19 272r21 282r24 293r24 305r24 35|674e8 -28M9*File_Inode_Number<13|84M9> 30|32r22 44r22 52r22 61r22 31|43r22 151r22 -. 163r22 175r18 246r22 267r20 -74I9*FS_Handle 30|31r22 43r22 51r22 60r22 31|42r22 150r22 162r22 -. 174r18 245r22 266r20 -75i4*Error_Handle{74I9} 31|77r36 87r36 97r36 -234E9*FS_Status 31|52r26 176r18 264r23 35|242e16 -235n8*FS_Success{234E9} 31|108r21 119r21 130r21 193r28 272r25 282r28 293r28 -. 305r28 317r21 -359U14*Close 31|211s10 -400U14*Read 31|271s7 281s10 291s10 303s10 -593U14*Open 31|100s11 111s11 122s11 191s10 315s7 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___userland__loader__disable_aslr 0 -GG EK_PROOF_DEPENDENCIES ada___userland__loader__disable_aslr 0 -GG EK_GLOBALS ada___userland__loader__disable_aslr local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 1 ada___userland__loader__do_aslr refined_proof_in 0 refined_input 0 refined_output 1 ada___userland__loader__do_aslr calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__loader__do_aslr LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader__start_program 0 -GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_program 0 -GG EK_GLOBALS ada___userland__loader__start_program local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 3 ada___userland__loader__do_aslr ada___arch__mmu__kernel_table __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 3 ada___userland__loader__do_aslr ada___arch__mmu__kernel_table __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 18 ada___userland__process__create_process ada___userland__process__delete_process ada___userland__process__add_thread ada___userland__process__add_file ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__get_limit vfs__close vfs__read vfs__open__2 ada___system__storage_elements__to_integer ada___arch__mmu__fork_table scheduler__create_user_thread scheduler__delete_thread scheduler__convert__4 ada___userland__elf__load_elf ada___cryptography__random__get_integer__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__mmu__kernel_table LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader__start_program__2 2 ada___userland__loader__start_elf ada___userland__loader__start_shebang -GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_program__2 0 -GG EK_GLOBALS ada___userland__loader__start_program__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 2 ada___userland__loader__do_aslr __HEAP proper_output 0 refined_proof_in 0 refined_input 2 ada___userland__loader__do_aslr __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 13 ada___userland__process__add_thread ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__get_limit vfs__close vfs__read vfs__open__2 ada___system__storage_elements__to_integer scheduler__create_user_thread scheduler__delete_thread scheduler__convert__4 ada___userland__elf__load_elf ada___cryptography__random__get_integer__2 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader__start_elf__aln__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf__aln__align_up 0 -GG EK_GLOBALS ada___userland__loader__start_elf__aln__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__loader__start_elf__aln ada___userland__loader__start_elf ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader__start_elf__aln__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf__aln__align_down 0 -GG EK_GLOBALS ada___userland__loader__start_elf__aln__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__loader__start_elf__aln ada___userland__loader__start_elf ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader__start_elf__aln__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf__aln__divide_round_up 0 -GG EK_GLOBALS ada___userland__loader__start_elf__aln__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__loader__start_elf__aln ada___userland__loader__start_elf ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader__start_elf__aln 0 -GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf__aln 0 -GG EK_GLOBALS ada___userland__loader__start_elf__aln local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__loader__start_elf ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader__start_elf 0 -GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_elf 0 -GG EK_GLOBALS ada___userland__loader__start_elf local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 2 ada___userland__loader__do_aslr __HEAP proper_output 0 refined_proof_in 0 refined_input 2 ada___userland__loader__do_aslr __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 12 ada___userland__process__add_thread ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__get_limit vfs__close vfs__open__2 ada___system__storage_elements__to_integer scheduler__create_user_thread scheduler__delete_thread scheduler__convert__4 ada___userland__elf__load_elf ada___cryptography__random__get_integer__2 TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__loader__do_aslr LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader__start_shebang__free 0 -GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_shebang__free 0 -GG EK_GLOBALS ada___userland__loader__start_shebang__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 3 ada___userland__loader__start_shebang ada___userland__loader userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader__start_shebang 4 ada___userland__loader__start_program__2 vfs__read vfs__open__2 ada___userland__loader__start_shebang__free -GG EK_PROOF_DEPENDENCIES ada___userland__loader__start_shebang 0 -GG EK_GLOBALS ada___userland__loader__start_shebang local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__loader userland proper_proof_in 0 proper_input 2 ada___userland__loader__do_aslr __HEAP proper_output 0 refined_proof_in 0 refined_input 2 ada___userland__loader__do_aslr __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 13 ada___userland__process__add_thread ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__get_limit vfs__close vfs__read vfs__open__2 ada___system__storage_elements__to_integer scheduler__create_user_thread scheduler__delete_thread scheduler__convert__4 ada___userland__elf__load_elf ada___cryptography__random__get_integer__2 TRUE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__loader 0 -GG EK_PROOF_DEPENDENCIES ada___userland__loader 0 -GG EK_GLOBALS ada___userland__loader local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 ada___userland__loader__do_aslr refined_initializes 1 ada___userland__loader__do_aslr calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 1 ada___userland__loader__do_aslr TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__memory_locations TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_shebang__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__loader__start_shebang__freeGP8479 VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_shebang__freeGP8479 TRUE FALSE FALSE FALSE TRUE ada___userland__loader__start_shebang BODY_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_elf__aln TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__loader__start_elf BODY_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_elf__aln__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__loader__start_elf__aln VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_elf__aln__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__loader__start_elf__aln VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_elf__aln__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__loader__start_elf__aln VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_program FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___userland__loader__start_program__2 FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_elf FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_shebang FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-loader.cswi b/obj/gnatprove/phase1/userland-loader.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland-loader.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-mac.adb.stderr b/obj/gnatprove/phase1/userland-mac.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-mac.adb.stdout b/obj/gnatprove/phase1/userland-mac.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-mac.ali b/obj/gnatprove/phase1/userland-mac.ali deleted file mode 100644 index d8a67fe..0000000 --- a/obj/gnatprove/phase1/userland-mac.ali +++ /dev/null @@ -1,357 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland.mac%b userland-mac.adb 370e286c OO PK -W userland%s userland.ads userland.ali - -U userland.mac%s userland-mac.ads 0b26f347 OO PK -W interfaces%s interfac.ads interfac.ali -W userland%s userland.ads userland.ali -W vfs%s vfs.adb vfs.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-mac.adb 20250222165738 d8fcd60e userland.mac%b -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 4 interfac.ads -38K9*Interfaces 233e15 11|17w6 17r22 -84M9*Unsigned_64 11|58r28 -X 10 userland.ads -17K9*Userland 23e13 11|20r9 180r5 12|17r14 128r5 -X 11 userland-mac.ads -20K18*MAC 10|17k9 11|180l14 180e17 12|17b23 128l14 128t17 -23R9*Capabilities 39e14 84r53 89r61 154r17 12|31r53 36r61 -24b7*Can_Change_Scheduling{boolean} -25b7*Can_Spawn_Others{boolean} -26b7*Can_Access_Entropy{boolean} -27b7*Can_Modify_Memory{boolean} -28b7*Can_Use_Networking{boolean} -29b7*Can_Manage_Networking{boolean} -30b7*Can_Manage_Mounts{boolean} -31b7*Can_Manage_Power{boolean} -32b7*Can_Trace_Children{boolean} -33b7*Can_Change_UIDs{boolean} -34b7*Can_Manage_MAC{boolean} -35b7*Can_Use_Clocks{boolean} -36b7*Can_Signal_All{boolean} -37b7*Can_Change_GIDs{boolean} -38b7*Can_Bypass_IPC_Checks{boolean} -42R9*Permissions 49e14 101r45 116r17 147r19 12|44r45 68r17 -43b7*Includes_Contents{boolean} -44b7*Can_Read{boolean} -45b7*Can_Write{boolean} -46b7*Can_Execute{boolean} -47b7*Can_Append_Only{boolean} 12|60m18 -48b7*Can_Lock_Files{boolean} -52E9*Enforcement 55e13 74r52 79r59 153r17 12|21r52 26r59 -53n8*Deny{52E9} 160r19 -54n8*Deny_And_Scream{52E9} -55n8*Kill{52E9} -58M9*Limit_Value<4|84M9> 126r38 136r20 151r51 164r32 165r32 166r32 168r32 -. 12|91r38 100r20 -59E9*Limit_Type 65e26 126r19 135r20 151r30 12|91r19 99r20 -60n8*Core_Size_Limit{59E9} 163r11 -61n8*CPU_Time_Limit{59E9} 164r11 -62n8*File_Size_Limit{59E9} 165r11 -63n8*Opened_File_Limit{59E9} 166r11 -64n8*Stack_Size_Limit{59E9} 167r11 -65n8*Memory_Size_Limit{59E9} 168r11 -68R9*Context 69r31 74r36 79r44 84r37 89r45 99r15 113r24 125r19 134r27 152c9 -. 157e14 159r31 177r24 12|21r36 26r44 31r37 36r45 42r15 65r24 90r19 98r27 -. 113r24 -69r4*Default_Context{68R9} 159c4 -74V13*Get_Enforcement{52E9} 74>30 12|21b13 24l8 24t23 -74r30 Ctx{68R9} 12|21b30 23r14 -79U14*Set_Enforcement 79=31 79>53 12|26b14 29l8 29t23 -79r31 Ctx{68R9} 12|26b31 28m7 -79e53 Act{52E9} 12|26b53 28r21 -84V13*Get_Capabilities{23R9} 84>31 12|31b13 34l8 34t24 -84r31 Ctx{68R9} 12|31b31 33r14 -89U14*Set_Capabilities 89=32 89>54 12|36b14 39l8 39t24 -89r32 Ctx{68R9} 12|36b32 38m7 -89r54 Caps{23R9} 12|36b54 38r19 -98V13*Check_Permissions{42R9} 99>8 100>8 101>8 12|41b13 62l8 62t25 -99r8 Data{68R9} 12|42b8 48r16 49r13 51r20 51r36 51r50 52r23 -100i8 FS{13|74I9} 12|43b8 51r43 -101m8 Ino{13|28M9} 12|44b8 51r58 -104E9*Addition_Status 104e63 117r21 179r21 12|69r21 115r21 -104n29*Success{104E9} 12|75r26 121r23 -104n38*No_Space{104E9} 12|126r17 -104n48*Is_Conflicting{104E9} 12|77r26 -112U14*Add_Entity 113=8 114>8 115>8 116>8 117<8 12|64b14 87l8 87t18 -113r8 Data{68R9} 12|65b8 72r16 73r13 73r31 73r47 73r61 74r24 84m21 -114i8 FS{13|74I9} 118r16 12|66b8 73r54 85r35 -115m8 Ino{13|28M9} 12|67b8 73r69 85r39 -116r8 Perms{42R9} 12|68b8 74r16 85r44 -117e8 Status{104E9} 12|69b8 75m16 77m16 86m21 -124V13*Get_Limit{58M9} 125>8 126>8 12|89b13 95l8 95t17 -125r8 Data{68R9} 12|90b8 94r14 -126e8 Resource{59E9} 12|91b8 94r27 -133U14*Set_Limit 134=8 135>8 136>8 137<8 12|97b14 110l8 110t17 -134r8 Data{68R9} 12|98b8 104r19 105m10 -135e8 Resource{59E9} 12|99b8 104r32 105r23 -136m8 Limit{58M9} 12|100b8 104r10 105r36 -137b8 Could_Set{boolean} 12|101b8 106m10 108m10 -141N4 Filter_Path_Length -142R9 Filter 148e14 150r51 178r17 12|114r17 -143b7*Is_Used{boolean} 170m11 12|49r15 73r15 119r19 -144b7*Is_Device{boolean} 171m11 12|51r22 73r33 -145i7*FS{13|74I9} 172m11 12|51r38 73r49 -146m7*Ino{13|28M9} 173m11 12|51r52 73r63 -147r7*Perms{42R9} 174m11 12|52r25 74r26 -150A9 Filter_Arr(142R9) 156r17 -151A9 Limit_Arr(58M9)<59E9> 155r17 -153e7*Action{52E9} 160m8 12|23r18 28m11 -154r7*Caps{23R9} 161m8 12|33r18 38m11 -155a7*Limits{151A9} 162m8 12|94r19 104r24 105m15 -156a7*Filters{150A9} 169m8 12|48r21 72r21 118r21 -176U14 Add_Filter 177=8 178>8 179<8 12|83s7 112b14 127l8 127t18 -177r8 Data{68R9} 12|113b8 118r16 119r17 120m13 -178r8 Filt{142R9} 12|114b8 120r23 -179e8 Status{104E9} 12|115b8 121m13 126m7 -X 12 userland-mac.adb -46b7 Has_Elements{boolean} 50m13 57r10 -48r11 E{11|142R9} -72r11 E{11|142R9} -118r11 E{11|142R9} -X 13 vfs.ads -24K9*VFS 11|18w6 18r22 100r15 101r15 114r17 115r17 118r22 145r19 146r19 172r24 -. 12|43r15 44r15 66r17 67r17 13|674e8 -28M9*File_Inode_Number<4|84M9> 11|101r19 115r21 146r23 12|44r19 67r21 -74I9*FS_Handle 11|100r19 114r21 145r23 12|43r19 66r21 -75i4*Error_Handle{74I9} 11|118r26 172r28 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___userland__mac__get_enforcement 0 -GG EK_PROOF_DEPENDENCIES ada___userland__mac__get_enforcement 0 -GG EK_GLOBALS ada___userland__mac__get_enforcement local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__mac__set_enforcement 0 -GG EK_PROOF_DEPENDENCIES ada___userland__mac__set_enforcement 0 -GG EK_GLOBALS ada___userland__mac__set_enforcement local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__mac__get_capabilities 0 -GG EK_PROOF_DEPENDENCIES ada___userland__mac__get_capabilities 0 -GG EK_GLOBALS ada___userland__mac__get_capabilities local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__mac__set_capabilities 0 -GG EK_PROOF_DEPENDENCIES ada___userland__mac__set_capabilities 0 -GG EK_GLOBALS ada___userland__mac__set_capabilities local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__mac__check_permissions 0 -GG EK_PROOF_DEPENDENCIES ada___userland__mac__check_permissions 0 -GG EK_GLOBALS ada___userland__mac__check_permissions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__mac__add_entity 1 ada___userland__mac__add_filter -GG EK_PROOF_DEPENDENCIES ada___userland__mac__add_entity 0 -GG EK_GLOBALS ada___userland__mac__add_entity local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__mac__get_limit 0 -GG EK_PROOF_DEPENDENCIES ada___userland__mac__get_limit 0 -GG EK_GLOBALS ada___userland__mac__get_limit local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__mac__set_limit 0 -GG EK_PROOF_DEPENDENCIES ada___userland__mac__set_limit 0 -GG EK_GLOBALS ada___userland__mac__set_limit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__mac__add_filter 0 -GG EK_PROOF_DEPENDENCIES ada___userland__mac__add_filter 0 -GG EK_GLOBALS ada___userland__mac__add_filter local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__mac userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__mac 0 -GG EK_PROOF_DEPENDENCIES ada___userland__mac 0 -GG EK_GLOBALS ada___userland__mac local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-mac.cswi b/obj/gnatprove/phase1/userland-mac.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland-mac.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-memory_failure.adb.stderr b/obj/gnatprove/phase1/userland-memory_failure.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-memory_failure.adb.stdout b/obj/gnatprove/phase1/userland-memory_failure.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-memory_failure.ali b/obj/gnatprove/phase1/userland-memory_failure.ali deleted file mode 100644 index 31c84a2..0000000 --- a/obj/gnatprove/phase1/userland-memory_failure.ali +++ /dev/null @@ -1,190 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland.memory_failure%b userland-memory_failure.adb 21d4eb33 OO PK -W lib%s lib.adb lib.ali -W lib.panic%s lib-panic.adb lib-panic.ali -W userland%s userland.ads userland.ali - -U userland.memory_failure%s userland-memory_failure.ads 6fe99d62 OO PK -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W userland%s userland.ads userland.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-memory_failure.ads 20250222165738 e591e3ec userland.memory_failure%s -D userland-memory_failure.adb 20250222165738 0e397577 userland.memory_failure%b -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 7 lib.ads -19K9*Lib 35e8 14|17r6 17r31 15|17r6 36r7 -X 9 lib-panic.ads -21K13*Panic 39e14 15|17w10 36r11 -32U14*Hard_Panic 15|36s17 -X 10 lib-synchronization.ads -20K13*Synchronization 66e24 14|17w10 17r35 -22R9*Binary_Semaphore 57e14 14|37r27 -23r4*Unlocked_Semaphore{22R9} 14|37r47 -27U14*Seize 15|22s7 29s7 -31U14*Release 15|24s7 31s7 -X 13 userland.ads -17K9*Userland 23e13 14|19r9 39r5 15|19r14 38r5 -X 14 userland-memory_failure.ads -19K18*Memory_Failure 13|17k9 14|39l14 39e28 15|19b23 38l14 38t28 -21E9*Policy 24e18 27r43 30r39 38r37 15|20r43 27r39 -22n8*Hard_Panic{21E9} 38r47 -23n8*Soft_Kill{21E9} -24n8*Hard_Kill{21E9} -27U14*Get_System_Policy 27<33 15|20b14 25l8 25t25 -27e33 Pol{21E9} 15|20b33 23m7 -30U14*Set_System_Policy 30>33 15|27b14 32l8 32t25 -30e33 Pol{21E9} 15|27b33 30r21 -33U14*Handle_Failure 15|34b14 37l8 37t22 -37r4 Config_Mutex{10|22R9} 15|22m14 22r14 24m16 24r16 29m14 29r14 31m16 31r16 -38e4 Mem_Policy{21E9} 15|23r14 30m7 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___userland__memory_failure__get_system_policy 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__memory_failure__get_system_policy 0 -GG EK_GLOBALS ada___userland__memory_failure__get_system_policy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__memory_failure userland proper_proof_in 0 proper_input 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy proper_output 1 ada___userland__memory_failure__config_mutex refined_proof_in 0 refined_input 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy refined_output 1 ada___userland__memory_failure__config_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__memory_failure__set_system_policy 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__memory_failure__set_system_policy 0 -GG EK_GLOBALS ada___userland__memory_failure__set_system_policy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__memory_failure userland proper_proof_in 0 proper_input 1 ada___userland__memory_failure__config_mutex proper_output 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy refined_proof_in 0 refined_input 1 ada___userland__memory_failure__config_mutex refined_output 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__memory_failure__handle_failure 1 ada___lib__panic__hard_panic -GG EK_PROOF_DEPENDENCIES ada___userland__memory_failure__handle_failure 0 -GG EK_GLOBALS ada___userland__memory_failure__handle_failure local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__memory_failure userland proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__memory_failure 0 -GG EK_PROOF_DEPENDENCIES ada___userland__memory_failure 0 -GG EK_GLOBALS ada___userland__memory_failure local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy refined_initializes 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___userland__memory_failure__config_mutex ada___userland__memory_failure__mem_policy TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__memory_failure TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__memory_failure__get_system_policy FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE ada___userland__memory_failure__set_system_policy FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__memory_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_REMOTE_STATES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-memory_failure.cswi b/obj/gnatprove/phase1/userland-memory_failure.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland-memory_failure.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-memory_locations.ads.stderr b/obj/gnatprove/phase1/userland-memory_locations.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-memory_locations.ads.stdout b/obj/gnatprove/phase1/userland-memory_locations.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-memory_locations.ali b/obj/gnatprove/phase1/userland-memory_locations.ali deleted file mode 100644 index 5e19996..0000000 --- a/obj/gnatprove/phase1/userland-memory_locations.ali +++ /dev/null @@ -1,71 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland.memory_locations%s userland-memory_locations.ads ce1ff5c9 OO PK -W userland%s userland.ads userland.ali - -D system.ads 20240507065137 14286b0f system%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-memory_locations.ads 20250222165738 d86e3770 userland.memory_locations%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 2 userland.ads -17K9*Userland 23e13 3|17r9 30r5 -X 3 userland-memory_locations.ads -17K18*Memory_Locations 2|17k9 3|30l14 30e30 -20N4*Program_Offset -24N4*LD_Offset_Min -25N4*LD_Offset_Max -26N4*Mmap_Anon_Min -27N4*Mmap_Anon_Max -28N4*Stack_Jump_Min -29N4*Stack_Jump_Max - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___userland__memory_locations 0 -GG EK_PROOF_DEPENDENCIES ada___userland__memory_locations 0 -GG EK_GLOBALS ada___userland__memory_locations local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__memory_locations TRUE FALSE FALSE FALSE FALSE userland -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-memory_locations.cswi b/obj/gnatprove/phase1/userland-memory_locations.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland-memory_locations.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-oom_failure.adb.stderr b/obj/gnatprove/phase1/userland-oom_failure.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-oom_failure.adb.stdout b/obj/gnatprove/phase1/userland-oom_failure.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-oom_failure.ali b/obj/gnatprove/phase1/userland-oom_failure.ali deleted file mode 100644 index 20c8db2..0000000 --- a/obj/gnatprove/phase1/userland-oom_failure.ali +++ /dev/null @@ -1,700 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DEFAULT_INITIALIZATION -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland.oom_failure%b userland-oom_failure.adb 41be506a OO PK -W arch%s arch.ads arch.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W userland%s userland.ads userland.ali -W userland.process%s userland-process.adb userland-process.ali -W userland.syscall%s userland-syscall.adb userland-syscall.ali - -U userland.oom_failure%s userland-oom_failure.ads 04b92c92 OO PK -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W userland%s userland.ads userland.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-oom_failure.ads 20250222165738 8ec1521c userland.oom_failure%s -D userland-oom_failure.adb 20250222165738 1128c0e8 userland.oom_failure%b -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D userland-syscall.ads 20250222165738 b384b127 userland.syscall%s -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 26|18r6 18r28 41r21 61r24 -X 5 arch-mmu.ads -22K14*MMU 250e13 26|18w11 18r33 41r26 61r29 -43P9*Page_Table_Acc(42R9) 26|41r30 -187V13*Get_User_Mapped_Size{8|84M9} 26|61s33 -X 8 interfac.ads -38K9*Interfaces 233e15 26|17w6 17r28 -84M9*Unsigned_64 26|43r21 44r21 73r17 -X 13 lib.ads -19K9*Lib 35e8 25|17r6 17r31 26|21r6 45r21 72r13 74r13 -X 14 lib-messages.ads -21K13*Messages 103e17 26|21w10 45r25 72r17 74r17 -41U14*Put_Line 26|74s26 -55A12*Translated_String{string} 26|45r34 -74U14*Image 26|72s26 -X 15 lib-synchronization.ads -20K13*Synchronization 66e24 25|17w10 17r35 -22R9*Binary_Semaphore 57e14 25|33r33 -23r4*Unlocked_Semaphore{22R9} 25|33r53 -27U14*Seize 26|26s7 33s7 -31U14*Release 26|28s7 35s7 -X 22 userland.ads -17K9*Userland 23e13 25|19r9 35r5 26|19r6 19r28 20r6 23r14 85r5 -X 25 userland-oom_failure.ads -19K18*OOM_Failure 22|17k9 25|35l14 35e25 26|23b23 85l14 85t25 -22U14*Get_Killing_Config 22<34 26|24b14 29l8 29t26 -22b34 Enabled{boolean} 26|24b34 27m7 -26U14*Configure_Killing 26>33 26|31b14 36l8 36t25 -26b33 Enabled{boolean} 26|31b33 34r29 -29U14*Handle_Failure 26|38b14 84l8 84t22 -33r4 Config_Mutex{15|22R9} 26|26m14 26r14 28m16 28r16 33m14 33r14 35m16 35r16 -34b4 Is_Killing_Allowed{boolean} 26|27r18 34m7 48r10 -X 26 userland-oom_failure.adb -39i7 Count{natural} 50m35 51r13 52m13 58r34 73m70 76r33 -40a7 Items{27|171A9} 50m28 51r21 52r22 58r19 59r44 70r34 73r39 78r17 78r49 -. 81r30 -41p7 Map{5|43P9} 59m13 60r16 61r55 -42i7 Guilty{natural} 56m10 63m19 70r13 70r41 73r46 78r24 78r56 81r37 -43m7 Guilty_Size{8|84M9} 57m10 62r26 64m19 -44m7 Size{8|84M9} 61m16 62r19 64r34 -45a7 Str{14|55A12} 73m65 76r17 76r22 76r46 -58i14 I{integer} 59r51 63r34 -X 27 userland-process.ads -28K18*Process 26|19w15 19r37 40r21 50r10 59r20 70r60 27|677e21 -33I9*PID -34i4*Error_PID{33I9} 26|70r68 -163a7*Identifier{string} 26|78r32 -164i7*Identifier_Len{natural} 26|78r64 -165i7*Process{33I9} 26|59r54 70r49 73r54 81r45 -171A9*Process_Info_Arr(162R9) 26|40r29 -176U14*List_All 26|50s18 -344V13*Get_Common_Map{5|43P9} 26|59s28 -573V13*Convert{natural} 26|73s30 -X 28 userland-syscall.ads -33K18*Syscall 26|20w15 81r13 28|1356e21 -1249U14*Do_Exit 26|81s21 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___userland__oom_failure__get_killing_config 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__oom_failure__get_killing_config 0 -GG EK_GLOBALS ada___userland__oom_failure__get_killing_config local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__oom_failure userland proper_proof_in 0 proper_input 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed proper_output 1 ada___userland__oom_failure__config_mutex refined_proof_in 0 refined_input 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed refined_output 1 ada___userland__oom_failure__config_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__oom_failure__configure_killing 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__oom_failure__configure_killing 0 -GG EK_GLOBALS ada___userland__oom_failure__configure_killing local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__oom_failure userland proper_proof_in 0 proper_input 1 ada___userland__oom_failure__config_mutex proper_output 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed refined_proof_in 0 refined_input 1 ada___userland__oom_failure__config_mutex refined_output 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__oom_failure__handle_failure 7 ada___arch__mmu__get_user_mapped_size ada___userland__process__list_all ada___userland__process__get_common_map ada___userland__process__convert ada___userland__syscall__do_exit ada___lib__messages__put_line ada___lib__messages__image__2 -GG EK_PROOF_DEPENDENCIES ada___userland__oom_failure__handle_failure 0 -GG EK_GLOBALS ada___userland__oom_failure__handle_failure local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__oom_failure userland proper_proof_in 0 proper_input 3 ada___userland__oom_failure__is_killing_allowed ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___userland__oom_failure__is_killing_allowed ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 6 ada___arch__mmu__get_user_mapped_size ada___userland__process__list_all ada___userland__process__get_common_map ada___userland__process__convert ada___userland__syscall__do_exit ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___userland__oom_failure__is_killing_allowed ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__oom_failure 0 -GG EK_PROOF_DEPENDENCIES ada___userland__oom_failure 0 -GG EK_GLOBALS ada___userland__oom_failure local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed refined_initializes 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 ada___userland__oom_failure__config_mutex ada___userland__oom_failure__is_killing_allowed TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__reboot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fchown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sys_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__arch_prctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__umount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pwrite FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__readlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__open FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_sock_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmdt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__close FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_peer_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__read FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmget FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__write FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shutdown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__seek FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__getsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__futex FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__setsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__getdents FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__clock FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__makenode FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__munmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__clock_nanosleep FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__unlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_pid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__get_ppid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__truncate FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__exec FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__failure_policy FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_rusage FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__do_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__syscall__recvfrom FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__do_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__clone FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pre_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__post_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sendto FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_mappability FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__do_remote_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__common_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__bind FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__wait FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__symlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__config_netinterface FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__connect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__3 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__socket FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sysconf FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__utimes FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__open_pty FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__4 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_hostname FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fsync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__spawn FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__create_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__link FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__switch_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_tid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__syscall__to_string FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_mmap_prot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ptrace FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__manage_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__execute_mac_failure FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pty_ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__listen FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sys_accept FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mac_syscall_to_kernel FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigaction FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_add_file FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___userland__oom_failure TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure__get_killing_config FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__send_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure__configure_killing FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__syscall__fcntl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__resolve_at_directive FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__exit_thread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__faccess FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_random FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fstat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mprotect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_egid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__chdir FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_gids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sched_yield FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ppoll FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__delete_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__tty_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pipe FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_euid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_uids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__rename FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fchmod FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fadvise FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__add_mac_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__umask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_REMOTE_STATES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-oom_failure.cswi b/obj/gnatprove/phase1/userland-oom_failure.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland-oom_failure.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-process.adb.stderr b/obj/gnatprove/phase1/userland-process.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-process.adb.stdout b/obj/gnatprove/phase1/userland-process.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-process.ali b/obj/gnatprove/phase1/userland-process.ali deleted file mode 100644 index 1053e13..0000000 --- a/obj/gnatprove/phase1/userland-process.ali +++ /dev/null @@ -1,1474 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_DEALLOCATION -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland.process%b userland-process.adb 2a89e1b0 OO PK -W ada%s ada.ads ada.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W arch%s arch.ads arch.ali -W arch.local%s arch-local.adb arch-local.ali -W cryptography%s cryptography.ads cryptography.ali -W cryptography.random%s cryptography-random.adb cryptography-random.ali -W ipc%s ipc.ads ipc.ali -W ipc.filelock%s ipc-filelock.adb ipc-filelock.ali -W lib%s lib.adb lib.ali -W lib.alignment%s lib-alignment.adb lib-alignment.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W lib.time%s lib-time.adb lib-time.ali -W system%s system.ads system.ali -Z system.storage_elements%s s-stoele.ads s-stoele.ali -W userland%s userland.ads userland.ali -W userland.memory_locations%s userland-memory_locations.ads userland-memory_locations.ali - -U userland.process%s userland-process.ads 00700395 OO PK -W arch%s arch.ads arch.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W interfaces%s interfac.ads interfac.ali -W ipc%s ipc.ads ipc.ali -W ipc.fifo%s ipc-fifo.adb ipc-fifo.ali -W ipc.pty%s ipc-pty.adb ipc-pty.ali -W ipc.socket%s ipc-socket.adb ipc-socket.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W scheduler%s scheduler.adb scheduler.ali -W system%s system.ads system.ali -Z system.unsigned_types%s s-unstyp.ads s-unstyp.ali -W userland%s userland.ads userland.ali -W userland.mac%s userland-mac.adb userland-mac.ali -W vfs%s vfs.adb vfs.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-local.ads 20250222165738 e5953d14 arch.local%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D cryptography.ads 20250222165738 8132c7fc cryptography%s -D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-filelock.ads 20250222165738 69934e3c ipc.filelock%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s -D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D lib-time.ads 20250222165738 30059be5 lib.time%s -D memory.ads 20250222165738 335640bf memory%s -D networking.ads 20250222165738 70ea6e55 networking%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-memory_locations.ads 20250222165738 d86e3770 userland.memory_locations%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D userland-process.adb 20250222165738 fccee4aa userland.process%b -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 36|20r6 27r26 446r29 -X 2 a-uncdea.ads -20u15*Unchecked_Deallocation 36|20w10 27r30 446r33 -X 3 arch.ads -20K9*Arch 52e9 35|19r6 338r48 344r48 658r25 36|21r6 282r40 324r48 325r48 -. 561r48 568r48 569r16 -X 7 arch-local.ads -21K14*Local 40e15 36|21w11 282r45 -36V13*Get_Current_Thread{27|27I9} 36|282s51 -X 8 arch-mmu.ads -22K14*MMU 250e13 35|19w11 338r53 344r53 658r30 36|324r53 325r53 561r53 568r53 -. 569r21 -43P9*Page_Table_Acc(42R9) 35|338r57 344r57 658r34 36|561r57 568r57 569r25 -49N7*Page_Size 36|324r57 325r57 -X 9 cryptography.ads -17K9*Cryptography 18e17 36|22r6 315r10 319r10 -X 10 cryptography-random.ads -19K22*Random 40e24 36|22w19 315r23 319r23 -32U14*Get_Integer 36|315s30 319s30 -X 13 interfac.ads -38K9*Interfaces 233e15 35|22w6 22r22 -70M9*Unsigned_8 35|390r48 409r25 665r25 36|617r48 638r25 -81M9*Unsigned_32 35|167r25 459r45 464r41 469r56 474r52 479r45 484r41 489r56 -. 494r52 497r62 643r25 644r25 645r25 646r25 36|733r45 740r41 747r56 754r52 -. 761r45 768r41 775r56 782r52 -84M9*Unsigned_64 35|74r33 190r49 191r49 196r49 197r49 243r48 296r18 305r24 -. 316r24 350r51 356r52 363r48 363r68 659r25 660r25 666r25 667r25 668r25 669r25 -. 36|181r49 182r49 184r36 211r49 212r49 256r36 283r24 311r41 312r30 358r48 -. 362r16 475r18 480r16 491r24 498r16 510r24 517r16 577r51 578r16 586r52 675r48 -. 675r68 677r16 -X 14 ipc.ads -17K9*IPC 18e8 35|24r6 24r22 25r6 25r22 26r6 26r22 62r33 64r33 66r33 68r35 -. 78r28 36|24r6 458r19 -X 15 ipc-fifo.ads -21K13*FIFO 156e13 35|24w10 24r26 62r37 64r37 -39P9*Inner_Acc(38R9) 35|62r42 64r42 -82U14*Close_Reader 36|452s45 -84U14*Close_Writer 36|453s45 -X 16 ipc-filelock.ads -21K13*FileLock 111e17 36|24w10 458r23 -80U14*Release_Lock 36|458s32 -X 17 ipc-pty.ads -21K13*PTY 203e12 35|25w10 25r26 66r37 68r39 -37P9*Inner_Acc(36R9) 35|66r41 68r43 -47U14*Close 36|454s45 455s47 -X 18 ipc-socket.ads -21K13*Socket 573e15 35|26w10 26r26 78r32 -37P9*Socket_Acc(36R9) 35|78r39 -75U14*Close 36|464s40 -X 19 lib.ads -19K9*Lib 35e8 35|20r6 637r33 675r29 36|17r6 18r6 19r6 35r7 52r7 63r7 80r7 -. 85r16 95r16 99r7 107r7 111r36 143r16 159r16 168r7 173r7 174r7 176r7 191r7 -. 203r7 204r7 206r7 215r7 220r7 229r7 239r7 245r7 251r7 258r7 266r16 270r16 -. 278r7 285r7 293r16 296r16 307r7 311r26 331r7 334r7 340r7 342r7 348r7 355r7 -. 361r7 367r7 379r7 391r7 397r7 403r7 429r7 430r7 441r7 442r7 460r22 479r7 -. 485r7 497r7 505r7 516r7 521r7 526r7 532r7 537r7 545r7 550r7 558r7 563r7 -. 565r7 571r7 573r7 580r7 582r7 588r7 590r7 599r7 602r7 611r7 614r7 619r7 -. 623r7 628r7 632r7 643r7 648r7 657r7 660r7 669r7 672r7 679r7 682r7 689r7 -. 691r7 704r7 708r7 726r7 730r7 735r7 737r7 742r7 744r7 749r7 751r7 756r7 -. 758r7 763r7 765r7 770r7 772r7 777r7 779r7 784r7 786r7 795r7 803r7 812r7 -. 820r7 825r7 827r7 832r7 834r7 839r7 841r7 846r7 848r7 853r7 861r7 866r7 -. 870r7 879r7 881r7 890r7 894r7 910r7 926r7 -X 20 lib-alignment.ads -19k13*Alignment 43e18 36|18w10 311r30 -X 22 lib-messages.ads -21K13*Messages 103e17 36|19w10 460r26 -41U14*Put_Line 36|460s35 -X 23 lib-synchronization.ads -20K13*Synchronization 66e24 35|20w10 637r37 675r33 36|35r11 52r11 63r11 80r11 -. 85r20 95r20 99r11 107r11 111r40 143r20 159r20 168r11 173r11 174r11 176r11 -. 191r11 206r11 215r11 220r11 229r11 239r11 245r11 251r11 258r11 278r11 285r11 -. 307r11 331r11 334r11 340r11 342r11 348r11 355r11 361r11 367r11 379r11 391r11 -. 397r11 403r11 429r11 430r11 441r11 442r11 479r11 485r11 497r11 505r11 516r11 -. 521r11 526r11 532r11 537r11 545r11 550r11 558r11 563r11 565r11 571r11 573r11 -. 580r11 582r11 588r11 590r11 599r11 602r11 611r11 614r11 619r11 623r11 628r11 -. 632r11 643r11 648r11 657r11 660r11 669r11 672r11 679r11 682r11 689r11 691r11 -. 704r11 708r11 726r11 730r11 735r11 737r11 742r11 744r11 749r11 751r11 756r11 -. 758r11 763r11 765r11 770r11 772r11 777r11 779r11 784r11 786r11 795r11 803r11 -. 812r11 820r11 825r11 827r11 832r11 834r11 839r11 841r11 846r11 848r11 853r11 -. 861r11 866r11 870r11 879r11 881r11 890r11 894r11 910r11 926r11 -22R9*Binary_Semaphore 57e14 35|637r53 675r49 -23r4*Unlocked_Semaphore{22R9} 36|111r56 -27U14*Seize 36|52s27 80s27 85s36 107s27 143s36 173s27 174s27 191s27 215s27 -. 229s27 245s27 258s27 285s27 331s27 340s27 348s27 361s27 379s27 397s27 429s27 -. 430s27 479s27 497s27 516s27 526s27 537s27 550s27 563s27 571s27 580s27 588s27 -. 599s27 611s27 619s27 628s27 643s27 657s27 669s27 679s27 689s27 704s27 726s27 -. 735s27 742s27 749s27 756s27 763s27 770s27 777s27 784s27 795s27 812s27 825s27 -. 832s27 839s27 846s27 853s27 866s27 879s27 890s27 910s27 -31U14*Release 36|35s27 63s27 95s36 99s27 159s36 168s27 176s27 206s27 220s27 -. 239s27 251s27 278s27 307s27 334s27 342s27 355s27 367s27 391s27 403s27 441s27 -. 442s27 485s27 505s27 521s27 532s27 545s27 558s27 565s27 573s27 582s27 590s27 -. 602s27 614s27 623s27 632s27 648s27 660s27 672s27 682s27 691s27 708s27 730s27 -. 737s27 744s27 751s27 758s27 765s27 772s27 779s27 786s27 803s27 820s27 827s27 -. 834s27 841s27 848s27 861s27 870s27 881s27 894s27 926s27 -X 24 lib-time.ads -19K13*Time 77e13 36|17w10 203r11 204r11 266r20 270r20 293r20 296r20 -27U14*Normalize 36|203s16 204s16 -37U14*Increment 36|266s25 270s25 293s25 296s25 -X 27 scheduler.ads -25K9*Scheduler 183e14 35|21w6 21r21 205r18 218r50 232r49 236r50 633r58 641r25 -. 36|115r36 195r13 225r18 234r13 255r50 262r13 291r16 302r16 337r49 338r16 -. 346r50 352r13 -27I9*TID 35|205r28 218r60 633r68 36|225r28 255r60 282r33 -29i4*Error_TID{27I9} 36|130r47 194r19 232r47 247r51 261r48 287r23 305r20 -. 351r23 -70U14*Delete_Thread 36|302s26 -80U14*Get_Runtime_Times 36|195s23 262s23 291s26 -112I12*Niceness{integer} 35|232r59 236r60 641r35 36|337r59 338r26 346r60 -113i4*Default_Niceness{112I12} 36|115r46 -116U14*Set_Niceness 36|234s23 352s23 -X 28 system.ads -37K9*System 155e11 35|17w6 545r19 554r15 565r21 635r58 36|114r47 876r19 887r15 -. 900r21 906r17 -67M9*Address 35|545r26 554r22 565r28 635r65 36|876r26 887r22 900r28 -69m4*Null_Address{67M9} 36|114r54 906r24 -X 29 s-stoele.ads -82M9*Integer_Address -X 31 userland.ads -17K9*Userland 23e13 35|23r6 28r9 677r5 36|23r6 26r14 1002r5 -X 33 userland-mac.ads -20K18*MAC 180e17 35|23w15 586r49 587r49 589r50 590r51 595r45 601r17 602r21 -. 606r19 606r42 610r20 611r20 661r25 36|135r36 945r49 947r14 950r49 952r7 -. 955r50 957r14 960r51 962r7 968r45 971r14 978r17 979r21 982r7 987r19 987r42 -. 990r14 995r20 996r20 1000r7 -23R9*Capabilities 39e14 35|589r54 590r55 36|955r54 960r55 -42R9*Permissions 49e14 35|595r49 601r21 36|968r49 978r21 -52E9*Enforcement 55e13 35|586r53 587r53 36|945r53 950r53 -58M9*Limit_Value<13|84M9> 35|606r46 611r24 36|987r46 996r24 -59E9*Limit_Type 65e26 35|606r23 610r24 36|987r23 995r24 -68R9*Context 157e14 35|661r29 -69r4*Default_Context{68R9} 36|135r40 -74V13*Get_Enforcement{52E9} 36|947s18 -79U14*Set_Enforcement 36|952s11 -84V13*Get_Capabilities{23R9} 36|957s18 -89U14*Set_Capabilities 36|962s11 -98V13*Check_Permissions{42R9} 36|971s18 -104E9*Addition_Status 104e63 35|602r25 36|979r25 -112U14*Add_Entity 36|982s11 -124V13*Get_Limit{58M9} 36|990s18 -133U14*Set_Limit 36|1000s11 -X 34 userland-memory_locations.ads -17K18*Memory_Locations 30e30 36|23w15 316r14 317r14 320r14 321r14 327r23 -. 328r23 -26N4*Mmap_Anon_Min 36|316r31 327r40 -27N4*Mmap_Anon_Max 36|317r31 -28N4*Stack_Jump_Min 36|320r31 328r40 -29N4*Stack_Jump_Max 36|321r31 -X 35 userland-process.ads -28K18*Process 31|17k9 35|677l14 677e21 36|26b23 1002l14 1002t21 -33I9*PID 34r33 155r53 157r15 165r25 166r25 181r39 181r59 185r40 -. 189r15 195r15 204r18 212r41 218r36 223r36 228r52 232r37 236r38 243r38 253r18 -. 263r39 278r18 279r18 295r18 304r24 315r24 324r37 329r37 333r42 338r37 344r36 -. 350r39 356r40 363r34 371r20 381r20 390r36 397r36 407r21 419r15 429r15 437r32 -. 437r44 443r37 451r15 459r30 464r30 469r40 474r40 479r30 484r30 489r40 494r40 -. 500r17 505r18 509r49 514r32 519r32 525r41 531r41 536r35 543r15 552r15 563r17 -. 573r29 579r45 586r37 587r38 589r38 590r39 593r15 598r17 605r19 609r20 616c9 -. 617r33 651r25 672r35 672r50 36|44r15 102r39 102r59 103r11 161r44 164r25 -. 171r40 180r15 210r15 224r18 242r41 255r36 281r36 310r52 337r37 346r38 358r38 -. 372r18 394r39 422r18 423r18 474r18 490r24 509r24 524r37 535r37 548r42 561r37 -. 568r36 577r39 586r40 594r20 606r20 617r36 626r36 636r21 652r15 664r15 675r34 -. 686r32 686r44 687r16 695r37 712r15 733r30 740r30 747r40 754r40 761r30 768r30 -. 775r40 782r40 790r17 807r18 823r49 830r32 837r32 844r41 851r41 864r35 874r15 -. 885r15 898r17 929r29 934r45 937r20 939r17 945r37 950r38 955r38 960r39 966r15 -. 975r17 986r19 994r20 -34i4*Error_PID{33I9} 185r68 207r27 213r30 219r27 223r61 229r30 233r30 237r30 -. 244r30 258r30 264r30 281r31 282r30 297r30 308r30 319r30 325r30 329r65 333r70 -. 339r27 345r27 351r30 357r30 364r24 374r30 384r30 391r30 398r30 412r30 422r27 -. 432r27 438r27 444r27 454r27 573r69 617c4 36|50r25 73r33 105r19 142r26 263r42 -. 288r42 941r17 -35i4*Max_Process_Count{natural} 618c4 36|936r37 -39i4*Max_CWD_Length{natural} 620c4 -40i4*Max_Name_Length{natural} 621c4 649r38 650r44 36|698r24 699r20 -41i4*Max_Thread_Count{natural} 622c4 633r35 -42i4*Max_File_Count{natural} 280r29 284r29 623c4 634r35 653r44 36|424r29 -46m4*Default_Umask{37|32M12} 625c4 36|116r36 -49E9*File_Description_Type 55e27 58r41 -50n8*Description_Reader_FIFO{49E9} 61r15 36|452r18 -51n8*Description_Writer_FIFO{49E9} 63r15 36|453r18 -52n8*Description_Primary_PTY{49E9} 65r15 36|454r18 -53n8*Description_Secondary_PTY{49E9} 67r15 36|455r18 -54n8*Description_Inode{49E9} 69r15 36|456r18 -55n8*Description_Socket{49E9} 77r15 36|464r18 -56R9*File_Description 57r40 58c9 58d27 80e14 36|447r11 -57P9*File_Description_Acc(56R9) 254r18 270r17 271r21 288r32 296r38 630r23 -. 36|373r18 408r17 409r21 445r32 447r29 475r38 477r13 -58e27*Description{49E9} 60r12 36|451r17 -59i7*Children_Count{natural} 36|413r12 414m12 414r32 450r12 468m12 468r32 -62p13*Inner_Reader_FIFO{15|39P9} 36|452m61 -64p13*Inner_Writer_FIFO{15|39P9} 36|453m61 -66p13*Inner_Primary_PTY{17|37P9} 36|454m54 -68p13*Inner_Secondary_PTY{17|37P9} 36|455m56 -70b13*Inner_Is_Locked{boolean} 36|457r21 -71b13*Inner_Is_Blocking{boolean} -72b13*Inner_Ino_Read{boolean} -73b13*Inner_Ino_Write{boolean} -74m13*Inner_Ino_Pos{13|84M9} -75i13*Inner_Ino_FS{37|74I9} 36|458r48 463r29 -76m13*Inner_Ino{37|28M9} 36|458r64 463r45 -78p13*Inner_Socket{18|37P9} 36|464m49 -82E9*Signal 110e34 114r8 143r33 397r47 411r25 536r46 544r15 553r15 564r21 -. 635r30 663r25 36|626r47 640r25 864r46 875r15 886r15 899r21 -83n8*Signal_Abort{82E9} 115r8 -84n8*Signal_Alarm{82E9} 116r8 -85n8*Signal_Bad_Memory{82E9} 117r8 -86n8*Signal_Child{82E9} 118r8 36|920r29 -87n8*Signal_Continue{82E9} 119r8 -88n8*Signal_FP_Exception{82E9} 120r8 36|905r17 -89n8*Signal_Hang_Up{82E9} 121r8 -90n8*Signal_Illegal_Instruction{82E9} 122r8 -91n8*Signal_Interrupted{82E9} 123r8 -92n8*Signal_Kill{82E9} 124r8 36|137r36 857r39 891r17 -93n8*Signal_Broken_Pipe{82E9} 125r8 -94n8*Signal_Quit{82E9} 126r8 -95n8*Signal_Segmentation_Fault{82E9} 127r8 -96n8*Signal_Stop{82E9} 128r8 36|858r39 -97n8*Signal_Terminated{82E9} 129r8 -98n8*Signal_Terminal_Stop{82E9} 130r8 -99n8*Signal_Terminal_In{82E9} 131r8 -100n8*Signal_Terminal_Out{82E9} 132r8 -101n8*Signal_User_1{82E9} 133r8 -102n8*Signal_User_2{82E9} 134r8 -103n8*Signal_Pollable{82E9} 135r8 -104n8*Signal_Profiling_Timer{82E9} 136r8 -105n8*Signal_Bad_Syscall{82E9} 137r8 -106n8*Signal_Tracepoint{82E9} 138r8 36|859r39 -107n8*Signal_Urgent{82E9} 139r8 36|920r51 -108n8*Signal_Virtual_Timer{82E9} 140r8 -109n8*Signal_CPU_Exceeded{82E9} 141r8 -110n8*Signal_File_Size_Exceeded{82E9} 142r8 -143A9*Signal_Bitmap(boolean)<82E9> 525r56 531r52 638r25 639r25 36|844r56 -. 851r52 -146U14*Init 36|32b14 36l8 36t12 -149U14*Disable_ASLR 36|38b14 41l8 41t20 -155A9*Children_Arr(33I9) 158r19 36|45r19 -156U14*Get_Children 157>8 158<8 159<8 36|43b14 64l8 64t20 -157i8 Proc{33I9} 36|44b8 54r65 -158a8 Buf{155A9} 36|45b8 50m7 57r24 58m16 58r21 -159i8 Len{natural} 36|46b8 51m7 56m13 56r20 -162R9*Process_Info 170e14 171r57 -163a7*Identifier{string} 36|71m14 87m20 -164i7*Identifier_Len{natural} 36|72m14 88m20 -165i7*Process{33I9} 36|73m14 89m20 -166i7*Parent{33I9} 36|74m14 90m20 -167m7*User{13|81M9} 36|75m14 91m20 -168b7*Is_Being_Traced{boolean} 36|76m14 92m20 -169b7*Has_Exited{boolean} 36|77m14 93m20 -171A9*Process_Info_Arr(162R9) 176r35 36|66r35 -176U14*List_All 176<24 176<53 36|66b14 100l8 100t16 -176a24 List{171A9} 36|66b24 69m7 84r29 86m16 86r22 -176i53 Total{natural} 36|66b53 78m7 83m13 83r22 -181U14*Create_Process 181>30 181<44 36|102b14 169l8 169t22 -181i30 Parent{33I9} 36|102b30 103r23 142r16 143r53 144r58 145r58 146r48 147r58 -. 148r58 149r58 150r58 151r58 152r58 153r58 154r58 155r58 156r58 157r58 158r58 -. 159r55 -181i44 Returned{33I9} 36|102b44 105m7 164m13 -185U14*Delete_Process 185>30 36|171b14 177l8 177t22 -185i30 Process{33I9} 185r57 36|171b30 173r44 175r23 -188U14*Get_Runtime_Times 189>8 190<8 190<24 191<8 191<22 36|179b14 207l8 -. 207t25 -189i8 Proc{33I9} 36|180b8 191r44 193r27 206r46 -190m8 System_Seconds{13|84M9} 36|181b8 186m7 196m13 196r31 203m27 -190m24 System_Nanoseconds{13|84M9} 36|181b24 187m7 197m13 197r35 203m43 -191m8 User_Seconds{13|84M9} 36|182b8 188m7 198m13 198r29 204m27 -191m22 User_Nanoseconds{13|84M9} 36|182b22 189m7 199m13 199r33 204m41 -194U14*Get_Children_Runtimes 195>8 196<8 196<24 197<8 197<22 36|209b14 221l8 -. 221t29 -195i8 Proc{33I9} 36|210b8 215r44 216r35 217r39 218r33 219r37 220r46 -196m8 System_Seconds{13|84M9} 36|211b8 216m7 -196m24 System_Nanoseconds{13|84M9} 36|211b24 217m7 -197m8 User_Seconds{13|84M9} 36|212b8 218m7 -197m22 User_Nanoseconds{13|84M9} 36|212b22 219m7 -203U14*Add_Thread 204>8 205>8 206<8 36|223b14 240l8 240t18 -204i8 Proc{33I9} 207r19 36|224b8 229r44 231r26 232r23 233r23 234r55 239r46 -205i8 Thread{27|27I9} 36|225b8 233r48 234r37 -206b8 Success{boolean} 36|226b8 230m7 235m13 -212V13*Get_Thread_Count{natural} 212>31 36|242b13 253l8 253t24 -212i31 Process{33I9} 213r19 36|242b31 245r44 246r26 247r23 251r46 -218U14*Remove_Thread 218>29 218>41 36|255b14 279l8 279t21 -218i29 Proc{33I9} 219r19 36|255b29 258r44 259r26 260r23 261r23 263r26 264r36 -. 267r40 268r40 271r40 272r40 278r46 -218i41 Thread{27|27I9} 36|255b41 260r47 262r42 -223U14*Flush_Threads 223>29 36|281b14 308l8 308t21 -223i29 Proc{33I9} 223r53 36|281b29 285r44 286r31 288r26 289r36 294r40 295r40 -. 297r40 298r40 307r46 -228U14*Reassign_Process_Addresses 228>42 36|161s16 310b14 335l8 335t34 -228i42 Process{33I9} 229r19 36|310b42 331r44 332r17 333r17 334r46 -232V13*Get_Niceness{27|112I12} 232>27 36|337b13 344l8 344t20 -232i27 Process{33I9} 233r19 36|337b27 340r44 341r27 342r46 -236U14*Set_Niceness 236>28 236>43 36|346b14 356l8 356t20 -236i28 Process{33I9} 237r19 36|346b28 348r44 349r17 350r31 355r46 -236i43 Nice{27|112I12} 36|346b43 349r38 352r45 -243V13*Is_Valid_File{boolean} 243>28 243>43 36|358b13 369l8 369t21 -243i28 Process{33I9} 244r19 36|358b28 361r44 363r25 367r46 -243m43 FD{13|84M9} 36|358b43 362r10 363r55 -252U14*Add_File 253>8 254>8 255<8 256<8 257>8 36|371b14 392l8 392t16 -253i8 Process{33I9} 258r19 36|372b8 379r44 380r35 381r23 382r23 391r46 -254p8 File{57P9} 36|373b8 382r62 -255i8 FD{natural} 36|374b8 383m13 388m7 -256b8 Success{boolean} 36|375b8 384m13 389m7 -257i8 Start{natural} 36|376b8 380r16 -263V13*Get_File_Count{natural} 263>29 36|394b13 405l8 405t22 -263i29 Process{33I9} 264r19 36|394b29 397r44 398r28 403r46 -269U14*Duplicate 270>8 271<8 36|407b14 419l8 419t17 436s16 -270p8 F{57P9} 36|408b8 413r10 414r10 414r30 415r20 -271p8 Result{57P9} 36|409b8 415m10 417m10 -277U14*Duplicate_FD_Table 278>8 279>8 280>8 36|421b14 443l8 443t26 -278i8 Process{33I9} 281r20 36|422b8 426r40 429r44 442r46 -279i8 Target{33I9} 282r20 36|423b8 427r40 430r44 441r46 -280i8 Max_FD{natural} 283r19 284r19 36|424b8 432r21 -288U14*Close 288=21 36|445b14 471l8 471t13 528s10 540s13 553s13 -288p21 F{57P9} 36|445b21 450r10 451r15 452r59 453r59 454r52 455r54 457r19 -. 458r46 458r62 463r27 463r43 464r47 466m16 468r10 468r30 470m7 -294V13*Get_File{57P9} 295>8 296>8 36|473b13 487l8 487t16 -295i8 Process{33I9} 297r19 36|474b8 479r44 481r27 485r46 -296m8 FD{13|84M9} 36|475b8 480r10 481r57 -303U14*Get_FD_Flags 304>8 305>8 306<8 307<8 36|489b14 506l8 506t20 -304i8 Process{33I9} 308r19 36|490b8 495r42 497r44 505r46 -305m8 FD{13|84M9} 36|491b8 498r10 499r43 500r43 -306b8 Close_On_Exec{boolean} 36|492b8 499m10 502m10 -307b8 Close_On_Fork{boolean} 36|493b8 500m10 503m10 -314U14*Set_FD_Flags 315>8 316>8 317>8 318>8 36|508b14 522l8 522t20 -315i8 Process{33I9} 319r19 36|509b8 514r42 516r44 521r46 -316m8 FD{13|84M9} 36|510b8 517r10 518r26 519r26 -317b8 Close_On_Exec{boolean} 36|511b8 518r48 -318b8 Close_On_Fork{boolean} 36|512b8 519r48 -324U14*Remove_File 324>27 324>42 36|524b14 533l8 533t19 -324i27 Process{33I9} 325r19 36|524b27 526r44 528r27 529r20 530r20 532r46 -324i42 FD{natural} 36|524b42 527r10 528r48 529r41 530r41 -329U14*Flush_Files 329>27 36|535b14 546l8 546t19 -329i27 Process{33I9} 329r54 36|535b27 537r44 538r26 545r46 -333U14*Flush_Exec_Files 333>32 36|548b14 559l8 559t24 -333i32 Process{33I9} 333r59 36|548b32 550r44 551r26 558r46 -338U14*Set_Common_Map 338>30 338>42 36|561b14 566l8 566t22 -338i30 Proc{33I9} 339r19 36|561b30 563r44 564r17 565r46 -338p42 Map{8|43P9} 36|561b42 564r37 -344V13*Get_Common_Map{8|43P9} 344>29 36|568b13 575l8 575t22 -344i29 Proc{33I9} 345r19 36|568b29 571r44 572r27 573r46 -350V13*Get_Stack_Base{13|84M9} 350>29 36|577b13 584l8 584t22 -350i29 Process{33I9} 351r19 36|577b29 580r44 581r27 582r46 -356U14*Set_Stack_Base 356>30 356>45 36|586b14 591l8 591t22 -356i30 Process{33I9} 357r19 36|586b30 588r44 589r17 590r46 -356m45 Base{13|84M9} 36|586b45 589r40 -363V13*Bump_Alloc_Base{13|84M9} 363>30 363>39 36|675b13 684l8 684t23 -363i30 P{33I9} 364r19 36|675b30 679r44 680r27 681r17 682r46 -363m39 Length{13|84M9} 36|675b39 681r43 -370U14*Get_Traced_Info 371>8 372<8 373<8 36|593b14 603l8 603t23 -371i8 Process{33I9} 374r19 36|594b8 599r44 600r30 601r30 602r46 -372b8 Is_Traced{boolean} 36|595b8 600m7 -373i8 FD{natural} 36|596b8 601m7 -380U14*Set_Traced_Info 381>8 382>8 383>8 36|605b14 615l8 615t23 -381i8 Process{33I9} 384r19 36|606b8 611r44 612r17 613r17 614r46 -382b8 Is_Traced{boolean} 36|607b8 612r39 -383i8 FD{natural} 36|608b8 613r39 -390U14*Issue_Exit 390>26 390>41 36|617b14 624l8 624t18 -390i26 Process{33I9} 391r19 36|617b26 619r44 620r17 621r17 622r17 623r46 -390m41 Code{13|70M9} 36|617b41 622r41 -397U14*Issue_Exit 397>26 397>41 36|626b14 633l8 633t18 -397i26 Process{33I9} 398r19 36|626b26 628r44 629r17 630r17 631r17 632r46 -397e41 Sig{82E9} 36|626b41 631r42 -406U14*Check_Exit 407>8 408<8 409<8 410<8 411<8 36|635b14 649l8 649t18 -407i8 Process{33I9} 412r19 36|636b8 643r44 644r31 645r31 646r31 647r31 648r46 -408b8 Did_Exit{boolean} 36|637b8 644m7 -409m8 Code{13|70M9} 36|638b8 645m7 -410b8 Was_Signal{boolean} 36|639b8 646m7 -411e8 Sig{82E9} 36|640b8 647m7 -418U14*Set_CWD 419>8 420>8 421>8 36|651b14 661l8 661t15 -419i8 Proc{33I9} 422r19 36|652b8 657r44 658r17 659r17 660r46 -420i8 FS{37|74I9} 36|653b8 658r42 -421m8 Ino{37|28M9} 36|654b8 659r42 -428U14*Get_CWD 429>8 430<8 431<8 36|663b14 673l8 673t15 -429i8 Proc{33I9} 432r19 36|664b8 669r44 670r24 671r24 672r46 -430i8 FS{37|74I9} 36|665b8 670m7 -431m8 Ino{37|28M9} 36|666b8 671m7 -437V13*Get_Parent{33I9} 437>25 36|686b13 693l8 693t18 -437i25 Proc{33I9} 438r19 36|686b25 689r44 690r27 691r46 -443U14*Set_Identifier 443>30 443>42 36|695b14 709l8 709t22 -443i30 Proc{33I9} 444r19 36|695b30 704r44 705r17 706r17 708r46 -443a42 Name{string} 36|695b42 698r10 701r20 707r10 707r16 707r30 -450U14*Get_Identifier 451>8 452<8 453<8 36|711b14 731l8 731t22 -451i8 Proc{33I9} 454r19 36|712b8 720r32 721r30 726r44 728r20 730r46 -452a8 ID{string} 36|713b8 718m7 720r10 723r20 727m7 727r11 727r23 -453i8 Len{natural} 36|714b8 729m7 -459U14*Get_UID 459>23 459<35 36|733b14 738l8 738t15 -459i23 Proc{33I9} 36|733b23 735r44 736r24 737r46 -459m35 UID{13|81M9} 36|733b35 736m7 -464U14*Set_UID 464>23 464>35 36|740b14 745l8 745t15 -464i23 Proc{33I9} 36|740b23 742r44 743r17 744r46 -464m35 UID{13|81M9} 36|740b35 743r31 -469U14*Get_Effective_UID 469>33 469<45 36|747b14 752l8 752t25 -469i33 Proc{33I9} 36|747b33 749r44 750r25 751r46 -469m45 EUID{13|81M9} 36|747b45 750m7 -474U14*Set_Effective_UID 474>33 474>45 36|754b14 759l8 759t25 -474i33 Proc{33I9} 36|754b33 756r44 757r17 758r46 -474m45 EUID{13|81M9} 36|754b45 757r41 -479U14*Get_GID 479>23 479<35 36|761b14 766l8 766t15 -479i23 Proc{33I9} 36|761b23 763r44 764r24 765r46 -479m35 GID{13|81M9} 36|761b35 764m7 -484U14*Set_GID 484>23 484>35 36|768b14 773l8 773t15 -484i23 Proc{33I9} 36|768b23 770r44 771r17 772r46 -484m35 GID{13|81M9} 36|768b35 771r32 -489U14*Get_Effective_GID 489>33 489<45 36|775b14 780l8 780t25 -489i33 Proc{33I9} 36|775b33 777r44 778r25 779r46 -489m45 EGID{13|81M9} 36|775b45 778m7 -494U14*Set_Effective_GID 494>33 494>45 36|782b14 787l8 787t25 -494i33 Proc{33I9} 36|782b33 784r44 785r17 786r46 -494m45 EGID{13|81M9} 36|782b45 785r42 -496N4*Max_Supplementary_Groups 648r53 36|796r27 799r49 813r26 -497A9*Supplementary_GID_Arr(13|81M9) 501r21 506r18 648r25 36|791r21 -. 808r18 -499U14*Get_Supplementary_Groups 500>8 501<8 502<8 36|789b14 804l8 804t32 -500i8 Proc{33I9} 36|790b8 795r44 797r30 800r26 802r27 803r46 -501a8 Groups{497A9} 36|791b8 796r10 797m10 797r50 799m10 799r18 799r34 -502i8 Length{natural} 36|792b8 802m7 -504U14*Set_Supplementary_Groups 505>8 506>8 507<8 36|806b14 821l8 821t32 -505i8 Proc{33I9} 36|807b8 812r44 816r20 817r20 820r46 -506a8 Groups{497A9} 36|808b8 813r10 816r40 816r58 817r42 -507b8 Success{boolean} 36|809b8 814m10 818m10 -509U14*Empty_Supplementary_Groups 509>42 36|823b14 828l8 828t34 -509i42 Proc{33I9} 36|823b42 825r44 826r17 827r46 -514U14*Get_Umask 514>25 514<37 36|830b14 835l8 835t17 -514i25 Proc{33I9} 36|830b25 832r44 833r26 834r46 -514m37 Umask{37|32M12} 36|830b37 833m7 -519U14*Set_Umask 519>25 519>37 36|837b14 842l8 842t17 -519i25 Proc{33I9} 36|837b25 839r44 840r17 841r46 -519m37 Umask{37|32M12} 36|837b37 840r32 -525U14*Get_Masked_Signals 525>34 525<46 36|844b14 849l8 849t26 -525i34 Proc{33I9} 36|844b34 846r44 847r24 848r46 -525a46 Sig{143A9} 36|844b46 847m7 -531U14*Set_Masked_Signals 531>34 531>46 36|851b14 862l8 862t26 -531i34 Proc{33I9} 36|851b34 853r44 856r17 857r17 858r17 859r17 861r46 -531a46 Sig{143A9} 36|851b46 856r61 -536U14*Raise_Signal 536>28 536>40 36|864b14 871l8 871t20 -536i28 Proc{33I9} 36|864b28 866r44 867r24 868r20 870r46 -536e40 Sig{82E9} 36|864b40 867r46 868r42 -542U14*Get_Signal_Handler 543>8 544>8 545<8 36|873b14 882l8 882t26 -543i8 Proc{33I9} 36|874b8 879r44 880r25 881r46 -544e8 Sig{82E9} 36|875b8 880r48 -545m8 Addr{28|67M9} 36|876b8 880m7 -551U14*Set_Signal_Handler 552>8 553>8 554>8 36|884b14 895l8 895t26 -552i8 Proc{33I9} 36|885b8 890r44 892r20 894r46 -553e8 Sig{82E9} 36|886b8 891r10 892r43 -554m8 Addr{28|67M9} 36|887b8 892r51 -562U14*Get_Raised_Signal_Actions 563>8 564<8 565<8 566<8 567<8 36|897b14 -. 927l8 927t33 -563i8 Proc{33I9} 36|898b8 910r44 911r26 912r23 914r33 922r23 926r46 -564e8 Sig{82E9} 36|899b8 905m7 913m13 920r23 920r45 -565m8 Addr{28|67M9} 36|900b8 906m7 914m13 -566b8 No_Sig{boolean} 36|901b8 907m7 915m13 -567b8 Ignore{boolean} 36|902b8 908m7 920m13 -573V13*Convert{natural} 573>22 36|929b13 932l8 932t15 -573i22 Proc{33I9} 573r61 36|929b22 931r23 -579V13*Convert{33I9} 579>22 36|934b13 943l8 943t15 -579i22 Proc{natural} 36|934b22 936r10 936r29 937r25 939r22 -586V13*Get_Enforcement{33|52E9} 586>30 36|945b13 948l8 948t23 -586i30 Proc{33I9} 36|945b30 947r45 -587U14*Set_Enforcement 587>31 587>43 36|950b14 953l8 953t23 -587i31 Proc{33I9} 36|950b31 952r38 -587e43 Act{33|52E9} 36|950b43 952r51 -589V13*Get_Capabilities{33|23R9} 589>31 36|955b13 958l8 958t24 -589i31 Proc{33I9} 36|955b31 957r46 -590U14*Set_Capabilities 590>32 590>44 36|960b14 963l8 963t24 -590i32 Proc{33I9} 36|960b32 962r39 -590r44 Caps{33|23R9} 36|960b44 962r52 -592V13*Check_Permissions{33|42R9} 593>8 594>8 595>8 36|965b13 972l8 972t25 -593i8 Proc{33I9} 36|966b8 971r47 -594i8 FS{37|74I9} 36|967b8 971r60 -595m8 Ino{37|28M9} 36|968b8 971r64 -597U14*Add_Entity 598>8 599>8 600>8 601>8 602<8 36|974b14 983l8 983t18 -598i8 Proc{33I9} 36|975b8 982r33 -599i8 FS{37|74I9} 36|976b8 982r46 -600m8 Ino{37|28M9} 36|977b8 982r50 -601r8 Perms{33|42R9} 36|978b8 982r55 -602e8 Status{33|104E9} 36|979b8 982m62 -604V13*Get_Limit{33|58M9} 605>8 606>8 36|985b13 991l8 991t17 -605i8 Proc{33I9} 36|986b8 990r39 -606e8 Resource{33|59E9} 36|987b8 990r52 -608U14*Set_Limit 609>8 610>8 611>8 612<8 36|993b14 1001l8 1001t17 -609i8 Proc{33I9} 36|994b8 1000r32 -610e8 Resource{33|59E9} 36|995b8 1000r45 -611m8 Limit{33|58M9} 36|996b8 1000r55 -612b8 Could_Set{boolean} 36|997b8 1000m62 -627R9 File_Descriptor 631e14 634r58 -628b7*Close_On_Exec{boolean} 36|499r48 518m31 529m45 542m12 552r46 554m15 -629b7*Close_On_Fork{boolean} 36|433r25 500r48 519m31 530m45 543m12 555m15 -630p7*Description{57P9} 36|363r60 381r47 382m47 399r17 435r24 436r35 436m56 -. 481r62 528m52 539r15 540m22 552r15 553m22 -633A9 Thread_Arr(27|27I9) 656r25 -634A9 File_Arr(627R9) 657r25 36|362r29 426r13 427r13 480r29 495r15 -. 498r29 514r15 517r29 527r16 -635A9 Handle_Arr(28|67M9)<82E9> 640r25 -636R9 Process_Data 670e14 671r36 36|28r8 110r33 -637r7*Data_Mutex{23|22R9} 36|85m56 95m58 111m17 143m56 159m58 173m53 191m50 -. 206m52 215m50 220m52 229m50 239m52 245m53 251m55 258m50 278m52 285m50 307m52 -. 331m53 334m55 340m53 342m55 348m53 355m55 361m53 367m55 379m53 391m55 397m53 -. 403m55 429m53 430m52 441m54 442m55 479m53 485m55 497m53 505m55 516m53 521m55 -. 526m53 532m55 537m53 545m55 550m53 558m55 563m50 565m52 571m50 573m52 580m53 -. 582m55 588m53 590m55 599m53 602m55 611m53 614m55 619m53 623m55 628m53 632m55 -. 643m53 648m55 657m50 660m52 669m50 672m52 679m47 682m49 689m50 691m52 704m50 -. 708m52 726m50 730m52 735m50 737m52 742m50 744m52 749m50 751m52 756m50 758m52 -. 763m50 765m52 770m50 772m52 777m50 779m52 784m50 786m52 795m50 803m52 812m50 -. 820m52 825m50 827m52 832m50 834m52 839m50 841m52 846m50 848m52 853m50 861m52 -. 866m50 870m52 879m50 881m52 890m50 894m52 910m50 926m52 -638a7*Masked_Signals{143A9} 36|112m17 145m29 145r61 847r30 856m23 857m23 -. 858m23 859m23 867r30 -639a7*Raised_Signals{143A9} 36|113m17 868m26 911r32 912r29 922m29 -640a7*Signal_Handlers{635A9} 36|114m17 880r31 892m26 914r39 -641i7*Niceness{27|112I12} 36|115m17 144m29 144r61 234r61 341r36 349m26 -642m7*Umask{37|32M12} 36|116m17 158m29 158r61 833r32 840m23 -643m7*User{13|81M9} 36|91r52 117m17 152m29 152r61 736r30 743m23 -644m7*Effective_User{13|81M9} 36|118m17 153m29 153r61 750r31 757m23 -645m7*Group{13|81M9} 36|119m17 154m29 154r61 764r30 771m23 -646m7*Effective_Group{13|81M9} 36|120m17 155m29 155r61 778r31 785m23 -647i7*SGroup_Count{natural} 36|121m17 156m29 156r61 802r33 817m26 826m23 -648a7*SGroups{497A9} 36|122m17 157m29 157r61 797r36 800r32 816m26 -649a7*Identifier{string} 36|87r52 123m17 706m23 728r26 -650i7*Identifier_Len{integer} 36|88r52 124m17 705m23 720r38 721r36 -651i7*Parent{33I9} 36|54r56 90r52 125m17 146m29 263r32 264r42 267r46 268r46 -. 271r46 272r46 288r32 289r42 294r46 295r46 297r46 298r46 690r33 -652b7*Is_Traced{boolean} 36|92r52 126m17 600r39 612m26 -653i7*Tracer_FD{integer} 36|127m17 601r39 613m26 -654i7*Current_Dir_FS{37|74I9} 36|128m17 149m29 149r61 658m23 670r30 -655m7*Current_Dir_Ino{37|28M9} 36|129m17 150m29 150r61 659m23 671r30 -656a7*Thread_List{633A9} 36|130m17 193r33 231r32 232r29 233m29 246r35 247r32 -. 259r32 260r29 261m29 286r37 350r40 -657a7*File_Table{634A9} 36|131m17 363r34 380r44 381r32 382m32 398r37 426m49 -. 427m48 481r36 495m51 514m51 528r36 529m29 530m29 538r35 551r35 -658p7*Common_Map{8|43P9} 36|132m17 564m23 572r33 -659m7*Stack_Base{13|84M9} 36|133m17 147m29 147r61 333m26 581r36 589m26 -660m7*Alloc_Base{13|84M9} 36|134m17 148m29 148r61 332m26 680r30 681m20 -661r7*Perms{33|68R9} 36|135m17 151m29 151r61 947r51 952m44 957r52 962m45 -. 971r53 982m39 990r45 1000m38 -662b7*Signal_Exit{boolean} 36|136m17 621m26 630m26 646r40 -663e7*Which_Signal{82E9} 36|137m17 631m26 647r40 -664b7*Did_Exit{boolean} 36|93r52 138m17 620m26 629m26 644r40 -665m7*Exit_Code{13|70M9} 36|139m17 622m26 645r40 -666m7*Children_SSec{13|84M9} 36|216r41 267m54 294m54 -667m7*Children_SNSec{13|84M9} 36|217r45 268m54 295m54 -668m7*Children_USec{13|84M9} 36|218r39 271m54 297m54 -669m7*Children_UNSec{13|84M9} 36|219r43 272m54 298m54 -671P9 Process_Data_Acc(636R9) 672r63 36|28r22 -672A9 Process_Arr(671P9)<33I9> 673r36 36|34r23 -673P9 Process_Arr_Acc(672A9) 676r21 -675r4 Registry_Mutex{23|22R9} 36|35m36 35r36 52m34 52r34 63m36 63r36 80m34 -. 80r34 99m36 99r36 107m34 107r34 168m36 168r36 174m34 174r34 176m36 176r36 -676p4 Registry{673P9} 36|34m7 53r16 54r13 54r43 81r16 82r13 85r43 87r39 88r39 -. 90r39 91r39 92r39 93r39 95r45 108r16 109r13 110r13 143r43 144r16 144r48 -. 145r16 145r48 146r16 147r16 147r48 148r16 148r48 149r16 149r48 150r16 150r48 -. 151r16 151r48 152r16 152r48 153r16 153r48 154r16 154r48 155r16 155r48 156r16 -. 156r48 157r16 157r48 158r16 158r48 159r45 173r34 175r13 191r34 193r17 206r36 -. 215r34 216r25 217r29 218r23 219r27 220r36 229r34 231r16 232r13 233r13 234r45 -. 239r36 245r34 246r16 247r13 251r36 258r34 259r16 260r13 261r13 263r16 264r16 -. 264r26 267r20 267r30 268r20 268r30 271r20 271r30 272r20 272r30 278r36 285r34 -. 286r21 288r16 289r16 289r26 294r20 294r30 295r20 295r30 297r20 297r30 298r20 -. 298r30 307r36 331r34 332r7 333r7 334r36 340r34 341r17 342r36 348r34 349r7 -. 350r21 355r36 361r34 363r15 367r36 379r34 380r25 381r13 382r13 391r36 397r34 -. 398r18 403r36 426r30 427r30 429r34 430r34 441r36 442r36 479r34 481r17 485r36 -. 495r32 497r34 505r36 514r32 516r34 521r36 526r34 528r17 529r10 530r10 532r36 -. 537r34 538r16 545r36 550r34 551r16 558r36 563r34 564r7 565r36 571r34 572r17 -. 573r36 580r34 581r17 582r36 588r34 589r7 590r36 599r34 600r20 601r20 602r36 -. 611r34 612r7 613r7 614r36 619r34 620r7 621r7 622r7 623r36 628r34 629r7 -. 630r7 631r7 632r36 643r34 644r21 645r21 646r21 647r21 648r36 657r34 658r7 -. 659r7 660r36 669r34 670r14 671r14 672r36 679r34 680r17 681r7 682r36 689r34 -. 690r17 691r36 704r34 705r7 706r7 708r36 720r22 721r20 726r34 728r10 730r36 -. 735r34 736r14 737r36 742r34 743r7 744r36 749r34 750r15 751r36 756r34 757r7 -. 758r36 763r34 764r14 765r36 770r34 771r7 772r36 777r34 778r15 779r36 784r34 -. 785r7 786r36 795r34 797r20 800r16 802r17 803r36 812r34 816r10 817r10 820r36 -. 825r34 826r7 827r36 832r34 833r16 834r36 839r34 840r7 841r36 846r34 847r14 -. 848r36 853r34 856r7 857r7 858r7 859r7 861r36 866r34 867r14 868r10 870r36 -. 879r34 880r15 881r36 890r34 892r10 894r36 910r34 911r16 912r13 914r23 922r13 -. 926r36 937r10 947r35 952r28 957r36 962r29 971r37 982r23 990r29 1000r22 -X 36 userland-process.adb -27U14 Free[2|20] -27U14*Free[2|20] 175s7 -30b4 Do_ASLR{boolean} 40m7 314r10 -48i7 Index{natural} 57r16 58r33 59m16 59r43 -53i11 I 54r23 54r53 58r43 -67i7 Curr_Index{natural} 84r16 86r35 94m16 94r30 -81i11 I 82r23 85r53 87r49 88r49 89r39 90r49 91r49 92r49 93r49 95r55 -103i7 P=103:23{35|33I9} -108i11 I 109r23 110r23 144r26 145r26 146r26 147r26 148r26 149r26 -. 150r26 151r26 152r26 153r26 154r26 155r26 156r26 157r26 158r26 161r49 164r30 -184m7 Temp1{13|84M9} 195m46 196r48 -184m14 Temp2{13|84M9} 195m53 197r56 -184m21 Temp3{13|84M9} 195m60 198r44 -184m28 Temp4{13|84M9} 195m67 199r52 -193i11 Th{27|27I9} -231i11 I{integer} 232r42 233r42 -243i7 Returned{natural} 248m13 248r25 252r14 -246i11 I{integer} 247r45 -256m7 Temp1{13|84M9} 262m50 269r20 -256m14 Temp2{13|84M9} 262m57 269r27 -256m21 Temp3{13|84M9} 262m64 273r20 -256m28 Temp4{13|84M9} 262m71 273r27 -259i11 I{integer} 260r42 261r42 -282i7 Current_Thread{27|27I9} 301r26 -283m7 T1{13|84M9} 291m53 295r70 -283m11 T2{13|84M9} 291m57 295r74 -283m15 T3{13|84M9} 291m61 298r70 -283m19 T4{13|84M9} 291m65 298r74 -286i11 Thread{27|27I9} -311K15 Aln[20|19] 324r23 325r23 -312m7 Rand_Addr{13|84M9} 318m14 324m10 324r37 327m10 332r40 333r40 -312m18 Rand_Jump{13|84M9} 322m14 325m10 325r37 328m10 333r52 -338i7 Result{27|112I12} 341m7 343r14 -350i11 Thread{27|27I9} -359b7 R{boolean} 363m10 365m10 368r14 -380i11 I{integer} 381r44 382r44 383r24 -390L6 Cleanup 385r18 -395i7 Count_Of_FDs{natural} 400m13 400r29 404r14 -398r11 Ent{35|627R9} -426a7 Src{35|634A9} -427a7 Tgt{35|634A9} -432i11 I{integer} 433r22 434r18 434r29 435r21 436r32 436r53 -446U17 Free[2|20] -446U17 Free[2|20] 466s10 -448b7 T{boolean} 458m75 459r26 -477p7 Res{35|57P9} 481m10 483m10 486r14 -495a7 Table{35|634A9} -514a7 Table{35|634A9} -538r11 F{35|627R9} -551r11 F{35|627R9} -569p7 Result{8|43P9} 572m7 574r14 -578m7 Result{13|84M9} 581m7 583r14 -677m7 Result{13|84M9} 680m7 681r34 683r14 -687i7 Result{35|33I9} 690m7 692r14 -696i7 Length{natural} 699m10 701m10 705r51 706r40 707r43 -716i7 Length{natural} 721m10 723m10 727r34 728r43 729r14 -911e11 I{35|82E9} 912r45 913r23 914r56 922r45 -18M9 T{13|84M9} 27r42[311] 27r52[311] 35r44[311] 35r54[311] 40r50[311] 40r60[311] -. 41r49[311] 23r42[311] 23r52[311] 27r14[311] 30r44[311] 30r54[311] 34r14[311] -. 37r50[311] 37r60[311] -27V13 Align_Up{13|84M9} 324s27[311] 325s27[311] 29r20[311] -27m23 Value{13|84M9} 24r61[311] -27m30 Alignment{13|84M9} 28r20[311] 28r40[311] 28r55[311] 29r40[311] 25r61[311] -35V13 Align_Down{13|84M9} 37r20[311] -35m25 Value{13|84M9} 31r61[311] -35m32 Alignment{13|84M9} 36r20[311] 36r40[311] 36r55[311] 37r42[311] 32r61[311] -40V13 Divide_Round_Up{13|84M9} 42r20[311] -40m30 Dividend{13|84M9} 41r21[311] 39r15[311] -40m40 Divisor{13|84M9} 41r33[311] 41r62[311] 42r47[311] 39r27[311] 39r43[311] -18P9*Name{35|671P9} 20r50[27] 20r50[446] -20p39 X{35|671P9} 21r15[27] 22r23[27] 23r11[27] 21r15[446] 22r23[446] 23r11[446] -24m7 Value2{29|82M9} 27r18[311] -25m7 Align2{29|82M9} 27r27[311] 27r48[311] -31m7 Value2{29|82M9} 34r17[311] -32m7 Align2{29|82M9} 34r33[311] -X 37 vfs.ads -24K9*VFS 35|18w6 46r29 75r33 76r33 420r15 421r15 430r19 431r19 514r49 519r45 -. 594r15 595r15 599r17 600r17 625r29 642r25 654r25 655r25 36|128r36 463r16 -. 653r15 654r15 665r19 666r19 830r49 837r45 967r15 968r15 976r17 977r17 37|674e8 -28M9*File_Inode_Number<13|84M9> 35|76r37 421r19 431r23 595r19 600r21 655r29 -. 36|654r19 666r23 968r19 977r21 -32M12*File_Mode{13|81M9} 35|46r33 514r53 519r49 625r33 642r29 36|830r53 837r49 -74I9*FS_Handle 35|75r37 420r19 430r23 594r19 599r21 654r29 36|653r19 -. 665r23 967r19 976r21 -75i4*Error_Handle{74I9} 36|128r40 -359U14*Close 36|463s20 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___userland__process__init 1 ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__init 0 -GG EK_GLOBALS ada___userland__process__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry_mutex proper_output 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry_mutex refined_output 2 ada___userland__process__registry_mutex ada___userland__process__registry calls_proof 0 calls 1 ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__disable_aslr 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__disable_aslr 0 -GG EK_GLOBALS ada___userland__process__disable_aslr local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 1 ada___userland__process__do_aslr refined_proof_in 0 refined_input 0 refined_output 1 ada___userland__process__do_aslr calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__do_aslr LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_children 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_children 0 -GG EK_GLOBALS ada___userland__process__get_children local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__registry_mutex ada___userland__process__registry proper_output 1 ada___userland__process__registry_mutex refined_proof_in 0 refined_input 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_output 1 ada___userland__process__registry_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__list_all 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__list_all 0 -GG EK_GLOBALS ada___userland__process__list_all local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__registry_mutex ada___userland__process__registry proper_output 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_proof_in 0 refined_input 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_output 2 ada___userland__process__registry_mutex ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__create_process 3 ada___userland__process__reassign_process_addresses ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__create_process 0 -GG EK_GLOBALS ada___userland__process__create_process local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 3 ada___userland__process__do_aslr ada___userland__process__registry_mutex ada___userland__process__registry proper_output 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_proof_in 0 refined_input 3 ada___userland__process__do_aslr ada___userland__process__registry_mutex ada___userland__process__registry refined_output 2 ada___userland__process__registry_mutex ada___userland__process__registry calls_proof 0 calls 0 calls_conditional 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__delete_process 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___userland__process__free -GG EK_PROOF_DEPENDENCIES ada___userland__process__delete_process 0 -GG EK_GLOBALS ada___userland__process__delete_process local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__registry_mutex ada___userland__process__registry proper_output 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_proof_in 0 refined_input 2 ada___userland__process__registry_mutex ada___userland__process__registry refined_output 2 ada___userland__process__registry_mutex ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__registry_mutex ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_runtime_times 4 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__get_runtime_times ada___lib__time__normalize -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_runtime_times 0 -GG EK_GLOBALS ada___userland__process__get_runtime_times local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___lib__time__normalize calls_conditional 1 scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_children_runtimes 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_children_runtimes 0 -GG EK_GLOBALS ada___userland__process__get_children_runtimes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__add_thread 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__set_niceness -GG EK_PROOF_DEPENDENCIES ada___userland__process__add_thread 0 -GG EK_GLOBALS ada___userland__process__add_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_thread_count 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_thread_count 0 -GG EK_GLOBALS ada___userland__process__get_thread_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__remove_thread 4 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__get_runtime_times ada___lib__time__increment -GG EK_PROOF_DEPENDENCIES ada___userland__process__remove_thread 0 -GG EK_GLOBALS ada___userland__process__remove_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 scheduler__get_runtime_times ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__flush_threads 6 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__delete_thread scheduler__get_runtime_times ada___lib__time__increment ada___arch__local__get_current_thread -GG EK_PROOF_DEPENDENCIES ada___userland__process__flush_threads 0 -GG EK_GLOBALS ada___userland__process__flush_threads local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 4 scheduler__delete_thread scheduler__get_runtime_times ada___lib__time__increment ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses__aln__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses__aln__align_up 0 -GG EK_GLOBALS ada___userland__process__reassign_process_addresses__aln__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__process__reassign_process_addresses__aln ada___userland__process__reassign_process_addresses ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses__aln__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses__aln__align_down 0 -GG EK_GLOBALS ada___userland__process__reassign_process_addresses__aln__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__process__reassign_process_addresses__aln ada___userland__process__reassign_process_addresses ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses__aln__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses__aln__divide_round_up 0 -GG EK_GLOBALS ada___userland__process__reassign_process_addresses__aln__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__process__reassign_process_addresses__aln ada___userland__process__reassign_process_addresses ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses__aln 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses__aln 0 -GG EK_GLOBALS ada___userland__process__reassign_process_addresses__aln local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__process__reassign_process_addresses ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__reassign_process_addresses 5 ada___lib__synchronization__seize ada___lib__synchronization__release ada___cryptography__random__get_integer__2 ada___userland__process__reassign_process_addresses__aln ada___userland__process__reassign_process_addresses__aln__align_up -GG EK_PROOF_DEPENDENCIES ada___userland__process__reassign_process_addresses 0 -GG EK_GLOBALS ada___userland__process__reassign_process_addresses local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__do_aslr ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 2 ada___userland__process__do_aslr ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___userland__process__do_aslr ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_niceness 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_niceness 0 -GG EK_GLOBALS ada___userland__process__get_niceness local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_niceness 3 ada___lib__synchronization__seize ada___lib__synchronization__release scheduler__set_niceness -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_niceness 0 -GG EK_GLOBALS ada___userland__process__set_niceness local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 1 scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__is_valid_file 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__is_valid_file 0 -GG EK_GLOBALS ada___userland__process__is_valid_file local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__add_file 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__add_file 0 -GG EK_GLOBALS ada___userland__process__add_file local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_file_count 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_file_count 0 -GG EK_GLOBALS ada___userland__process__get_file_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__duplicate 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__duplicate 0 -GG EK_GLOBALS ada___userland__process__duplicate local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__duplicate_fd_table 3 ada___userland__process__duplicate ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__duplicate_fd_table 0 -GG EK_GLOBALS ada___userland__process__duplicate_fd_table local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___userland__process__registry __HEAP proper_output 2 ada___userland__process__registry __HEAP refined_proof_in 0 refined_input 2 ada___userland__process__registry __HEAP refined_output 2 ada___userland__process__registry __HEAP calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__close__free 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__close__free 0 -GG EK_GLOBALS ada___userland__process__close__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 3 ada___userland__process__close ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__close 8 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___lib__messages__put_line ada___ipc__filelock__release_lock__2 ada___userland__process__close__free -GG EK_PROOF_DEPENDENCIES ada___userland__process__close 0 -GG EK_GLOBALS ada___userland__process__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 6 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_file 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_file 0 -GG EK_GLOBALS ada___userland__process__get_file local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_fd_flags 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_fd_flags 0 -GG EK_GLOBALS ada___userland__process__get_fd_flags local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_fd_flags 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_fd_flags 0 -GG EK_GLOBALS ada___userland__process__set_fd_flags local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__remove_file 3 ada___userland__process__close ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__remove_file 0 -GG EK_GLOBALS ada___userland__process__remove_file local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 6 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__flush_files 3 ada___userland__process__close ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__flush_files 0 -GG EK_GLOBALS ada___userland__process__flush_files local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 6 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__flush_exec_files 3 ada___userland__process__close ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__flush_exec_files 0 -GG EK_GLOBALS ada___userland__process__flush_exec_files local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 3 ada___userland__process__registry ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 6 vfs__close ada___ipc__fifo__close_reader ada___ipc__fifo__close_writer ada___ipc__pty__close ada___ipc__socket__close ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_common_map 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_common_map 0 -GG EK_GLOBALS ada___userland__process__set_common_map local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_common_map 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_common_map 0 -GG EK_GLOBALS ada___userland__process__get_common_map local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_stack_base 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_stack_base 0 -GG EK_GLOBALS ada___userland__process__get_stack_base local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_stack_base 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_stack_base 0 -GG EK_GLOBALS ada___userland__process__set_stack_base local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__bump_alloc_base 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__bump_alloc_base 0 -GG EK_GLOBALS ada___userland__process__bump_alloc_base local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_traced_info 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_traced_info 0 -GG EK_GLOBALS ada___userland__process__get_traced_info local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_traced_info 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_traced_info 0 -GG EK_GLOBALS ada___userland__process__set_traced_info local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__issue_exit 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__issue_exit 0 -GG EK_GLOBALS ada___userland__process__issue_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__issue_exit__2 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__issue_exit__2 0 -GG EK_GLOBALS ada___userland__process__issue_exit__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__check_exit 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__check_exit 0 -GG EK_GLOBALS ada___userland__process__check_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_cwd 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_cwd 0 -GG EK_GLOBALS ada___userland__process__set_cwd local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_cwd 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_cwd 0 -GG EK_GLOBALS ada___userland__process__get_cwd local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_parent 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_parent 0 -GG EK_GLOBALS ada___userland__process__get_parent local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_identifier 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_identifier 0 -GG EK_GLOBALS ada___userland__process__set_identifier local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_identifier 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_identifier 0 -GG EK_GLOBALS ada___userland__process__get_identifier local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_uid 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_uid 0 -GG EK_GLOBALS ada___userland__process__get_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_uid 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_uid 0 -GG EK_GLOBALS ada___userland__process__set_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_effective_uid 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_effective_uid 0 -GG EK_GLOBALS ada___userland__process__get_effective_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_effective_uid 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_effective_uid 0 -GG EK_GLOBALS ada___userland__process__set_effective_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_gid 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_gid 0 -GG EK_GLOBALS ada___userland__process__get_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_gid 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_gid 0 -GG EK_GLOBALS ada___userland__process__set_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_effective_gid 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_effective_gid 0 -GG EK_GLOBALS ada___userland__process__get_effective_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_effective_gid 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_effective_gid 0 -GG EK_GLOBALS ada___userland__process__set_effective_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_supplementary_groups 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_supplementary_groups 0 -GG EK_GLOBALS ada___userland__process__get_supplementary_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_supplementary_groups 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_supplementary_groups 0 -GG EK_GLOBALS ada___userland__process__set_supplementary_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__empty_supplementary_groups 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__empty_supplementary_groups 0 -GG EK_GLOBALS ada___userland__process__empty_supplementary_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_umask 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_umask 0 -GG EK_GLOBALS ada___userland__process__get_umask local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_umask 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_umask 0 -GG EK_GLOBALS ada___userland__process__set_umask local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_masked_signals 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_masked_signals 0 -GG EK_GLOBALS ada___userland__process__get_masked_signals local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_masked_signals 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_masked_signals 0 -GG EK_GLOBALS ada___userland__process__set_masked_signals local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__raise_signal 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__raise_signal 0 -GG EK_GLOBALS ada___userland__process__raise_signal local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_signal_handler 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_signal_handler 0 -GG EK_GLOBALS ada___userland__process__get_signal_handler local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_signal_handler 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_signal_handler 0 -GG EK_GLOBALS ada___userland__process__set_signal_handler local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_raised_signal_actions 2 ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_raised_signal_actions 0 -GG EK_GLOBALS ada___userland__process__get_raised_signal_actions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__convert 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__convert 0 -GG EK_GLOBALS ada___userland__process__convert local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__convert__2 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__convert__2 0 -GG EK_GLOBALS ada___userland__process__convert__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_enforcement 1 ada___userland__mac__get_enforcement -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_enforcement 0 -GG EK_GLOBALS ada___userland__process__get_enforcement local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___userland__mac__get_enforcement TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_enforcement 1 ada___userland__mac__set_enforcement -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_enforcement 0 -GG EK_GLOBALS ada___userland__process__set_enforcement local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 1 ada___userland__mac__set_enforcement calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_capabilities 1 ada___userland__mac__get_capabilities -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_capabilities 0 -GG EK_GLOBALS ada___userland__process__get_capabilities local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___userland__mac__get_capabilities TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_capabilities 1 ada___userland__mac__set_capabilities -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_capabilities 0 -GG EK_GLOBALS ada___userland__process__set_capabilities local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 1 ada___userland__mac__set_capabilities calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__check_permissions 1 ada___userland__mac__check_permissions -GG EK_PROOF_DEPENDENCIES ada___userland__process__check_permissions 0 -GG EK_GLOBALS ada___userland__process__check_permissions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___userland__mac__check_permissions TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__add_entity 1 ada___userland__mac__add_entity -GG EK_PROOF_DEPENDENCIES ada___userland__process__add_entity 0 -GG EK_GLOBALS ada___userland__process__add_entity local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 1 ada___userland__mac__add_entity calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__get_limit 1 ada___userland__mac__get_limit -GG EK_PROOF_DEPENDENCIES ada___userland__process__get_limit 0 -GG EK_GLOBALS ada___userland__process__get_limit local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 0 refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___userland__mac__get_limit TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__set_limit 1 ada___userland__mac__set_limit -GG EK_PROOF_DEPENDENCIES ada___userland__process__set_limit 0 -GG EK_GLOBALS ada___userland__process__set_limit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 1 ada___userland__process__registry proper_output 1 ada___userland__process__registry refined_proof_in 0 refined_input 1 ada___userland__process__registry refined_output 1 ada___userland__process__registry calls_proof 0 calls 1 ada___userland__mac__set_limit calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___userland__process__registry LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process__free 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process__free 0 -GG EK_GLOBALS ada___userland__process__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__process userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__process 0 -GG EK_PROOF_DEPENDENCIES ada___userland__process 0 -GG EK_GLOBALS ada___userland__process local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 2 ada___userland__process__do_aslr ada___userland__process__registry refined_initializes 2 ada___userland__process__do_aslr ada___userland__process__registry calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 3 ada___userland__process__do_aslr ada___userland__process__registry_mutex ada___userland__process__registry TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses__aln TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__process__reassign_process_addresses BODY_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses__aln__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__process__reassign_process_addresses__aln VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses__aln__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__process__reassign_process_addresses__aln VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses__aln__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__process__reassign_process_addresses__aln VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__memory_locations TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__process__close__freeGP16612 VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close__freeGP16612 TRUE FALSE FALSE FALSE TRUE ada___userland__process__close BODY_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__process__freeGP988 VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___ipc__filelock TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__could_acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__freeGP988 TRUE FALSE FALSE FALSE TRUE ada___userland__process BODY_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__list_all FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__inner_could_acquire FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_REMOTE_STATES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-process.cswi b/obj/gnatprove/phase1/userland-process.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland-process.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland-syscall.adb.stderr b/obj/gnatprove/phase1/userland-syscall.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-syscall.adb.stdout b/obj/gnatprove/phase1/userland-syscall.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland-syscall.ali b/obj/gnatprove/phase1/userland-syscall.ali deleted file mode 100644 index 19e07ff..0000000 --- a/obj/gnatprove/phase1/userland-syscall.ali +++ /dev/null @@ -1,4501 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_ACCESS -RV NO_UNCHECKED_CONVERSION -RV NO_UNCHECKED_DEALLOCATION -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland.syscall%b userland-syscall.adb d8b419ff OO PK -W ada%s ada.ads ada.ali -W ada.characters%s a-charac.ads a-charac.ali -W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali -W ada.unchecked_conversion%s a-unccon.ads a-unccon.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W arch%s arch.ads arch.ali -W arch.clocks%s arch-clocks.adb arch-clocks.ali -W arch.hooks%s arch-hooks.adb arch-hooks.ali -W arch.local%s arch-local.adb arch-local.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W arch.power%s arch-power.adb arch-power.ali -W config%s config.ads config.ali -W cryptography%s cryptography.ads cryptography.ali -W cryptography.random%s cryptography-random.adb cryptography-random.ali -W devices%s devices.adb devices.ali -W devices.termios%s devices-termios.ads devices-termios.ali -W ipc%s ipc.ads ipc.ali -W ipc.filelock%s ipc-filelock.adb ipc-filelock.ali -W ipc.futex%s ipc-futex.adb ipc-futex.ali -W ipc.shm%s ipc-shm.adb ipc-shm.ali -W lib%s lib.adb lib.ali -W lib.alignment%s lib-alignment.adb lib-alignment.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W lib.panic%s lib-panic.adb lib-panic.ali -W lib.time%s lib-time.adb lib-time.ali -W memory%s memory.ads memory.ali -W memory.physical%s memory-physical.adb memory-physical.ali -W networking%s networking.adb networking.ali -W networking.interfaces%s networking-interfaces.adb networking-interfaces.ali -W system%s system.ads system.ali -Z system.storage_elements%s s-stoele.ads s-stoele.ali -W userland%s userland.ads userland.ali -W userland.loader%s userland-loader.adb userland-loader.ali -W userland.memory_failure%s userland-memory_failure.adb userland-memory_failure.ali -W userland.oom_failure%s userland-oom_failure.adb userland-oom_failure.ali - -U userland.syscall%s userland-syscall.ads db6029d6 OO PK -W arch%s arch.ads arch.ali -W arch.context%s arch-context.adb arch-context.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W interfaces%s interfac.ads interfac.ali -W ipc%s ipc.ads ipc.ali -W ipc.fifo%s ipc-fifo.adb ipc-fifo.ali -W ipc.pty%s ipc-pty.adb ipc-pty.ali -W ipc.socket%s ipc-socket.adb ipc-socket.ali -W memory%s memory.ads memory.ali -W networking%s networking.adb networking.ali -W scheduler%s scheduler.adb scheduler.ali -W system%s system.ads system.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali -W userland%s userland.ads userland.ali -W userland.mac%s userland-mac.adb userland-mac.ali -W userland.process%s userland-process.adb userland-process.ali -W vfs%s vfs.adb vfs.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D a-unccon.ads 20240507065137 0e9b276f ada.unchecked_conversion%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-context.ads 20250222165738 7bffdd51 arch.context%s -D arch-hooks.ads 20250222165738 2bd12b55 arch.hooks%s -D arch-interrupts.ads 20250222165738 186adf79 arch.interrupts%s -D arch-local.ads 20250222165738 e5953d14 arch.local%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D arch-power.ads 20250222165738 0576051f arch.power%s -D config.ads 20250222165738 98924657 config%s -D cryptography.ads 20250222165738 8132c7fc cryptography%s -D cryptography-random.ads 20250222165738 ff611fa6 cryptography.random%s -D devices.ads 20250222165738 f45ecf09 devices%s -D devices-termios.ads 20250222165738 06aea761 devices.termios%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D i-c.ads 20240507065137 aac316ce interfaces.c%s -D ipc.ads 20250222165738 03976a1a ipc%s -D ipc-fifo.ads 20250222165738 9141c09a ipc.fifo%s -D ipc-filelock.ads 20250222165738 69934e3c ipc.filelock%s -D ipc-futex.ads 20250222165738 e719aab2 ipc.futex%s -D ipc-pty.ads 20250222165738 66e20305 ipc.pty%s -D ipc-shm.ads 20250222165738 e6bb078c ipc.shm%s -D ipc-socket.ads 20250222165738 ab61e49d ipc.socket%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s -D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D lib-time.ads 20250222165738 30059be5 lib.time%s -D memory.ads 20250222165738 335640bf memory%s -D memory-physical.ads 20250222165738 f22cd7a2 memory.physical%s -D networking.ads 20250222165738 70ea6e55 networking%s -D networking-arp.ads 20250222165738 eec21925 networking.arp%s -D networking-interfaces.ads 20250222165738 9c034257 networking.interfaces%s -D scheduler.ads 20250222165738 61f570e7 scheduler%s -D system.ads 20240507065137 14286b0f system%s -D s-parame.ads 20240507065137 3597fc11 system.parameters%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D s-unstyp.ads 20240507065137 fa2a7f59 system.unsigned_types%s -D userland.ads 20250222165738 1671c2b9 userland%s -D userland-elf.ads 20250222165738 416b8b0c userland.elf%s -D userland-loader.ads 20250222165738 4d432fbc userland.loader%s -D userland-mac.ads 20250222165738 eff2fe62 userland.mac%s -D userland-memory_failure.ads 20250222165738 e591e3ec userland.memory_failure%s -D userland-oom_failure.ads 20250222165738 8ec1521c userland.oom_failure%s -D userland-process.ads 20250222165738 a4893a04 userland.process%s -D userland-syscall.ads 20250222165738 b384b127 userland.syscall%s -D userland-syscall.adb 20250222165738 afb2e59c userland.syscall%b -D vfs.ads 20250222165738 63b4365d vfs%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 53|17r6 18r6 32r6 1406r48 1409r33 1411r36 1413r36 1415r38 1485r46 -. 2291r29 2332r43 3114r26 3115r26 4510r26 4511r26 4951r39 5352r30 5685r29 -X 2 a-charac.ads -16K13*Characters 18e19 53|17r10 1406r52 1409r37 1411r40 1413r40 1415r42 1485r50 -. 2332r47 4951r43 5352r34 -X 3 a-chlat1.ads -16K24*Latin_1 294e27 53|17w21 1406r63 1409r48 1411r51 1413r51 1415r53 1485r61 -. 2332r58 4951r54 5352r45 -23e4*NUL{character} 53|1406r71 1409r56 1411r59 1413r59 1415r61 1485r69 2332r66 -. 4951r62 5352r53 -X 4 a-unccon.ads -20v14*Unchecked_Conversion 53|18w10 3114r30 3115r30 4510r30 4511r30 -X 5 a-uncdea.ads -20u15*Unchecked_Deallocation 53|32w10 2291r33 5685r33 -X 6 arch.ads -20K9*Arch 52e9 52|19r6 20r6 212r19 213r19 1253r40 1254r41 1258r21 1268r17 -. 1311r52 1342r21 53|27r6 27r20 28r6 29r6 33r6 39r6 54r16 63r43 72r17 92r49 -. 192r30 213r47 291r47 375r34 442r49 545r41 565r41 569r44 585r33 586r33 587r17 -. 606r21 608r10 623r19 624r19 630r24 692r26 719r48 793r7 811r36 864r33 905r36 -. 1060r47 1094r35 1152r30 1176r30 1214r30 1233r48 1289r44 1311r36 1543r30 -. 1547r16 1584r33 1636r41 1647r30 1703r28 1879r11 1879r43 1889r45 1917r31 -. 1919r24 1952r29 1961r43 1992r47 2059r31 2094r49 2173r36 2220r49 2297r40 -. 2379r49 2440r48 2482r37 2512r48 2577r49 2635r48 2697r47 2734r34 2765r35 -. 2823r31 2856r47 2884r46 2986r34 3013r27 3037r48 3117r48 3158r7 3236r13 -. 3253r30 3267r30 3303r49 3388r30 3403r37 3405r17 3415r41 3416r41 3417r41 -. 3427r18 3428r18 3447r49 3537r47 3594r47 3655r49 3727r49 3798r47 3838r44 -. 3932r43 3954r22 3957r22 3965r22 3968r22 3976r22 4003r46 4032r16 4034r16 -. 4042r16 4044r16 4064r43 4113r47 4204r47 4286r48 4364r49 4457r32 4483r32 -. 4513r45 4574r45 4641r33 4686r22 4711r22 4744r22 4780r22 4802r30 4811r30 -. 4825r30 4858r43 4887r43 4922r48 4972r48 5011r30 5035r46 5036r26 5046r13 -. 5076r30 5146r30 5154r7 5157r33 5167r13 5193r30 5196r60 5234r48 5294r48 -. 5333r43 5374r43 5415r46 5494r14 5494r36 5502r45 5511r14 5511r36 5519r45 -. 5524r40 5525r33 5531r41 5532r33 5547r17 5551r19 5554r39 5766r17 5766r38 -. 5805r52 5958r21 5968r46 5969r7 5983r21 5995r7 -X 7 arch-clocks.ads -19K14*Clocks 45e16 53|28w11 3158r12 3236r18 3954r27 3957r27 3965r27 3968r27 -. 3976r27 4032r21 4034r21 4042r21 4044r21 -27U14*Get_Monotonic_Resolution 53|3954s34 -31U14*Get_Monotonic_Time 53|3158s19 3236s25 3965s34 4032s28 4042s28 -35U14*Get_Real_Time_Resolution 53|3957s34 -39U14*Get_Real_Time 53|3968s34 4034s28 4044s28 -43U14*Set_Real_Time 53|3976s34 -X 8 arch-context.ads -20K14*Context 70e17 52|19w11 212r24 213r24 1253r45 1254r46 1268r22 53|623r24 -. 624r24 5524r45 5531r46 5547r22 5551r24 -22R15*GP_Context{10|21R9} 52|212r32 1253r53 1254r54 1268r30 53|623r32 5524r53 -. 5531r54 5547r30 5551r32 -23A15*FP_Context(19|70M9) 52|213r32 53|624r32 -X 9 arch-hooks.ads -17K14*Hooks 33e15 53|33w11 72r22 1311r41 -22V13*PRCTL_Hook{boolean} 53|72s28 -29V13*Get_Active_Core_Count{positive} 53|1311s47 -X 11 arch-local.ads -21K14*Local 40e15 53|29w11 54r21 63r48 92r54 192r35 213r52 291r52 375r39 -. 442r54 545r46 565r46 569r49 585r38 586r38 630r29 692r31 719r53 811r41 864r38 -. 905r41 1060r52 1094r40 1152r35 1176r35 1214r35 1233r53 1289r49 1584r38 -. 1636r46 1647r35 1703r33 1879r16 1879r48 1889r50 1917r36 1952r34 1961r48 -. 1992r52 2059r36 2094r54 2173r41 2220r54 2297r45 2379r54 2440r53 2482r42 -. 2512r53 2577r54 2635r53 2697r52 2734r39 2765r40 2823r36 2856r52 2884r51 -. 2986r39 3013r32 3037r53 3117r53 3253r35 3267r35 3303r54 3388r35 3403r42 -. 3447r54 3537r52 3594r52 3655r54 3727r54 3798r52 3838r49 3932r48 4003r51 -. 4064r48 4113r52 4204r52 4286r53 4364r54 4457r37 4483r37 4513r50 4574r50 -. 4641r38 4686r27 4711r27 4744r27 4780r27 4802r35 4811r35 4825r35 4858r48 -. 4887r48 4922r53 4972r53 5011r35 5076r35 5146r35 5193r35 5234r53 5294r53 -. 5333r48 5374r48 5415r51 5502r50 5519r50 5525r38 5532r38 5554r44 -27V13*Fetch_TCB{41|67M9} 53|692s37 -36V13*Get_Current_Thread{40|27I9} 53|585s44 1636s52 1879s54 4711s33 4780s33 -. 5502s56 5519s56 5525s44 5532s44 -37V13*Get_Current_Process{51|33I9} 53|54s27 63s54 92s60 192s41 213s58 291s58 -. 375s45 442s60 545s52 565s52 569s55 586s44 630s35 719s59 811s47 864s44 905s47 -. 1060s58 1094s46 1152s41 1176s41 1214s41 1233s59 1289s55 1584s44 1647s41 -. 1703s39 1879s22 1889s56 1917s42 1952s40 1961s54 1992s58 2059s42 2094s60 -. 2173s47 2220s60 2297s51 2379s60 2440s59 2482s48 2512s59 2577s60 2635s59 -. 2697s58 2734s45 2765s46 2823s42 2856s58 2884s57 2986s45 3013s38 3037s59 -. 3117s59 3253s41 3267s41 3303s60 3388s41 3403s48 3447s60 3537s58 3594s58 -. 3655s60 3727s60 3798s58 3838s55 3932s54 4003s57 4064s54 4113s58 4204s58 -. 4286s59 4364s60 4457s43 4483s43 4513s56 4574s56 4641s44 4686s33 4744s33 -. 4802s41 4811s41 4825s41 4858s54 4887s54 4922s59 4972s59 5011s41 5076s41 -. 5146s41 5193s41 5234s59 5294s59 5333s54 5374s54 5415s57 5554s50 -X 12 arch-mmu.ads -22K14*MMU 250e13 52|20w11 1258r26 1311r57 1342r26 53|27w11 27r25 587r22 606r26 -. 608r15 793r12 1543r35 1547r21 1919r29 5035r51 5036r31 5046r18 5154r12 5157r38 -. 5167r18 5196r65 5494r19 5494r41 5511r19 5511r41 5766r22 5766r43 5805r57 -. 5958r26 5968r51 5969r12 5983r26 5995r12 -26R9*Page_Permissions 32e14 52|1311r61 53|441r29 1919r33 5013r24 5805r61 -27b7*Is_User_Accesible{boolean} 53|5014m11 5808m18 5811m14 -28b7*Can_Read{boolean} 53|5015m11 5812m14 -29b7*Can_Write{boolean} 53|452r20 1927r20 5016m11 5813m14 -30b7*Can_Execute{boolean} 53|452r40 1927r40 5814m14 -31b7*Is_Global{boolean} 53|5815m14 -43P9*Page_Table_Acc(42R9) 52|1258r30 1342r30 53|64r25 93r31 214r31 292r31 -. 443r31 546r23 587r26 721r30 865r30 906r33 1095r32 1177r23 1234r30 1290r26 -. 1615r32 1704r36 1890r25 1918r24 1993r29 2095r31 2174r33 2221r32 2298r37 -. 2380r31 2441r30 2578r31 2698r29 2766r32 2885r28 3038r30 3118r30 3304r31 -. 3448r31 3538r31 3595r31 3656r31 3728r31 3839r26 3933r25 4004r28 4065r25 -. 4114r31 4205r31 4287r30 4365r31 4514r27 4575r27 4859r25 4888r25 4923r30 -. 5077r22 5147r22 5235r30 5295r30 5334r25 5375r25 5416r28 5688r30 5958r30 -. 5983r30 -49N7*Page_Size 53|453r25 454r25 1299r23 1306r50 1309r55 1314r51 1928r26 1929r26 -. 5035r55 5036r35 5157r42 5196r69 5968r55 -58p4*Kernel_Table{43P9} 53|5494r45 5511r45 5766r47 -70V13*Fork_Table{43P9} 53|680s33 5766s26 -75U14*Destroy_Table 53|608s19 793s16 -81V13*Make_Active{boolean} 53|606s30 5494s23 5511s23 -96U14*Translate_Address 53|5154s16 5969s16 5995s16 -117V13*Map_Range{boolean} 53|5046s22 -139U14*Map_Allocated_Range 53|480s10 -159V13*Remap_Range{boolean} 53|1936s14 -175V13*Unmap_Range{boolean} 53|553s13 5167s22 -187V13*Get_User_Mapped_Size{19|84M9} 53|458s13 -191R9*Virtual_Statistics 195e14 53|1543r39 -192m7*Kernel_Usage{35|20M9} 53|1554r54 -193m7*Table_Usage{35|20M9} 53|1555r54 -198U14*Get_Statistics 53|1547s25 -X 13 arch-power.ads -17K14*Power 29e15 53|39w11 3405r22 3415r46 3416r46 3417r46 3427r23 3428r23 -19E9*Power_Status 19e49 53|3405r28 -19n26*Not_Supported{19E9} 53|3427r29 -19n41*Failure{19E9} 53|3428r29 -22V13*Halt{19E9} 53|3415s52 -25V13*Reboot{19E9} 53|3417s52 -28V13*Poweroff{19E9} 53|3416s52 -X 14 config.ads -17K9*Config 29e11 53|19w6 1408r38 1409r19 1410r34 1411r19 1412r34 1413r19 -. 1414r34 1415r19 -22a4*Name{string} 53|1408r45 1409r26 -23a4*Version{string} 53|1410r41 1411r26 1412r41 1413r26 -24a4*Arch_Name{string} 53|1414r41 1415r26 -X 15 cryptography.ads -17K9*Cryptography 18e17 53|34r6 1893r16 1904r10 -X 16 cryptography-random.ads -19K22*Random 40e24 53|34w19 1893r29 1904r23 -21A9*Crypto_Data(19|70M9) 53|1893r36 -22U14*Fill_Data 53|1904s30 -X 17 devices.ads -22K9*Devices 279e12 53|38r6 40w6 40r19 241r17 319r17 3562r17 3619r17 4137r17 -. 4228r17 4290r15 4316r16 5565r23 -29A9*Operation_Data(19|70M9) 53|241r25 319r25 3562r25 3619r25 4137r25 -. 4228r25 5565r31 -83I9*Device_Handle 53|4290r23 -130U14*Fetch_Name 53|1379s19 1484s19 -161V13*Get_Unique_ID{natural} 53|1014s13 1524s23 -165V13*From_Unique_ID{83I9} 53|4316s24 -X 18 devices-termios.ads -17K17*TermIOs 81e20 53|38w14 5843r11 5845r21 5846r21 -44R9*Main_Data 52e15 53|5845r29 -54R9*Win_Size 59e14 53|5846r29 -62N4*TCIFLUSH 53|5862r21 5863r36 -63N4*TCOFLUSH 53|5862r32 5864r36 -64N4*TCIOFLUSH 53|5862r43 5863r57 5864r57 -67N4*TCOOFF 53|5875r21 5876r36 -68N4*TCOON 53|5883r21 5884r36 -69N4*TCIOFF 53|5875r30 5877r36 -70N4*TCION 53|5883r29 5885r36 -73N4*TCGETS 53|5852r15 -74N4*TCSETS 53|5854r15 -75N4*TCSETSW 53|5854r24 -76N4*TCSETSF 53|5854r34 -77N4*TCXONC 53|5873r15 -78N4*TCFLSH 53|5860r15 -79N4*TIOCGWINSZ 53|5856r15 -80N4*TIOCSWINSZ 53|5858r15 -X 19 interfac.ads -38K9*Interfaces 233e15 52|17w6 17r22 -70M9*Unsigned_8 52|645r18 1249r42 1264r49 53|54r48 728r20 5490r42 5538r49 -73M9*Unsigned_16 52|377r21 378r21 379r21 413r21 414r21 415r21 416r21 421r20 -. 422r20 423r20 517r19 518r19 644r18 694r20 695r20 700r23 701r23 829r20 830r20 -. 53|1348r38 1349r38 1350r38 1431r38 1433r38 1434r38 1437r42 1439r42 1440r25 -. 1457r37 1459r37 5550r19 5592r23 -81M9*Unsigned_32 52|267r23 268r23 269r23 270r23 380r21 381r21 386r23 387r23 -. 389r23 391r23 441r16 442r16 450r39 521r19 693r20 699r23 702r23 704r23 707r20 -. 708r20 828r20 935r18 936r18 1057r17 1147r22 1148r22 1149r22 1150r22 1151r22 -. 1152r22 1153r22 1162r20 1163r20 53|109r21 221r19 299r19 379r18 729r20 733r36 -. 787r40 918r20 1018r28 1019r28 1064r14 1099r15 1215r14 1243r26 1519r37 1534r29 -. 1829r31 1996r19 2230r22 2304r20 2389r20 2447r20 2485r17 2586r20 2621r26 -. 2774r26 3044r20 3254r14 3268r18 3271r34 3272r55 3274r33 3275r45 3279r34 -. 3281r58 3310r21 3454r21 3521r11 3522r11 3542r19 3599r19 3847r43 3893r28 -. 4371r21 4645r33 4758r23 4758r42 4760r43 4803r14 4812r14 4826r18 4829r34 -. 4830r55 4832r33 4833r45 4837r34 4839r58 5012r28 5012r43 5019r20 5075r27 -. 5075r42 5082r20 5123r41 5194r28 5194r43 5198r14 5199r14 5244r52 5250r16 -. 5258r23 5304r52 5700r20 5820r29 5820r44 -84M9*Unsigned_64 52|99r19 100r23 105r19 106r19 107r23 118r20 119r20 120r20 -. 121r20 122r24 127r19 128r23 133r19 134r19 135r19 136r23 141r19 142r19 143r19 -. 144r23 152r19 153r19 154r19 155r23 169r21 170r21 171r21 172r21 173r21 174r21 -. 175r25 180r19 181r19 182r23 186r38 189r39 193r20 194r20 195r20 196r20 197r20 -. 198r20 199r24 206r19 207r19 208r19 209r19 210r19 211r19 214r23 222r21 223r21 -. 224r21 225r25 240r19 241r19 242r23 247r19 248r19 249r23 254r21 255r21 265r23 -. 266r23 271r23 272r23 276r23 277r23 296r20 297r20 298r20 299r20 300r20 301r24 -. 306r19 307r23 312r19 313r19 314r19 315r23 319r42 323r19 324r23 329r22 330r22 -. 331r26 335r38 340r22 341r22 342r22 343r22 344r22 345r22 346r22 347r26 392r23 -. 393r23 394r23 395r23 396r23 397r23 398r23 399r23 400r23 431r21 443r16 444r16 -. 445r16 446r16 453r24 454r24 455r24 456r24 457r24 458r24 459r24 463r19 464r19 -. 465r19 466r23 471r20 472r20 473r20 474r20 475r20 476r20 477r20 478r24 482r38 -. 489r21 490r21 491r21 492r21 493r25 519r19 520r19 525r19 526r19 527r19 528r23 -. 532r42 536r18 537r18 538r22 543r20 544r20 545r20 546r24 566r19 567r23 572r23 -. 583r20 584r20 585r20 586r24 594r19 595r23 606r22 607r22 608r22 609r22 610r22 -. 611r22 612r26 618r20 619r20 620r20 621r24 626r22 627r22 628r22 629r22 630r22 -. 631r26 642r18 643r18 655r27 657r22 658r22 659r22 660r26 664r35 668r20 669r20 -. 670r20 671r20 672r20 673r24 678r20 679r20 680r20 681r24 686r19 687r19 688r23 -. 712r20 713r20 714r20 715r24 720r22 721r22 722r22 723r22 724r22 725r22 726r26 -. 731r20 732r20 733r20 734r24 739r22 740r26 745r19 746r19 747r23 752r22 753r22 -. 754r22 755r22 756r22 757r22 758r26 764r22 765r22 766r22 767r22 768r26 773r19 -. 774r19 775r23 780r20 781r20 782r20 783r20 784r24 795r19 796r23 801r19 802r19 -. 803r23 812r20 813r20 814r20 815r20 816r20 817r24 832r28 834r20 835r20 836r20 -. 837r20 838r24 842r39 846r19 847r19 848r23 853r20 854r20 855r20 856r20 857r20 -. 858r24 863r19 864r23 872r19 873r19 874r23 879r20 880r20 881r20 882r20 883r20 -. 884r20 885r24 890r19 891r19 892r19 893r19 894r23 899r19 900r19 901r19 902r19 -. 903r23 907r20 908r20 909r20 910r24 914r20 915r20 916r20 917r24 924r19 925r19 -. 926r23 934r18 940r20 941r20 942r20 943r20 944r24 954r20 955r20 956r20 957r24 -. 963r23 964r23 965r23 966r23 967r27 979r21 980r21 981r25 985r20 986r20 987r20 -. 988r20 989r20 990r20 991r24 995r20 996r20 997r20 998r20 999r20 1000r20 -. 1001r24 1016r20 1017r20 1018r20 1019r24 1023r20 1024r20 1025r20 1026r20 -. 1027r20 1028r24 1032r23 1036r19 1037r19 1038r23 1045r19 1046r19 1047r19 -. 1048r23 1056r17 1060r19 1061r19 1062r19 1063r23 1067r19 1068r19 1069r23 -. 1077r19 1078r19 1079r23 1083r19 1084r19 1085r19 1086r23 1089r38 1091r39 -. 1095r19 1096r19 1097r23 1102r19 1103r19 1104r23 1109r19 1110r19 1111r23 -. 1116r19 1117r19 1118r19 1119r23 1130r19 1131r19 1132r19 1133r19 1134r23 -. 1140r19 1141r19 1142r19 1143r23 1158r20 1159r20 1160r20 1161r20 1164r20 -. 1171r19 1172r19 1173r19 1174r23 1178r19 1179r23 1187r19 1188r19 1189r19 -. 1190r23 1201r19 1202r19 1203r19 1204r19 1205r19 1206r23 1210r19 1211r19 -. 1212r19 1213r19 1214r19 1215r23 1219r19 1220r19 1221r19 1222r23 1226r19 -. 1227r19 1228r19 1229r23 1237r24 1238r24 1242r19 1243r19 1244r23 1260r21 -. 1273r25 1274r29 1279r25 1280r29 1285r25 1286r29 1291r25 1292r29 1297r20 -. 1298r20 1299r20 1300r20 1301r20 1302r20 1311r32 1320r21 1325r55 1329r18 -. 1344r21 1348r17 1353r18 53|47r19 48r23 58r19 59r19 60r23 69r22 71r20 74r22 -. 83r20 84r20 85r20 86r20 87r24 112r22 115r24 116r22 130r25 138r25 169r22 -. 177r25 179r22 182r22 188r19 189r23 199r22 205r19 206r19 207r19 208r23 225r22 -. 229r22 232r21 248r31 254r38 256r30 259r44 264r44 269r44 273r28 277r30 283r19 -. 284r19 285r19 286r23 304r22 308r22 310r21 326r31 328r43 329r19 332r31 340r38 -. 341r44 345r44 350r44 355r44 359r28 363r30 369r19 370r19 371r19 372r23 380r18 -. 385r22 422r19 427r19 432r21 433r21 434r21 435r21 436r21 437r21 438r25 459r10 -. 489r25 514r25 517r25 525r19 530r19 536r19 540r21 541r21 542r25 552r22 558r22 -. 562r38 565r19 568r39 572r19 576r20 577r20 578r20 579r20 580r20 581r20 582r24 -. 612r22 617r19 618r19 619r19 620r19 621r19 622r19 625r23 633r17 644r22 646r23 -. 648r22 656r25 670r17 693r17 710r19 714r41 715r45 733r23 780r25 797r19 802r19 -. 806r19 807r19 808r23 848r22 855r19 859r19 860r19 861r23 875r22 881r22 889r22 -. 897r20 898r20 899r20 900r20 901r20 902r24 924r22 934r25 984r28 1001r28 -. 1010r22 1016r28 1017r28 1022r28 1033r28 1056r19 1057r23 1068r22 1076r22 -. 1086r19 1087r19 1088r19 1089r23 1103r22 1107r22 1135r22 1139r42 1148r19 -. 1149r23 1157r22 1158r23 1162r22 1170r22 1171r22 1172r26 1185r22 1206r22 -. 1213r38 1219r19 1223r22 1224r22 1225r22 1226r22 1227r22 1228r22 1229r22 -. 1230r26 1249r22 1251r26 1252r26 1255r22 1273r25 1283r19 1284r19 1285r19 -. 1286r23 1294r16 1301r23 1303r23 1306r23 1309r23 1311r23 1314r23 1316r23 -. 1318r23 1320r23 1331r22 1361r26 1398r26 1444r26 1471r26 1498r26 1507r26 -. 1523r37 1525r37 1528r26 1544r30 1550r38 1551r38 1552r38 1554r38 1555r38 -. 1570r19 1574r20 1575r20 1576r20 1577r20 1578r20 1579r20 1580r20 1581r24 -. 1591r22 1609r22 1617r22 1619r52 1623r28 1630r19 1633r38 1636r19 1640r21 -. 1641r21 1642r21 1643r21 1644r25 1654r22 1656r23 1688r19 1693r19 1697r19 -. 1698r19 1699r19 1700r23 1723r42 1724r44 1870r19 1873r42 1884r18 1885r18 -. 1886r22 1899r22 1902r22 1911r20 1912r20 1913r20 1914r24 1925r22 1932r22 -. 1938r22 1947r19 1948r23 1958r23 1963r28 1986r20 1987r20 1988r20 1989r24 -. 2005r22 2009r22 2011r24 2013r22 2051r19 2055r19 2056r23 2065r22 2075r25 -. 2085r22 2086r22 2087r22 2088r22 2089r22 2090r22 2091r26 2110r22 2112r26 -. 2113r26 2116r22 2121r22 2149r31 2162r22 2167r20 2168r20 2169r20 2170r24 -. 2181r22 2183r24 2185r22 2190r22 2205r25 2212r22 2213r22 2214r22 2215r22 -. 2216r22 2217r26 2237r22 2239r26 2240r26 2243r22 2257r25 2266r25 2274r25 -. 2280r36 2285r22 2286r22 2287r22 2288r26 2296r29 2307r22 2310r22 2324r56 -. 2327r24 2329r52 2333r24 2335r24 2344r25 2347r25 2355r35 2364r22 2369r20 -. 2370r20 2371r20 2372r20 2373r20 2374r24 2393r22 2395r24 2397r22 2408r25 -. 2434r20 2435r20 2436r20 2437r24 2451r22 2453r24 2455r22 2466r25 2477r19 -. 2478r19 2479r23 2489r22 2501r25 2506r20 2507r20 2508r20 2509r24 2520r22 -. 2525r22 2563r22 2568r22 2569r22 2570r22 2571r22 2572r22 2573r22 2574r26 -. 2592r22 2594r26 2595r26 2598r22 2611r25 2629r20 2630r20 2631r20 2632r24 -. 2643r22 2648r22 2686r22 2691r22 2692r26 2706r22 2721r22 2729r19 2730r19 -. 2731r23 2741r22 2751r25 2756r22 2757r22 2758r22 2759r22 2760r22 2761r22 -. 2762r26 2780r22 2782r26 2783r26 2786r22 2803r25 2814r22 2815r22 2816r22 -. 2817r22 2818r26 2828r22 2833r22 2842r25 2851r19 2852r19 2853r23 2861r22 -. 2864r22 2871r25 2877r20 2878r20 2879r20 2880r20 2881r24 2900r22 2904r22 -. 2960r33 2962r25 2967r25 2971r22 2978r19 2982r19 2983r23 2993r22 2998r19 -. 3002r19 3003r19 3004r23 3025r19 3029r20 3030r20 3031r20 3032r20 3033r20 -. 3034r24 3048r22 3050r24 3052r22 3065r25 3084r25 3106r20 3107r20 3108r20 -. 3109r20 3110r24 3125r33 3128r20 3129r20 3130r20 3131r20 3139r22 3146r25 -. 3177r40 3249r19 3252r39 3258r19 3262r19 3263r19 3264r23 3271r21 3274r20 -. 3279r21 3280r23 3284r28 3295r20 3296r20 3297r20 3298r20 3299r20 3300r24 -. 3316r22 3318r24 3320r22 3331r25 3344r28 3361r28 3368r28 3378r41 3384r19 -. 3385r23 3394r19 3398r19 3399r19 3400r23 3410r22 3420r25 3430r22 3438r20 -. 3439r20 3440r20 3441r20 3442r20 3443r20 3444r24 3460r22 3462r24 3464r22 -. 3475r25 3488r28 3505r28 3512r28 3528r19 3529r19 3530r19 3531r19 3532r23 -. 3547r22 3551r22 3553r21 3569r31 3574r44 3578r28 3585r19 3586r19 3587r19 -. 3588r19 3589r23 3604r22 3608r22 3610r21 3626r31 3628r31 3629r19 3632r31 -. 3638r44 3642r28 3649r20 3650r20 3651r20 3652r24 3666r22 3675r53 3710r22 -. 3717r19 3721r20 3722r20 3723r20 3724r24 3738r22 3747r53 3782r22 3789r19 -. 3793r19 3794r19 3795r23 3804r22 3817r25 3826r22 3831r20 3832r20 3833r20 -. 3834r20 3835r24 3845r28 3846r28 3847r28 3871r21 3873r22 3905r31 3911r28 -. 3922r19 3926r20 3927r20 3928r20 3929r24 3937r22 3943r22 3991r19 3996r23 -. 3997r23 3998r23 3999r23 4000r27 4011r22 4017r22 4024r24 4025r24 4059r21 -. 4060r21 4061r25 4069r22 4088r28 4098r20 4099r20 4100r20 4101r20 4102r20 -. 4103r20 4104r24 4123r22 4127r22 4130r21 4184r37 4189r20 4190r20 4191r20 -. 4192r20 4193r20 4194r20 4195r24 4214r22 4218r22 4221r21 4275r37 4280r20 -. 4281r20 4282r20 4283r24 4302r22 4305r22 4312r22 4344r22 4351r19 4356r20 -. 4357r20 4358r20 4359r20 4360r20 4361r24 4379r22 4381r24 4383r22 4394r25 -. 4407r28 4424r28 4431r28 4454r23 4463r22 4470r22 4473r22 4478r19 4479r19 -. 4480r23 4490r22 4495r22 4503r19 4504r19 4505r19 4506r23 4552r31 4564r19 -. 4568r19 4569r19 4570r19 4571r23 4585r22 4632r19 4636r19 4637r19 4638r23 -. 4650r22 4656r22 4660r22 4670r25 4681r19 4682r19 4683r23 4693r22 4707r25 -. 4724r22 4726r22 4726r41 4734r19 4738r19 4739r19 4740r19 4741r23 4751r22 -. 4755r18 4758r10 4760r30 4776r25 4798r19 4801r38 4807r19 4810r39 4816r19 -. 4820r19 4821r19 4822r23 4829r21 4832r20 4837r21 4838r23 4842r28 4853r19 -. 4854r19 4855r23 4867r22 4874r22 4877r22 4882r19 4883r19 4884r23 4899r25 -. 4906r25 4916r19 4917r19 4918r19 4919r23 4932r22 4936r22 4959r19 4963r19 -. 4964r19 4965r19 4966r19 4967r23 5000r19 5004r19 5005r19 5006r19 5007r23 -. 5010r43 5018r35 5026r25 5058r25 5065r19 5069r19 5070r19 5071r19 5072r23 -. 5089r25 5100r28 5112r31 5125r38 5138r19 5142r19 5143r23 5152r14 5164r37 -. 5177r25 5181r22 5186r19 5187r19 5188r19 5189r23 5192r43 5195r23 5195r48 -. 5196r23 5216r22 5219r22 5224r19 5225r19 5226r19 5227r19 5228r19 5229r23 -. 5280r19 5284r19 5285r19 5286r19 5287r19 5288r19 5289r23 5323r19 5327r19 -. 5328r19 5329r19 5330r23 5341r23 5364r19 5368r19 5369r19 5370r19 5371r23 -. 5382r23 5404r19 5408r19 5409r19 5410r23 5451r25 5482r19 5487r19 5586r34 -. 5600r25 5601r29 5618r19 5623r25 5624r29 5636r19 5641r25 5642r29 5654r19 -. 5659r25 5660r29 5670r25 5675r20 5676r20 5677r20 5678r20 5679r20 5680r20 -. 5686r51 5805r32 5839r21 5899r55 5922r18 5947r10 5948r10 5960r21 5962r40 -. 5963r16 5985r21 6010r17 6031r18 -141V13*Shift_Left{81M9} 53|785s42 3172s34 -X 21 ipc.ads -17K9*IPC 18e8 52|21r6 29r6 29r28 30r6 30r28 31r5 1278r25 1284r25 1290r25 -. 1318r21 53|35r6 36r6 37r6 218r19 219r19 220r19 262r16 267r16 275r16 296r19 -. 297r19 298r19 348r16 353r16 361r16 814r20 815r20 816r20 819r34 820r34 821r34 -. 826r38 827r38 828r38 1179r19 1189r20 1514r23 1517r16 1548r16 1818r19 1832r22 -. 1841r22 2530r15 2539r15 2548r15 2653r15 2662r15 2671r15 2699r24 2710r18 -. 2862r45 2866r13 2902r45 2918r18 2929r18 2940r18 3191r22 3195r22 3199r22 -. 3203r22 3206r22 3681r15 3688r15 3695r15 3753r15 3760r15 3767r15 3810r21 -. 3812r21 3814r21 3881r20 3901r19 3909r16 4117r19 4140r61 4143r21 4147r22 -. 4155r21 4159r22 4167r21 4173r22 4182r13 4208r19 4231r61 4234r21 4238r22 -. 4246r21 4250r22 4258r21 4264r22 4273r13 4927r15 4946r7 5024r17 5031r7 5053r13 -. 5080r14 5087r17 5096r13 5108r19 5114r19 5151r12 5164r7 5166r30 5172r13 -. 5197r21 5205r25 5208r25 5211r25 5214r25 5258r36 5556r23 5622r25 5640r25 -. 5658r25 5665r15 5668r15 5837r21 5853r13 5855r13 5857r13 5859r13 5866r22 -. 5868r22 5879r22 5881r22 5887r22 5889r22 -X 22 ipc-fifo.ads -21K13*FIFO 156e13 52|30w10 30r32 1284r29 53|218r23 296r23 1179r23 1189r24 -. 3191r26 3195r26 5556r27 5640r29 -39P9*Inner_Acc(38R9) 53|1179r28 -47V13*Create{39P9} 53|1189s29 -51V13*Is_Read_Blocking{boolean} 53|1746s27 -53V13*Is_Write_Blocking{boolean} 53|1748s27 -55U14*Set_Read_Blocking 53|1763s19 -57U14*Set_Write_Blocking 53|1765s19 -61U14*Poll_Reader 53|3191s31 -70U14*Poll_Writer 53|3195s31 -79V13*Is_Empty{boolean} 53|5589s23 -94U14*Get_Size 53|1778s19 1780s19 -102U14*Set_Size 53|1787s19 1793s19 -106E9*Pipe_Status 106e75 52|1284r34 53|218r28 296r28 5556r32 5640r34 -106n25*Pipe_Success{106E9} 53|5647r15 -106n39*Broken_Failure{106E9} 53|5651r15 -106n55*Would_Block_Failure{106E9} 53|5652r15 -113U14*Read 53|258s16 -125U14*Write 53|344s16 5593s13 -X 23 ipc-filelock.ads -21K13*FileLock 111e17 53|36w10 1514r27 1517r20 1818r23 1832r26 1841r26 -33U14*Could_Acquire_Lock 53|1818s32 -51U14*Acquire_Lock 53|1841s35 -68U14*Release_Lock 53|1832s35 -87i7*Acquirer{51|33I9} 53|1519r68 -88b7*Is_Writing{boolean} 53|1520r50 -89m7*Start{19|84M9} 53|1521r46 -90m7*Length{19|84M9} 53|1522r46 -91i7*FS{54|74I9} 53|1524r67 -92m7*Ino{54|28M9} 53|1525r59 -94A9*Lock_Arr(86R9) 53|1514r36 -99U14*List_All 53|1517s29 -X 24 ipc-futex.ads -19K13*Futex 47e14 53|35w10 3881r24 3901r23 3909r20 -32A9*Element_Arr(28R9) 53|3881r30 -39V13*Wait{boolean} 53|3901s29 -46U14*Wake 53|3909s26 -X 25 ipc-pty.ads -21K13*PTY 203e12 52|21w10 31r9 1290r29 1318r25 53|220r23 262r20 267r20 298r23 -. 348r20 353r20 2699r28 2710r22 3199r26 3203r26 4927r19 4946r11 5658r29 5665r19 -. 5668r19 5837r25 5853r17 5855r17 5857r17 5859r17 5866r26 5868r26 5879r26 -. 5881r26 5887r26 5889r26 -37P9*Inner_Acc(36R9) 52|1318r29 53|2699r32 4927r23 5837r29 -40E9*Status 40e49 52|1290r33 53|220r27 298r27 5658r33 -40n20*PTY_Success{40E9} 53|5665r23 -40n33*PTY_Would_Block{40E9} 53|5668r23 -43V13*Create{37P9} 53|2710s26 -47U14*Close 53|2716s10 2717s10 -50U14*Read_Primary 53|262s24 -58U14*Write_Primary 53|348s24 -66U14*Read_Secondary 53|267s24 -74U14*Write_Secondary 53|353s24 -82U14*Poll_Primary 53|3199s30 -90U14*Poll_Secondary 53|3203s30 -97U14*Is_Primary_Blocking 53|1752s19 -101U14*Set_Primary_Blocking 53|1769s19 -105U14*Is_Secondary_Blocking 53|1754s19 -109U14*Set_Secondary_Blocking 53|1771s19 -113U14*Get_TermIOs 53|5853s21 -117U14*Set_TermIOs 53|5855s21 -121U14*Get_WinSize 53|5857s21 -125U14*Set_WinSize 53|5859s21 -129U14*Get_Name 53|4946s15 -133U14*Flush_Primary 53|5866s30 -137U14*Flush_Secondary 53|5868s30 -141U14*Start_Primary 53|5887s30 -145U14*Start_Secondary 53|5889s30 -149U14*Stop_Primary 53|5879s30 -153U14*Stop_Secondary 53|5881s30 -X 26 ipc-shm.ads -19K13*SHM 98e12 53|37w10 1548r20 5024r21 5031r11 5053r17 5080r18 5087r21 -. 5096r17 5108r23 5114r23 5151r16 5164r11 5166r34 5172r17 5197r25 5205r29 -. 5208r29 5211r29 5214r29 -25M12*Segment_ID{19|81M9} 53|5151r20 5197r29 -26m4*Error_ID{25M12} 53|5166r38 5214r33 -29V13*Create_Segment{25M12} 53|5208s33 -38V13*Create_Unkeyed_Segment{25M12} 53|5205s33 -45V13*Get_Segment{25M12} 53|5211s33 -48U14*Get_Segment_And_Size 53|5164s15 -54U14*Get_Address 53|5031s15 -59V13*Check_Permissions{boolean} 53|5024s25 5087s25 -64U14*Mark_Refcounted 53|5096s21 -68U14*Modify_Attachment 53|5053s21 5172s21 -70U14*Modify_Permissions 53|5108s27 -76R9*Segment_Information 85e14 53|5080r22 -77m7*Key{19|81M9} 53|5118r54 -78m7*Size{19|84M9} 53|5124r42 -79m7*Owner_UID{19|81M9} 53|5119r45 -80m7*Owner_GID{19|81M9} 53|5120r45 -81m7*Creator_UID{19|81M9} 53|5121r46 -82m7*Creator_GID{19|81M9} 53|5122r46 -83m7*Mode{19|84M9} 53|5123r59 -84i7*Refcount{natural} 53|5125r56 -87U14*Fetch_Information 53|5114s27 -93U14*Get_Total_Size 53|1548s24 -X 27 ipc-socket.ads -21K13*Socket 573e15 52|29w10 29r32 1278r29 53|219r23 275r20 297r23 361r20 -. 814r24 815r24 816r24 819r38 820r38 821r38 826r42 827r42 828r42 2530r19 -. 2539r19 2548r19 2653r19 2662r19 2671r19 2862r49 2866r17 2902r49 2918r22 -. 2929r22 2940r22 3206r26 3681r19 3688r19 3695r19 3753r19 3760r19 3767r19 -. 3810r25 3812r25 3814r25 4117r23 4140r65 4143r25 4147r26 4155r25 4159r26 -. 4167r25 4173r26 4182r17 4208r23 4231r65 4234r25 4238r26 4246r25 4250r26 -. 4258r25 4264r26 4273r17 5258r40 5622r29 -25E9*Domain 28e13 53|815r31 -26n8*IPv4{25E9} 53|819r45 2530r26 2653r26 2918r29 3681r26 3753r26 4143r32 -. 4234r32 -27n8*IPv6{25E9} 53|820r45 2539r26 2662r26 2929r29 3688r26 3760r26 4155r32 -. 4246r32 -28n8*UNIX{25E9} 53|821r45 2548r26 2671r26 2940r29 3695r26 3767r26 4167r32 -. 4258r32 -30E9*DataType 33e12 53|816r31 -31n8*Stream{30E9} 53|826r49 2862r56 2902r56 4140r72 4231r72 5261r24 -32n8*Datagram{30E9} 53|827r49 5263r24 -33n8*Raw{30E9} 53|828r49 5265r24 -37P9*Socket_Acc(36R9) 53|814r31 2894r15 -40E9*Socket_Status 43e20 52|1278r36 53|219r30 297r30 4117r30 4208r30 5622r36 -41n8*Plain_Success{40E9} 53|5629r15 -42n8*Is_Bad_Type{40E9} 53|5633r15 -43n8*Would_Block{40E9} 53|5634r15 -46i4*Default_Socket_Size{natural} 53|5258r47 -55V13*Create{37P9} 53|832s19 -63V13*Get_Domain{25E9} 53|2529s12 2652s12 2917s15 3680s12 3752s12 4142s18 -. 4233s18 -70V13*Get_Type{30E9} 53|2862s13 2902s13 4140s29 4231s29 5260s21 -75U14*Close 53|845s10 2964s13 -81V13*Is_Blocking{boolean} 53|1750s27 -87U14*Set_Blocking 53|1767s19 -96U14*Poll 53|3206s33 -109U14*Read 53|275s27 4182s24 -121U14*Write 53|361s27 4273s24 -136V13*Shutdown{boolean} 53|3810s32 3812s32 3814s32 -144V13*Is_Listening{boolean} 53|5254s27 -152V13*Listen{boolean} 53|2866s24 -159U14*Accept_Connection 53|2909s10 -173U14*Get_Bound 53|3685s16 -185U14*Get_Peer 53|3757s16 -197V13*Bind{boolean} 53|2534s24 -210V13*Connect{boolean} 53|2657s24 -222U14*Accept_Connection 53|2922s19 -239U14*Read 53|4147s33 -257U14*Write 53|4238s33 -276U14*Get_Bound 53|3692s16 -288U14*Get_Peer 53|3764s16 -300V13*Bind{boolean} 53|2543s24 -313V13*Connect{boolean} 53|2666s24 -326U14*Accept_Connection 53|2933s19 -343U14*Read 53|4159s33 -361U14*Write 53|4250s33 -381U14*Get_Bound 53|3701s16 -393U14*Get_Peer 53|3773s16 -405V13*Bind{boolean} 53|2554s24 -415V13*Connect{boolean} 53|2677s24 -425U14*Accept_Connection 53|2946s19 -441U14*Read 53|4173s33 -457U14*Write 53|4264s33 -X 28 lib.ads -19K9*Lib 35e8 53|21r6 22w6 23r6 24r6 25r6 1506r16 2551r43 2674r43 2943r37 -. 3164r10 3237r37 3433r10 3698r34 3770r34 4036r13 4046r23 4170r49 4261r49 -. 5010r28 5192r28 5495r10 5512r10 5799r40 5821r20 5824r7 5829r13 5831r13 -. 5962r25 -23V13*C_String_Length{natural} 53|2551s47 2674s47 2943s41 3698s38 3770s38 -. 4170s53 4261s53 5799s44 -X 29 lib-alignment.ads -19k13*Alignment 43e18 53|25w10 5010r32 5192r32 5962r29 -X 31 lib-messages.ads -21K13*Messages 103e17 53|21w10 1506r20 5495r14 5512r14 5821r24 5824r11 5829r17 -. 5831r17 -41U14*Put_Line 53|5495s23 5512s23 5829s26 5831s26 -50U14*Dump_Logs 53|1506s29 -55A12*Translated_String{string} 53|5821r33 -63U14*Image 53|5824s20 -X 32 lib-panic.ads -21K13*Panic 39e14 53|24w10 3433r14 -32U14*Hard_Panic 53|3433s20 -X 34 lib-time.ads -19K13*Time 77e13 53|23w10 3164r14 3237r41 4036r17 4046r27 -37U14*Increment 53|3164s19 4036s22 -63V13*Is_Greater_Equal{boolean} 53|3237s46 4046s32 -X 35 memory.ads -19K9*Memory 36e11 52|25w6 1259r21 1343r21 53|30r6 31w6 31r18 1293r16 1305r13 -. 1308r13 1313r13 1546r16 5959r21 5984r21 -20M9*Size -29N4*Memory_Offset 53|5991r48 -35M12*Virtual_Address{43|82M9} 52|1259r28 1343r28 53|444r30 444r49 469r27 -. 547r53 5959r28 5984r28 5991r17 -X 36 memory-physical.ads -20K16*Physical 60e20 53|30w13 1293r23 1305r20 1308r20 1313r20 1546r23 -47R9*Statistics 51e14 53|1293r32 -48m7*Total{35|20M9} 53|1314r42 1550r57 -49m7*Available{35|20M9} 53|1309r42 1551r57 -50m7*Free{35|20M9} 53|1306r42 1552r57 -55U14*Get_Statistics 53|1305s29 1308s29 1313s29 1546s32 -X 37 networking.ads -20K9*Networking 55e15 52|26w6 432r21 433r21 434r21 435r21 436r21 696r20 703r23 -. 1008r13 1009r13 1012r13 1013r13 53|41r6 885r7 1303r36 1405r16 1478r23 1482r16 -. 2537r28 2546r28 2660r28 2669r28 2926r39 2937r39 3686r19 3693r19 3758r19 -. 3765r19 4152r39 4164r39 4243r39 4255r39 4323r13 4328r13 4334r13 -22A9*MAC_Address(19|70M9) 52|432r32 -23A9*IPv4_Address(19|70M9) 52|433r32 434r32 696r31 1008r24 1009r24 -24A9*IPv6_Address(19|70M9) 52|435r32 436r32 703r34 1012r24 1013r24 -25M9*IPv4_Port<19|73M9> 53|2537r39 2660r39 2926r50 3686r30 3758r30 4152r50 -. 4243r50 -26M9*IPv6_Port<19|73M9> 53|2546r39 2669r39 2937r50 3693r30 3765r30 4164r50 -. 4255r50 -33i4*Hostname_Max_Len{natural} 53|1303r47 -38U14*Get_Hostname 53|1405s27 -45U14*Set_Hostname 53|885s18 -X 39 networking-interfaces.ads -20K20*Interfaces 107e26 53|41w17 1478r34 1482r27 4323r24 4328r24 4334r24 -56U14*Block 53|4323s35 -72U14*Modify_Addresses 53|4328s35 -79U14*Modify_Addresses 53|4334s35 -88i7*Handle{17|83I9} 53|1484r40 -89b7*Is_Blocked{boolean} 53|1486r31 -90a7*MAC{37|22A9} 53|1491r43 -91a7*IPv4{37|23A9} 53|1492r44 -92a7*IPv4_Subnet{37|23A9} 53|1493r51 -93a7*IPv6{37|24A9} 53|1494r44 -94a7*IPv6_Subnet{37|24A9} 53|1495r51 -96A9*Interface_Arr(87R9) 53|1478r45 -101U14*List_Interfaces 53|1482s38 -X 40 scheduler.ads -25K9*Scheduler 183e14 52|23w6 23r21 53|609r10 632r17 668r28 670r30 686r21 -. 690r26 751r13 765r13 1142r7 1159r14 1424r23 1451r23 1537r16 1648r14 1649r14 -. 1661r18 1663r18 1669r18 1671r18 1688r32 1880r7 3240r13 4047r13 4458r16 -. 4467r17 5335r26 5335r43 5350r10 5376r26 5376r43 5391r10 5504r7 5521r7 5527r7 -. 5535r7 5590r16 -27I9*TID 52|1267r17 53|585r26 632r27 4485r25 4687r15 4745r15 5335r36 -. 5376r36 5525r26 5532r26 5546r17 -28I9*TCID 53|1648r24 4458r26 4484r24 -29i4*Error_TID{27I9} 53|696r20 4491r45 4714r24 4783r24 -30i4*Error_TCID{28I9} 53|1674r17 4468r20 4491r21 -52V13*Create_User_Thread{27I9} 53|663s21 -61V13*Create_User_Thread{27I9} 53|686s31 -74U14*Yield_If_Able 53|751s23 765s23 1142s17 3240s23 4047s23 5590s26 -77U14*Bail 53|609s20 1880s17 5504s17 5521s17 -87U14*Signal_Kernel_Entry 53|5527s17 -88U14*Signal_Kernel_Exit 53|5535s17 -93E9*Cluster_Algorithm 95e28 53|1649r24 -94n8*Cluster_RR{93E9} 53|1461r27 1661r28 -95n8*Cluster_Cooperative{93E9} 53|1463r27 1663r28 -97V13*Set_Scheduling_Algorithm{boolean} 53|1678s14 -103V13*Set_Time_Slice{boolean} 53|1683s14 -105V13*Create_Cluster{28I9} 53|1669s28 4467s27 -106V13*Delete_Cluster{boolean} 53|1159s24 -108V13*Switch_Cluster{boolean} 53|4492s14 -112I12*Niceness{integer} 53|1426r23 4688r15 4746r15 4755r31 4756r19 4758r59 -. 4760r20 -115V13*Get_Niceness{112I12} 53|1435s24 4718s22 -116U14*Set_Niceness 53|4787s13 -118U14*Get_Name 53|5350s20 -119U14*Set_Name 53|5391s20 -125U14*Get_Load_Averages 53|1537s26 -132V13*Convert{natural} 53|670s40 1431s51 1636s32 5592s36 -133V13*Convert{natural} 53|1433s51 1457s50 1688s42 4470s35 -134V13*Convert{27I9} 53|4485s32 4713s22 4782s22 5335s53 5376s53 -135V13*Convert{28I9} 53|668s38 690s36 1159s40 1671s28 4484s32 -138i7*Thread{27I9} 53|1431r69 1435r47 -139i7*Cluster{28I9} 53|1433r69 -140i7*Proc{natural} 53|1434r60 -142A9*Thread_Listing_Arr(137R9) 53|1424r33 -145i7*Cluster{28I9} 53|1457r68 -146e7*Cluster_Algo{93E9} 53|1460r33 -147b7*Cluster_Int{boolean} 53|1466r31 -148i7*Cluster_Quan{natural} 53|1459r59 -150A9*Cluster_Listing_Arr(144R9) 53|1451r33 -155U14*List_All 53|1428s16 -156U14*List_All 53|1454s16 -X 41 system.ads -37K9*System 155e11 52|18r6 18r35 22w6 709r20 1055r17 1308r31 1321r21 53|20w6 -. 20r18 66r25 91r31 212r29 290r29 445r20 547r23 777r32 868r28 908r31 910r31 -. 1093r30 1236r30 1238r30 1292r26 1892r27 1920r23 2098r31 2099r31 2176r30 -. 2224r32 2225r32 2295r29 2382r31 2443r29 2515r30 2550r36 2580r31 2582r31 -. 2638r30 2673r36 2696r29 2768r30 2770r30 2891r29 2942r39 3040r30 3120r30 -. 3122r30 3124r30 3306r31 3450r31 3536r29 3593r29 3659r31 3661r31 3697r36 -. 3731r31 3733r31 3769r36 3841r26 3843r26 4110r29 4112r34 4169r41 4201r29 -. 4203r34 4260r41 4615r53 4925r30 5079r30 5148r14 5558r23 5578r27 5690r30 -. 5702r30 5704r30 5798r31 5840r21 5964r16 5987r16 -67M9*Address 52|709r27 1055r24 1308r38 1321r28 53|66r32 91r38 212r36 290r36 -. 445r27 547r30 868r35 908r38 910r38 1093r37 1236r37 1238r37 1292r33 1892r34 -. 1920r30 2098r38 2099r38 2176r37 2224r39 2225r39 2295r36 2382r38 2443r36 -. 2515r37 2550r43 2580r38 2582r38 2638r37 2673r43 2696r36 2768r37 2770r37 -. 2891r36 2942r46 3040r37 3120r37 3122r37 3124r37 3306r38 3450r38 3536r36 -. 3593r36 3659r38 3661r38 3697r43 3731r38 3733r38 3769r43 3841r33 3843r33 -. 4110r36 4112r41 4169r48 4201r36 4203r41 4260r48 4925r37 5079r37 5148r21 -. 5558r30 5690r37 5702r37 5704r37 5798r38 5840r28 5964r23 5987r23 -69m4*Null_Address{67M9} 53|777r39 4615r60 5578r34 -81V14*"="{boolean} 53|777r29 5578r25 -X 43 s-stoele.ads -40K16*Storage_Elements 90e28 52|18w13 18r42 -51I9*Storage_Offset -53I12*Storage_Count{51I9} 53|483r32 553r37 1936r38 5050r32 5170r31 5972r33 -. 5998r33 -67V14*"+"{41|67M9} 53|2550r60 2673r60 2942r65 3697r61 3769r61 4169r66 4260r66 -82M9*Integer_Address 52|1051r26 1052r26 1053r26 53|65r24 65r43 90r30 90r49 -. 211r28 211r47 289r28 289r47 664r28 718r29 718r48 867r27 867r46 907r30 907r49 -. 909r30 909r49 1092r29 1092r48 1175r23 1175r43 1235r29 1235r48 1237r29 1237r48 -. 1291r25 1291r44 1616r31 1616r50 1803r33 1803r52 1891r26 1891r45 1920r53 -. 1994r28 1994r47 2096r30 2096r49 2097r30 2097r49 2175r30 2175r49 2222r31 -. 2222r50 2223r31 2223r50 2294r29 2294r48 2381r30 2381r49 2442r29 2442r48 -. 2514r29 2514r48 2579r30 2579r49 2581r30 2581r49 2637r29 2637r48 2695r28 -. 2695r47 2767r29 2767r48 2769r29 2769r48 2890r28 2890r47 2892r28 2892r47 -. 3039r29 3039r48 3119r29 3119r48 3121r29 3121r48 3123r29 3123r48 3305r30 -. 3305r49 3449r30 3449r49 3535r28 3535r47 3592r28 3592r47 3658r30 3658r49 -. 3660r30 3660r49 3730r30 3730r49 3732r30 3732r49 3840r25 3840r44 3842r25 -. 3842r44 3882r20 3885r19 3934r24 3934r43 4005r27 4005r46 4006r27 4006r46 -. 4066r24 4066r43 4109r28 4109r47 4111r33 4111r52 4200r28 4200r47 4202r33 -. 4202r52 4289r29 4289r48 4366r30 4366r49 4367r30 4367r49 4515r26 4515r45 -. 4516r26 4516r45 4576r26 4576r45 4577r26 4577r45 4860r24 4860r43 4889r24 -. 4889r43 4924r29 4924r48 5048r44 5049r44 5078r29 5078r48 5156r45 5169r43 -. 5237r29 5237r48 5297r29 5297r48 5336r24 5336r43 5377r24 5377r43 5417r27 -. 5417r46 5418r27 5418r46 5689r29 5689r48 5701r29 5701r48 5703r29 5703r48 -. 5757r48 5760r47 -84V13*To_Address{41|67M9} 53|66s43 91s49 212s47 290s47 482s32 547s41 729s48 -. 868s46 908s49 910s49 1093s48 1178s64 1236s48 1238s48 1292s44 1617s58 1804s58 -. 1892s45 1920s41 2029s37 2098s49 2099s49 2176s49 2224s50 2225s50 2295s48 -. 2382s49 2443s48 2515s48 2580s49 2582s49 2638s48 2696s47 2768s48 2770s48 -. 2891s47 3040s48 3120s48 3122s48 3124s48 3306s49 3450s49 3536s47 3593s47 -. 3659s49 3661s49 3731s49 3733s49 3841s44 3843s44 3893s64 3948s51 4022s58 -. 4023s58 4075s49 4110s47 4112s52 4201s47 4203s52 4295s56 4296s56 4297s56 -. 4402s40 4439s51 4528s57 4541s55 4596s58 4611s58 4863s34 4892s34 4925s48 -. 5048s32 5049s32 5079s48 5156s33 5169s31 5250s52 5348s37 5389s37 5419s57 -. 5420s57 5690s48 5702s48 5704s48 5757s36 5760s35 5971s33 5997s33 -87V13*To_Integer{82M9} 53|4613s18 5164s50 -X 45 userland.ads -17K9*Userland 23e13 52|24r6 27r6 27r28 33r9 1356r5 53|26r6 42r6 43r6 45r14 -. 121r7 194r10 195r10 238r7 389r7 591r7 607r10 754r20 794r7 928r7 1072r7 -. 1111r7 1217r7 1265r10 1878r7 2025r7 2313r10 2419r10 2420r10 2493r7 3256r7 -. 3272r13 3275r13 3278r10 3281r16 3559r7 4805r7 4814r7 4830r13 4833r13 4836r10 -. 4839r16 5047r32 5413r27 5421r18 5500r7 5501r7 5502r7 5503r7 5517r7 5518r7 -. 5519r7 5520r7 5540r7 5541r7 5542r7 5557r23 5570r10 5584r7 5720r7 5721r7 -. 5753r17 5754r17 5764r10 5765r10 5771r18 6045r5 -19P9*String_Acc(string) 52|1308r54 53|5685r65 5798r54 -20A9*Argument_Arr(19P9) 53|5753r26 -21A9*Environment_Arr(19P9) 53|5754r26 -X 47 userland-loader.ads -20K18*Loader 65e20 53|26w15 5771r27 -41V13*Start_Program{boolean} 53|5771s34 -X 48 userland-mac.ads -20K18*MAC 180e17 52|24w15 1331r22 53|107r21 329r49 459r40 1962r23 1995r19 -. 1997r19 2043r15 2047r15 2048r15 2060r15 2070r45 2071r45 2072r45 2248r23 -. 2988r18 3008r18 3015r27 3312r21 3456r21 3629r49 4373r21 5699r20 5826r15 -. 5828r15 5830r15 5900r23 5924r22 5928r41 5929r41 5930r41 5931r41 5932r41 -. 5933r41 5934r34 5948r43 -23R9*Capabilities 39e14 53|1962r27 5900r27 -24b7*Can_Change_Scheduling{boolean} 53|1154r38 1651r38 1965r15 4460r38 4487r38 -. 4690r38 4748r38 5904r17 -25b7*Can_Spawn_Others{boolean} 53|641r40 1966r15 5713r41 5905r17 -26b7*Can_Access_Entropy{boolean} 53|1896r38 1967r15 5906r17 -27b7*Can_Modify_Memory{boolean} 53|450r38 549r38 1922r38 1968r15 5907r17 -28b7*Can_Use_Networking{boolean} 53|1969r15 5908r17 -29b7*Can_Manage_Networking{boolean} 53|872r38 1970r15 4299r38 5909r17 -30b7*Can_Manage_Mounts{boolean} 53|1971r15 2118r41 2187r46 5910r17 -31b7*Can_Manage_Power{boolean} 53|1972r15 3407r38 5911r17 -32b7*Can_Trace_Children{boolean} 53|1973r15 2830r41 5912r17 -33b7*Can_Change_UIDs{boolean} 53|1974r15 3270r34 5913r17 -34b7*Can_Manage_MAC{boolean} 53|1975r15 2002r38 2062r38 5448r41 5914r17 -35b7*Can_Use_Clocks{boolean} 53|1976r15 3940r41 4014r41 5915r17 -36b7*Can_Signal_All{boolean} 53|1977r15 4664r38 5916r17 -37b7*Can_Change_GIDs{boolean} 53|1978r15 4828r34 5917r17 -38b7*Can_Bypass_IPC_Checks{boolean} 53|1979r15 5021r38 5084r38 5918r17 -42R9*Permissions 49e14 53|107r25 1995r23 2248r27 3312r25 3456r25 4373r25 -. 5699r24 -43b7*Includes_Contents{boolean} 53|2018m11 -44b7*Can_Read{boolean} 53|163r44 2019m11 2271r28 -45b7*Can_Write{boolean} 53|164r44 2020m11 3366r31 3510r31 4429r31 -46b7*Can_Execute{boolean} 53|2021m11 5740r25 -47b7*Can_Append_Only{boolean} 53|165r40 2022m11 -48b7*Can_Lock_Files{boolean} 53|2023m11 -52E9*Enforcement 55e13 53|2060r19 -53n8*Deny{52E9} 53|2070r49 5826r19 -54n8*Deny_And_Scream{52E9} 53|2071r49 5828r19 -55n8*Kill{52E9} 53|2072r49 5830r19 -58M9*Limit_Value<19|84M9> 53|3015r31 -59E9*Limit_Type 65e26 52|1331r26 53|2988r22 3008r22 5924r26 -60n8*Core_Size_Limit{59E9} 53|5928r45 -61n8*CPU_Time_Limit{59E9} 53|5929r45 -62n8*File_Size_Limit{59E9} 53|329r53 3629r53 5930r45 -63n8*Opened_File_Limit{59E9} 53|5931r45 5934r38 5948r47 -64n8*Stack_Size_Limit{59E9} 53|5932r45 -65n8*Memory_Size_Limit{59E9} 53|459r44 5933r45 -104E9*Addition_Status 104e63 53|1997r23 -104n29*Success{104E9} 53|2043r19 -104n38*No_Space{104E9} 53|2047r19 -104n48*Is_Conflicting{104E9} 53|2048r19 -X 49 userland-memory_failure.ads -19K18*Memory_Failure 39e28 53|42w15 5413r36 5421r27 5469r13 -21E9*Policy 24e18 53|5421r42 -22n8*Hard_Panic{21E9} 53|5428r25 5457r57 -23n8*Soft_Kill{21E9} 53|5430r25 5458r57 -24n8*Hard_Kill{21E9} 53|5432r25 5459r57 -27U14*Get_System_Policy 53|5426s17 -30U14*Set_System_Policy 53|5469s28 -X 50 userland-oom_failure.ads -19K18*OOM_Failure 35e25 53|43w15 5436r13 5470r13 -22U14*Get_Killing_Config 53|5436s25 -26U14*Configure_Killing 53|5470s25 -X 51 userland-process.ads -28K18*Process 677e21 52|27w15 27r37 53|121r16 176r10 194r19 195r19 238r16 -. 316r7 389r16 591r16 607r19 634r30 723r20 735r13 754r29 794r16 928r16 1072r16 -. 1111r16 1217r16 1265r19 1301r36 1316r36 1318r36 1724r16 1878r16 2025r16 -. 2254r10 2313r19 2405r10 2419r19 2420r19 2463r10 2493r16 2608r10 2796r10 -. 3012r10 3056r7 3069r10 3090r10 3256r16 3272r22 3275r22 3278r19 3281r25 -. 3324r7 3391r7 3392r7 3468r7 3559r16 3616r7 4079r16 4083r16 4387r7 4578r17 -. 4580r17 4644r17 4805r16 4814r16 4830r22 4833r22 4836r19 4839r25 5047r41 -. 5500r16 5501r16 5502r16 5503r16 5517r16 5518r16 5519r16 5520r16 5540r16 -. 5541r16 5542r16 5557r32 5570r19 5584r16 5720r16 5721r16 5764r19 5765r19 -. 6017r10 6037r17 6037r42 6038r17 6038r42 6040r17 6042r17 -33I9*PID 52|1249r30 1250r30 1264r37 1303r20 1314r62 1325r43 1335r18 -. 1347r17 53|63r36 92r42 192r23 213r40 291r40 375r27 442r42 545r34 569r25 -. 586r26 630r17 631r17 719r41 722r20 811r29 864r26 905r29 1060r40 1094r28 -. 1152r23 1176r23 1214r23 1233r41 1289r37 1584r26 1586r17 1647r23 1703r21 -. 1889r38 1917r24 1961r36 1992r40 2059r24 2094r42 2173r29 2220r42 2297r33 -. 2379r42 2440r41 2482r30 2512r41 2577r42 2635r41 2697r40 2734r27 2765r28 -. 2823r24 2824r24 2856r40 2884r39 2986r27 3037r41 3117r41 3253r23 3267r23 -. 3303r42 3388r23 3403r30 3447r42 3537r40 3594r40 3655r42 3727r42 3798r40 -. 3838r37 3932r36 4003r39 4064r36 4113r40 4204r40 4286r41 4364r42 4457r25 -. 4483r25 4513r38 4574r38 4641r26 4642r26 4686r15 4744r15 4802r23 4811r23 -. 4825r23 4858r36 4887r36 4922r41 4972r41 5011r23 5076r23 5146r23 5193r23 -. 5234r41 5294r41 5333r36 5374r36 5415r39 5490r30 5507r30 5538r37 5554r32 -. 5681r20 5819r62 5899r43 5940r18 6009r17 -34i4*Error_PID{33I9} 53|654r22 673r21 742r29 755r22 1589r18 2826r18 4654r16 -. 4700r26 4769r26 -35i4*Max_Process_Count{natural} 53|1316r44 -40i4*Max_Name_Length{natural} 53|634r38 -42i4*Max_File_Count{natural} 53|1301r44 -50n8*Description_Reader_FIFO{49E9} 53|257r18 357r18 942r18 1192r31 1745r21 -. 1762r21 1777r21 1786r21 3190r24 -51n8*Description_Writer_FIFO{49E9} 53|271r18 343r18 942r44 1197r31 1747r21 -. 1764r21 1779r21 1792r21 3194r24 5587r54 -52n8*Description_Primary_PTY{49E9} 53|261r18 347r18 943r18 1122r15 1751r21 -. 1768r21 2711r40 3198r24 4941r15 -53n8*Description_Secondary_PTY{49E9} 53|266r18 352r18 943r44 1124r15 1753r21 -. 1770r21 2712r40 3202r24 4942r15 -54n8*Description_Inode{49E9} 53|152r35 245r18 323r18 392r15 499r32 939r18 -. 1066r50 1114r15 1755r21 1772r21 1810r42 2309r53 2495r15 2746r15 3209r24 -. 3328r63 3472r63 3566r18 3623r18 4304r53 4391r63 4979r33 6020r55 -55n8*Description_Socket{49E9} 53|274r18 360r18 837r37 959r18 1749r21 1766r21 -. 2518r50 2641r50 2859r50 2898r50 2957r40 3205r24 3664r50 3736r50 3802r50 -. 4126r53 4217r53 5239r50 5299r50 -56R9*File_Description 80e14 53|150r28 837r19 1190r26 1195r26 2711r22 2712r22 -. 2957r22 -57P9*File_Description_Acc(56R9) 52|1336r18 53|106r21 215r28 293r28 376r18 -. 446r20 813r20 911r20 1061r23 1096r24 1181r34 1705r30 1707r21 2299r29 2483r26 -. 2513r24 2636r24 2700r24 2735r23 2857r23 2886r24 2893r15 3127r20 3311r21 -. 3455r21 3539r28 3596r28 3657r25 3729r25 3799r23 4115r28 4206r28 4288r24 -. 4372r21 4926r24 4973r24 5236r24 5296r24 5555r23 5941r18 6014r15 -58e27*Description{49E9} 53|152m14 244r20 322r20 391r17 499r18 938r25 1066r35 -. 1113r17 1192m10 1197m10 1744r23 1761r23 1776r23 1785r23 1810r27 2309r38 -. 2494r17 2518r35 2641r35 2745r17 2859r35 2898r35 3189r26 3328r48 3472r48 -. 3565r20 3622r20 3664r35 3736r35 3802r35 4126r38 4217r38 4304r38 4391r48 -. 4940r17 4979r18 5239r35 5299r35 5587r40 6020r40 -59i7*Children_Count{natural} 53|151m14 1191m10 1196m10 -62p13*Inner_Reader_FIFO{22|39P9} 53|258r27 1193m10 1746r50 1763r43 1778r34 -. 1787r34 3192r31 -64p13*Inner_Writer_FIFO{22|39P9} 53|344r28 1198m10 1748r51 1765r44 1780r34 -. 1793r34 3196r31 5589r38 5593r25 -66p13*Inner_Primary_PTY{25|37P9} 53|263r25 349r25 1123r29 1752r45 1769r46 -. 3200r31 4941r57 -68p13*Inner_Secondary_PTY{25|37P9} 53|268r25 354r25 1125r29 1754r47 1771r48 -. 3204r31 4942r57 -70b13*Inner_Is_Locked{boolean} 53|153m14 1839m27 1850m27 -71b13*Inner_Is_Blocking{boolean} 53|154m14 252r48 338r32 1756r32 1773m24 -. 3573r48 3637r49 -72b13*Inner_Ino_Read{boolean} 53|155m14 246r28 1115r21 3567r28 -73b13*Inner_Ino_Write{boolean} 53|156m14 324r28 1115r45 3624r28 -74m13*Inner_Ino_Pos{19|84M9} 53|158m14 251r66 253m21 253r43 328r27 337r32 -. 339m21 339r43 402m24 404m24 404r46 406m24 411r28 2318r41 2324m18 2324r40 -75i13*Inner_Ino_FS{54|74I9} 53|157m14 251r31 336r32 393r28 501r37 940r33 -. 1073r22 1080r27 1116r37 1819r44 1833r47 1842r47 2316r32 2497r22 2747r43 -. 3210r37 3334r27 3478r27 3572r31 3636r32 4310r22 4397r27 4990r42 6024r26 -76m13*Inner_Ino{54|28M9} 53|159m14 251r50 336r51 393r47 502r37 941r33 1073r41 -. 1080r46 1116r56 1820r44 1834r47 1843r47 2317r32 2497r41 2747r62 3210r56 -. 3335r27 3479r27 3572r50 3636r51 4310r41 4316r54 4398r27 4990r61 6025r26 -78p13*Inner_Socket{27|37P9} 53|275r38 361r39 1750r45 1767r38 2529r29 2535r33 -. 2544r33 2554r35 2652r29 2658r33 2667r33 2677r38 2862r28 2866r37 2902r28 -. 2909r34 2917r32 2923r44 2934r44 2947r51 3207r31 3680r29 3685r32 3692r32 -. 3701r32 3752r29 3757r31 3764r31 3773r31 3810r47 3812r47 3814r47 4140r44 -. 4142r35 4148r44 4160r44 4174r44 4182r35 4231r44 4233r35 4239r44 4251r44 -. 4265r44 4273r36 5254r46 5260r36 -82E9*Signal 110e34 52|1250r41 1354r22 53|727r20 4578r25 4644r25 5507r41 5557r40 -. 6032r22 6037r25 6037r50 6038r25 6038r50 6040r25 -92n8*Signal_Kill{82E9} 53|6042r25 -143A9*Signal_Bitmap(boolean)<82E9> 53|3114r52 3115r65 3132r20 4510r52 4511r65 -. 4517r17 4522r54 4528r19 4535r54 4580r25 -155A9*Children_Arr(33I9) 53|723r28 -156U14*Get_Children 53|735s21 -162R9*Process_Info 170e14 53|1339r38 -163a7*Identifier{string} 53|1347r48 -164i7*Identifier_Len{natural} 53|1348r61 -165i7*Process{33I9} 53|1350r70 -166i7*Parent{33I9} 53|1349r70 -167m7*User{19|81M9} 53|1351r48 -168b7*Is_Being_Traced{boolean} 53|1353r32 -169b7*Has_Exited{boolean} 53|1356r32 -171A9*Process_Info_Arr(162R9) 53|1341r24 -176U14*List_All 53|1344s16 -181U14*Create_Process 53|672s10 1588s7 -185U14*Delete_Process 53|794s24 -188U14*Get_Runtime_Times 53|4079s24 -194U14*Get_Children_Runtimes 53|4083s24 -203U14*Add_Thread 53|699s7 -218U14*Remove_Thread 53|607s27 1878s24 5502s24 5519s24 -223U14*Flush_Threads 53|591s24 5500s24 5517s24 5540s24 -228U14*Reassign_Process_Addresses 53|5765s27 -232V13*Get_Niceness{40|112I12} 53|4704s22 -236U14*Set_Niceness 53|4773s13 -243V13*Is_Valid_File{boolean} 53|194s27 -252U14*Add_File 53|5950s10 -263V13*Get_File_Count{natural} 53|5947s23 -269U14*Duplicate 53|1719s13 -277U14*Duplicate_FD_Table 53|685s10 1595s7 -288U14*Close 53|167s10 181s10 846s10 1203s10 1204s10 2718s10 2719s10 2965s13 -294V13*Get_File{57P9} 53|215s52 293s52 382s15 494s18 931s23 1061s47 1096s48 -. 1705s54 2299s53 2483s50 2513s48 2636s48 2735s47 2857s47 2886s48 3177s24 -. 3327s23 3471s23 3539s52 3596s52 3657s49 3729s49 3799s47 4115s52 4206s52 -. 4288s48 4390s23 4926s48 4973s48 5236s48 5296s48 5586s18 6019s19 -303U14*Get_FD_Flags 53|1731s13 -314U14*Set_FD_Flags 53|176s18 840s10 1724s24 1739s13 2960s13 -324U14*Remove_File 53|195s27 -329U14*Flush_Files 53|5501s24 5518s24 5541s24 -333U14*Flush_Exec_Files 53|5764s27 -338U14*Set_Common_Map 53|611s10 680s10 5767s10 -344V13*Get_Common_Map{12|43P9} 53|64s43 93s49 214s49 292s49 443s49 546s41 -. 592s18 606s43 665s28 680s45 681s13 689s26 721s48 792s14 865s48 906s51 1095s50 -. 1177s45 1234s48 1290s44 1615s50 1704s54 1890s47 1918s42 1993s47 2095s49 -. 2174s51 2221s50 2298s55 2380s49 2441s48 2522s40 2578s49 2645s40 2698s47 -. 2766s50 2885s46 3038s48 3118s48 3304s49 3448s49 3538s49 3595s49 3656s49 -. 3728s49 3839s44 3933s43 4004s46 4065s43 4114s49 4205s49 4287s48 4365s49 -. 4514s45 4575s45 4859s43 4888s43 4923s48 5047s49 5077s40 5147s40 5235s48 -. 5295s48 5334s43 5375s43 5416s46 5688s48 -363V13*Bump_Alloc_Base{19|84M9} 53|469s44 5042s19 -370U14*Get_Traced_Info 53|5584s24 -380U14*Set_Traced_Info 53|2839s13 -390U14*Issue_Exit 53|5503s24 5542s24 -397U14*Issue_Exit 53|5520s24 -406U14*Check_Exit 53|743s19 760s13 -418U14*Set_CWD 53|1080s7 -428U14*Get_CWD 53|5721s24 6017s18 -437V13*Get_Parent{33I9} 53|569s32 653s20 755s40 2826s44 -443U14*Set_Identifier 53|678s10 5768s10 -450U14*Get_Identifier 53|677s10 -459U14*Get_UID 53|1217s24 3090s18 3278s27 4666s10 -464U14*Set_UID 53|3275s30 -469U14*Get_Effective_UID 53|121s24 238s24 316s15 389s24 928s24 1072s24 1111s24 -. 1265s27 2025s24 2254s18 2313s27 2405s18 2420s27 2463s18 2493s24 2608s18 -. 2796s18 3056s15 3069s18 3256s24 3324s15 3468s15 3559s24 3616s15 4387s15 -. 4665s10 4667s10 5022s10 5085s10 5201s7 5720s24 -474U14*Set_Effective_UID 53|3272s30 3281s33 -479U14*Get_GID 53|4805s24 4836s27 -484U14*Set_GID 53|4833s30 -489U14*Get_Effective_GID 53|4814s24 5023s10 5086s10 5202s7 -494U14*Set_Effective_GID 53|4830s30 4839s33 -496N4*Max_Supplementary_Groups 53|1318r44 -497A9*Supplementary_GID_Arr(19|81M9) 53|4862r15 4891r15 -499U14*Get_Supplementary_Groups 53|4871s7 -504U14*Set_Supplementary_Groups 53|4903s10 -509U14*Empty_Supplementary_Groups 53|4895s10 -514U14*Get_Umask 53|2419s27 3391s15 -519U14*Set_Umask 53|3392s15 -525U14*Get_Masked_Signals 53|3153s13 4519s7 4617s19 -531U14*Set_Masked_Signals 53|3154s13 3245s10 4545s19 4547s19 4549s19 4619s19 -536U14*Raise_Signal 53|4675s7 -542U14*Get_Signal_Handler 53|4600s13 -551U14*Set_Signal_Handler 53|4615s19 4621s19 -562U14*Get_Raised_Signal_Actions 53|5570s27 -573V13*Convert{natural} 53|565s32 572s32 669s28 691s26 693s30 797s32 1349s51 -. 1350s51 1519s50 1630s32 1829s44 5820s57 -579V13*Convert{33I9} 53|754s37 1814s24 2824s31 4642s33 4699s24 4768s24 -586V13*Get_Enforcement{48|52E9} 53|5825s12 -587U14*Set_Enforcement 53|2079s7 -589V13*Get_Capabilities{48|23R9} 53|450s14 549s14 641s14 872s14 1154s14 1651s14 -. 1896s14 1922s14 1962s43 2002s14 2062s14 2118s17 2187s17 2830s17 3270s10 -. 3407s14 3940s17 4014s17 4299s14 4460s14 4487s14 4664s14 4690s14 4748s14 -. 4828s10 5021s14 5084s14 5448s17 5713s17 5900s43 -590U14*Set_Capabilities 53|5902s7 -592V13*Check_Permissions{48|42R9} 53|149s24 2270s24 3365s27 3509s27 4428s27 -. 5739s21 -597U14*Add_Entity 53|2039s7 -604V13*Get_Limit{48|58M9} 53|329s32 459s23 2993s35 3629s32 5948s23 -608U14*Set_Limit 53|3012s18 -X 52 userland-syscall.ads -33K18*Syscall 45|17k9 52|1356l14 1356e21 53|45b23 6045l14 6045t21 -36E9*Errno_Value 62e23 63r8 101r23 108r23 123r24 129r23 137r23 145r23 156r23 -. 176r25 183r23 186r63 189r64 200r24 215r23 226r25 243r23 250r23 302r24 308r23 -. 316r23 319r67 325r23 332r26 335r63 348r26 467r23 479r24 482r63 494r25 529r23 -. 532r67 539r22 547r24 568r23 573r23 587r24 596r23 613r26 622r24 632r26 661r26 -. 664r60 674r24 682r24 689r23 716r24 727r26 735r24 741r26 748r23 759r26 769r26 -. 776r23 785r24 797r23 804r23 818r24 839r24 842r64 849r23 859r24 865r23 875r23 -. 886r24 895r23 904r23 911r24 918r24 927r23 945r24 958r24 968r27 982r25 992r24 -. 1002r24 1020r24 1029r24 1033r23 1039r23 1049r23 1064r23 1070r23 1080r23 -. 1087r23 1089r63 1091r64 1098r23 1105r23 1112r23 1120r23 1135r23 1144r23 -. 1175r23 1180r23 1191r23 1207r23 1216r23 1223r23 1230r23 1245r23 1275r29 -. 1281r29 1287r29 1293r29 1305r24 53|49r23 61r23 88r24 190r23 209r23 287r23 -. 373r23 439r25 543r25 562r63 568r64 583r24 626r23 716r45 809r23 862r23 903r24 -. 1058r23 1090r23 1139r67 1150r23 1173r26 1213r63 1231r26 1287r23 1582r24 -. 1633r63 1645r25 1701r23 1873r67 1887r22 1915r24 1949r23 1959r23 1990r24 -. 2057r23 2092r26 2171r24 2218r26 2289r26 2355r60 2375r24 2438r24 2480r23 -. 2510r24 2575r26 2633r24 2693r26 2732r23 2763r26 2819r26 2854r23 2882r24 -. 2984r23 3005r23 3035r24 3111r24 3252r64 3265r23 3301r24 3386r23 3401r23 -. 3445r24 3533r23 3590r23 3653r24 3725r24 3796r23 3836r24 3930r24 4001r27 -. 4062r25 4105r24 4196r24 4284r24 4362r24 4455r23 4481r23 4507r23 4572r23 -. 4639r23 4684r23 4742r23 4801r63 4810r64 4823r23 4856r23 4885r23 4920r23 -. 4968r23 5008r23 5073r23 5144r23 5190r23 5230r23 5290r23 5331r23 5372r23 -. 5411r23 5602r29 5625r29 5643r29 5661r29 5683r24 -37n8*Error_No_Error{36E9} 64r8 53|53r19 78r22 178r22 197r22 416r16 488r22 -. 513r22 554r19 564r16 571r16 704r16 771r19 796r19 843r19 891r19 1051r19 -. 1081r19 1131r19 1144r19 1164r22 1208r19 1218r16 1564r19 1629r19 1635r19 -. 1687r19 1863r16 1876r16 1905r19 1941r19 1953r16 1981r16 2044r25 2080r16 -. 2158r19 2201r22 2345r25 2360r22 2559r19 2682r19 2723r19 2846r16 2867r22 -. 2961r25 2992r19 3018r22 3248r19 3257r16 3290r16 3393r16 3706r19 3778r19 -. 3822r22 3903r31 3917r19 3987r16 4054r22 4093r22 4342r22 4469r22 4497r22 -. 4558r19 4626r19 4676r19 4729r16 4792r16 4806r16 4815r16 4848r16 4873r19 -. 4911r16 4953r16 4987r22 5054r22 5132r16 5173r22 5215r19 5273r16 5316r16 -. 5354r30 5394r25 5476r19 5607r25 5630r25 5648r25 5666r25 5787r22 -38n8*Error_Not_Big_Enough{36E9} 65r8 -39n8*Error_Bad_Access{36E9} 66r8 53|170r22 534r16 550r19 642r19 873r19 1155r19 -. 1608r22 1652r19 1897r19 1923r19 2003r19 2063r19 2119r19 2188r19 2272r22 -. 2831r19 3367r28 3408r19 3511r28 3941r19 4015r19 4300r19 4430r28 4461r19 -. 4488r19 4691r19 4749r19 5025r22 5088r22 5449r22 5714r19 5742r19 5791r22 -40n8*Error_Would_Block{36E9} 67r8 53|709r19 1590r22 1789r31 1795r31 1854r31 -. 2970r22 5634r41 5652r47 5669r25 -41n8*Error_Busy{36E9} 68r8 53|2204r22 -42n8*Error_Child{36E9} 69r8 53|801r19 -43n8*Error_Would_Fault{36E9} 70r8 53|70r22 113r22 226r22 303r19 779r25 880r19 -. 923r19 1102r19 1184r19 1248r19 1330r22 1622r28 1808r28 1901r19 1937r19 -. 2008r22 2109r19 2180r19 2236r19 2308r22 2392r19 2450r19 2524r19 2591r19 -. 2647r19 2705r19 2779r19 2977r19 3047r22 3138r22 3145r25 3315r22 3459r22 -. 3546r19 3603r19 3716r19 3788r19 3921r19 3938r22 4012r22 4070r22 4124r22 -. 4215r22 4352r19 4378r22 4563r19 4631r19 4866r19 4898r22 4931r19 5099r25 -. 5245r19 5305r19 5339r19 5380r19 5481r19 5710r19 -44n8*Error_File_Too_Big{36E9} 71r8 53|331r28 3631r28 -45n8*Error_Invalid_ID{36E9} 72r8 -46n8*Error_Invalid_Value{36E9} 73r8 53|75r22 247r28 272r28 325r28 358r25 -. 426r16 524r16 557r19 647r22 655r22 854r19 888r19 1161r22 1569r19 1692r19 -. 1867r16 1931r22 2012r22 2048r46 2074r22 2148r28 2750r25 2841r22 2870r22 -. 2997r16 3024r16 3419r22 3568r28 3577r25 3625r28 3641r25 3709r19 3816r25 -. 3872r22 3912r28 3992r19 4089r28 4345r22 4494r19 4551r31 4584r22 4649r22 -. 4659r22 4733r16 4797r16 4876r19 4905r22 4958r16 4993r22 5064r16 5137r16 -. 5180r19 5218r19 5278r16 5321r16 5362r16 5402r16 5486r19 5611r48 5633r41 -. 5651r42 -47n8*Error_IO{36E9} 74r8 53|2161r19 2363r22 2562r19 2685r19 3428r55 5614r48 -48n8*Error_Is_Directory{36E9} 75r8 53|5610r48 -49n8*Error_File_Loop{36E9} 76r8 53|5616r48 -50n8*Error_Too_Many_Files{36E9} 77r8 53|183r22 847r22 1205r19 1727r25 2720r19 -. 2966r25 -51n8*Error_String_Too_Long{36E9} 78r8 53|117r22 1254r19 2115r19 2184r19 2242r19 -. 2396r19 2454r19 2597r19 2785r19 3051r22 3319r22 3463r22 4382r22 -52n8*Error_No_Entity{36E9} 79r8 53|139r25 1000r28 2265r22 2348r25 3083r25 -. 3360r28 3504r28 4423r28 5734r19 -53n8*Error_No_Memory{36E9} 80r8 53|529r16 2047r46 3906r31 4472r22 5057r22 -. 5176r22 -54n8*Error_Not_Implemented{36E9} 81r8 53|3427r55 5612r48 -55n8*Error_Not_Connected{36E9} 82r8 53|3781r19 3825r22 -56n8*Error_Not_A_TTY{36E9} 83r8 53|1106r19 1134r19 -57n8*Error_Not_Supported{36E9} 84r8 53|2863r22 2903r22 4706r25 4775r25 -58n8*Error_Bad_Permissions{36E9} 85r8 53|2827r19 3283r25 4669r25 4841r25 -. 5615r48 -59n8*Error_Read_Only_FS{36E9} 86r8 53|5613r48 -60n8*Error_Invalid_Seek{36E9} 87r8 53|421r16 4980r19 -61n8*Error_Bad_Search{36E9} 88r8 53|4655r22 -62n8*Error_Bad_File{36E9} 89r8 53|131r25 200r22 230r22 307r19 384r19 516r22 -. 933r22 983r28 1009r19 1067r22 1075r22 1272r25 1711r19 2258r25 2311r22 2409r25 -. 2467r25 2488r19 2500r22 2519r19 2612r25 2642r19 2740r22 2804r25 2860r22 -. 2899r22 3064r25 3330r25 3343r28 3474r25 3487r28 3550r19 3607r19 3665r22 -. 3737r22 3803r22 4128r22 4219r22 4306r22 4313r22 4393r25 4406r28 4935r19 -. 4977r19 5240r19 5300r19 -92N4*AT_FDCWD 53|6016r19 -93N4*AT_EMPTY_PATH 53|930r21 3326r21 3470r21 4389r21 -94N4*AT_SYMLINK_NOFOLLOW 53|998r42 3081r39 3358r42 3502r42 4421r42 -95N4*AT_EACCESS 53|3089r21 -98U14*Sys_Exit 99>8 100<8 101<8 53|46b14 55l8 55t16 -99m8 Code{19|84M9} 53|47b8 54r60 -100m8 Returned{19|84M9} 53|48b8 52m7 -101e8 Errno{36E9} 53|49b8 53m7 -104U14*Arch_PRCtl 105>8 106>8 107<8 108<8 53|57b14 80l8 80t18 -105m8 Code{19|84M9} 53|58b8 71r13 72r49 -106m8 Argument{19|84M9} 53|59b8 65r60 -107m8 Returned{19|84M9} 53|60b8 69m10 74m10 77m10 -108e8 Errno{36E9} 53|61b8 70m10 75m10 78m10 -111N4*O_RDONLY 53|95r60 -112N4*O_WRONLY 53|96r60 -113N4*O_APPEND 53|98r60 -114N4*O_CLOEXEC 53|94r60 -115N4*O_NOFOLLOW 53|97r60 -116N4*O_NONBLOCK 53|99r60 1189r48 1758r46 1760r35 -117U14*Open 118>8 119>8 120>8 121>8 122<8 123<8 53|82b14 185l8 185t12 -118m8 Dir_FD{19|84M9} 53|83b8 128r43 -119m8 Path_Addr{19|84M9} 53|84b8 90r66 -120m8 Path_Len{19|84M9} 53|85b8 111r54 115r13 125r39 -121m8 Flags{19|84M9} 53|86b8 94r50 95r50 96r50 97r50 98r50 99r50 -122m8 Returned{19|84M9} 53|87b8 112m10 116m10 130m13 138m13 169m10 179m10 -. 182m10 -123e8 Errno{36E9} 53|88b8 113m10 117m10 131m13 139m13 170m10 178m10 183m10 -126U14*Close 127>8 128<8 129<8 53|187b14 202l8 202t13 -127m8 File_D{19|84M9} 53|188b8 194r48 195r55 -128m8 Returned{19|84M9} 53|189b8 196m10 199m10 -129e8 Errno{36E9} 53|190b8 197m10 200m10 -132U14*Read 133>8 134>8 135>8 136<8 137<8 53|204b14 280l8 280t12 -133m8 File_D{19|84M9} 53|205b8 215r68 -134m8 Buffer{19|84M9} 53|206b8 211r64 -135m8 Count{19|84M9} 53|207b8 224r53 232r13 235r32 -136m8 Returned{19|84M9} 53|208b8 225m10 229m10 248m19 256m55 259m69 264m69 -. 269m69 273m16 277m55 -137e8 Errno{36E9} 53|209b8 226m10 230m10 247m19 256m65 260m34 265m34 270m34 -. 272m16 277m65 -140U14*Write 141>8 142>8 143>8 144<8 145<8 53|282b14 366l8 366t13 -141m8 File_D{19|84M9} 53|283b8 293r68 -142m8 Buffer{19|84M9} 53|284b8 289r64 -143m8 Count{19|84M9} 53|285b8 302r53 310r13 313r32 -144m8 Returned{19|84M9} 53|286b8 304m10 308m10 326m19 332m19 341m69 345m69 -. 350m69 355m69 359m16 363m55 -145e8 Errno{36E9} 53|287b8 303m10 307m10 325m19 331m19 342m41 346m41 351m34 -. 356m34 358m16 363m65 -148N4*SEEK_SET 53|401r21 -149N4*SEEK_CURRENT 53|403r21 -150N4*SEEK_END 53|405r21 -151U14*Seek 152>8 153>8 154>8 155<8 156<8 53|368b14 429l8 429t12 -152m8 File_D{19|84M9} 53|369b8 382r31 -153m8 Offset{19|84M9} 53|370b8 402r41 404r62 406r62 -154m8 Whence{19|84M9} 53|371b8 400r18 -155m8 Returned{19|84M9} 53|372b8 385m10 417m7 422m7 427m7 -156e8 Errno{36E9} 53|373b8 384m10 416m7 421m7 426m7 -159N4*PROT_NONE 53|5807r14 -160N4*PROT_READ 53|5812r42 -161N4*PROT_WRITE 53|5813r42 -162N4*PROT_EXEC 53|5814r42 -163N4*MAP_PRIVATE -164N4*MAP_SHARED -165N4*MAP_FIXED 53|466r24 -166N4*MAP_ANON 53|479r21 -167N4*MAP_NORESERVE -168U14*Mmap 169>8 170>8 171>8 172>8 173>8 174>8 175<8 176<8 53|431b14 537l8 -. 537t12 -169m8 Hint{19|84M9} 53|432b8 444r66 453r14 465r10 -170m8 Length{19|84M9} 53|433b8 454r14 455r13 458r42 469r67 474r59 483r47 -. 506r32 -171m8 Protection{19|84M9} 53|434b8 441r64 -172m8 Flags{19|84M9} 53|435b8 466r14 479r11 -173m8 File_D{19|84M9} 53|436b8 494r34 -174m8 Offset{19|84M9} 53|437b8 504r32 -175m8 Returned{19|84M9} 53|438b8 489m13 514m13 517m13 525m7 530m7 536m7 -176e8 Errno{36E9} 53|439b8 488m13 513m13 516m13 524m7 529m7 534m7 -179U14*Munmap 180>8 181>8 182<8 183<8 53|539b14 560l8 560t14 -180m8 Address{19|84M9} 53|540b8 547r70 -181m8 Length{19|84M9} 53|541b8 553r52 -182m8 Returned{19|84M9} 53|542b8 552m10 555m10 558m10 -183e8 Errno{36E9} 53|543b8 550m10 554m10 557m10 -186U14*Get_PID 186<23 186<51 53|562b14 566l8 566t15 -186m23 Returned{19|84M9} 53|562b23 565m7 -186e51 Errno{36E9} 53|562b51 564m7 -189U14*Get_PPID 189<24 189<52 53|568b14 573l8 573t16 -189m24 Returned{19|84M9} 53|568b24 572m7 -189e52 Errno{36E9} 53|568b52 571m7 -192U14*Exec 193>8 194>8 195>8 196>8 197>8 198>8 199<8 200<8 53|575b14 614l8 -. 614t12 -193m8 Path_Addr{19|84M9} 53|576b8 595r24 -194m8 Path_Len{19|84M9} 53|577b8 596r24 -195m8 Argv_Addr{19|84M9} 53|578b8 597r24 -196m8 Argv_Len{19|84M9} 53|579b8 598r24 -197m8 Envp_Addr{19|84M9} 53|580b8 599r24 -198m8 Envp_Len{19|84M9} 53|581b8 600r24 -199m8 Returned{19|84M9} 53|582b8 612m10 -200e8 Errno{36E9} 53|583b8 603m24 -203N4*CLONE_PARENT 53|638r51 -204N4*CLONE_THREAD 53|639r51 -205U14*Clone 206>8 207>8 208>8 209>8 210>8 211>8 212>8 213>8 214<8 215<8 -. 53|616b14 711l8 711t13 -206m8 Callback{19|84M9} 53|617b8 664r45 -207m8 Call_Arg{19|84M9} 53|618b8 628r28 -208m8 Stack{19|84M9} 53|619b8 666r28 -209m8 Flags{19|84M9} 53|620b8 638r41 639r41 -210m8 TLS_Addr{19|84M9} 53|621b8 667r28 -211m8 Cluster{19|84M9} 53|622b8 646r13 668r56 690r54 -212r8 GP_State{8|22R15} 53|623b8 687r26 -213a8 FP_State{8|23A15} 53|624b8 688r26 -214m8 Returned{19|84M9} 53|625b8 644m10 648m10 656m13 705m7 710m7 -215e8 Errno{36E9} 53|626b8 642m10 647m10 655m13 704m7 709m7 -218N4*WNOHANG 53|720r61 -219N4*WIFEXITED 53|787r27 -220N4*WIFSIGNALED 53|785r27 -221U14*Wait 222>8 223>8 224>8 225<8 226<8 53|713b14 803l8 803t12 -222m8 Waited_PID{19|84M9} 53|714b8 733r10 754r55 -223m8 Exit_Addr{19|84M9} 53|714b20 718r65 -224m8 Options{19|84M9} 53|714b31 720r49 -225m8 Returned{19|84M9} 53|715b8 772m7 780m13 797m7 802m7 -226e8 Errno{36E9} 53|716b8 771m7 779m13 796m7 801m7 -229N4*AF_INET 53|819r15 -230N4*AF_INET6 53|820r15 -231N4*AF_UNIX 53|821r15 -232N4*SOCK_DGRAM 53|827r15 5264r29 -233N4*SOCK_RAW 53|828r15 5266r29 -234N4*SOCK_STREAM 53|826r15 5262r29 -235N4*SOCK_SEQPACKET -236N4*SOCK_NONBLOCK 53|832r52 2888r59 -237N4*SOCK_CLOEXEC 53|842r27 2887r59 -238N4*SOCK_CLOFORK 53|2889r59 -239U14*Socket 240>8 241>8 242<8 243<8 53|805b14 856l8 856t14 -240m8 Domain{19|84M9} 53|806b8 818r12 -241m8 DataType{19|84M9} 53|807b8 825r12 832r39 842r14 -242m8 Returned{19|84M9} 53|808b8 838m53 838r53 841r19 848m10 855m7 -243e8 Errno{36E9} 53|809b8 843m10 847m10 854m7 -246U14*Set_Hostname 247>8 248>8 249<8 250<8 53|858b14 894l8 894t20 -247m8 Address{19|84M9} 53|859b8 867r63 -248m8 Length{19|84M9} 53|860b8 866r55 879r49 -249m8 Returned{19|84M9} 53|861b8 875m10 881m10 889m10 892m10 -250e8 Errno{36E9} 53|862b8 873m10 880m10 888m10 891m10 -253R9*Time_Spec 256e15 273r23 274r23 275r23 972r21 973r21 53|3136r50 3162r17 -. 3846r43 3880r20 3936r49 3948r17 4008r52 4009r52 4022r24 4023r24 4376r55 -. 4438r45 -254m7*Seconds{19|84M9} 53|953m38 954m38 955m38 969m38 970m38 971m38 3164r58 -. 3901r49 3955m31 3958m31 3966m31 3969m31 3977r31 4028r30 4036r54 4050m20 -. 4079m67 4080m66 4084m44 4085m67 4444r46 4446r46 -255m7*Nanoseconds{19|84M9} 53|953m52 954m52 955m52 969m52 970m52 971m52 3165r35 -. 3901r63 3955m45 3958m45 3966m45 3969m45 3977r45 4029r30 4037r41 4051m20 -. 4080m37 4081m35 4085m38 4086m36 4445r46 4447r46 -257N4*Stat_IFIFO 53|947r37 -258N4*Stat_IFCHR 53|1045r47 -259N4*Stat_IFDIR 53|1041r47 2413r23 -260N4*Stat_IFBLK 53|1047r47 -261N4*Stat_IFREG 53|1039r47 -262N4*Stat_IFLNK 53|1043r47 -263N4*Stat_ISOCK 53|963r37 -264R9*Stat 278e14 279r8 294r8 53|917r20 920r54 -265m7*Device_Number{19|84M9} 280r7 53|945m20 961m20 1016m11 -266m7*Inode_Number{19|84M9} 281r7 53|946m20 962m20 1017m11 -267m7*Mode{19|81M9} 282r7 53|947m20 963m20 1018m11 1039m22 1039r39 1041m22 -. 1041r39 1043m22 1043r39 1045m22 1045r39 1047m22 1047r39 -268m7*Number_Links{19|81M9} 283r7 53|948m20 964m20 1019m11 -269m7*UID{19|81M9} 284r7 53|949m20 965m20 1020m11 -270m7*GID{19|81M9} 285r7 53|950m20 966m20 1021m11 -271m7*Inner_Device{19|84M9} 286r7 53|951m20 967m20 1022m11 -272m7*File_Size{19|84M9} 287r7 53|952m20 968m20 1023m11 -273r7*Access_Time{253R9} 288r7 53|953m20 969m20 1024m11 -274r7*Modify_Time{253R9} 289r7 53|954m20 970m20 1027m11 -275r7*Create_Time{253R9} 290r7 53|955m20 971m20 1030m11 -276m7*Block_Size{19|84M9} 291r7 53|956m20 972m20 1033m11 -277m7*Block_Count{19|84M9} 292r7 53|957m20 973m20 1034m11 -295U14*FStat 296>8 297>8 298>8 299>8 300>8 301<8 302<8 53|896b14 1053l8 1053t13 -296m8 Dir_FD{19|84M9} 53|897b8 931r39 981r41 -297m8 Path_Addr{19|84M9} 53|898b8 909r66 -298m8 Path_Len{19|84M9} 53|899b8 921r54 978r42 -299m8 Stat_Addr{19|84M9} 53|900b8 907r66 -300m8 Flags{19|84M9} 53|901b8 930r11 998r32 -301m8 Returned{19|84M9} 53|902b8 924m10 934m13 984m16 1001m16 1010m10 1052m7 -302e8 Errno{36E9} 53|903b8 923m10 933m13 983m16 1000m16 1009m10 1051m7 -305U14*Chdir 306>8 307<8 308<8 53|1055b14 1083l8 1083t13 -306m8 FD{19|84M9} 53|1056b8 1061r63 -307m8 Returned{19|84M9} 53|1057b8 1068m10 1076m10 1082m7 -308e8 Errno{36E9} 53|1058b8 1067m10 1075m10 1081m7 -311U14*IOCTL 312>8 313>8 314>8 315<8 316<8 53|1085b14 1137l8 1137t13 -312m8 FD{19|84M9} 53|1086b8 1096r64 -313m8 Request{19|84M9} 53|1087b8 1117r32 1123r54 1125r57 -314m8 Argument{19|84M9} 53|1088b8 1092r65 -315m8 Returned{19|84M9} 53|1089b8 1103m10 1107m10 1132m10 1135m10 -316e8 Errno{36E9} 53|1090b8 1102m10 1106m10 1131m10 1134m10 -319U14*Sched_Yield 319<27 319<55 53|1139b14 1145l8 1145t19 -319m27 Returned{19|84M9} 53|1139b27 1143m7 -319e55 Errno{36E9} 53|1139b55 1144m7 -322U14*Delete_Thread_Cluster 323>8 324<8 325<8 53|1147b14 1167l8 1167t29 -323m8 Cluster{19|84M9} 53|1148b8 1158r13 1159r58 -324m8 Returned{19|84M9} 53|1149b8 1157m10 1162m10 1165m10 -325e8 Errno{36E9} 53|1150b8 1155m10 1161m10 1164m10 -328U14*Pipe 329>8 330>8 331<8 332<8 53|1169b14 1211l8 1211t12 -329m8 Result_Addr{19|84M9} 53|1170b8 1175r60 -330m8 Flags{19|84M9} 53|1171b8 1189r38 -331m8 Returned{19|84M9} 53|1172b8 1185m10 1206m10 1209m10 -332e8 Errno{36E9} 53|1173b8 1184m10 1205m10 1208m10 -335U14*Get_UID 335<23 335<51 53|1213b14 1220l8 1220t15 -335m23 Returned{19|84M9} 53|1213b23 1219m7 -335e51 Errno{36E9} 53|1213b51 1218m7 -338N4*RENAME_NOREPLACE 53|1239r50 -339U14*Rename 340>8 341>8 342>8 343>8 344>8 345>8 346>8 347<8 348<8 53|1222b14 -. 1280l8 1280t14 -340m8 Source_FD{19|84M9} 53|1223b8 1266r38 -341m8 Source_Addr{19|84M9} 53|1224b8 1235r65 -342m8 Source_Len{19|84M9} 53|1225b8 1245r53 1251r13 1260r38 -343m8 Target_FD{19|84M9} 53|1226b8 1267r38 -344m8 Target_Addr{19|84M9} 53|1227b8 1237r65 -345m8 Target_Len{19|84M9} 53|1228b8 1246r53 1252r13 1262r38 -346m8 Flags{19|84M9} 53|1229b8 1239r40 -347m8 Returned{19|84M9} 53|1230b8 1249m10 1255m10 1273m13 1278m40 -348e8 Errno{36E9} 53|1231b8 1248m10 1254m10 1272m13 1278m50 -351N4*SC_PAGESIZE 53|1298r15 -352N4*SC_OPEN_MAX 53|1300r15 -353N4*SC_HOST_NAME_MAX 53|1302r15 -354N4*SC_AVPHYS_PAGES 53|1304r15 -355N4*SC_PHYS_PAGES 53|1307r15 -356N4*SC_NPROCESSORS_ONLN 53|1310r15 -357N4*SC_TOTAL_PAGES 53|1312r15 -358N4*SC_LIST_PROCS 53|1336r15 -359N4*SC_LIST_MOUNTS 53|1363r15 -360N4*SC_UNAME 53|1400r15 -361N4*SC_CHILD_MAX 53|1315r15 -362N4*SC_LIST_THREADS 53|1419r15 -363N4*SC_LIST_CLUSTERS 53|1446r15 -364N4*SC_LIST_NETINTER 53|1473r15 -365N4*SC_DUMPLOGS 53|1500r15 -366N4*SC_NGROUPS_MAX 53|1317r15 -367N4*SC_SYMLOOP_MAX 53|1319r15 -368N4*SC_LIST_FILELOCKS 53|1509r15 -369N4*SC_LOADAVG 53|1530r15 -370N4*SC_MEMINFO 53|1540r15 -371N4*SC_FAILURE_POLICIES -373N4*PROC_IS_TRACED 53|1354r60 -374N4*PROC_EXITED 53|1357r60 -375R9*Proc_Info 382e15 383r54 -376a7*Identifier{string} 53|1347m23 -377m7*Id_Len{19|73M9} 53|1348m23 -378m7*Parent_PID{19|73M9} 53|1349m23 -379m7*Process_PID{19|73M9} 53|1350m23 -380m7*UID{19|81M9} 53|1351m23 -381m7*Flags{19|81M9} 53|1352m23 1354m32 1354r51 1357m32 1357r51 -383A9*Proc_Info_Arr(375R9) 53|1340r24 -385R9*Mount_Info 401e14 402r55 53|1366r38 -386m7*FS_Type{19|81M9} 53|1374m46 1375m46 1376m46 -387m7*Flags{19|81M9} 53|1378m28 -388a7*Source{string} 53|1381m32 -389m7*Source_Len{19|81M9} 53|1382m41 -390a7*Location{string} 53|1385m32 -391m7*Location_Len{19|81M9} 53|1386m41 -392m7*Block_Size{19|84M9} 53|1387m55 -393m7*Fragment_Size{19|84M9} 53|1388m58 -394m7*Size_In_Frags{19|84M9} 53|1389m49 -395m7*Free_Blocks{19|84M9} 53|1393m43 1395m43 -396m7*Free_BlocksU{19|84M9} 53|1393m65 1395m65 -397m7*Inode_Count{19|84M9} 53|1390m56 -398m7*Free_Inodes{19|84M9} -399m7*Free_InodesU{19|84M9} -400m7*Max_File_Name{19|84M9} 53|1391m55 -402A9*Mount_Info_Arr(385R9) 53|1367r24 -404R9*UTS_Name 410e14 53|1402r27 -405a7*System_Name{string} 53|1408m20 -406a7*Node_Name{string} 53|1405m45 1406m20 -407a7*Release{string} 53|1410m20 -408a7*Version{string} 53|1412m20 -409a7*Machine{string} 53|1414m20 -412R9*Thread_Info 417e15 418r56 53|1422r38 1449r38 -413m7*Thread_Id{19|73M9} 53|1431m23 -414m7*Niceness{19|73M9} 53|1432m23 1437m30 1439m30 -415m7*Cluster_Id{19|73M9} 53|1433m23 -416m7*Process_PID{19|73M9} 53|1434m23 -418A9*Thread_Info_Arr(412R9) 53|1423r23 -420R9*Cluster_Info 424e15 425r57 -421m7*Cluster_Id{19|73M9} 53|1457m23 -422m7*Cluster_Fl{19|73M9} 53|1458m23 1462m33 1464m33 1467m30 1467r52 -423m7*Cluster_Q{19|73M9} 53|1459m23 -425A9*Cluster_Info_Arr(420R9) 53|1450r22 -427N4*NETINTR_BLOCKED 53|1487r39 -429R9*Interface_Info 437e15 438r54 53|1476r38 -430a7*Name{string} 53|1484m56 1485m27 -431m7*Flags{19|84M9} 53|1487m30 1489m30 -432a7*MAC{37|22A9} 53|1491m27 -433a7*IPv4{37|23A9} 53|1492m27 -434a7*IPv4_Subnet{37|23A9} 53|1493m27 -435a7*IPv6{37|24A9} 53|1494m27 -436a7*IPv6_Subnet{37|24A9} 53|1495m27 -438A9*Interface_Arr(429R9) 53|1477r23 -440R9*Flock_Info 447e14 448r55 53|1512r38 -441m7*PID{19|81M9} 53|1519m27 -442m7*Mode{19|81M9} 53|1520m27 -443m7*Start{19|84M9} 53|1521m27 -444m7*Length{19|84M9} 53|1522m27 -445m7*FS{19|84M9} 53|1523m27 -446m7*Ino{19|84M9} 53|1525m27 -448A9*Flock_Info_Arr(440R9) 53|1513r23 -450A9*Load_Arr(19|81M9) 53|1532r22 -452R9*Mem_Info 460e14 53|1542r30 -453m7*Phys_Total{19|84M9} 53|1550m20 -454m7*Phys_Available{19|84M9} 53|1551m20 -455m7*Phys_Free{19|84M9} 53|1552m20 -456m7*Shared_Usage{19|84M9} 53|1553m20 -457m7*Kernel_Usage{19|84M9} 53|1554m20 -458m7*Table_Usage{19|84M9} 53|1555m20 -459m7*Poison_Usage{19|84M9} 53|1556m20 -462U14*Sysconf 463>8 464>8 465>8 466<8 467<8 53|1282b14 1571l8 1571t15 -463m8 Request{19|84M9} 53|1283b8 1297r12 1335r12 -464m8 Addr{19|84M9} 53|1284b8 1291r61 -465m8 Length{19|84M9} 53|1285b8 1329r49 1339r28 1366r28 1422r28 1449r28 1476r28 -. 1502r45 1512r28 1534r19 -466m8 Returned{19|84M9} 53|1286b8 1331m10 1565m7 1570m7 -467e8 Errno{36E9} 53|1287b8 1330m10 1564m7 1569m7 -470U14*Spawn 471>8 472>8 473>8 474>8 475>8 476>8 477>8 478<8 479<8 53|1573b14 -. 1631l8 1631t13 -471m8 Path_Addr{19|84M9} 53|1574b8 1598r24 -472m8 Path_Len{19|84M9} 53|1575b8 1599r24 -473m8 Argv_Addr{19|84M9} 53|1576b8 1600r24 -474m8 Argv_Len{19|84M9} 53|1577b8 1601r24 -475m8 Envp_Addr{19|84M9} 53|1578b8 1602r24 -476m8 Envp_Len{19|84M9} 53|1579b8 1603r24 -477m8 Caps_Addr{19|84M9} 53|1580b8 1613r10 1616r67 -478m8 Returned{19|84M9} 53|1581b8 1591m10 1609m10 1623m16 1630m7 -479e8 Errno{36E9} 53|1582b8 1590m10 1606m24 1608m10 1622m16 1629m7 -482U14*Get_TID 482<23 482<51 53|1633b14 1637l8 1637t15 -482m23 Returned{19|84M9} 53|1633b23 1636m7 -482e51 Errno{36E9} 53|1633b51 1635m7 -485N4*SCHED_RR 53|1462r47 1660r21 -486N4*SCHED_COOP 53|1464r47 1662r24 -487N4*SCHED_INTR 53|1467r66 1679r53 -488U14*Manage_Thread_Cluster 489>8 490>8 491>8 492>8 493<8 494<8 53|1639b14 -. 1694l8 1694t29 -489m8 Cluster{19|84M9} 53|1640b8 1656r13 1668r10 1671r46 -490m8 Flags{19|84M9} 53|1641b8 1660r11 1662r14 1679r43 -491m8 Quantum{19|84M9} 53|1642b8 1679r32 -492m8 Percentage{19|84M9} 53|1643b8 1683r45 -493m8 Returned{19|84M9} 53|1644b8 1654m10 1688m7 1693m7 -494e8 Errno{36E9} 53|1645b8 1652m10 1687m7 1692m7 -497N4*F_DUPFD 53|1718r15 -498N4*F_DUPFD_CLOEXEC 53|1718r25 1725r48 -499N4*F_GETFD 53|1730r15 -500N4*F_SETFD 53|1738r15 -501N4*F_GETFL 53|1743r15 -502N4*F_SETFL 53|1759r15 -503N4*F_GETPIPE_SZ 53|1775r15 -504N4*F_SETPIPE_SZ 53|1784r15 -505N4*F_GETLK 53|1801r15 1817r29 -506N4*F_SETLK 53|1801r25 -507N4*F_SETLKW 53|1801r35 1848r52 -509N4*FD_CLOEXEC 53|1733r40 1741r31 -510N4*FD_CLOFORK 53|1736r40 1742r31 -512N4*F_RDLCK -513N4*F_UNLCK 53|1827r40 1831r39 -514N4*F_WRLCK 53|1815r41 -516R9*Flock_Data 522e14 53|1804r23 -517m7*Lock_Type{19|73M9} 53|1815r29 1827m27 1831r27 -518m7*Whence{19|73M9} -519m7*Start{19|84M9} 53|1821m44 1835r47 1844r47 -520m7*Length{19|84M9} 53|1822m44 1836r47 1845r47 -521m7*PID{19|81M9} 53|1814r47 1829m24 -524U14*Fcntl 525>8 526>8 527>8 528<8 529<8 53|1696b14 1871l8 1871t13 -525m8 FD{19|84M9} 53|1697b8 1705r70 1731r33 1740r23 -526m8 Command{19|84M9} 53|1698b8 1717r12 1725r38 1817r19 1848r42 -527m8 Argument{19|84M9} 53|1699b8 1721r59 1741r18 1742r18 1760r22 1787r62 -. 1793r62 1803r69 -528m8 Returned{19|84M9} 53|1700b8 1715m7 1723m16 1733m16 1733r28 1736m16 -. 1736r28 1758m13 1778m62 1778r62 1780m62 1780r62 1870m7 -529e8 Errno{36E9} 53|1701b8 1711m10 1727m16 1789m22 1795m22 1808m19 1854m22 -. 1863m7 1867m7 -532U14*Exit_Thread 532<27 532<55 53|1873b14 1881l8 1881t19 -532m27 Returned{19|84M9} 53|1873b27 1877m7 -532e55 Errno{36E9} 53|1873b55 1876m7 -535U14*Get_Random 536>7 537>7 538<7 539<7 53|1883b14 1908l8 1908t18 -536m7 Address{19|84M9} 53|1884b7 1891r62 -537m7 Length{19|84M9} 53|1885b7 1893r63 1900r52 -538m7 Returned{19|84M9} 53|1886b7 1899m10 1902m10 1906m10 -539e7 Errno{36E9} 53|1887b7 1897m10 1901m10 1905m10 -542U14*MProtect 543>7 544>7 545>7 546<7 547<7 53|1910b14 1944l8 1944t16 -543m7 Address{19|84M9} 53|1911b7 1920r70 1928r14 -544m7 Length{19|84M9} 53|1912b7 1929r14 1936r53 -545m7 Protection{19|84M9} 53|1913b7 1919r68 -546m7 Returned{19|84M9} 53|1914b7 1925m10 1932m10 1938m10 1942m10 -547e7 Errno{36E9} 53|1915b7 1923m10 1931m10 1937m10 1941m10 -550N4*MAC_CAP_SCHED 53|1965r56 5904r54 -551N4*MAC_CAP_SPAWN 53|1966r56 5905r54 -552N4*MAC_CAP_ENTROPY 53|1967r56 5906r54 -553N4*MAC_CAP_SYS_MEM 53|1968r56 5907r54 -554N4*MAC_CAP_USE_NET 53|1969r56 5908r54 -555N4*MAC_CAP_SYS_NET 53|1970r56 5909r54 -556N4*MAC_CAP_SYS_MNT 53|1971r56 5910r54 -557N4*MAC_CAP_SYS_PWR 53|1972r56 5911r54 -558N4*MAC_CAP_PTRACE 53|1973r56 5912r54 -559N4*MAC_CAP_SETUID 53|1974r56 5913r54 -560N4*MAC_CAP_SYS_MAC 53|1975r56 5914r54 -561N4*MAC_CAP_CLOCK 53|1976r56 5915r54 -562N4*MAC_CAP_SIGNALALL 53|1977r54 5916r54 -563N4*MAC_CAP_SETGID 53|1978r56 5917r54 -564N4*MAC_CAP_IPC 53|1979r56 5918r54 -565U14*Set_MAC_Capabilities 566>8 567<8 568<8 53|1946b14 1955l8 1955t28 -566m8 Bits{19|84M9} 53|1947b8 1952r61 -567m8 Returned{19|84M9} 53|1948b8 1954m7 -568e8 Errno{36E9} 53|1949b8 1953m7 -571U14*Get_MAC_Capabilities 572<8 573<8 53|1957b14 1983l8 1983t28 -572m8 Returned{19|84M9} 53|1958b8 1982m7 -573e8 Errno{36E9} 53|1959b8 1981m7 -576N4*MAC_PERM_CONTENTS 53|2018r43 -577N4*MAC_PERM_READ 53|2019r43 -578N4*MAC_PERM_WRITE 53|2020r43 -579N4*MAC_PERM_EXEC 53|2021r43 -580N4*MAC_PERM_APPEND 53|2022r43 -581N4*MAC_PERM_FLOCK 53|2023r43 -582U14*Add_MAC_Permissions 583>8 584>8 585>8 586<8 587<8 53|1985b14 2052l8 -. 2052t27 -583m8 Path_Addr{19|84M9} 53|1986b8 1994r64 -584m8 Path_Len{19|84M9} 53|1987b8 2007r51 2011r13 2028r39 -585m8 Flags{19|84M9} 53|1988b8 2018r33 2019r33 2020r33 2021r33 2022r33 2023r33 -586m8 Returned{19|84M9} 53|1989b8 2005m10 2009m10 2013m10 2035m42 2045m13 -. 2051m7 -587e8 Errno{36E9} 53|1990b8 2003m10 2008m10 2012m10 2035m52 2044m13 2047m37 -. 2048m37 -590N4*MAC_DENY 53|2070r15 -591N4*MAC_DENY_AND_SCREAM 53|2071r15 -592N4*MAC_KILL 53|2072r15 -593U14*Set_MAC_Enforcement 594>8 595<8 596<8 53|2054b14 2082l8 2082t27 -594m8 Action{19|84M9} 53|2055b8 2069r12 -595m8 Returned{19|84M9} 53|2056b8 2065m10 2075m13 2081m7 -596e8 Errno{36E9} 53|2057b8 2063m10 2074m13 2080m7 -599N4*MNT_EXT 53|1375r57 2145r21 -600N4*MNT_FAT 53|1376r57 2146r21 -601N4*MNT_DEV 53|1374r57 -602N4*MS_RDONLY 53|2100r60 -603N4*MS_REMOUNT 53|2101r60 -604N4*MS_RELATIME 53|2102r60 -605U14*Mount 606>8 607>8 608>8 609>8 610>8 611>8 612<8 613<8 53|2084b14 2164l8 -. 2164t13 -606m8 Source_Addr{19|84M9} 53|2085b8 2096r66 -607m8 Source_Len{19|84M9} 53|2086b8 2106r53 2112r13 2126r41 -608m8 Target_Addr{19|84M9} 53|2087b8 2097r66 -609m8 Target_Len{19|84M9} 53|2088b8 2107r53 2113r13 2128r41 -610m8 FSType{19|84M9} 53|2089b8 2144r18 -611m8 Flags{19|84M9} 53|2090b8 2100r50 2101r50 2102r50 -612m8 Returned{19|84M9} 53|2091b8 2110m10 2116m10 2121m10 2149m19 2159m10 -. 2162m10 -613e8 Errno{36E9} 53|2092b8 2109m10 2115m10 2119m10 2148m19 2158m10 2161m10 -616N4*MNT_FORCE 53|2177r51 -617U14*Umount 618>8 619>8 620>8 621<8 622<8 53|2166b14 2209l8 2209t14 -618m8 Path_Addr{19|84M9} 53|2167b8 2175r66 -619m8 Path_Len{19|84M9} 53|2168b8 2179r54 2183r13 2196r42 -620m8 Flags{19|84M9} 53|2169b8 2177r41 -621m8 Returned{19|84M9} 53|2170b8 2181m10 2185m10 2190m10 2202m13 2205m13 -622e8 Errno{36E9} 53|2171b8 2180m10 2184m10 2188m10 2201m13 2204m13 -625U14*Readlink 626>8 627>8 628>8 629>8 630>8 631<8 632<8 53|2211b14 2282l8 -. 2282t16 -626m8 Dir_FD{19|84M9} 53|2212b8 2255r38 -627m8 Path_Addr{19|84M9} 53|2213b8 2222r67 -628m8 Path_Len{19|84M9} 53|2214b8 2233r54 2239r13 2249r41 -629m8 Buffer_Addr{19|84M9} 53|2215b8 2223r67 -630m8 Buffer_Len{19|84M9} 53|2216b8 2234r56 2240r13 2251r39 -631m8 Returned{19|84M9} 53|2217b8 2237m10 2243m10 2257m13 2266m13 2274m13 -. 2280m61 -632e8 Errno{36E9} 53|2218b8 2236m10 2242m10 2258m13 2265m13 2272m13 2280m71 -635N4*DT_FIFO -636N4*DT_CHR 53|2340r52 -637N4*DT_DIR 53|2338r52 -638N4*DT_BLK 53|2341r52 -639N4*DT_LNK 53|2339r52 -640N4*DT_REG 53|2337r52 -641R9*Dirent 647e15 648r8 655r52 53|2296r62 2329r33 2330r32 2344r50 -642m7*D_Ino{19|84M9} 649r7 53|2328m20 -643m7*D_Off{19|84M9} 650r7 53|2329m20 -644m7*D_Reclen{19|73M9} 651r7 53|2330m20 -645m7*D_Type{19|70M9} 652r7 53|2331m20 2335m41 -646a7*D_Name{string} 653r7 53|2332m20 2333m41 -655A9*Dirents(641R9)<19|84M9> 53|2301r20 -656U14*GetDEnts 657>8 658>8 659>8 660<8 661<8 53|2284b14 2353l8 2353t16 -657m8 FD{19|84M9} 53|2285b8 2299r69 -658m8 Buffer_Addr{19|84M9} 53|2286b8 2294r65 -659m8 Buffer_Len{19|84M9} 53|2287b8 2296r48 2306r54 -660m8 Returned{19|84M9} 53|2288b8 2307m10 2310m10 2344m13 2347m13 -661e8 Errno{36E9} 53|2289b8 2308m10 2311m10 2345m13 2348m13 -664U14*Sync 664<20 664<48 53|2355b14 2366l8 2366t12 -664m20 Returned{19|84M9} 53|2355b20 2361m10 2364m10 -664e48 Errno{36E9} 53|2355b48 2360m10 2363m10 -667U14*MakeNode 668>8 669>8 670>8 671>8 672>8 673<8 674<8 53|2368b14 2431l8 -. 2431t16 -668m8 Dir_FD{19|84M9} 53|2369b8 2406r38 -669m8 Path_Addr{19|84M9} 53|2370b8 2381r66 -670m8 Path_Len{19|84M9} 53|2371b8 2391r54 2395r13 2402r39 -671m8 Mode{19|84M9} 53|2372b8 2386r53 2413r14 -672m8 Dev{19|84M9} 53|2373b8 2377r28 -673m8 Returned{19|84M9} 53|2374b8 2393m10 2397m10 2408m13 2429m39 -674e8 Errno{36E9} 53|2375b8 2392m10 2396m10 2409m13 2429m49 -677U14*Unlink 678>8 679>8 680>8 681<8 682<8 53|2433b14 2474l8 2474t14 -678m8 Dir_FD{19|84M9} 53|2434b8 2464r43 -679m8 Path_Addr{19|84M9} 53|2435b8 2442r65 -680m8 Path_Len{19|84M9} 53|2436b8 2449r54 2453r13 2460r39 -681m8 Returned{19|84M9} 53|2437b8 2451m10 2455m10 2466m13 2472m40 -682e8 Errno{36E9} 53|2438b8 2450m10 2454m10 2467m13 2472m50 -685U14*Truncate 686>8 687>8 688<8 689<8 53|2476b14 2503l8 2503t16 -686m8 FD{19|84M9} 53|2477b8 2483r66 -687m8 New_Size{19|84M9} 53|2478b8 2497r52 -688m8 Returned{19|84M9} 53|2479b8 2489m10 2498m43 2501m13 -689e8 Errno{36E9} 53|2480b8 2488m10 2498m53 2500m13 -692R9*SockAddr_In 697e15 53|2532r23 2655r23 2920r26 3683r23 3755r23 4145r29 -. 4236r29 -693m7*Sin_Family{19|81M9} -694m7*Sin_Port{19|73M9} 53|2537r55 2660r55 2926m66 3686m46 3758m46 4152r66 -. 4243r66 -695m7*Padding{19|73M9} -696a7*Sin_Addr{37|23A9} 53|2536r33 2659r33 2925m44 3685m51 3757m50 4151r44 -. 4242r44 -698R9*SockAddr_In6 705e15 53|2541r23 2664r23 2931r26 3690r23 3762r23 4157r29 -. 4248r29 -699m7*Sin6_Family{19|81M9} -700m7*Sin6_Port{19|73M9} 53|2546r55 2669r55 2937m66 3693m46 3765m46 4164r66 -. 4255r66 -701m7*Padding{19|73M9} -702m7*Sin6_FlowInfo{19|81M9} -703a7*Sin6_Addr{37|24A9} 53|2545r33 2668r33 2936m44 3692m51 3764m50 4163r44 -. 4254r44 -704m7*Sin6_Scope_ID{19|81M9} -706R9*SockAddr_UNIX 710e15 -707m7*Sun_Family{19|81M9} -708m7*Length{19|81M9} -709m7*Path{41|67M9} -711U14*Bind 712>8 713>8 714>8 715<8 716<8 53|2505b14 2565l8 2565t12 -712m8 Sock_FD{19|84M9} 53|2506b8 2513r64 -713m8 Addr_Addr{19|84M9} 53|2507b8 2514r65 -714m8 Addr_Len{19|84M9} 53|2508b8 2522r70 -715m8 Returned{19|84M9} 53|2509b8 2520m10 2525m10 2560m10 2563m10 -716e8 Errno{36E9} 53|2510b8 2519m10 2524m10 2559m10 2562m10 -719U14*Symlink 720>8 721>8 722>8 723>8 724>8 725>8 726<8 727<8 53|2567b14 -. 2626l8 2626t15 -720m8 Dir_FD{19|84M9} 53|2568b8 2609r38 -721m8 Path_Addr{19|84M9} 53|2569b8 2579r66 -722m8 Path_Len{19|84M9} 53|2570b8 2588r54 2594r13 2603r41 -723m8 Target_Addr{19|84M9} 53|2571b8 2581r66 -724m8 Target_Len{19|84M9} 53|2572b8 2589r54 2595r13 2605r39 -725m8 Mode{19|84M9} 53|2573b8 2621r39 -726m8 Returned{19|84M9} 53|2574b8 2592m10 2598m10 2611m13 2624m40 -727e8 Errno{36E9} 53|2575b8 2591m10 2597m10 2612m13 2624m50 -730U14*Connect 731>8 732>8 733>8 734<8 735<8 53|2628b14 2688l8 2688t15 -731m8 Sock_FD{19|84M9} 53|2629b8 2636r64 -732m8 Addr_Addr{19|84M9} 53|2630b8 2637r65 -733m8 Addr_Len{19|84M9} 53|2631b8 2645r70 -734m8 Returned{19|84M9} 53|2632b8 2643m10 2648m10 2683m10 2686m10 -735e8 Errno{36E9} 53|2633b8 2642m10 2647m10 2682m10 2685m10 -738U14*Open_PTY 739>8 740<8 741<8 53|2690b14 2726l8 2726t16 -739m8 Result_Addr{19|84M9} 53|2691b8 2695r64 -740m8 Returned{19|84M9} 53|2692b8 2706m10 2721m10 2724m10 -741e8 Errno{36E9} 53|2693b8 2705m10 2720m10 2723m10 -744U14*FSync 745>8 746>8 747<8 748<8 53|2728b14 2753l8 2753t13 -745m8 FD{19|84M9} 53|2729b8 2735r63 -746m8 Flags{19|84M9} 53|2730b8 2736r47 -747m8 Returned{19|84M9} 53|2731b8 2741m10 2748m40 2751m13 -748e8 Errno{36E9} 53|2732b8 2740m10 2748m50 2750m13 -751U14*Link 752>8 753>8 754>8 755>8 756>8 757>8 758<8 759<8 53|2755b14 2811l8 -. 2811t12 -752m8 Source_Dir{19|84M9} 53|2756b8 2797r38 -753m8 Source_Addr{19|84M9} 53|2757b8 2767r65 -754m8 Source_Len{19|84M9} 53|2758b8 2776r53 2782r13 2791r38 -755m8 Desto_Dir{19|84M9} 53|2759b8 2798r38 -756m8 Desto_Addr{19|84M9} 53|2760b8 2769r65 -757m8 Desto_Len{19|84M9} 53|2761b8 2777r53 2783r13 2793r39 -758m8 Returned{19|84M9} 53|2762b8 2780m10 2786m10 2803m13 2809m40 -759e8 Errno{36E9} 53|2763b8 2779m10 2785m10 2804m13 2809m50 -762N4*PTRACE_SYSCALL_PIPE 53|2838r15 -763U14*PTrace 764>8 765>8 766>8 767>8 768<8 769<8 53|2813b14 2848l8 2848t14 -764m8 Request{19|84M9} 53|2814b8 2837r12 -765m8 Traced_PID{19|84M9} 53|2815b8 2824r50 -766m8 Traced_Addr{19|84M9} 53|2816b8 2821r28 -767m8 Result_Addr{19|84M9} 53|2817b8 2839r52 -768m8 Returned{19|84M9} 53|2818b8 2828m10 2833m10 2842m13 2847m7 -769e8 Errno{36E9} 53|2819b8 2827m10 2831m10 2841m13 2846m7 -772U14*Listen 773>8 774>8 775<8 776<8 53|2850b14 2874l8 2874t14 -773m8 Sock_FD{19|84M9} 53|2851b8 2857r63 -774m8 Backlog{19|84M9} 53|2852b8 2866r60 -775m8 Returned{19|84M9} 53|2853b8 2861m10 2864m10 2868m13 2871m13 -776e8 Errno{36E9} 53|2854b8 2860m10 2863m10 2867m13 2870m13 -779U14*Sys_Accept 780>8 781>8 782>8 783>8 784<8 785<8 53|2876b14 2979l8 2979t18 -780m8 Sock_FD{19|84M9} 53|2877b8 2886r64 -781m8 Addr_Addr{19|84M9} 53|2878b8 2890r64 -782m8 Addr_Len{19|84M9} 53|2879b8 2892r64 -783m8 Flags{19|84M9} 53|2880b8 2887r49 2888r49 2889r49 -784m8 Returned{19|84M9} 53|2881b8 2900m10 2904m10 2962m13 2967m13 2971m10 -. 2978m7 -785e8 Errno{36E9} 53|2882b8 2899m10 2903m10 2961m13 2966m13 2970m10 2977m7 -788N4*RLIMIT_CORE 53|5928r15 -789N4*RLIMIT_CPU 53|5929r15 -790N4*RLIMIT_FSIZE 53|5930r15 -791N4*RLIMIT_NOFILE 53|5931r15 -792N4*RLIMIT_STACK 53|5932r15 -793N4*RLIMIT_AS 53|5933r15 -794U14*Get_RLimit 795>8 796<8 797<8 53|2981b14 2999l8 2999t18 -795m8 Limit{19|84M9} 53|2982b8 2990r30 -796m8 Returned{19|84M9} 53|2983b8 2993m10 2998m7 -797e8 Errno{36E9} 53|2984b8 2992m10 2997m7 -800U14*Set_RLimit 801>8 802>8 803<8 804<8 53|3001b14 3026l8 3026t18 -801m8 Limit{19|84M9} 53|3002b8 3010r30 -802m8 Data{19|84M9} 53|3003b8 3015r44 -803m8 Returned{19|84M9} 53|3004b8 3019m13 3025m7 -804e8 Errno{36E9} 53|3005b8 3018m13 3024m7 -807N4*F_OK 53|3096r36 -808N4*R_OK 53|3097r36 -809N4*W_OK 53|3098r36 -810N4*X_OK 53|3099r36 -811U14*FAccess 812>8 813>8 814>8 815>8 816>8 817<8 818<8 53|3028b14 3103l8 -. 3103t15 -812m8 Dir_FD{19|84M9} 53|3029b8 3062r38 -813m8 Path_Addr{19|84M9} 53|3030b8 3039r65 -814m8 Path_Len{19|84M9} 53|3031b8 3046r54 3050r13 3059r39 -815m8 Mode{19|84M9} 53|3032b8 3096r27 3097r27 3098r27 3099r27 -816m8 Flags{19|84M9} 53|3033b8 3081r29 3089r11 -817m8 Returned{19|84M9} 53|3034b8 3048m10 3052m10 3065m13 3084m13 3102m34 -818e8 Errno{36E9} 53|3035b8 3047m10 3051m10 3064m13 3083m13 3102m44 -821N4*POLLIN 53|3214r51 3215r61 -822N4*POLLOUT 53|3217r52 3218r61 -823N4*POLLPRI 53|3220r55 3221r61 -824N4*POLLHUP 53|3227r61 -825N4*POLLERR 53|3224r61 -826N4*POLLNVAL 53|3179r40 -827R9*Poll_FD 831e15 832r53 53|3125r61 -828m7*FD{19|81M9} 53|3172r27 3177r60 -829m7*Events{19|73M9} 53|3214r40 3217r41 3220r44 -830m7*Out_Events{19|73M9} 53|3169m23 3179m26 3215m26 3215r47 3218m26 3218r47 -. 3221m26 3221r47 3224m26 3224r47 3227m26 3227r47 3231r26 -832A9*Poll_FDs(827R9)<19|84M9> 53|3161r17 -833U14*PPoll 834>8 835>8 836>8 837>8 838<8 839<8 53|3105b14 3250l8 3250t13 -834m8 FDs_Addr{19|84M9} 53|3106b8 3119r65 -835m8 FDs_Count{19|84M9} 53|3107b8 3125r48 3161r32 -836m8 Timeout{19|84M9} 53|3108b8 3121r65 -837m8 Sigmask{19|84M9} 53|3109b8 3123r65 -838m8 Returned{19|84M9} 53|3110b8 3139m10 3146m13 3249m7 -839e8 Errno{36E9} 53|3111b8 3138m10 3145m13 3248m7 -842U14*Get_EUID 842<24 842<52 53|3252b14 3259l8 3259t16 -842m24 Returned{19|84M9} 53|3252b24 3258m7 -842e52 Errno{36E9} 53|3252b52 3257m7 -845U14*Set_UIDs 846>8 847>8 848<8 849<8 53|3261b14 3292l8 3292t16 -846m8 UID{19|84M9} 53|3262b8 3274r13 3275r58 -847m8 EUID{19|84M9} 53|3263b8 3271r13 3272r68 3279r13 3280r16 3281r71 -848m8 Returned{19|84M9} 53|3264b8 3284m16 3291m7 -849e8 Errno{36E9} 53|3265b8 3283m16 3290m7 -852U14*Fchmod 853>8 854>8 855>8 856>8 857>8 858<8 859<8 53|3294b14 3381l8 -. 3381t14 -853m8 Dir_FD{19|84M9} 53|3295b8 3327r39 3341r41 -854m8 Path_Addr{19|84M9} 53|3296b8 3305r66 -855m8 Path_Len{19|84M9} 53|3297b8 3314r54 3318r13 3338r42 -856m8 Mode{19|84M9} 53|3298b8 3378r32 -857m8 Flags{19|84M9} 53|3299b8 3326r11 3358r32 -858m8 Returned{19|84M9} 53|3300b8 3316m10 3320m10 3331m13 3344m16 3361m16 -. 3368m16 3380m34 -859e8 Errno{36E9} 53|3301b8 3315m10 3319m10 3330m13 3343m16 3360m16 3367m16 -. 3380m44 -862U14*Umask 863>8 864<8 865<8 53|3383b14 3395l8 3395t13 -863m8 Mode{19|84M9} 53|3384b8 3392r43 -864m8 Returned{19|84M9} 53|3385b8 3394m7 -865e8 Errno{36E9} 53|3386b8 3393m7 -867N4*RB_HALT 53|3415r15 -868N4*RB_POWEROFF 53|3416r15 -869N4*RB_RESTART 53|3417r15 -870N4*RB_ERROR_RET 53|3404r48 -871U14*Reboot 872>8 873>8 874<8 875<8 53|3397b14 3435l8 3435t14 -872m8 Command{19|84M9} 53|3398b8 3414r12 -873m8 Flags{19|84M9} 53|3399b8 3404r38 -874m8 Returned{19|84M9} 53|3400b8 3410m10 3420m13 3430m10 -875e8 Errno{36E9} 53|3401b8 3408m10 3419m13 3427m46 3428m46 -878U14*Fchown 879>8 880>8 881>8 882>8 883>8 884>8 885<8 886<8 53|3437b14 -. 3525l8 3525t14 -879m8 Dir_FD{19|84M9} 53|3438b8 3471r39 3485r41 -880m8 Path_Addr{19|84M9} 53|3439b8 3449r66 -881m8 Path_Len{19|84M9} 53|3440b8 3458r54 3462r13 3482r42 -882m8 User{19|84M9} 53|3441b8 3521r24 -883m8 Group{19|84M9} 53|3442b8 3522r24 -884m8 Flags{19|84M9} 53|3443b8 3470r11 3502r32 -885m8 Returned{19|84M9} 53|3444b8 3460m10 3464m10 3475m13 3488m16 3505m16 -. 3512m16 3524m34 -886e8 Errno{36E9} 53|3445b8 3459m10 3463m10 3474m13 3487m16 3504m16 3511m16 -. 3524m44 -889U14*PRead 890>8 891>8 892>8 893>8 894<8 895<8 53|3527b14 3582l8 3582t13 -890m8 File_D{19|84M9} 53|3528b8 3539r68 -891m8 Buffer{19|84M9} 53|3529b8 3535r64 -892m8 Count{19|84M9} 53|3530b8 3545r53 3553r13 3556r32 -893m8 Offset{19|84M9} 53|3531b8 3572r61 -894m8 Returned{19|84M9} 53|3532b8 3547m10 3551m10 3569m19 3574m69 3578m16 -895e8 Errno{36E9} 53|3533b8 3546m10 3550m10 3568m19 3575m41 3577m16 -898U14*PWrite 899>8 900>8 901>8 902>8 903<8 904<8 53|3584b14 3646l8 3646t14 -899m8 File_D{19|84M9} 53|3585b8 3596r68 -900m8 Buffer{19|84M9} 53|3586b8 3592r64 -901m8 Count{19|84M9} 53|3587b8 3602r53 3610r13 3613r32 -902m8 Offset{19|84M9} 53|3588b8 3628r22 3636r62 -903m8 Returned{19|84M9} 53|3589b8 3604m10 3608m10 3626m19 3632m19 3638m69 -. 3642m16 -904e8 Errno{36E9} 53|3590b8 3603m10 3607m10 3625m19 3631m19 3639m41 3641m16 -906U14*Get_Sock_Name 907>8 908>8 909>8 910<8 911<8 53|3648b14 3718l8 3718t21 -907m8 Sock_FD{19|84M9} 53|3649b8 3657r65 -908m8 Addr_Addr{19|84M9} 53|3650b8 3658r66 -909m8 Addr_Len{19|84M9} 53|3651b8 3660r66 -910m8 Returned{19|84M9} 53|3652b8 3666m10 3707m10 3710m10 3717m7 -911e8 Errno{36E9} 53|3653b8 3665m10 3706m10 3709m10 3716m7 -913U14*Get_Peer_Name 914>8 915>8 916>8 917<8 918<8 53|3720b14 3790l8 3790t21 -914m8 Sock_FD{19|84M9} 53|3721b8 3729r65 -915m8 Addr_Addr{19|84M9} 53|3722b8 3730r66 -916m8 Addr_Len{19|84M9} 53|3723b8 3732r66 -917m8 Returned{19|84M9} 53|3724b8 3738m10 3779m10 3782m10 3789m7 -918e8 Errno{36E9} 53|3725b8 3737m10 3778m10 3781m10 3788m7 -920N4*SHUT_RD 53|3809r15 -921N4*SHUT_RDWR 53|3813r15 -922N4*SHUT_WR 53|3811r15 -923U14*Shutdown 924>8 925>8 926<8 927<8 53|3792b14 3828l8 3828t16 -924m8 Sock_FD{19|84M9} 53|3793b8 3799r63 -925m8 How{19|84M9} 53|3794b8 3808r12 -926m8 Returned{19|84M9} 53|3795b8 3804m10 3817m13 3823m10 3826m10 -927e8 Errno{36E9} 53|3796b8 3803m10 3816m13 3822m10 3825m10 -930N4*FUTEX_WAIT 53|3900r18 -931N4*FUTEX_WAKE 53|3908r18 -933R9*Futex_Item 937e14 938r55 53|3845r52 -934m7*Address{19|84M9} 53|3885r46 -935m7*Expected{19|81M9} 53|3895r62 -936m7*Flags{19|81M9} -938A9*Futex_Item_Arr(933R9) 53|3879r20 -939U14*Futex 940>8 941>8 942>8 943>8 944<8 945<8 53|3830b14 3923l8 3923t13 -940m8 Operation{19|84M9} 53|3831b8 3899r15 -941m8 Address{19|84M9} 53|3832b8 3840r61 -942m8 Count{19|84M9} 53|3833b8 3845r43 3871r13 3878r49 -943m8 Timeout{19|84M9} 53|3834b8 3842r61 -944m8 Returned{19|84M9} 53|3835b8 3873m10 3902m19 3905m19 3911m16 3916m7 -. 3922m7 -945e8 Errno{36E9} 53|3836b8 3872m10 3903m19 3906m19 3912m16 3917m7 3921m7 -948N4*CLOCK_REALTIME 53|3956r24 3967r24 3975r24 -949N4*CLOCK_MONOTONIC 53|3953r24 3964r24 4031r27 4041r27 -950N4*CLOCK_GETRES 53|3951r18 -951N4*CLOCK_GETTIME 53|3962r18 -952N4*CLOCK_SETTIME 53|3973r18 -953U14*Clock 954>8 955>8 956>8 957<8 958<8 53|3925b14 3993l8 3993t13 -954m8 Operation{19|84M9} 53|3926b8 3950r15 -955m8 Clock_ID{19|84M9} 53|3927b8 3952r21 3963r21 3974r21 -956m8 Address{19|84M9} 53|3928b8 3934r60 -957m8 Returned{19|84M9} 53|3929b8 3937m10 3943m10 3986m7 3991m7 -958e8 Errno{36E9} 53|3930b8 3938m10 3941m10 3987m7 3992m7 -961N4*TIMER_ABSTIME 53|4027r24 -962U14*Clock_Nanosleep 963>8 964>8 965>8 966>8 967<8 968<8 53|3995b14 4056l8 -. 4056t23 -963m8 Clock_ID{19|84M9} 53|3996b8 4031r16 4041r16 -964m8 Flags{19|84M9} 53|3997b8 4027r14 -965m8 Request_Addr{19|84M9} 53|3998b8 4005r63 -966m8 Remain_Addr{19|84M9} 53|3999b8 4006r63 -967m8 Returned{19|84M9} 53|4000b8 4011m10 4017m10 4053m10 -968e8 Errno{36E9} 53|4001b8 4012m10 4015m10 4054m10 -971R9*RUsage 974e14 53|4068r49 4075r18 -972r7*User_Time{253R9} 53|4080m56 4081m25 4085m57 4086m26 -973r7*System_Time{253R9} 53|4079m55 4080m25 4084m32 4085m26 -976N4*RUSAGE_SELF 53|4078r18 -977N4*RUSAGE_CHILDREN 53|4082r18 -978U14*Get_RUsage 979>8 980>8 981<8 982<8 53|4058b14 4095l8 4095t18 -979m8 Who{19|84M9} 53|4059b8 4077r15 -980m8 Usage_Addr{19|84M9} 53|4060b8 4066r60 -981m8 Returned{19|84M9} 53|4061b8 4069m10 4088m16 4092m10 -982e8 Errno{36E9} 53|4062b8 4070m10 4089m16 4093m10 -984U14*RecvFrom 985>8 986>8 987>8 988>8 989>8 990>8 991<8 992<8 53|4097b14 -. 4186l8 4186t16 -985m8 Sock_FD{19|84M9} 53|4098b8 4115r68 -986m8 Buffer{19|84M9} 53|4099b8 4109r64 -987m8 Count{19|84M9} 53|4100b8 4120r53 4130r13 4133r32 -988m8 Flags{19|84M9} 53|4101b8 4107r28 -989m8 Addr_Addr{19|84M9} 53|4102b8 4111r69 -990m8 Addr_Len{19|84M9} 53|4103b8 4121r67 -991m8 Returned{19|84M9} 53|4104b8 4123m10 4127m10 4184m62 -992e8 Errno{36E9} 53|4105b8 4124m10 4128m10 4184m72 -994U14*SendTo 995>8 996>8 997>8 998>8 999>8 1000>8 1001<8 1002<8 53|4188b14 -. 4277l8 4277t14 -995m8 Sock_FD{19|84M9} 53|4189b8 4206r68 -996m8 Buffer{19|84M9} 53|4190b8 4200r64 -997m8 Count{19|84M9} 53|4191b8 4211r53 4221r13 4224r32 -998m8 Flags{19|84M9} 53|4192b8 4198r28 -999m8 Addr_Addr{19|84M9} 53|4193b8 4202r69 -1000m8 Addr_Len{19|84M9} 53|4194b8 4212r67 -1001m8 Returned{19|84M9} 53|4195b8 4214m10 4218m10 4275m62 -1002e8 Errno{36E9} 53|4196b8 4215m10 4219m10 4275m72 -1004N4*NETINTER_SET_BLOCK 53|4319r15 -1005N4*NETINTER_SET_STATIC_IP4 53|4324r15 -1006N4*NETINTER_SET_STATIC_IP6 53|4330r15 -1007R9*Addr4_NetInterface 1010e15 53|4296r13 -1008a7*IP{37|23A9} 53|4329r28 -1009a7*Sub{37|23A9} 53|4329r36 -1011R9*Addr6_NetInterface 1014e15 53|4297r13 -1012a7*IP{37|24A9} 53|4335r28 -1013a7*Sub{37|24A9} 53|4335r36 -1015U14*Config_NetInterface 1016>8 1017>8 1018>8 1019<8 1020<8 53|4279b14 -. 4353l8 4353t27 -1016m8 InterDev{19|84M9} 53|4280b8 4288r64 -1017m8 Operation{19|84M9} 53|4281b8 4318r12 -1018m8 Arg_Addr{19|84M9} 53|4282b8 4289r65 -1019m8 Returned{19|84M9} 53|4283b8 4302m10 4305m10 4312m10 4341m10 4344m10 -. 4351m7 -1020e8 Errno{36E9} 53|4284b8 4300m10 4306m10 4313m10 4342m10 4345m10 4352m7 -1022U14*UTimes 1023>8 1024>8 1025>8 1026>8 1027>8 1028<8 1029<8 53|4355b14 -. 4451l8 4451t14 -1023m8 Dir_FD{19|84M9} 53|4356b8 4390r39 4404r41 -1024m8 Path_Addr{19|84M9} 53|4357b8 4366r66 -1025m8 Path_Len{19|84M9} 53|4358b8 4375r54 4381r13 4401r42 -1026m8 Time_Addr{19|84M9} 53|4359b8 4367r66 -1027m8 Flags{19|84M9} 53|4360b8 4389r11 4421r32 -1028m8 Returned{19|84M9} 53|4361b8 4379m10 4383m10 4394m13 4407m16 4424m16 -. 4431m16 4449m37 -1029e8 Errno{36E9} 53|4362b8 4378m10 4382m10 4393m13 4406m16 4423m16 4430m16 -. 4449m47 -1031U14*Create_TCluster 1032<8 1033<8 53|4453b14 4475l8 4475t23 -1032m8 Returned{19|84M9} 53|4454b8 4463m10 4470m10 4473m10 -1033e8 Errno{36E9} 53|4455b8 4461m10 4469m10 4472m10 -1035U14*Switch_TCluster 1036>8 1037>8 1038<8 1039<8 53|4477b14 4500l8 4500t23 -1036m8 Cluster{19|84M9} 53|4478b8 4484r50 -1037m8 Thread{19|84M9} 53|4479b8 4485r50 -1038m8 Returned{19|84M9} 53|4480b8 4490m10 4495m10 4498m10 -1039e8 Errno{36E9} 53|4481b8 4488m10 4494m10 4497m10 -1041N4*SIG_BLOCK 53|4544r21 -1042N4*SIG_UNBLOCK 53|4548r21 -1043N4*SIG_SETMASK 53|4546r21 -1044U14*Sigprocmask 1045>8 1046>8 1047>8 1048<8 1049<8 53|4502b14 4565l8 -. 4565t19 -1045m8 How{19|84M9} 53|4503b8 4543r18 -1046m8 Set_Addr{19|84M9} 53|4504b8 4515r62 -1047m8 Old_Addr{19|84M9} 53|4505b8 4516r62 -1048m8 Returned{19|84M9} 53|4506b8 4552m19 4559m7 4564m7 -1049e8 Errno{36E9} 53|4507b8 4551m19 4558m7 4563m7 -1051N4*SIG_ERR -1052N4*SIG_IGN 53|4616r21 -1053N4*SIG_DFL 53|4614r21 -1054R9*Sigaction_Info 1058e14 53|4590r54 4596r19 4605r54 4611r19 -1055m7*Handler{41|67M9} 53|4600m51 4613r34 4621r57 -1056m7*Mask{19|84M9} 53|4599m17 -1057m7*Flags{19|81M9} 53|4598m17 -1059U14*Sigaction 1060>8 1061>8 1062>8 1063<8 1064<8 53|4567b14 4633l8 4633t17 -1060m8 Signal{19|84M9} 53|4568b8 4582r25 -1061m8 Act_Addr{19|84M9} 53|4569b8 4576r62 -1062m8 Old_Addr{19|84M9} 53|4570b8 4577r62 -1063m8 Returned{19|84M9} 53|4571b8 4585m10 4627m7 4632m7 -1064e8 Errno{36E9} 53|4572b8 4584m10 4626m7 4631m7 -1066U14*Send_Signal 1067>8 1068>8 1069<8 1070<8 53|4635b14 4678l8 4678t19 -1067m8 Target{19|84M9} 53|4636b8 4642r51 -1068m8 Signal{19|84M9} 53|4637b8 4647r25 -1069m8 Returned{19|84M9} 53|4638b8 4650m10 4656m10 4660m10 4670m13 4677m7 -1070e8 Errno{36E9} 53|4639b8 4649m10 4655m10 4659m10 4669m13 4676m7 -1072N4*PRIO_PROCESS 53|4697r15 4766r15 -1073N4*PRIO_PGRP 53|4705r15 4774r15 -1074N4*PRIO_USER 53|4705r27 4774r27 -1075N4*PRIO_THREAD 53|4709r15 4778r15 -1076U14*Get_Prio 1077>8 1078>8 1079<8 1080<8 53|4680b14 4735l8 4735t16 -1077m8 Which{19|84M9} 53|4681b8 4696r12 -1078m8 Who{19|84M9} 53|4682b8 4698r16 4699r42 4710r16 4713r40 -1079m8 Returned{19|84M9} 53|4683b8 4693m10 4707m13 4724m10 4726m10 4734m7 -1080e8 Errno{36E9} 53|4684b8 4691m10 4706m13 4729m7 4733m7 -1082U14*Set_Prio 1083>8 1084>8 1085>8 1086<8 1087<8 53|4737b14 4799l8 4799t16 -1083m8 Which{19|84M9} 53|4738b8 4765r12 -1084m8 Who{19|84M9} 53|4739b8 4767r16 4768r42 4779r16 4782r40 -1085m8 Nice{19|84M9} 53|4740b8 4755r10 4756r29 4757r13 4760r63 -1086m8 Returned{19|84M9} 53|4741b8 4751m10 4776m13 4793m7 4798m7 -1087e8 Errno{36E9} 53|4742b8 4749m10 4775m13 4792m7 4797m7 -1089U14*Get_GID 1089<23 1089<51 53|4801b14 4808l8 4808t15 -1089m23 Returned{19|84M9} 53|4801b23 4807m7 -1089e51 Errno{36E9} 53|4801b51 4806m7 -1091U14*Get_EGID 1091<24 1091<52 53|4810b14 4817l8 4817t16 -1091m24 Returned{19|84M9} 53|4810b24 4816m7 -1091e52 Errno{36E9} 53|4810b52 4815m7 -1094U14*Set_GIDs 1095>8 1096>8 1097<8 1098<8 53|4819b14 4850l8 4850t16 -1095m8 GID{19|84M9} 53|4820b8 4832r13 4833r58 -1096m8 EGID{19|84M9} 53|4821b8 4829r13 4830r68 4837r13 4838r16 4839r71 -1097m8 Returned{19|84M9} 53|4822b8 4842m16 4849m7 -1098e8 Errno{36E9} 53|4823b8 4841m16 4848m7 -1101U14*Get_Groups 1102>8 1103>8 1104<8 1105<8 53|4852b14 4879l8 4879t18 -1102m8 Count{19|84M9} 53|4853b8 4862r52 -1103m8 Addr{19|84M9} 53|4854b8 4860r60 -1104m8 Returned{19|84M9} 53|4855b8 4867m10 4874m10 4877m10 -1105e8 Errno{36E9} 53|4856b8 4866m10 4873m10 4876m10 -1108U14*Set_Groups 1109>8 1110>8 1111<8 1112<8 53|4881b14 4913l8 4913t18 -1109m8 Count{19|84M9} 53|4882b8 4891r52 4894r10 -1110m8 Addr{19|84M9} 53|4883b8 4889r60 4894r24 -1111m8 Returned{19|84M9} 53|4884b8 4899m13 4906m13 4912m7 -1112e8 Errno{36E9} 53|4885b8 4898m13 4905m13 4911m7 -1115U14*TTY_Name 1116>8 1117>8 1118>8 1119<8 1120<8 53|4915b14 4960l8 4960t16 -1116m8 FD{19|84M9} 53|4916b8 4926r64 -1117m8 Addr{19|84M9} 53|4917b8 4924r65 -1118m8 Length{19|84M9} 53|4918b8 4928r37 4930r49 4947r22 -1119m8 Returned{19|84M9} 53|4919b8 4932m10 4936m10 4946m45 4946r45 4947r10 -. 4951r21 4954m7 4959m7 -1120e8 Errno{36E9} 53|4920b8 4931m10 4935m10 4953m7 4958m7 -1123N4*POSIX_FADV_NORMAL 53|4985r15 -1124N4*POSIX_FADV_SEQUENTIAL 53|4985r35 -1125N4*POSIX_FADV_NOREUSE 53|4985r59 -1126N4*POSIX_FADV_DONTNEED 53|4989r15 -1127N4*POSIX_FADV_WILLNEED 53|4986r15 -1128N4*POSIX_FADV_RANDOM 53|4986r37 -1129U14*FAdvise 1130>8 1131>8 1132>8 1133>8 1134<8 1135<8 53|4962b14 5001l8 -. 5001t15 -1130m8 FD{19|84M9} 53|4963b8 4973r64 -1131m8 Offset{19|84M9} 53|4964b8 4970r28 -1132m8 Length{19|84M9} 53|4965b8 4971r28 -1133m8 Advice{19|84M9} 53|4966b8 4984r12 -1134m8 Returned{19|84M9} 53|4967b8 4988m13 4991m39 5000m7 -1135e8 Errno{36E9} 53|4968b8 4977m10 4980m10 4987m13 4991m49 4993m13 -1137N4*SHM_RDONLY 53|5016r43 -1138N4*SHM_RND 53|5034r24 -1139U14*SHMAt 1140>8 1141>8 1142>8 1143<8 1144<8 53|5003b14 5066l8 5066t13 -1140m8 ID{19|84M9} 53|5004b8 5012r56 -1141m8 Addr{19|84M9} 53|5005b8 5033r10 5035r40 5036r17 5039r22 -1142m8 Flags{19|84M9} 53|5006b8 5016r33 5034r14 -1143m8 Returned{19|84M9} 53|5007b8 5026m13 5055m13 5058m13 5065m7 -1144e8 Errno{36E9} 53|5008b8 5025m13 5054m13 5057m13 5064m7 -1146R9*IPC_Perms 1154e14 1157r20 -1147m7*IPC_Perm_Key{19|81M9} 53|5118m33 -1148m7*UID{19|81M9} 53|5110r45 5119m33 -1149m7*GID{19|81M9} 53|5111r45 5120m33 -1150m7*CUID{19|81M9} 53|5121m33 -1151m7*CGID{19|81M9} 53|5122m33 -1152m7*Mode{19|81M9} 53|5112r58 5123m33 -1153m7*IPC_Perm_Seq{19|81M9} -1156R9*SHMID_DS 1165e14 53|5098r55 5105r23 -1157r7*SHM_Perm{1146R9} 53|5110r36 5111r36 5112r49 5118m24 5119m24 5120m24 -. 5121m24 5122m24 5123m24 -1158m7*SHM_SegSz{19|84M9} 53|5124m24 -1159m7*SHM_ATime{19|84M9} -1160m7*SHM_DTime{19|84M9} -1161m7*SHM_CTime{19|84M9} -1162m7*SHM_CPID{19|81M9} -1163m7*SHM_LPID{19|81M9} -1164m7*SHM_NAttch{19|84M9} 53|5125m24 -1167N4*IPC_RMID 53|5095r15 -1168N4*IPC_SET 53|5097r15 5107r25 -1169N4*IPC_STAT 53|5097r25 -1170U14*SHMCtl 1171>8 1172>8 1173>8 1174<8 1175<8 53|5068b14 5139l8 5139t14 -1171m8 ID{19|84M9} 53|5069b8 5075r55 -1172m8 CMD{19|84M9} 53|5070b8 5094r12 5107r19 -1173m8 Buffer{19|84M9} 53|5071b8 5078r65 -1174m8 Returned{19|84M9} 53|5072b8 5089m13 5100m16 5133m7 5138m7 -1175e8 Errno{36E9} 53|5073b8 5088m13 5099m16 5132m7 5137m7 -1177U14*SHMDt 1178>8 1179<8 1180<8 53|5141b14 5183l8 5183t13 -1178m8 Address{19|84M9} 53|5142b8 5156r62 5169r60 -1179m8 Returned{19|84M9} 53|5143b8 5174m13 5177m13 5181m10 -1180e8 Errno{36E9} 53|5144b8 5173m13 5176m13 5180m10 -1182N4*IPC_PRIVATE 53|5204r16 -1183N4*IPC_CREAT 53|5207r24 -1184N4*IPC_EXCL -1185N4*IPC_NOWAIT -1186U14*SHMGet 1187>8 1188>8 1189>8 1190<8 1191<8 53|5185b14 5221l8 5221t14 -1187m8 Key{19|84M9} 53|5186b8 5194r56 5204r10 -1188m8 Size{19|84M9} 53|5187b8 5196r54 -1189m8 Flags{19|84M9} 53|5188b8 5195r38 5207r14 -1190m8 Returned{19|84M9} 53|5189b8 5216m10 5219m10 -1191e8 Errno{36E9} 53|5190b8 5215m10 5218m10 -1193N4*SOL_SOCKET 53|5242r22 5302r22 -1195N4*SO_ACCEPTCONN 53|5253r18 -1196N4*SO_ERROR 53|5255r18 -1197N4*SO_SNDBUF 53|5257r18 5310r15 -1198N4*SO_TYPE 53|5259r18 -1200U14*GetSockOpt 1201>8 1202>8 1203>8 1204>8 1205>8 1206<8 1207<8 53|5223b14 -. 5281l8 5281t18 -1201m8 Sock{19|84M9} 53|5224b8 5236r64 -1202m8 Level{19|84M9} 53|5225b8 5242r13 -1203m8 Opt{19|84M9} 53|5226b8 5252r15 -1204m8 Addr{19|84M9} 53|5227b8 5237r65 -1205m8 Len{19|84M9} 53|5228b8 5232r28 -1206m8 Returned{19|84M9} 53|5229b8 5274m7 5280m7 -1207e8 Errno{36E9} 53|5230b8 5240m10 5245m10 5273m7 5278m7 -1209U14*SetSockOpt 1210>8 1211>8 1212>8 1213>8 1214>8 1215<8 1216<8 53|5283b14 -. 5324l8 5324t18 -1210m8 Sock{19|84M9} 53|5284b8 5296r64 -1211m8 Level{19|84M9} 53|5285b8 5302r13 -1212m8 Opt{19|84M9} 53|5286b8 5309r12 -1213m8 Addr{19|84M9} 53|5287b8 5297r65 -1214m8 Len{19|84M9} 53|5288b8 5292r28 -1215m8 Returned{19|84M9} 53|5289b8 5317m7 5323m7 -1216e8 Errno{36E9} 53|5290b8 5300m10 5305m10 5316m7 5321m7 -1218U14*Get_Thread_Name 1219>8 1220>8 1221>8 1222<8 1223<8 53|5326b14 5365l8 -. 5365t23 -1219m8 TID{19|84M9} 53|5327b8 5335r71 -1220m8 Addr{19|84M9} 53|5328b8 5336r60 -1221m8 Length{19|84M9} 53|5329b8 5338r49 5341r13 5347r38 -1222m8 Returned{19|84M9} 53|5330b8 5353m13 5364m7 -1223e8 Errno{36E9} 53|5331b8 5339m10 5354m13 5362m7 -1225U14*Set_Thread_Name 1226>8 1227>8 1228>8 1229<8 1230<8 53|5367b14 5405l8 -. 5405t23 -1226m8 TID{19|84M9} 53|5368b8 5376r71 -1227m8 Addr{19|84M9} 53|5369b8 5377r60 -1228m8 Length{19|84M9} 53|5370b8 5379r49 5382r13 5388r38 -1229m8 Returned{19|84M9} 53|5371b8 5393m13 5404m7 -1230e8 Errno{36E9} 53|5372b8 5380m10 5394m13 5402m7 -1232N4*MEMORY_FAIL_PANIC 53|5429r45 5457r21 -1233N4*MEMORY_FAIL_SOFT_KILL 53|5431r45 5458r21 -1234N4*MEMORY_FAIL_HARD_KILL 53|5433r45 5459r21 -1235N4*OOM_ALLOW_PROC_KILL 53|5438r39 5463r41 -1236R9*Failure_Struct 1239e14 53|5419r18 5420r18 5425r50 5455r50 -1237m7*Memory_Failure{19|84M9} 53|5429m27 5431m27 5433m27 5456r26 -1238m7*OOM_Failure{19|84M9} 53|5438m24 5440m24 5463r25 -1241U14*Failure_Policy 1242>8 1243>8 1244<8 1245<8 53|5407b14 5488l8 5488t22 -1242m8 Old_Addr{19|84M9} 53|5408b8 5417r63 -1243m8 New_Addr{19|84M9} 53|5409b8 5418r63 -1244m8 Returned{19|84M9} 53|5410b8 5451m13 5477m7 5482m7 5487m7 -1245e8 Errno{36E9} 53|5411b8 5449m13 5476m7 5481m7 5486m7 -1249U14*Do_Exit 1249>23 1249>35 53|54s7 5490b14 5505l8 5505t15 5832s13 -1249i23 Proc{51|33I9} 53|5490b23 5500r39 5501r39 5502r39 5503r39 -1249m35 Code{19|70M9} 53|5490b35 5503r45 -1250U14*Do_Exit 1250>23 1250>35 53|5507b14 5522l8 5522t15 5579s13 -1250i23 Proc{51|33I9} 53|5507b23 5517r39 5518r39 5519r39 5520r39 -1250e35 Sig{51|82E9} 53|5507b35 5520r45 -1253U14*Pre_Syscall_Hook 1253>32 53|5524b14 5529l8 5529t24 -1253r32 State{8|22R15} 53|5524b32 5528r36 -1254U14*Post_Syscall_Hook 1254>33 53|5531b14 5536l8 5536t25 -1254r33 State{8|22R15} 53|5531b33 5534r36 -1257V13*Check_Userland_Mappability{boolean} 1258>8 1259>8 1260>8 53|474s14 -. 3866s17 3867s17 3887s20 5982b13 6006l8 6006t34 -1258p8 Map{12|43P9} 53|5983b8 5996r33 -1259m8 Addr{35|35M12} 53|5984b8 5991r10 5997r45 -1260m8 Byte_Count{19|84M9} 53|5985b8 5991r34 5998r48 -1264U14 Do_Remote_Exit 1264>30 1264>42 53|5538b14 5543l8 5543t22 -1264i30 Proc{51|33I9} 53|5538b30 5540r39 5541r39 5542r39 -1264m42 Code{19|70M9} 53|5538b42 5542r45 -1266U14 Common_Syscall_Hook 1267>8 1268>8 53|5528s7 5534s7 5545b14 5596l8 -. 5596t27 -1267i8 Thread{40|27I9} 53|5546b8 5592r45 -1268r8 State{8|22R15} 53|5547b8 5592r55 -1271U14 Translate_Status 1272>8 1273>8 1274<8 1275<8 53|255s16 341s16 1278s10 -. 2035s10 2280s10 2429s10 2472s10 2498s13 2624s10 2748s13 2809s10 3102s7 -. 3380s7 3524s7 3574s16 3638s16 4449s10 4991s13 5598b14 5619l8 5619t24 -1272e8 Status{54|234E9} 53|5599b8 5605r12 -1273m8 Success_Return{19|84M9} 53|5600b8 5608r25 -1274m8 Returned{19|84M9} 53|5601b8 5608m13 5618m7 -1275e8 Errno{36E9} 53|5602b8 5607m13 5610m39 5611m39 5612m39 5613m39 5614m39 -. 5615m39 5616m39 -1277U14 Translate_Status 1278>8 1279>8 1280<8 1281<8 53|276s16 362s16 4184s10 -. 4275s10 5621b14 5637l8 5637t24 -1278e8 Status{27|40E9} 53|5622b8 5628r12 -1279m8 Success_Return{19|84M9} 53|5623b8 5631r25 -1280m8 Returned{19|84M9} 53|5624b8 5631m13 5636m7 -1281e8 Errno{36E9} 53|5625b8 5630m13 5633m32 5634m32 -1283U14 Translate_Status 1284>8 1285>8 1286<8 1287<8 53|259s16 345s16 5639b14 -. 5655l8 5655t24 -1284e8 Status{22|106E9} 53|5640b8 5646r12 -1285m8 Success_Return{19|84M9} 53|5641b8 5649r25 -1286m8 Returned{19|84M9} 53|5642b8 5649m13 5654m7 -1287e8 Errno{36E9} 53|5643b8 5648m13 5651m33 5652m38 -1289U14 Translate_Status 1290>8 1291>8 1292<8 1293<8 53|264s16 269s16 350s16 -. 355s16 5657b14 5672l8 5672t24 -1290e8 Status{25|40E9} 53|5658b8 5664r12 -1291m8 Success_Return{19|84M9} 53|5659b8 5667r25 -1292m8 Returned{19|84M9} 53|5660b8 5667m13 5670m13 -1293e8 Errno{36E9} 53|5661b8 5666m13 5669m13 -1296U14 Exec_Into_Process 1297>8 1298>8 1299>8 1300>8 1301>8 1302>8 1303>8 -. 1304<8 1305<8 53|594s7 1597s7 5674b14 5796l8 5796t25 -1297m8 Path_Addr{19|84M9} 53|5675b8 5689r65 -1298m8 Path_Len{19|84M9} 53|5676b8 5691r42 5706r54 -1299m8 Argv_Addr{19|84M9} 53|5677b8 5701r65 -1300m8 Argv_Len{19|84M9} 53|5678b8 5707r54 5749r40 -1301m8 Envp_Addr{19|84M9} 53|5679b8 5703r65 -1302m8 Envp_Len{19|84M9} 53|5680b8 5708r54 5751r40 -1303i8 Proc{51|33I9} 53|5681b8 5688r64 5713r35 5715r40 5720r43 5721r33 5739r40 -. 5743r39 5764r45 5765r55 5767r26 5768r26 5777r29 -1304b8 Success{boolean} 53|5682b8 5711m10 5716m10 5735m10 5744m10 5788m13 -. 5792m13 -1305e8 Errno{36E9} 53|5683b8 5710m10 5714m10 5734m10 5742m10 5787m13 5791m13 -1308V13 To_String{45|19P9} 1308>24 53|5757s25 5760s24 5798b13 5803l8 5803t17 -1308m24 Addr{41|67M9} 53|5798b24 5799r61 5800r69 -1311V13 Get_Mmap_Prot{12|26R9} 1311>28 53|441s49 1919s53 5805b13 5817l8 5817t21 -1311m28 P{19|84M9} 53|5805b28 5807r10 5812r36 5813r36 5814r36 -1314U14 Execute_MAC_Failure 1314>35 1314>50 53|168s10 535s7 551s10 643s10 -. 874s10 1156s10 1653s10 1898s10 1924s10 2004s10 2064s10 2120s10 2189s10 -. 2273s13 2832s10 3409s10 3942s10 4016s10 4301s10 4462s10 4489s10 4692s10 -. 4750s10 5450s13 5715s10 5743s10 5819b14 5834l8 5834t27 -1314a35 Name{string} 53|5819b35 5829r67 5831r67 -1314i50 Curr_Proc{51|33I9} 53|5819b50 5820r66 5825r29 5832r22 -1317U14 PTY_IOCTL 1318>8 1319>8 1320>8 1321>8 1322<8 53|1123s13 1125s13 5836b14 -. 5897l8 5897t17 -1318p8 P{25|37P9} 53|5837b8 5853r34 5855r34 5857r34 5859r34 5866r45 5868r47 -. 5879r44 5881r46 5887r45 5889r47 -1319b8 Is_Primary{boolean} 53|5838b8 5865r22 5878r22 5886r22 -1320m8 Request{19|84M9} 53|5839b8 5851r12 -1321m8 Argument{41|67M9} 53|5840b8 5845r63 5846r63 5847r63 -1322b8 Success{boolean} 53|5841b8 5850m7 5871m19 5892m19 5895m13 -1325U14 Set_MAC_Capabilities 1325>36 1325>48 53|1620s16 1952s7 5899b14 5919l8 -. 5919t28 -1325i36 Proc{51|33I9} 53|5899b36 5900r61 5903r11 -1325m48 Bits{19|84M9} 53|5899b48 5904r45 5905r45 5906r45 5907r45 5908r45 -. 5909r45 5910r45 5911r45 5912r45 5913r45 5914r45 5915r45 5916r45 5917r45 -. 5918r45 -1328U14 MAC_Syscall_To_Kernel 1329>8 1330<8 1331<8 53|2990s7 3010s7 5921b14 -. 5937l8 5937t29 -1329m8 Val{19|84M9} 53|5922b8 5927r12 -1330b8 Success{boolean} 53|5923b8 5934m57 5936m7 -1331e8 Limit{48|59E9} 53|5924b8 5928m32 5929m32 5930m32 5931m32 5932m32 5933m32 -. 5934m25 -1334U14 Check_Add_File 1335>8 1336>8 1337<8 1338<8 1339>8 53|174s7 838s7 -. 1200s7 1201s7 1720s13 2713s7 2714s7 2958s10 5939b14 5955l8 5955t22 -1335i8 Process{51|33I9} 53|5940b8 5947r39 5948r34 5950r20 -1336p8 File{51|57P9} 53|5941b8 5950r29 -1337b8 Success{boolean} 53|5942b8 5950m39 5953m10 -1338i8 FD{natural} 53|5943b8 5950m35 5952m10 -1339i8 Start{natural} 53|5944b8 5950r48 -1341V13 Check_Userland_Access{boolean} 1342>8 1343>8 1344>8 53|68s14 111s14 -. 224s14 302s14 778s17 879s14 920s14 921s14 1101s14 1183s14 1245s14 1246s14 -. 1329s14 1619s16 1807s23 1900s17 2007s17 2106s14 2107s14 2179s14 2233s14 -. 2234s14 2306s14 2391s14 2449s14 2522s17 2588s14 2589s14 2645s17 2704s14 -. 2776s14 2777s14 2911s17 2912s17 3046s14 3135s14 3136s14 3144s17 3314s14 -. 3458s14 3545s14 3602s14 3668s17 3675s17 3740s17 3747s17 3863s14 3864s14 -. 3886s20 3936s14 4008s14 4009s14 4068s14 4120s14 4121s31 4211s14 4212s31 -. 4320s20 4325s20 4331s20 4375s14 4376s14 4522s17 4535s17 4590s17 4605s17 -. 4865s14 4897s17 4930s14 5098s20 5244s17 5304s17 5338s14 5379s14 5425s13 -. 5455s13 5706s14 5707s14 5708s14 5957b13 5980l8 5980t29 -1342p8 Map{12|43P9} 53|5958b8 5970r33 -1343m8 Addr{35|35M12} 53|5959b8 5971r45 -1344m8 Byte_Count{19|84M9} 53|5960b8 5968r30 -1346U14 Resolve_AT_Directive 1347>8 1348>8 1349<8 1350<8 53|128s10 981s13 -. 1266s10 1267s10 2255s10 2406s10 2464s10 2609s10 2797s10 2798s10 3062s10 -. 3341s13 3485s13 4404s13 6008b14 6028l8 6028t28 -1347i8 Proc{51|33I9} 53|6009b8 6017r27 6019r29 -1348m8 Dir_FD{19|84M9} 53|6010b8 6016r10 6019r35 -1349i8 FS{54|74I9} 53|6011b8 6017m33 6021m13 6024m13 -1350m8 Ino{54|28M9} 53|6012b8 6017m37 6022m13 6025m13 -1352U14 Translate_Signal 1353>8 1354<8 1355<8 53|4582s7 4647s7 6030b14 6044l8 -. 6044t24 -1353m8 Val{19|84M9} 53|6031b8 6037r10 6038r10 6040r42 -1354e8 Sig{51|82E9} 53|6032b8 6040m10 6042m10 -1355b8 Success{boolean} 53|6033b8 6036m7 6039r10 -X 53 userland-syscall.adb -63i7 Proc{51|33I9} 64r59 -64p7 Map{12|43P9} 68r37 -65m7 I_Arg{43|82M9} 66r55 68r42 -66m7 S_Arg{41|67M9} 72r56 -90m7 Path_IAddr{43|82M9} 91r61 111r42 -91m7 Path_SAddr{41|67M9} 126r37 -92i7 Curr_Proc{51|33I9} 93r65 121r43 128r32 149r43 168r39 174r23 177r14 -93p7 Map{12|43P9} 111r37 -94b7 Do_Cloexec{boolean} 177r52 -95b7 Do_Read{boolean} 136r26 155r35 162r15 163r11 -96b7 Do_Write{boolean} 136r35 156r35 162r33 164r11 -97b7 Dont_Follow{boolean} 136r49 -98b7 Do_Append{boolean} 143r13 165r15 -99b7 Do_Block{boolean} 154r35 -100b7 Discard{boolean} 174m45 175r10 -101e7 Success{54|234E9} 135m64 137r13 144m56 -102i7 CWD_FS{54|74I9} 135m44 144r23 149r54 157r35 -103m7 CWD_Ino{54|28M9} 128m60 135r29 -104m7 Opened_Ino{54|28M9} 135m52 144r31 149r62 159r35 -105r7 Opened_Stat{54|41R9} 144m43 146m13 158r35 -106p7 New_Descr{51|57P9} 150m10 167m17 167r17 174r34 181m17 181r17 -107r7 File_Perms{48|42R9} 149m10 163r33 164r33 165r29 -108i7 Returned_FD{natural} 174m54 177r38 179r35 -109m7 User{19|81M9} 121m54 136r20 -124i10 Rela_FS{54|74I9} 128m51 129r13 135r20 -125a10 Path{string} 135r38 -192i7 Curr{51|33I9} 194r42 195r40 -211m7 Buf_IAddr{43|82M9} 212r59 224r42 -212m7 Buf_SAddr{41|67M9} 242r37 -213i7 Proc{51|33I9} 214r65 215r62 238r43 -214p7 Map{12|43P9} 224r37 -215p7 File{51|57P9} 228r13 244r15 246r23 251r26 251r45 251r61 252r43 253r16 -. 253r38 258r22 263r20 268r20 275r33 -216i7 Ret_Count{natural} 252m32 254r51 256r43 258m52 259r57 263m50 264r57 -. 268m52 269r57 275m58 277r43 -217e7 Success1{54|234E9} 252m67 256r20 -218e7 Success2{22|106E9} 258m63 259r34 -219e7 Success4{27|40E9} 275m69 277r20 -220e7 Success5{25|40E9} 263m61 264r34 268m63 269r34 -221m7 User{19|81M9} 238m49 -222i7 Final_Cnt{natural} 233m10 235m10 241r46 -241a10 Data{17|29A9} 252m26 258m46 263m44 268m46 275m52 -289m7 Buf_IAddr{43|82M9} 290r59 302r42 -290m7 Buf_SAddr{41|67M9} 320r37 -291i7 Proc{51|33I9} 292r65 293r62 316r34 329r43 -292p7 Map{12|43P9} 302r37 -293p7 File{51|57P9} 306r13 322r15 324r23 328r22 336r27 336r46 337r27 338r27 -. 339r16 339r38 344r23 349r20 354r20 361r34 -294i7 Ret_Count{natural} 337m53 340r51 341r57 344m53 345r57 349m50 350r57 -. 354m52 355r57 361m59 363r43 -295e7 Success1{54|234E9} 338m51 341r34 -296e7 Success2{22|106E9} 344m64 345r34 -297e7 Success4{27|40E9} 361m70 363r20 -298e7 Success5{25|40E9} 349m61 350r34 354m63 355r34 -299m7 User{19|81M9} 316m40 -300i7 Final_Cnt{natural} 311m10 313m10 319r46 328r56 -319a10 Data{17|29A9} 337r47 344r47 349r44 354r46 361r53 -375i7 Proc{51|33I9} 382r25 389r43 -376p7 File{51|57P9} 382m7 383r10 391r12 393r23 393r42 402r19 404r19 404r41 -. 406r19 411r23 -377r7 Stat_Val{54|41R9} 393m58 395r16 406r41 -378e7 Success{54|234E9} 393m68 394r16 -379m7 User{19|81M9} 389m49 -380m7 Result{19|84M9} 411m13 417r19 -420L6 Invalid_Seek_Error 397r21 413r18 -425L6 Invalid_Value_Error 408r24 -441r7 Perms{12|26R9} 452r14 452r34 484r32 507r32 -442i7 Proc{51|33I9} 443r65 450r32 459r34 469r61 494r28 535r36 -443p7 Map{12|43P9} 458r35 474r42 481r32 503r32 -444m7 Final_Hint{35|35M12} 469m13 474r47 482r44 489r38 505r32 514r38 -445m7 Ignored{41|67M9} 485m32 -446p7 File{51|57P9} 494m10 495r13 499r13 501r32 502r32 -447b7 Success{boolean} 486m32 487r13 -448e7 Status{54|234E9} 508m32 509r16 -523L6 Invalid_Value_Return 457r15 467r18 475r15 496r18 -528L6 No_Memory_Return 461r15 491r18 510r21 -533L6 Bad_MAC_Return 451r15 -545i7 Proc{51|33I9} 546r57 549r32 551r41 -546p7 Map{12|43P9} 553r26 -547m7 Addr{41|67M9} 553r31 -569i7 Parent{51|33I9} 572r41 -585i7 Th{40|27I9} 607r48 -586i7 Proc{51|33I9} 591r39 592r34 601r24 606r59 607r42 611r26 -587p7 Tmp_Map{12|43P9} 592m7 608m34 608r34 611r32 -588b7 Success{boolean} 602m24 604r10 606m10 -630i7 Parent{51|33I9} 641r32 643r40 653m10 653r32 654r13 662r21 672r26 677r26 -. 680r61 685r30 -631i7 Child{51|33I9} 662m10 665r44 669r37 672m34 673r13 678r26 680r26 681r29 -. 685r38 689r42 691r35 693r39 699r19 -632i7 New_TID{40|27I9} 663m10 670r49 686m10 696r10 699r26 -633m7 Ret{19|84M9} 670m10 693m10 705r19 -634a7 Id{string} 677m34 678r33 -635i7 Id_Len{natural} 677m38 678r42 -636b7 Success{boolean} 699m35 700r14 -638b7 Use_Parent{boolean} 652r10 -639b7 Do_Thread{boolean} 661r10 -708L6 Block_Error 674r18 682r18 697r15 701r15 -718m7 Addr{43|82M9} 729r60 778r45 -719i7 Proc{51|33I9} 721r64 735r35 755r63 -720b7 Dont_Hang{boolean} 750r23 764r23 -721p7 Map{12|43P9} 778r40 792m7 793m40 793r40 -722i7 Waited{51|33I9} 741m16 742r19 743r31 754m10 755r13 755r52 760r25 792r30 -. 794r40 797r41 -723a7 Children{51|155A9} 735m41 740r29 741r26 -724i7 Count{natural} 735m51 736r16 740r44 -725b7 Did_Exit{boolean} 743m39 744r22 760m33 761r16 -726b7 Was_Signal{boolean} 743m61 760m55 784r13 -727e7 Cause{51|82E9} 743m73 760m67 785r54 -728m7 Error_Code{19|70M9} 743m49 760m43 787r53 -729m7 Exit_Value{19|81M9} 777r10 785m13 787m13 -740i17 PID_Item{51|33I9} -775L6 Waited_Exited 745r27 762r21 -800L6 Child_Error 737r21 756r18 -811i7 Proc{51|33I9} 838r23 841r13 -812b7 Success{boolean} 838m35 839r10 -813p7 Desc{51|57P9} 837m7 838r29 846m17 846r17 -814p7 New_Sock{27|37P9} 832m7 833r10 837r60 845m17 845r17 -815e7 Dom{27|25E9} 819m27 820m27 821m27 832r27 -816e7 Data{27|30E9} 826m30 827m30 828m30 832r32 -853L6 Invalid_Value_Return 822r32 829r35 834r15 -864i7 Proc{51|33I9} 865r64 872r32 874r47 -865p7 Map{12|43P9} 879r37 -866i7 Len{natural} 869r30 -867m7 IAddr{43|82M9} 868r58 879r42 -868m7 SAddr{41|67M9} 869r59 -869a7 Name{string} 885r32 -870b7 Success{boolean} 885m38 887r14 -905i7 Proc{51|33I9} 906r67 928r43 931r33 981r35 -906p7 Map{12|43P9} 920r37 921r37 -907m7 Stat_IAddr{43|82M9} 908r61 920r42 -908m7 Stat_SAddr{41|67M9} 917r49 -909m7 Path_IAddr{43|82M9} 910r61 921r42 -910m7 Path_SAddr{41|67M9} 979r40 -911p7 File_Desc{51|57P9} 931m10 932r13 938r15 940r23 941r23 -912r7 Stat_Val{54|41R9} 1007m26 1017r41 1018r41 1019r41 1020r28 1021r28 1023r28 -. 1025r15 1026r15 1028r15 1029r15 1031r15 1032r15 1033r41 1034r28 1037r12 -913i7 ID{natural} 1014m7 1016r41 1022r41 -914i7 Rel_FS{54|74I9} 981m49 982r16 989r31 -914i15 FS{54|74I9} 940m16 992m31 1007r17 1014r48 -915m7 D_Ino{54|28M9} 981m57 990r31 -915m14 Ino{54|28M9} 941m16 993m31 1007r21 -916e7 Success{54|234E9} 994m31 999r16 1007m36 1008r10 -917r7 Stat_Buf{52|264R9} 944m16 960m16 1015m7 1039m13 1039r30 1041m13 1041r30 -. 1043m13 1043r30 1045m13 1045r30 1047m13 1047r30 -918m7 User{19|81M9} 928m49 995r31 -978a13 Path{string} 991r31 -1050L6 Success_Return 958r21 974r21 -1060i7 Proc{51|33I9} 1061r57 1072r43 1080r16 -1061p7 Desc{51|57P9} 1066r10 1066r30 1073r17 1073r36 1080r22 1080r41 -1062r7 St{54|41R9} 1073m52 1074r41 -1063e7 Succ{54|234E9} 1073m56 1074r10 -1064m7 User{19|81M9} 1072m49 -1092m7 I_Arg{43|82M9} 1093r60 1101r42 -1093m7 S_Arg{41|67M9} 1117r41 1123r63 1125r66 -1094i7 Proc{51|33I9} 1095r66 1096r58 1111r43 -1095p7 Map{12|43P9} 1101r37 -1096p7 File{51|57P9} 1105r13 1113r12 1115r16 1115r40 1116r32 1116r51 1123r24 -. 1125r24 -1097b7 Succ{boolean} 1118m16 1120m16 1123m70 1125m73 1127m13 1130r10 -1098e7 FSSuc{54|234E9} 1117m48 1118r24 -1099m7 User{19|81M9} 1111m49 -1152i7 Proc{51|33I9} 1154r32 1156r56 -1175m7 Ad{43|82M9} 1178r76 1183r42 -1176i7 Proc{51|33I9} 1177r61 1200r23 1201r23 -1177p7 Map{12|43P9} 1183r37 -1178a7 Res(integer) 1183r46 1200m49 1200r49 1201m49 1201r49 -1179p7 Returned2{22|39P9} 1189m7 1193r31 1198r31 -1180b7 Succ1{boolean} 1200m42 1202r14 -1180b14 Succ2{boolean} 1201m42 1202r27 -1181p7 Reader_Desc{51|57P9} 1190m7 1200r29 1203m17 1203r17 -1181p20 Writer_Desc{51|57P9} 1195m7 1201r29 1204m17 1204r17 -1214i7 Proc{51|33I9} 1217r33 -1215m7 Ret{19|81M9} 1217m39 1219r32 -1233i7 Proc{51|33I9} 1234r64 1265r46 1266r32 1267r32 -1234p7 Map{12|43P9} 1245r37 1246r37 -1235m7 Src_IAddr{43|82M9} 1236r60 1245r42 -1236m7 Src_SAddr{41|67M9} 1261r37 -1237m7 Tgt_IAddr{43|82M9} 1238r60 1246r42 -1238m7 Tgt_SAddr{41|67M9} 1263r37 -1239b7 Do_Keep{boolean} 1277r54 -1240i7 Src_FS{54|74I9} 1266m49 1268r13 1270r13 1277r18 -1240i15 Tgt_FS{54|74I9} 1267m49 1269r13 1270r23 -1241m7 Src_Ino{54|28M9} 1266m57 1277r26 -1241m16 Tgt_Ino{54|28M9} 1267m57 1277r40 -1242e7 Success{54|234E9} 1277m69 1278r28 -1243m7 User{19|81M9} 1265m52 1277r63 -1260a10 Src{string} 1277r35 -1262a10 Tgt{string} 1277r49 -1289i7 Proc{51|33I9} 1290r60 -1290p7 Map{12|43P9} 1329r37 -1291m7 IAddr{43|82M9} 1292r56 1329r42 -1292m7 SAddr{41|67M9} 1340r73 1367r74 1402r60 1423r74 1450r74 1477r72 1503r43 -. 1513r73 1532r55 1542r63 -1293r7 Stats{36|47R9} 1305m45 1306r36 1308m45 1309r36 1313m45 1314r36 1546m48 -. 1550r51 1551r51 1552r51 -1294m7 Result{19|84M9} 1299m13 1301m13 1303m13 1306m13 1309m13 1311m13 1314m13 -. 1316m13 1318m13 1320m13 1361m16 1398m16 1417m16 1444m16 1471m16 1498m16 -. 1507m16 1528m16 1538m16 1557m16 1565r19 -1327L6 Not_Matched 1322r18 -1338i16 Len{natural} 1340r44 1341r47 -1340a16 Procs{52|383A9} 1346m19 1354m22 1354r41 1357m22 1357r41 -1341a16 KProc{51|171A9} 1344m26 1347r38 1348r51 1349r60 1350r60 1351r38 1353r22 -. 1356r22 -1342i16 Ret{natural} 1344m33 1345r30 1361r39 -1345i20 I{integer} 1346r26 1347r45 1348r58 1349r67 1350r67 1351r45 1353r29 -. 1354r29 1354r48 1356r29 1357r29 1357r48 -1365i16 Len{natural} 1367r45 1368r45 -1367a16 Mnts{52|402A9} 1374m37 1375m37 1376m37 1378m19 1381m23 1381r23 1382m32 -. 1382r32 1385m23 1385r23 1386m32 1386r32 1387m46 1387r46 1388m49 1388r49 -. 1389m40 1389r40 1390m47 1390r47 1391m46 1391r46 1393m34 1393r34 1393m56 -. 1393r56 1395m34 1395r34 1395m56 1395r56 -1368a16 KMnts{54|133A9} 1371m26 1373r40 1380r43 1384r23 1387r35 1388r38 1389r29 -. 1390r36 1391r35 1393r23 1395r23 -1369i16 Ret{natural} 1371m33 1372r30 1398r39 -1372i20 I{integer} 1373r47 1374r43 1375r43 1376r43 1378r25 1380r50 1381r29 -. 1382r38 1384r30 1385r29 1386r38 1387r42 1387r52 1388r45 1388r55 1389r36 -. 1389r46 1390r43 1390r53 1391r42 1391r52 1393r30 1393r40 1393r62 1395r30 -. 1395r40 1395r62 -1402r16 UTS{52|404R9} 1405m41 1405r41 1406m16 1408m16 1410m16 1412m16 1414m16 -1403i16 Host_Len{natural} 1405m56 1406r31 -1421i16 Len{natural} 1423r45 1424r58 -1423a16 Ths{52|418A9} 1430m19 1437m22 1439m22 -1424a16 KThs{40|142A9} 1428m26 1431r60 1433r60 1434r51 1435r38 -1425i16 Ret{natural} 1428m32 1429r30 1444r39 -1426i16 N{40|112I12} 1435m19 1436r22 1437r55 1440r42 -1429i20 I{integer} 1430r24 1431r66 1433r66 1434r57 1435r44 1437r27 1439r27 -1448i16 Len{natural} 1450r45 1451r59 -1450a16 Ths{52|425A9} 1456m19 1462m25 1464m25 1467m22 1467r44 -1451a16 KThs{40|150A9} 1454m26 1457r59 1459r50 1460r24 1466r22 -1452i16 Ret{natural} 1454m32 1455r30 1471r39 -1455i20 I{integer} 1456r24 1457r65 1459r56 1460r30 1462r30 1464r30 1466r28 -. 1467r27 1467r49 -1475i16 Len{natural} 1477r43 1478r65 -1477a16 Ths{52|438A9} 1484m48 1484r48 1485m19 1487m22 1489m22 1491m19 1492m19 -. 1493m19 1494m19 1495m19 -1478a16 KThs{39|96A9} 1482m55 1484r31 1486r22 1491r34 1492r35 1493r42 1494r35 -. 1495r42 -1479i16 Ret{natural} 1482m61 1483r30 1498r39 -1480i16 NLen{natural} 1484m72 1485r33 -1483i20 I{integer} 1484r37 1484r53 1485r24 1486r28 1487r27 1489r27 1491r24 -. 1491r40 1492r24 1492r41 1493r24 1493r48 1494r24 1494r41 1495r24 1495r48 -1502a16 Log{string} 1506m40 -1504i16 Ret{natural} 1506m45 1507r39 -1511i16 Len{natural} 1513r44 1514r51 -1513a16 Lks{52|448A9} 1519m19 1520m19 1521m19 1522m19 1523m19 1525m19 -1514a16 KLks{23|94A9} 1517m39 1519r59 1520r41 1521r37 1522r37 1524r58 1525r50 -1515i16 Ret{natural} 1517m45 1518r30 1528r39 -1518i20 I{integer} 1519r24 1519r65 1520r24 1520r47 1521r24 1521r43 1522r24 -. 1522r43 1523r24 1524r64 1525r24 1525r56 -1532a16 Lks{52|450A9} 1534r53 1537m45 1537r45 1537m54 1537r54 1537m63 1537r63 -1542r16 Lks{52|452R9} 1549m16 -1543r16 St{12|191R9} 1547m41 1554r51 1555r51 -1544m16 Shared_Size{19|84M9} 1548m40 1553r38 -1563L6 Success_Return 1325r12 -1568L6 Invalid_Value_Error 1535r24 1560r18 -1584i7 Proc{51|33I9} 1588r23 1595r27 1615r66 -1585b7 Success{boolean} 1605m24 1607r14 -1586i7 Child{51|33I9} 1588m29 1589r10 1595r33 1604r24 1620r38 1630r41 -1615p13 Map{12|43P9} 1619r39 -1616m13 CIAddr{43|82M9} 1617r70 1619r44 -1617m13 Caps{19|84M9} 1620r45 -1647i7 Proc{51|33I9} 1651r32 1653r56 -1648i7 Clsr{40|28I9} 1669m10 1671m10 1674r10 1679r11 1683r30 1688r51 -1649e7 Algo{40|93E9} 1661m10 1663m10 1679r17 -1691L6 Invalid_Value_Error 1657r15 1665r15 1675r15 1681r15 1684r15 -1703i7 Proc{51|33I9} 1704r70 1705r64 1721r17 1724r38 1731r27 1740r17 1814m16 -. 1823m39 1823r39 1829r53 1837r42 1846r42 -1704p7 Map{12|43P9} 1807r46 -1705p7 File{51|57P9} 1710r10 1719r24 1744r18 1746r45 1748r46 1750r40 1752r40 -. 1754r42 1756r27 1761r18 1763r38 1765r39 1767r33 1769r41 1771r43 1773r19 -. 1776r18 1778r29 1780r29 1785r18 1787r29 1793r29 1810r22 1819r39 1820r39 -. 1833r42 1834r42 1839r22 1842r42 1843r42 1850r22 -1706b7 Temp{boolean} 1721m33 1722r16 1731m37 1732r16 1746m19 1748m19 1750m19 -. 1752m64 1754m68 1756m19 1758r29 1760m13 1763r62 1765r63 1767r52 1769r65 -. 1771r69 1773r45 1787m73 1788r26 1793m73 1794r26 1825m39 1826r22 1838m42 -. 1839r50 1849m42 1850r46 1853r26 -1706b13 Temp2{boolean} 1731m43 1735r16 -1707p7 New_File{51|57P9} 1719m30 1719r30 1721r23 -1708i7 Result_FD{natural} 1721m39 1723r55 1724r57 -1803m16 IAddr{43|82M9} 1804r70 1807r51 -1804r16 Lock{52|516R9} 1807r58 1814r42 1815r24 1821m39 1821r39 1822m39 1822r39 -. 1827m22 1829m19 1831r22 1835r42 1836r42 1844r42 1845r42 -1805b16 IW{boolean} 1815m16 1824m39 1824r39 1847r42 -1866L6 Invalid_Return 1782r24 1799r24 1811r24 1860r18 -1869L6 Error_Return 1712r15 1728r21 1790r27 1796r27 1809r24 1855r27 -1889i7 Proc{51|33I9} 1890r63 1896r32 1898r44 -1890p7 Map{12|43P9} 1900r40 -1891m7 IAddr{43|82M9} 1892r57 1900r45 -1892m7 SAddr{41|67M9} 1894r34 -1893a7 Result{16|21A9} 1904m41 1906r22 -1917i7 Proc{51|33I9} 1918r58 1922r32 1924r43 -1918p7 Map{12|43P9} 1936r27 -1919r7 Flags{12|26R9} 1927r14 1927r34 1936r62 -1920m7 Addr{41|67M9} 1936r32 -1961i7 Pro{51|33I9} 1962r61 -1962r7 Caps{48|23R9} 1965r10 1966r10 1967r10 1968r10 1969r10 1970r10 1971r10 -. 1972r10 1973r10 1974r10 1975r10 1976r10 1977r10 1978r10 1979r10 -1963m7 Res{19|84M9} 1965m42 1965r49 1966m42 1966r49 1967m42 1967r49 1968m42 -. 1968r49 1969m42 1969r49 1970m42 1970r49 1971m42 1971r49 1972m42 1972r49 -. 1973m42 1973r49 1974m42 1974r49 1975m42 1975r49 1976m42 1976r49 1977m40 -. 1977r47 1978m42 1978r49 1979m42 1979r49 1982r19 -1992i7 Proc{51|33I9} 1993r63 2002r32 2004r48 2025r43 2039r19 -1993p7 Map{12|43P9} 2007r40 -1994m7 Addr{43|82M9} 2007r45 2029r49 -1995r7 Perms{48|42R9} 2017m7 2039r34 -1996m7 User{19|81M9} 2025m49 2031r46 -1997e7 Status{48|104E9} 2039m41 2042r12 -1998e7 FS_Status{54|234E9} 2031m35 2034r10 2035r28 -1999i7 FS{54|74I9} 2031m26 2039r25 2040r18 -2000m7 Ino{54|28M9} 2031m30 2039r29 2040r22 -2028a10 Path{string} 2031r20 -2059i7 Proc{51|33I9} 2062r32 2064r54 2079r24 -2060e7 Act{48|52E9} 2070m38 2071m38 2072m38 2079r30 -2094i7 Proc{51|33I9} 2095r65 2118r35 2120r40 -2095p7 Map{12|43P9} 2106r37 2107r37 -2096m7 Src_IAddr{43|82M9} 2098r61 2106r42 -2097m7 Tgt_IAddr{43|82M9} 2099r61 2107r42 -2098m7 Src_Addr{41|67M9} 2127r37 -2099m7 Tgt_Addr{41|67M9} 2129r37 -2100b7 Do_RO{boolean} 2138r40 2153r52 -2101b7 Do_Remount{boolean} 2131r13 -2102b7 Do_Relatim{boolean} 2138r47 2153r59 -2103e7 Parsed_Typ{54|73E9} 2145m32 2146m32 2153r40 -2104b7 Success{boolean} 2138m59 2140m19 2153m71 2157r10 -2126a10 Source{string} 2153r24 -2128a10 Target{string} 2136r31 2153r32 -2133i16 Handle{54|74I9} 2136m48 2137r19 2138r32 -2134i16 Matched{natural} 2136m39 -2173i7 Curr_Proc{51|33I9} 2174r67 2187r35 2189r41 -2174p7 Map{12|43P9} 2179r37 -2175m7 Path_IAddr{43|82M9} 2176r61 2179r42 -2176m7 Path_SAddr{41|67M9} 2197r37 -2177b7 Flag_Force{boolean} 2199r29 -2195b10 Success{boolean} 2199m41 2200r13 -2196a10 Path{string} 2199r23 -2220i7 Proc{51|33I9} 2221r66 2254r37 2255r32 2270r43 2273r46 -2221p7 Map{12|43P9} 2233r37 2234r37 -2222m7 Path_IAddr{43|82M9} 2224r62 2233r42 -2223m7 Buffer_IAddr{43|82M9} 2225r62 2234r42 -2224m7 Path_Add{41|67M9} 2250r37 -2225m7 Buffer_Add{41|67M9} 2252r37 -2226i7 R_FS{54|74I9} 2255m46 2256r13 2262r20 -2226i13 CWD_FS{54|74I9} 2262m41 2270r49 2278r34 2279r17 -2227m7 CWD_Ino{54|28M9} 2255m52 2262r26 -2228m7 Opened_Ino{54|28M9} 2262m49 2270r57 2278r42 2279r25 -2229i7 Ret_Count{natural} 2278m60 2280r49 -2230m7 User{19|81M9} 2254m43 2262r69 -2231e7 Status{54|234E9} 2262m61 2264r13 2278m71 2280r28 -2248r10 File_Perms{48|42R9} 2270m10 2271r17 -2249a10 Path{string} 2262r35 -2251a10 Data{string} 2278m54 -2291U17 Free[5|20] -2291U17 Free[5|20] 2351s10 -2294m7 Buff_IAddr{43|82M9} 2295r60 2306r42 -2295m7 Buff_Addr{41|67M9} 2301r68 -2296m7 Buff_Len{19|84M9} 2301r34 2314r66 -2297i7 Proc{51|33I9} 2298r71 2299r63 2313r46 -2298p7 Map{12|43P9} 2306r37 -2299p7 File{51|57P9} 2309r13 2309r33 2316r27 2317r27 2318r36 2324r13 2324r35 -2300p7 Tmp_Buffer{54|64P9} 2314m10 2319r27 2328r32 2333r54 2334r22 2334r55 -. 2336r25 2351m16 2351r16 -2301a7 Buffer{52|655A9} 2327m16 2333m16 2335m16 -2302i7 Read_Len{natural} 2320m27 2324r69 2326r27 2344r38 -2303e7 Success{54|234E9} 2321m27 2323r13 -2304m7 User{19|81M9} 2313m52 -2326i17 I{integer} 2327r37 2328r44 2329r65 2333r37 2333r66 2334r34 2334r67 -. 2335r37 2336r37 -2356b7 Success{boolean} 2358m24 2359r10 -2379i7 Proc{51|33I9} 2380r65 2405r37 2406r32 2419r46 2420r46 -2380p7 Map{12|43P9} 2391r37 -2381m7 Path_IAddr{43|82M9} 2382r61 2391r42 -2382m7 Path_SAddr{41|67M9} 2403r37 -2383i7 CWD_FS{54|74I9} 2406m46 2407r13 2422r26 -2384m7 CWD_Ino{54|28M9} 2406m54 2423r26 -2385e7 Node_Type{54|39E9} 2414m13 2416m13 2425r26 -2386m7 Tmp_Mode{54|32M12} 2426r43 -2387e7 Status{54|234E9} 2428m26 2429r28 -2388m7 Umask{54|32M12} 2419m52 2426r53 -2389m7 User{19|81M9} 2405m43 2420m52 2427r26 -2402a10 Path{string} 2424r26 -2440i7 Curr_Proc{51|33I9} 2441r64 2463r37 2464r32 -2441p7 Map{12|43P9} 2449r37 -2442m7 Path_IAddr{43|82M9} 2443r60 2449r42 -2443m7 Path_SAddr{41|67M9} 2461r37 -2444i7 CWD_FS{54|74I9} 2464m51 2465r13 2471r22 -2445m7 CWD_Ino{54|28M9} 2464m59 2471r30 -2446e7 Success{54|234E9} 2471m51 2472r28 -2447m7 User{19|81M9} 2463m48 2471r45 -2460a10 Path{string} 2471r39 -2482i7 Proc{51|33I9} 2483r60 2493r43 -2483p7 File{51|57P9} 2487r10 2494r12 2497r17 2497r36 -2484e7 Success{54|234E9} 2497m62 2498r31 -2485m7 User{19|81M9} 2493m49 -2512i7 Proc{51|33I9} 2513r58 2522r56 -2513p7 File{51|57P9} 2518r10 2518r30 2529r24 2535r28 2544r28 2554r30 -2514m7 IAddr{43|82M9} 2515r60 2522r63 -2515m7 SAddr{41|67M9} 2532r59 2541r60 2550r54 -2516b7 Succ{boolean} 2534m16 2543m16 2554m16 2558r10 -2532r16 Addr{52|692R9} 2536r28 2537r50 -2541r16 Addr{52|698R9} 2545r28 2546r50 -2550m16 A_SAddr2{41|67M9} 2551r64 2552r66 -2551i16 CLen{natural} 2552r36 -2552a16 Addr{string} 2554r49 -2577i7 Proc{51|33I9} 2578r65 2608r37 2609r32 -2578p7 Map{12|43P9} 2588r37 2589r37 -2579m7 Path_IAddr{43|82M9} 2580r61 2588r42 -2580m7 Path_SAddr{41|67M9} 2604r37 -2581m7 Targ_IAddr{43|82M9} 2582r61 2589r42 -2582m7 Targ_SAddr{41|67M9} 2606r37 -2583i7 CWD_FS{54|74I9} 2609m46 2610r13 2617r21 -2584m7 CWD_Ino{54|28M9} 2609m54 2618r26 -2585e7 Success{54|234E9} 2623m26 2624r28 -2586m7 User{19|81M9} 2608m43 2622r26 -2603a10 Path{string} 2619r26 -2605a10 Targ{string} 2620r26 -2635i7 Proc{51|33I9} 2636r58 2645r56 -2636p7 File{51|57P9} 2641r10 2641r30 2652r24 2658r28 2667r28 2677r33 -2637m7 IAddr{43|82M9} 2638r60 2645r63 -2638m7 SAddr{41|67M9} 2655r59 2664r60 2673r54 -2639b7 Succ{boolean} 2657m16 2666m16 2677m16 2681r10 -2655r16 Addr{52|692R9} 2659r28 2660r50 -2664r16 Addr{52|698R9} 2668r28 2669r50 -2673m16 A_SAddr2{41|67M9} 2674r64 2675r66 -2674i16 CLen{natural} 2675r36 -2675a16 Addr{string} 2677r52 -2695m7 Res_IAddr{43|82M9} 2696r59 2704r42 -2696m7 Res_SAddr{41|67M9} 2702r66 -2697i7 Proc{51|33I9} 2698r63 2713r23 2714r23 -2698p7 Map{12|43P9} 2704r37 -2699p7 Res_PTY{25|37P9} 2710m7 2711r68 2712r70 2716m17 2716r17 2717m17 2717r17 -2700p7 P_Desc{51|57P9} 2711m7 2713r29 2718m17 2718r17 -2700p15 S_Desc{51|57P9} 2712m7 2714r29 2719m17 2719r17 -2701b7 Succ1{boolean} 2713m37 2715r14 -2701b14 Succ2{boolean} 2714m37 2715r27 -2702a7 Result(integer) 2704r53 2713m44 2713r44 2714m44 2714r44 -2734i7 Proc{51|33I9} 2735r57 -2735p7 File{51|57P9} 2739r10 2745r12 2747r38 2747r57 -2736b7 Data{boolean} 2747r73 -2737e7 Succ{54|234E9} 2747m13 2748r31 -2765i7 Proc{51|33I9} 2766r66 2796r37 2797r32 2798r32 -2766p7 Map{12|43P9} 2776r37 2777r37 -2767m7 Src_IAddr{43|82M9} 2768r60 2776r42 -2768m7 Src_SAddr{41|67M9} 2792r37 -2769m7 Dst_IAddr{43|82M9} 2770r60 2777r42 -2770m7 Dst_SAddr{41|67M9} 2794r37 -2771i7 Src_FS{54|74I9} 2797m50 2799r13 2801r13 2808r28 -2771i15 Dst_FS{54|74I9} 2798m50 2800r13 2801r23 -2772m7 Src_Ino{54|28M9} 2797m58 2808r36 -2772m16 Dst_Ino{54|28M9} 2798m58 2808r50 -2773e7 Success{54|234E9} 2808m70 2809r28 -2774m7 User{19|81M9} 2796m43 2808r64 -2791a10 Src{string} 2808r45 -2793a10 Dst{string} 2808r59 -2823i7 Proc{51|33I9} 2826r36 2830r35 2832r41 -2824i7 TProc{51|33I9} 2826r10 2826r56 2839r30 -2856i7 Proc{51|33I9} 2857r57 -2857p7 File{51|57P9} 2859r10 2859r30 2862r23 2866r32 -2884i7 Proc{51|33I9} 2885r62 2886r58 2958r26 2960r27 -2885p7 Map{12|43P9} 2911r40 2912r40 -2886p7 File{51|57P9} 2898r10 2898r30 2902r23 2909r29 2917r27 2923r39 2934r39 -. 2947r46 -2887b7 CExec{boolean} 2960r52 -2888b7 Block{boolean} 2909r52 2924r43 2935r43 2948r50 -2889b7 CloFork{boolean} 2960r59 -2890m7 A_IAddr{43|82M9} 2891r59 2908r10 2911r45 -2891m7 A_SAddr{41|67M9} 2920r62 2931r63 2942r57 -2892m7 AL_IAddr{43|82M9} 2908r25 2912r45 -2893p7 Desc{51|57P9} 2957m10 2958r32 2965m20 2965r20 -2894p7 Sock{27|37P9} 2909m59 2909r59 2927m39 2927r39 2938m39 2938r39 2951m46 -. 2951r46 2956r10 2957r63 2964m20 2964r20 -2895i7 Ret{natural} 2958m44 2960r46 2962r38 -2896b7 Succ{boolean} 2958m38 2959r13 -2920r19 Addr{52|692R9} 2925m39 2925r39 2926m61 2926r61 -2931r19 Addr{52|698R9} 2936m39 2936r39 2937m61 2937r61 -2942m19 A_SAddr2{41|67M9} 2943r58 2944r69 -2943i19 CLen{natural} 2944r39 2950m46 -2944a19 Addr{string} 2949m46 -2976L6 Would_Fault_Error 2914r18 -2986i7 Proc{51|33I9} 2993r46 -2987b7 Success{boolean} 2990m37 2991r10 -2988e7 Resource{48|59E9} 2990m46 2993r52 -3007b7 Success{boolean} 3010m37 3011r10 3016m27 3017r13 -3008e7 Resource{48|59E9} 3010m46 3014r27 -3037i7 Proc{51|33I9} 3038r64 3056r34 3062r32 3069r37 3090r27 -3038p7 Map{12|43P9} 3046r37 -3039m7 Path_IAddr{43|82M9} 3040r60 3046r42 -3040m7 Path_SAddr{41|67M9} 3060r40 -3041i7 Rel_FS{54|74I9} 3062m46 3063r13 3072r28 -3041i15 FS{54|74I9} 3075m28 3094r26 -3042m7 D_Ino{54|28M9} 3062m54 3073r28 -3042m14 Ino{54|28M9} 3076m28 3095r26 -3043e7 Succ{54|234E9} 3077m28 3082r13 3101m26 3102r25 -3044m7 User{19|81M9} 3056m40 3069m43 3078r28 3090m33 3100r26 -3059a10 Path{string} 3074r28 -3113M12 Unsigned_28 3114r67 3115r52 3144r54 3151r26 -3114V16 C1[4|20]{3113M12} -3114V16 C1[4|20]{3113M12} 3154s62 -3115V16 C2[4|20]{51|143A9} -3115V16 C2[4|20]{51|143A9} 3154s39 -3117i7 Proc{51|33I9} 3118r64 3153r33 3154r33 3177r34 3245r30 -3118p7 Map{12|43P9} 3135r37 3136r37 3144r40 -3119m7 FIAddr{43|82M9} 3120r60 3135r42 -3120m7 FSAddr{41|67M9} 3161r67 -3121m7 TIAddr{43|82M9} 3122r60 3136r42 -3122m7 TSAddr{41|67M9} 3162r67 -3123m7 S_IAddr{43|82M9} 3124r60 3143r10 3144r45 3244r10 -3124m7 S_SAddr{41|67M9} 3151r62 -3125m7 Size_FD{19|84M9} 3135r50 -3126i7 Count{natural} 3232m19 3232r28 3237r23 3249r32 -3127p7 File{51|57P9} 3177m16 3178r19 3189r21 3192r26 3196r26 3200r26 3204r26 -. 3207r26 3210r32 3210r51 -3128m7 Curr_Sec{19|84M9} 3236m45 3237r64 -3129m7 Curr_NSec{19|84M9} 3236m55 3238r16 -3130m7 Final_Sec{19|84M9} 3158m39 3164m30 3164r30 3238r27 -3131m7 Final_NSec{19|84M9} 3158m50 3164m41 3164r41 3238r38 -3132a7 Old_Set{51|143A9} 3153m39 3154r66 3245r36 -3133b7 Can_Read{boolean} 3184m16 3193m26 3197m26 3200m50 3204m52 3207m45 -. 3210m67 3214r19 -3133b17 Can_Write{boolean} 3185m16 3193m36 3197m36 3200m60 3204m62 3207m55 -. 3211m25 3217r19 -3133b28 Can_PrioRead{boolean} 3186m16 3201m26 3220r19 -3133b42 Is_Error{boolean} 3187m16 3193m47 3197m47 3208m26 3211m36 3223r19 -3133b52 Is_Broken{boolean} 3188m16 3193m57 3197m57 3207m66 3226r19 -3151m13 Passed_Set{3113M12} 3154r43 -3161a10 FDs{52|832A9} 3168r27 3169m16 3172r20 3177r53 3179m19 3214r33 3215m19 -. 3215r40 3217r34 3218m19 3218r40 3220r37 3221m19 3221r40 3224m19 3224r40 -. 3227m19 3227r40 3231r19 -3162r10 Time{52|253R9} 3164r53 3165r30 -3168r17 Polled=3168:27{52|827R9} -3230L15 End_Iter 3173r24 3180r24 -3253i7 Proc{51|33I9} 3256r43 -3254m7 Ret{19|81M9} 3256m49 3258r32 -3267i7 Proc{51|33I9} 3270r28 3272r49 3275r39 3278r36 3281r52 -3268m7 Curr_UID{19|81M9} 3278m42 3280r36 -3303i7 Proc{51|33I9} 3304r65 3324r34 3327r33 3341r35 3365r46 -3304p7 Map{12|43P9} 3314r37 -3305m7 Path_IAddr{43|82M9} 3306r61 3314r42 -3306m7 Path_SAddr{41|67M9} 3339r40 -3307i7 Rel_FS{54|74I9} 3341m49 3342r16 3349r31 -3307i15 FS{54|74I9} 3334m10 3352m31 3365r52 3376r21 -3308m7 D_Ino{54|28M9} 3341m57 3350r31 -3308m14 Ino{54|28M9} 3335m10 3353m31 3365r56 3377r21 -3309e7 Succ{54|234E9} 3354m31 3359r16 3379m21 3380r25 -3310m7 User{19|81M9} 3324m40 3355r31 -3311p7 File_Desc{51|57P9} 3327m10 3328r13 3328r38 3334r17 3335r17 -3312r7 File_Perms{48|42R9} 3365m13 3366r20 -3338a13 Path{string} 3351r31 -3388i7 Proc{51|33I9} 3391r26 3392r26 -3389m7 Old{54|32M12} 3391m32 3394r32 -3403i7 Proc{51|33I9} 3407r32 3409r41 -3404b7 Do_Ret{boolean} 3425r10 -3405e7 Success{13|19E9} 3415m30 3416m30 3417m30 3426r15 -3447i7 Proc{51|33I9} 3448r65 3468r34 3471r33 3485r35 3509r46 -3448p7 Map{12|43P9} 3458r37 -3449m7 Path_IAddr{43|82M9} 3450r61 3458r42 -3450m7 Path_SAddr{41|67M9} 3483r40 -3451i7 Rel_FS{54|74I9} 3485m49 3486r16 3493r31 -3451i15 FS{54|74I9} 3478m10 3496m31 3509r52 3519r11 -3452m7 D_Ino{54|28M9} 3485m57 3494r31 -3452m14 Ino{54|28M9} 3479m10 3497m31 3509r56 3520r11 -3453e7 Succ{54|234E9} 3498m31 3503r16 3523m11 3524r25 -3454m7 Usr{19|81M9} 3468m40 3499r31 -3455p7 File_Desc{51|57P9} 3471m10 3472r13 3472r38 3478r17 3479r17 -3456r7 File_Perms{48|42R9} 3509m13 3510r20 -3482a13 Path{string} 3495r31 -3535m7 Buf_IAddr{43|82M9} 3536r59 3545r42 -3536m7 Buf_SAddr{41|67M9} 3563r37 -3537i7 Proc{51|33I9} 3538r65 3539r62 3559r43 -3538p7 Map{12|43P9} 3545r37 -3539p7 File{51|57P9} 3549r13 3565r15 3567r23 3572r26 3572r45 3573r43 -3540i7 Ret_Count{natural} 3573m32 3574r57 -3541e7 Success1{54|234E9} 3573m67 3574r34 -3542m7 User{19|81M9} 3559m49 -3543i7 Final_Cnt{natural} 3554m10 3556m10 3562r46 -3562a10 Data{17|29A9} 3573m26 -3592m7 Buf_IAddr{43|82M9} 3593r59 3602r42 -3593m7 Buf_SAddr{41|67M9} 3620r37 -3594i7 Proc{51|33I9} 3595r65 3596r62 3616r34 3629r43 -3595p7 Map{12|43P9} 3602r37 -3596p7 File{51|57P9} 3606r13 3622r15 3624r23 3636r27 3636r46 3637r44 -3597i7 Ret_Count{natural} 3637m33 3638r57 -3598e7 Success1{54|234E9} 3637m68 3638r34 -3599m7 User{19|81M9} 3616m40 -3600i7 Final_Cnt{natural} 3611m10 3613m10 3619r46 3628r44 -3619a10 Data{17|29A9} 3637r27 -3655i7 Proc{51|33I9} 3656r65 3657r59 -3656p7 Map{12|43P9} 3668r40 3675r40 -3657p7 File{51|57P9} 3664r10 3664r30 3680r24 3685r27 3692r27 3701r27 -3658m7 AIAddr{43|82M9} 3659r61 3675r45 -3659m7 ASAddr{41|67M9} 3683r59 3690r60 3697r54 -3660m7 LIAddr{43|82M9} 3661r61 3668r45 -3661m7 LSAddr{41|67M9} 3673r51 -3662b7 Succ{boolean} 3686m57 3693m58 3701m58 3705r10 -3673i10 Length{natural} 3675r66 -3683r16 Addr{52|692R9} 3685m46 3685r46 3686m41 3686r41 -3690r16 Addr{52|698R9} 3692m46 3692r46 3693m41 3693r41 -3697m16 A_SAddr2{41|67M9} 3698r55 3699r66 -3698i16 CLen{natural} 3699r36 3701m52 -3699a16 Addr{string} 3701m46 -3715L6 Would_Fault_Error 3669r15 3676r18 -3727i7 Proc{51|33I9} 3728r65 3729r59 -3728p7 Map{12|43P9} 3740r40 3747r40 -3729p7 File{51|57P9} 3736r10 3736r30 3752r24 3757r26 3764r26 3773r26 -3730m7 AIAddr{43|82M9} 3731r61 3747r45 -3731m7 ASAddr{41|67M9} 3755r59 3762r60 3769r54 -3732m7 LIAddr{43|82M9} 3733r61 3740r45 -3733m7 LSAddr{41|67M9} 3745r51 -3734b7 Succ{boolean} 3758m57 3765m58 3773m57 3777r10 -3745i10 Length{natural} 3747r66 -3755r16 Addr{52|692R9} 3757m45 3757r45 3758m41 3758r41 -3762r16 Addr{52|698R9} 3764m45 3764r45 3765m41 3765r41 -3769m16 A_SAddr2{41|67M9} 3770r55 3771r66 -3770i16 CLen{natural} 3771r36 3773m51 -3771a16 Addr{string} 3773m45 -3787L6 Would_Fault_Error 3741r15 3748r18 -3798i7 Proc{51|33I9} 3799r57 -3799p7 File{51|57P9} 3802r10 3802r30 3810r42 3812r42 3814r42 -3800b7 Succ{boolean} 3810m13 3812m13 3814m13 3821r10 -3838i7 Proc{51|33I9} 3839r60 -3839p7 Map{12|43P9} 3863r37 3864r37 3866r45 3867r45 3886r43 3887r48 -3840m7 IAddr{43|82M9} 3841r56 3863r42 3866r50 -3841m7 SAddr{41|67M9} 3879r70 -3842m7 TIAddr{43|82M9} 3843r56 3864r42 3867r50 -3843m7 TSAddr{41|67M9} 3880r70 -3845m7 Futex_Len{19|84M9} 3863r49 3866r57 -3846m7 Time_Len{19|84M9} 3864r50 3867r58 -3847m7 U32_Len{19|84M9} 3886r52 3887r57 -3878i10 Cnt{natural} 3879r41 3881r48 -3879a10 Items{52|938A9} 3884r19 3885r36 3895r52 -3880r10 Time{52|253R9} 3901r44 3901r58 -3881a10 Futexes{24|32A9} 3895m16 3901r35 3909r32 -3882m10 IA{43|82M9} 3885m13 3886r48 3887r53 3893r76 -3884i14 I{integer} 3885r43 3895r25 3895r59 -3893m16 V{19|81M9} 3895m32 3895r32 -3920L6 Would_Fault_Error 3869r18 3889r21 -3932i7 Proc{51|33I9} 3933r59 3940r35 3942r40 -3933p7 Map{12|43P9} 3936r37 -3934m7 IAddr{43|82M9} 3936r42 3948r63 -3948r10 Spec{52|253R9} 3955m26 3955r26 3955m40 3955r40 3958m26 3958r26 3958m40 -. 3958r40 3966m26 3966r26 3966m40 3966r40 3969m26 3969r26 3969m40 3969r40 -. 3977r26 3977r40 -3990L6 Invalid_Value_Error 3960r27 3971r27 3979r27 3982r21 -4003i7 Proc{51|33I9} 4004r62 4014r35 4016r50 -4004p7 Map{12|43P9} 4008r37 4009r37 -4005m7 ReqIAddr{43|82M9} 4008r42 4022r70 -4006m7 RemIAddr{43|82M9} 4009r42 4023r70 -4022r10 Request{52|253R9} 4028r22 4029r22 4036r46 4037r33 -4023r10 Remaining{52|253R9} 4050m10 4051m10 -4024m10 CSec{19|84M9} 4042m48 4044m43 4046r50 -4024m16 CNSec{19|84M9} 4042m54 4044m49 4046r56 -4025m10 FSec{19|84M9} 4028m13 4032m48 4034m43 4036m33 4036r33 4046r63 -4025m16 FNSec{19|84M9} 4029m13 4032m54 4034m49 4036m39 4036r39 4046r69 -4064i7 Proc{51|33I9} 4065r59 4079r43 4084r20 -4065p7 Map{12|43P9} 4068r37 -4066m7 IAddr{43|82M9} 4068r42 4075r61 -4075r10 Usage{52|971R9} 4079m49 4079r49 4080m19 4080r19 4080m50 4080r50 4081m19 -. 4081r19 4084m26 4084r26 4085m20 4085r20 4085m51 4085r51 4086m20 4086r20 -4109m7 Buf_IAddr{43|82M9} 4110r59 4120r42 -4110m7 Buf_SAddr{41|67M9} 4138r37 -4111m7 AIAddr{43|82M9} 4112r64 4121r11 4121r59 4140r13 -4112m7 ASAddr{41|67M9} 4145r65 4157r66 4169r59 -4113i7 Proc{51|33I9} 4114r65 4115r62 -4114p7 Map{12|43P9} 4120r37 4121r54 -4115p7 File{51|57P9} 4126r13 4126r33 4140r39 4142r30 4148r39 4160r39 4174r39 -. 4182r30 -4116i7 Ret_Count{natural} 4150m39 4162m39 4176m39 4182m55 4184r50 -4117e7 Success{27|40E9} 4153m39 4165m39 4178m39 4182m66 4184r28 -4118i7 Final_Cnt{natural} 4131m10 4133m10 4137r46 -4137a10 Data{17|29A9} 4149m39 4161m39 4175m39 4182m49 -4145r22 Addr{52|692R9} 4151r39 4152r61 -4157r22 Addr{52|698R9} 4163r39 4164r61 -4169m22 A_SAddr{41|67M9} 4170r70 4171r72 -4170i22 CLen{natural} 4171r42 -4171a22 Addr{string} 4177r39 -4200m7 Buf_IAddr{43|82M9} 4201r59 4211r42 -4201m7 Buf_SAddr{41|67M9} 4229r37 -4202m7 AIAddr{43|82M9} 4203r64 4212r11 4212r59 4231r13 -4203m7 ASAddr{41|67M9} 4236r65 4248r66 4260r59 -4204i7 Proc{51|33I9} 4205r65 4206r62 -4205p7 Map{12|43P9} 4211r37 4212r54 -4206p7 File{51|57P9} 4217r13 4217r33 4231r39 4233r30 4239r39 4251r39 4265r39 -. 4273r31 -4207i7 Ret_Count{natural} 4241m39 4253m39 4267m39 4273m56 4275r50 -4208e7 Success{27|40E9} 4244m39 4256m39 4269m39 4273m67 4275r28 -4209i7 Final_Cnt{natural} 4222m10 4224m10 4228r46 -4228a10 Data{17|29A9} 4240r39 4252r39 4266r39 4273r50 -4236r22 Addr{52|692R9} 4242r39 4243r61 -4248r22 Addr{52|698R9} 4254r39 4255r61 -4260m22 A_SAddr{41|67M9} 4261r70 4262r72 -4261i22 CLen{natural} 4262r42 -4262a22 Addr{string} 4268r39 -4286i7 Proc{51|33I9} 4287r64 4288r58 4299r32 4301r50 -4287p7 Map{12|43P9} 4320r43 4325r43 4331r43 -4288p7 File{51|57P9} 4304r13 4304r33 4310r17 4310r36 4316r49 -4289m7 IAddr{43|82M9} 4295r68 4296r68 4297r68 4320r48 4325r48 4331r48 -4290i7 Handl{17|83I9} 4316m7 4323r42 4329r17 4335r17 -4291r7 Stat{54|41R9} 4310m52 4311r32 -4292b7 Suc{boolean} 4323m54 4329m41 4335m41 4337m13 4340r10 -4293e7 Suc2{54|234E9} 4310m58 4311r10 -4295b7 Blk{boolean} 4320r55 4323r49 -4296r7 IP4{52|1007R9} 4325r55 4329r24 4329r32 -4297r7 IP6{52|1011R9} 4331r55 4335r24 4335r32 -4350L6 Would_Fault_Error 4321r21 4326r21 4332r21 -4364i7 Proc{51|33I9} 4365r65 4387r34 4390r33 4404r35 4428r46 -4365p7 Map{12|43P9} 4375r37 4376r37 -4366m7 Path_IAddr{43|82M9} 4375r42 4402r52 -4367m7 Time_IAddr{43|82M9} 4376r42 4439r63 -4368i7 Rel_FS{54|74I9} 4404m49 4405r16 4412r31 -4368i15 FS{54|74I9} 4397m10 4415m31 4428r52 4442r36 -4369m7 D_Ino{54|28M9} 4404m57 4413r31 -4369m14 Ino{54|28M9} 4398m10 4416m31 4428r56 4443r36 -4370e7 Succ{54|234E9} 4417m31 4422r16 4448m36 4449r28 -4371m7 User{19|81M9} 4387m40 4418r31 -4372p7 File_Desc{51|57P9} 4390m10 4391r13 4391r38 4397r17 4398r17 -4373r7 File_Perms{48|42R9} 4428m13 4429r20 -4401a13 Path{string} 4414r31 -4438A15 Time_Arr(52|253R9) 4439r18 -4439a10 Times{4438A15} 4444r36 4445r36 4446r36 4447r36 -4457i7 Proc{51|33I9} 4460r32 4462r50 -4458i7 Result{40|28I9} 4467m7 4468r10 4470r44 -4483i7 Proc{51|33I9} 4487r32 4489r50 -4484i7 Clust{40|28I9} 4491r13 4492r30 -4485i7 Th{40|27I9} 4491r40 4492r37 -4509M12 Unsigned_28 4510r67 4511r52 4541r19 -4510V16 C1[4|20]{4509M12} -4510V16 C1[4|20]{4509M12} 4545s57 4547s61 -4511V16 C2[4|20]{51|143A9} -4511V16 C2[4|20]{51|143A9} 4545s45 4547s45 4549s45 -4513i7 Proc{51|33I9} 4514r61 4519r27 4545r39 4547r39 4549r39 -4514p7 Map{12|43P9} 4522r40 4535r40 -4515m7 S_IAddr{43|82M9} 4534r10 4535r45 4541r67 -4516m7 O_IAddr{43|82M9} 4521r10 4522r45 4528r69 -4517a7 Old_Set{51|143A9} 4519m33 4530r20 4545r61 4547r65 -4528a13 Old{51|143A9} 4530m13 -4541m13 Set{4509M12} 4545r49 4547r49 4549r49 -4562L6 Would_Fault_Error 4524r18 4537r18 -4574i7 Proc{51|33I9} 4575r61 4600r33 4615r39 4617r39 4619r39 4621r39 -4575p7 Map{12|43P9} 4590r40 4605r40 -4576m7 A_IAddr{43|82M9} 4604r10 4605r45 4611r70 -4577m7 O_IAddr{43|82M9} 4589r10 4590r45 4596r70 -4578e7 Actual{51|82E9} 4582m33 4600r39 4615r45 4618r25 4621r45 -4579b7 Success{boolean} 4582m41 4583r14 -4580a7 Mask{51|143A9} 4617m45 4618m19 4619r45 -4596r13 Old{52|1054R9} 4598m13 4599m13 4600m47 4600r47 -4611r13 Act{52|1054R9} 4613r30 4621r53 -4630L6 Would_Fault_Error 4592r18 4607r18 -4641i7 Proc{51|33I9} 4664r32 4665r29 -4642i7 Tgt{51|33I9} 4654r10 4666r19 4667r29 4675r21 -4643b7 Success{boolean} 4647m41 4648r14 -4644e7 Actual{51|82E9} 4647m33 4658r17 4675r26 -4645m7 EUID{19|81M9} 4665m35 4668r13 4668r33 -4645m13 Tgt_UID{19|81M9} 4666m24 4668r21 -4645m22 Tgt_EUID{19|81M9} 4667m34 4668r41 -4686i7 Proc{51|33I9} 4690r32 4692r42 4699m16 4700r19 4704r36 -4687i7 Th{40|27I9} 4711m16 4713m16 4714r19 4718r36 -4688i7 FNice{40|112I12} 4704m13 4718m13 4723r10 4724r35 4726r58 -4732L6 Invalid_Value_Return 4701r24 4715r24 4720r18 -4744i7 Proc{51|33I9} 4748r32 4750r42 4768m16 4769r19 4773r27 -4745i7 Th{40|27I9} 4780m16 4782m16 4783r19 4787r27 -4746i7 FNice{40|112I12} 4756m10 4760m10 4773r33 4787r31 -4796L6 Invalid_Value_Return 4762r15 4770r24 4784r24 4789r18 -4802i7 Proc{51|33I9} 4805r33 -4803m7 Ret{19|81M9} 4805m39 4807r32 -4811i7 Proc{51|33I9} 4814r43 -4812m7 Ret{19|81M9} 4814m49 4816r32 -4825i7 Proc{51|33I9} 4828r28 4830r49 4833r39 4836r36 4839r52 -4826m7 Curr_GID{19|81M9} 4836m42 4838r36 -4858i7 Proc{51|33I9} 4859r59 4871r33 -4859p7 Map{12|43P9} 4865r37 -4860m7 IAddr{43|82M9} 4863r46 4865r42 -4861i7 Ret{natural} 4871m44 4872r10 4874r35 -4862a7 Arr{51|497A9} 4865r49 4871m39 4872r17 -4887i7 Proc{51|33I9} 4888r59 4895r38 4903r36 -4888p7 Map{12|43P9} 4897r40 -4889m7 IAddr{43|82M9} 4892r46 4897r45 -4890b7 Succ{boolean} 4903m47 4904r17 -4891a7 Arr{51|497A9} 4897r52 4903r42 -4922i7 Proc{51|33I9} 4923r64 4926r58 -4923p7 Map{12|43P9} 4930r37 -4924m7 IAddr{43|82M9} 4925r60 4930r42 -4925m7 SAddr{41|67M9} 4928r70 -4926p7 File{51|57P9} 4934r13 4940r12 4941r52 4942r52 -4927p7 Data{25|37P9} 4941m44 4942m44 4946r25 -4928a7 Str{string} 4946m31 4951m7 -4957L6 Invalid_Error 4943r30 4948r15 -4972i7 Proc{51|33I9} 4973r58 -4973p7 File{51|57P9} 4976r10 4979r13 4990r37 4990r56 -4974e7 Tmp{54|234E9} 4990m13 4991r31 -4999L6 Error_Return 4978r15 4981r15 4994r18 -5010K15 Align[29|19] 5035r22 -5011i7 Proc{51|33I9} 5021r32 5022r29 5023r29 5042r36 5047r65 -5012m7 Truncated{19|81M9} 5024r44 5031r28 5053r40 -5013r7 Perms{12|26R9} 5051r32 -5018m7 Ret_Addr{19|84M9} 5031m39 5049r61 -5018m17 Ret_Size{19|84M9} 5031m49 5042r42 5045r10 5050r47 -5018m27 VAddr{19|84M9} 5035m13 5039m13 5042m10 5048r61 5055r25 -5019m7 EUID{19|81M9} 5022m35 5024r55 -5019m13 EGID{19|81M9} 5023m35 5024r61 -5063L6 Invalid_Error 5037r18 -5075m7 Trunc_ID{19|81M9} 5087r44 5096r38 5109r31 5114r46 -5076i7 Proc{51|33I9} 5077r56 5084r32 5085r29 5086r29 -5077p7 Map{12|43P9} 5098r43 -5078m7 IAddr{43|82M9} 5079r60 5098r48 -5079m7 SAddr{41|67M9} 5105r56 -5080r7 Info{26|76R9} 5114m56 5118r49 5119r40 5120r40 5121r41 5122r41 5123r54 -. 5124r37 5125r51 -5081b7 Found{boolean} 5114m62 5115r26 -5082m7 EUID{19|81M9} 5085m35 5087r54 -5082m13 EGID{19|81M9} 5086m35 5087r60 -5105r16 Orig{52|1156R9} 5110r31 5111r31 5112r44 5118m19 5119m19 5120m19 5121m19 -. 5122m19 5123m19 5124m19 5125m19 -5136L6 Invalid_Error 5116r27 5129r18 -5146i7 Proc{51|33I9} 5147r56 -5147p7 Map{12|43P9} 5155r33 5168r31 -5148m7 Phys{41|67M9} 5158m33 5164r62 -5149b7 Is_Mapped{boolean} 5159m33 5166r10 -5149b18 Is_Readable{boolean} 5161m33 -5149b31 Is_Writeable{boolean} 5162m33 -5149b45 Is_Executable{boolean} 5163m33 -5150b7 Is_User_Accessible{boolean} 5160m33 -5151m7 ID{26|25M12} 5164m76 5166r24 5172r40 -5152m7 Size{19|84M9} 5164m70 5170r46 -5192K15 Align[29|19] 5196r38 -5193i7 Proc{51|33I9} 5201r26 5202r26 -5194m7 Truncated{19|81M9} 5209r14 5211r46 -5195m7 Mode{19|84M9} 5206r32 5209r43 -5196m7 AlSz{19|84M9} 5206r14 5209r25 -5197m7 Created_Key{26|25M12} 5205m10 5208m10 5211m10 5214r10 5216r35 -5198m7 EUID{19|81M9} 5201m32 5206r20 5209r31 -5199m7 EGID{19|81M9} 5202m32 5206r26 5209r37 -5234i7 Proc{51|33I9} 5235r64 5236r58 -5235p7 Map{12|43P9} 5244r40 -5236p7 File{51|57P9} 5239r10 5239r30 5254r41 5260r31 -5237m7 IAddr{43|82M9} 5244r45 5250r64 -5250m10 Val{19|81M9} 5254m16 5256m16 5258m16 5262m22 5264m22 5266m22 -5277L6 Invalid_Value_Error 5243r15 5269r21 -5279L6 Generic_Error 5241r15 5246r15 -5294i7 Proc{51|33I9} 5295r64 5296r58 -5295p7 Map{12|43P9} 5304r40 -5296p7 File{51|57P9} 5299r10 5299r30 -5297m7 IAddr{43|82M9} 5304r45 -5320L6 Invalid_Value_Error 5303r15 5313r18 -5322L6 Generic_Error 5301r15 5306r15 -5333i7 Proc{51|33I9} 5334r59 -5334p7 Map{12|43P9} 5338r37 -5335i7 Th{40|27I9} 5350r30 -5336m7 IAddr{43|82M9} 5338r42 5348r49 -5346i10 Ret{natural} 5350m39 5351r13 5351r26 5352r18 -5347a10 Str{string} 5350m34 5351r32 5352m13 -5361L6 Invalid_Value_Error 5342r15 5356r18 -5363L6 Generic_Error 5340r15 -5374i7 Proc{51|33I9} 5375r59 -5375p7 Map{12|43P9} 5379r37 -5376i7 Th{40|27I9} 5391r30 -5377m7 IAddr{43|82M9} 5379r42 5389r49 -5387b10 Suc{boolean} 5391m39 5392r13 -5388a10 Str{string} 5391r34 -5401L6 Invalid_Value_Error 5383r15 5396r18 -5403L6 Generic_Error 5381r15 -5413K15 FAL=5413:36 5426r13 5428r21 5430r21 5432r21 5457r53 5458r53 5459r53 -5415i7 Proc{51|33I9} 5416r62 5448r35 5450r52 -5416p7 Map{12|43P9} 5425r36 5455r36 -5417m7 O_IAddr{43|82M9} 5419r69 5424r10 5425r41 -5418m7 N_IAddr{43|82M9} 5420r69 5447r10 5455r41 -5419r7 Old_Val{52|1236R9} 5429m19 5431m19 5433m19 5438m16 5440m16 -5420r7 New_Val{52|1236R9} 5456r18 5463r17 -5421e7 Pol{49|21E9} 5426m36 5427r18 5457m46 5458m46 5459m46 5469r47 -5422b7 OOM_Kill{boolean} 5436m45 5437r16 5464m16 5466m16 5470r44 -5480L6 Would_Fault_Error 5443r18 5472r18 -5485L6 Invalid_Value_Error 5460r51 -5525i7 Thread{40|27I9} 5527r38 5528r28 -5532i7 Thread{40|27I9} 5534r28 5535r37 -5549R12 Trace_Info 5552e18 5564r23 -5550m10 Thread{19|73M9} -5551r10 State{8|22R15} -5554i7 Proc{51|33I9} 5571r24 5579r22 5584r41 5586r28 -5555p7 File{51|57P9} 5586m10 5587r13 5587r35 5589r33 5593r20 -5556e7 Success{22|106E9} 5593m67 -5557e7 Raised_Signal{51|82E9} 5572m24 5579r28 -5558m7 Signal_Addr{41|67M9} 5573m24 5578r13 -5559b7 No_Signal{boolean} 5574m24 5576r20 -5560b7 Ignore_Signal{boolean} 5575m24 5578r55 -5561i7 Ret_Count{natural} 5593m56 -5562i7 Tracer_FD{natural} 5584m58 5586r47 -5563b7 Is_Traced{boolean} 5584m47 5585r10 -5564r7 TInfo{5549R12} 5565r52 5566m34 5566r34 5592m13 -5565a7 TInfo_Data{17|29A9} 5593r44 -5685U17 Free[5|20] -5685U17 Free[5|20] 5780s13 5783s13 -5686A12 Arg_Arr(19|84M9) 5749r17 5751r17 -5688p7 Map{12|43P9} 5706r37 5707r37 5708r37 5766m10 5767r32 -5689m7 Path_IAddr{43|82M9} 5690r60 5706r42 -5690m7 Path_SAddr{41|67M9} 5692r34 -5691a7 Path{string} 5726r25 5772r29 -5693i7 Path_FS{54|74I9} 5727m25 5739r46 5741r21 5773r29 -5694m7 Path_Ino{54|28M9} 5728m25 5739r55 5741r30 5774r29 -5695i7 Rela_FS{54|74I9} 5721m39 5724r25 -5696m7 Rela_Ino{54|28M9} 5721m48 5725r25 -5697e7 Success2{54|234E9} 5729m25 5733r10 -5698b7 Succ{boolean} 5771m10 5786r13 -5699r7 File_Perms{48|42R9} 5739m7 5740r14 -5700m7 User{19|81M9} 5720m49 5730r25 -5701m7 Argv_IAddr{43|82M9} 5702r60 5707r42 -5702m7 Argv_SAddr{41|67M9} 5750r37 -5703m7 Envp_IAddr{43|82M9} 5704r60 5708r42 -5704m7 Envp_SAddr{41|67M9} 5752r37 -5749a10 Argv{5686A12} 5753r48 5756r19 5757r65 -5751a10 Envp{5686A12} 5754r48 5759r19 5760r64 -5753a10 Args{45|20A9} 5757m13 5768r32 5775r29 5779r21 -5754a10 Env{45|21A9} 5760m13 5776r29 5782r20 -5756i14 I{integer} 5757r19 5757r71 -5759i14 I{integer} 5760r18 5760r70 -5779p14 Arg=5779:21{45|19P9} -5782p14 En=5782:20{45|19P9} -5799i7 Arg_Length{natural} 5800r33 -5800a7 Arg_String{string} 5802r26 -5820m7 Curr_PID{19|81M9} 5824r27 -5821a7 PID_Buffer{31|55A12} 5824m37 5829r36 5831r36 -5822i7 PID_Len{natural} 5824m49 -5845r7 Result_Info{18|44R9} 5853m37 5855r37 -5846r7 Result_Size{18|54R9} 5857m37 5859r37 -5847i7 Action{integer} 5861r18 5863r27 5863r48 5864r27 5864r48 5874r18 5876r27 -. 5877r27 5884r27 5885r27 -5848b7 Do_R{boolean} 5863m19 5866r48 5868r50 5876m19 5879r47 5881r49 5884m19 -. 5887r48 5889r50 -5848b13 Do_T{boolean} 5864m19 5866r54 5868r56 5877m19 5879r53 5881r55 5885m19 -. 5887r54 5889r56 -5900r7 Caps{48|23R9} 5904r12 5905r12 5906r12 5907r12 5908r12 5909r12 5910r12 -. 5911r12 5912r12 5913r12 5914r12 5915r12 5916r12 5917r12 5918r12 -5962K15 Al[29|19] 5968r17 -5963m7 Length{19|84M9} 5968m7 5972r48 -5964m7 Result{41|67M9} 5973m33 -5965b7 Is_Mapped{boolean} 5974m33 -5965b18 Is_Readable{boolean} 5976m33 -5965b31 Is_Writeable{boolean} 5977m33 -5965b45 Is_Executable{boolean} 5978m33 -5966b7 Is_User_Accessible{boolean} 5975m33 5979r14 -5987m7 Result{41|67M9} 5999m33 -5988b7 Is_Mapped{boolean} 6000m33 6005r18 -5988b18 Is_Readable{boolean} 6002m33 -5988b31 Is_Writeable{boolean} 6003m33 -5988b45 Is_Executable{boolean} 6004m33 -5989b7 Is_User_Accessible{boolean} 6001m33 -6014p7 Descr{51|57P9} 6019m10 6020r13 6020r34 6024r20 6025r20 -17A9 Source{51|143A9}<51|82E9> 20r40[3114] 20r40[3115] 20r40[4510] 20r40[4511] -18M9 Target{3113M12} 20r55[3114] 20r55[3115] 20r55[4510] 20r55[4511] -18M9 T{19|84M9} 27r42[5010] 27r52[5010] 35r44[5010] 35r54[5010] 40r50[5010] -. 40r60[5010] 41r49[5010] 27r42[5192] 27r52[5192] 35r44[5192] 35r54[5192] -. 40r50[5192] 40r60[5192] 41r49[5192] 27r42[5962] 27r52[5962] 35r44[5962] -. 35r54[5962] 40r50[5962] 40r60[5962] 41r49[5962] 23r42[5010] 23r52[5010] -. 27r14[5010] 30r44[5010] 30r54[5010] 34r14[5010] 37r50[5010] 37r60[5010] -. 23r42[5192] 23r52[5192] 27r14[5192] 30r44[5192] 30r54[5192] 34r14[5192] -. 37r50[5192] 37r60[5192] 23r42[5962] 23r52[5962] 27r14[5962] 30r44[5962] -. 30r54[5962] 34r14[5962] 37r50[5962] 37r60[5962] -27V13 Align_Up{19|84M9} 5196s44[5192] 5968s20[5962] 29r20[5010] 29r20[5192] -. 29r20[5962] -27m23 Value{19|84M9} 24r61[5010] 24r61[5192] 24r61[5962] -27m30 Alignment{19|84M9} 28r20[5010] 28r40[5010] 28r55[5010] 29r40[5010] -. 28r20[5192] 28r40[5192] 28r55[5192] 29r40[5192] 28r20[5962] 28r40[5962] -. 28r55[5962] 29r40[5962] 25r61[5010] 25r61[5192] 25r61[5962] -35V13 Align_Down{19|84M9} 5035s28[5010] 37r20[5010] 37r20[5192] 37r20[5962] -35m25 Value{19|84M9} 31r61[5010] 31r61[5192] 31r61[5962] -35m32 Alignment{19|84M9} 36r20[5010] 36r40[5010] 36r55[5010] 37r42[5010] -. 36r20[5192] 36r40[5192] 36r55[5192] 37r42[5192] 36r20[5962] 36r40[5962] -. 36r55[5962] 37r42[5962] 32r61[5010] 32r61[5192] 32r61[5962] -40V13 Divide_Round_Up{19|84M9} 42r20[5010] 42r20[5192] 42r20[5962] -40m30 Dividend{19|84M9} 41r21[5010] 41r21[5192] 41r21[5962] 39r15[5010] 39r15[5192] -. 39r15[5962] -40m40 Divisor{19|84M9} 41r33[5010] 41r62[5010] 42r47[5010] 41r33[5192] 41r62[5192] -. 42r47[5192] 41r33[5962] 41r62[5962] 42r47[5962] 39r27[5010] 39r43[5010] -. 39r27[5192] 39r43[5192] 39r27[5962] 39r43[5962] -18P9 Name{54|64P9} 20r50[2291] 20r50[5685] -20p39 X{54|64P9} 21r15[2291] 22r23[2291] 23r11[2291] 21r15[5685] 22r23[5685] -. 23r11[5685] -24m7 Value2{43|82M9} 27r18[5010] 27r18[5192] 27r18[5962] -25m7 Align2{43|82M9} 27r27[5010] 27r48[5010] 27r27[5192] 27r48[5192] 27r27[5962] -. 27r48[5962] -31m7 Value2{43|82M9} 34r17[5010] 34r17[5192] 34r17[5962] -32m7 Align2{43|82M9} 34r33[5010] 34r33[5192] 34r33[5962] -X 54 vfs.ads -24K9*VFS 52|28w6 28r28 1272r25 1349r21 1350r21 53|101r21 102r21 103r21 104r21 -. 105r21 124r20 129r23 135r10 137r24 144r13 217r19 251r16 295r19 336r16 377r18 -. 378r18 393r13 394r27 500r13 509r26 912r20 914r20 915r20 916r20 982r25 988r13 -. 999r27 1007r7 1008r21 1038r15 1040r15 1042r15 1044r15 1046r15 1062r14 1073r7 -. 1074r18 1098r15 1116r16 1118r32 1240r26 1241r26 1242r26 1268r22 1269r22 -. 1320r36 1998r19 1999r19 2000r19 2031r10 2034r23 2040r7 2103r20 2136r16 -. 2137r29 2138r19 2145r46 2146r46 2153r13 2199r10 2226r22 2227r22 2231r22 -. 2256r20 2262r10 2264r23 2278r10 2300r20 2303r20 2314r28 2315r10 2323r23 -. 2358r7 2383r20 2384r20 2387r20 2388r20 2407r22 2426r26 2444r20 2445r20 -. 2446r20 2465r22 2471r10 2484r17 2496r13 2583r20 2584r20 2585r20 2610r22 -. 2616r10 2737r14 2747r21 2771r26 2772r26 2773r26 2799r22 2800r22 3041r20 -. 3042r20 3043r20 3063r22 3071r10 3082r21 3093r7 3210r22 3307r21 3308r21 -. 3309r21 3342r25 3348r13 3359r24 3375r7 3451r21 3452r21 3453r21 3486r25 -. 3492r13 3503r24 3518r7 3541r19 3572r16 3598r19 3636r16 4291r15 4293r15 -. 4310r7 4368r21 4369r21 4370r21 4405r25 4411r13 4422r24 4441r10 4990r20 -. 5599r25 5606r15 5610r15 5611r15 5612r15 5613r15 5614r15 5615r15 5616r15 -. 5733r22 5741r10 6011r21 6012r21 6021r20 54|674e8 -28M9*File_Inode_Number<19|84M9> 52|1350r25 53|103r25 104r25 915r24 1241r30 -. 2000r23 2227r26 2228r22 2384r24 2445r24 2584r24 2772r30 3042r24 3308r25 -. 3452r25 4369r25 5694r20 5696r20 6012r25 -32M12*File_Mode{19|81M9} 53|2386r29 2386r42 2388r24 3378r21 3378r54 3389r14 -. 3392r32 5195r61 -36m7*Seconds_Since_Epoch{19|84M9} 53|1025r36 1028r42 1031r38 -37m7*Additional_Nanoseconds{19|84M9} 53|1026r36 1029r42 1032r38 -39E9*File_Type 53|2385r20 54|40e64 -39n23*File_Regular{39E9} 53|1038r19 2337r27 2416r26 -39n37*File_Directory{39E9} 53|1040r19 1074r60 2338r27 2414r26 -39n53*File_Symbolic_Link{39E9} 53|1042r19 2339r27 -40n23*File_Character_Device{39E9} 53|395r40 1044r19 2340r27 4311r53 -40n46*File_Block_Device{39E9} 53|1046r19 2341r27 -41R9*File_Stat 53|105r25 377r22 912r24 1062r18 4291r19 54|54e14 -42m7*Unique_Identifier{28M9} 53|1017r50 -43e7*Type_Of_File{39E9} 53|395r25 1037r21 1074r44 4311r37 -44m7*Mode{32M12} 53|1018r50 -45m7*UID{19|81M9} 53|1020r37 -46m7*GID{19|81M9} 53|1021r37 -47i7*Hard_Link_Count{positive} 53|1019r50 -48m7*Byte_Size{19|84M9} 53|146m25 158r47 406r50 1023r37 -49i7*IO_Block_Size{natural} 53|1033r50 -50m7*IO_Block_Count{19|84M9} 53|1034r37 -51r7*Creation_Time{35R9} 53|1031r24 1032r24 -52r7*Modification_Time{35R9} 53|1028r24 1029r24 -53r7*Access_Time{35R9} 53|1025r24 1026r24 -58m7*Inode_Number{19|84M9} 53|2328r47 -59a7*Name_Buffer{string} 53|2334r37 -60i7*Name_Len{natural} 53|2333r69 2334r70 -61e7*Type_Of_File{39E9} 53|2336r40 -63A9*Directory_Entities(57R9) 53|2292r11 2314r32 -64P9*Directory_Entities_Acc(63A9) 53|2292r31 2300r24 -70i4*Max_Symlink_Loop{natural} 53|1320r40 -73E9*FS_Type 53|2103r24 54|73e46 -73n23*FS_DEV{73E9} 53|1374r27 -73n31*FS_EXT{73E9} 53|1375r27 2145r50 -73n39*FS_FAT{73E9} 53|1376r27 2146r50 -74I9*FS_Handle 52|1349r25 53|102r25 124r24 914r24 1240r30 1999r23 -. 2133r26 2226r26 2383r24 2444r24 2583r24 2771r30 3041r24 3307r25 3451r25 -. 4368r25 5693r20 5695r20 6011r25 -75i4*Error_Handle{74I9} 53|129r27 982r29 1268r26 1269r26 2137r33 2256r24 -. 2407r26 2465r26 2610r26 2799r26 2800r26 3063r26 3342r29 3486r29 4405r29 -. 6021r24 -104U14*Mount 53|2153s17 -119U14*Unmount 53|2199s14 -126U14*Get_Mount 53|2136s20 -133A9*Mountpoint_Arr(74I9) 53|1368r24 -138U14*List_All 53|1371s16 -144V13*Get_Backing_FS{73E9} 53|1373s24 -156V13*Get_Backing_Device{17|83I9} 53|1014s28 1380s23 1524s38 -162U14*Get_Mount_Point 53|1383s19 -174U14*Remount 53|2138s23 -185U14*Get_Block_Size 53|1387s19 -192U14*Get_Fragment_Size 53|1388s19 -198U14*Get_Size 53|1389s19 -204U14*Get_Inode_Count 53|1390s19 -211U14*Get_Free_Blocks 53|1392s19 1394s19 -230U14*Get_Max_Length 53|1391s19 -234E9*FS_Status 52|1272r29 53|101r25 217r23 295r23 378r22 448r20 916r24 1063r14 -. 1098r19 1242r30 1998r23 2231r26 2303r24 2387r24 2446r24 2484r21 2585r24 -. 2737r18 2773r30 3043r24 3309r25 3453r25 3541r23 3598r23 4293r19 4370r25 -. 4974r15 5599r29 5697r20 54|242e16 -235n8*FS_Success{234E9} 53|137r28 394r31 509r30 999r31 1008r25 1074r22 1118r36 -. 2034r27 2264r27 2323r27 3082r25 3359r28 3503r28 4311r18 4422r28 5606r19 -. 5733r26 -236n8*FS_Invalid_Value{234E9} 53|5611r19 -237n8*FS_Is_Directory{234E9} 53|5610r19 -238n8*FS_Not_Supported{234E9} 53|5612r19 -239n8*FS_Not_Allowed{234E9} 53|5615r19 -240n8*FS_RO_Failure{234E9} 53|5613r19 -241n8*FS_IO_Failure{234E9} 53|5614r19 -242n8*FS_Loop{234E9} 53|5616r19 -255U14*Open 53|135s14 988s17 2262s14 3071s14 3348s17 3492s17 4411s17 5723s7 -276U14*Create_Node 53|2421s10 -294U14*Create_Symbolic_Link 53|2616s14 -312U14*Create_Hard_Link 53|2808s10 -331U14*Rename 53|1277s10 -348U14*Unlink 53|2471s14 -359U14*Close 53|2040s11 2279s10 5741s14 -369U14*Read_Entries 53|2315s14 -384U14*Read_Symbolic_Link 53|2278s14 -400U14*Read 53|251s20 3572s20 -418U14*Write 53|336s20 3636s20 -433U14*Stat 53|144s17 393s17 1007s11 1073s11 4310s11 -445U14*Truncate 53|2496s17 -458U14*IO_Control 53|1116s20 -475U14*Mmap 53|500s17 -492U14*Poll 53|3210s26 -511V13*Synchronize{234E9} 53|2747s25 4990s24 -522U14*Change_Mode 53|3375s11 -535U14*Change_Owner 53|3518s11 -552U14*Check_Access 53|3093s11 -571U14*Change_Access_Times 53|4441s14 -593U14*Open 53|2031s14 -609U14*Synchronize 53|2358s11 -635V13*Apply_Umask{32M12} 53|2426s30 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___userland__syscall__sys_exit 2 ada___userland__syscall__do_exit ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sys_exit 0 -GG EK_GLOBALS ada___userland__syscall__sys_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 5 scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit calls_conditional 3 ada___arch__mmu__make_active ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__arch_prctl 5 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___arch__local__get_current_process ada___arch__hooks__prctl_hook -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__arch_prctl 0 -GG EK_GLOBALS ada___userland__syscall__arch_prctl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___arch__local__get_current_process ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__open 13 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__stat ada___userland__process__close ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__open 0 -GG EK_GLOBALS ada___userland__syscall__open local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 25 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__stat ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__get_file ada___userland__process__set_fd_flags ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__check_permissions ada___userland__process__get_limit ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__close 3 ada___userland__process__is_valid_file ada___userland__process__remove_file ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__close 0 -GG EK_GLOBALS ada___userland__syscall__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___userland__process__is_valid_file ada___userland__process__remove_file ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__read 15 ada___userland__syscall__translate_status ada___userland__syscall__translate_status__2 ada___userland__syscall__translate_status__3 ada___userland__syscall__translate_status__4 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__read_primary ada___ipc__pty__read_secondary vfs__read ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___ipc__fifo__read ada___ipc__socket__read ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__read 0 -GG EK_GLOBALS ada___userland__syscall__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__read_primary ada___ipc__pty__read_secondary vfs__read ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___ipc__fifo__read ada___ipc__socket__read ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__write 16 ada___userland__syscall__translate_status ada___userland__syscall__translate_status__2 ada___userland__syscall__translate_status__3 ada___userland__syscall__translate_status__4 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__write_primary ada___ipc__pty__write_secondary vfs__write ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_limit ada___ipc__fifo__write ada___ipc__socket__write ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__write 0 -GG EK_GLOBALS ada___userland__syscall__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 12 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__write_primary ada___ipc__pty__write_secondary vfs__write ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_limit ada___ipc__fifo__write ada___ipc__socket__write ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__seek 4 vfs__stat ada___userland__process__get_file ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__seek 0 -GG EK_GLOBALS ada___userland__syscall__seek local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 vfs__stat ada___userland__process__get_file ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__mmap 13 ada___userland__syscall__check_userland_mappability ada___userland__syscall__get_mmap_prot ada___userland__syscall__execute_mac_failure ada___system__storage_elements__to_address ada___arch__mmu__map_allocated_range ada___arch__mmu__get_user_mapped_size vfs__mmap ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__bump_alloc_base ada___userland__process__get_capabilities ada___userland__process__get_limit ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__mmap 0 -GG EK_GLOBALS ada___userland__syscall__mmap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 21 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address ada___arch__mmu__map_allocated_range ada___arch__mmu__get_user_mapped_size scheduler__bail vfs__mmap ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__bump_alloc_base ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__get_limit ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__munmap 6 ada___userland__syscall__execute_mac_failure ada___system__storage_elements__to_address ada___arch__mmu__unmap_range ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__munmap 0 -GG EK_GLOBALS ada___userland__syscall__munmap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 14 ada___arch__mmu__make_active ada___arch__mmu__unmap_range scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_pid 2 ada___userland__process__convert ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_pid 0 -GG EK_GLOBALS ada___userland__syscall__get_pid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__convert ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_ppid 3 ada___userland__process__get_parent ada___userland__process__convert ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_ppid 0 -GG EK_GLOBALS ada___userland__syscall__get_ppid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___userland__process__get_parent ada___userland__process__convert ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__exec 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__exec 0 -GG EK_GLOBALS ada___userland__syscall__exec local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 27 ada___system__storage_elements__to_address ada___arch__mmu__fork_table ada___arch__mmu__destroy_table ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__close ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__reassign_process_addresses ada___userland__process__flush_files ada___userland__process__flush_exec_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__set_identifier ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__check_permissions ada___lib__messages__image ada___userland__loader__start_program__2 ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__clone 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__clone 0 -GG EK_GLOBALS ada___userland__syscall__clone local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 26 ada___arch__mmu__fork_table ada___arch__mmu__make_active scheduler__create_user_thread__2 scheduler__create_user_thread__3 scheduler__bail scheduler__convert scheduler__convert__4 ada___userland__process__create_process ada___userland__process__add_thread ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__duplicate_fd_table ada___userland__process__flush_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_parent ada___userland__process__set_identifier ada___userland__process__get_identifier ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__fetch_tcb ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__wait 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__wait 0 -GG EK_GLOBALS ada___userland__syscall__wait local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 13 interfaces__shift_left__3 ada___system__storage_elements__to_address ada___arch__mmu__destroy_table ada___arch__mmu__translate_address scheduler__yield_if_able ada___userland__process__get_children ada___userland__process__delete_process ada___userland__process__get_common_map ada___userland__process__check_exit ada___userland__process__get_parent ada___userland__process__convert ada___userland__process__convert__2 ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__socket 6 ada___userland__syscall__check_add_file ada___userland__process__close ada___userland__process__set_fd_flags ada___ipc__socket__create ada___ipc__socket__close ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__socket 0 -GG EK_GLOBALS ada___userland__syscall__socket local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__set_fd_flags ada___userland__process__get_limit ada___ipc__socket__create ada___ipc__socket__close ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_hostname 7 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address networking__set_hostname ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_hostname 0 -GG EK_GLOBALS ada___userland__syscall__set_hostname local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail networking__set_hostname ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__fstat 11 ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address devices__get_unique_id vfs__get_backing_device vfs__open vfs__stat ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fstat 0 -GG EK_GLOBALS ada___userland__syscall__fstat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address devices__get_unique_id vfs__get_backing_device vfs__open vfs__stat ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__chdir 5 vfs__stat ada___userland__process__get_file ada___userland__process__set_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__chdir 0 -GG EK_GLOBALS ada___userland__syscall__chdir local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 vfs__stat ada___userland__process__get_file ada___userland__process__set_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__ioctl 8 ada___userland__syscall__pty_ioctl ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__io_control ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ioctl 0 -GG EK_GLOBALS ada___userland__syscall__ioctl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 17 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__get_termios ada___ipc__pty__set_termios ada___ipc__pty__get_winsize ada___ipc__pty__set_winsize ada___ipc__pty__flush_primary ada___ipc__pty__flush_secondary ada___ipc__pty__start_primary ada___ipc__pty__start_secondary ada___ipc__pty__stop_primary ada___ipc__pty__stop_secondary vfs__io_control ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__sched_yield 1 scheduler__yield_if_able -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sched_yield 0 -GG EK_GLOBALS ada___userland__syscall__sched_yield local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 scheduler__yield_if_able calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__delete_thread_cluster 5 ada___userland__syscall__execute_mac_failure scheduler__delete_cluster scheduler__convert__4 ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__delete_thread_cluster 0 -GG EK_GLOBALS ada___userland__syscall__delete_thread_cluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 14 ada___arch__mmu__make_active scheduler__bail scheduler__delete_cluster scheduler__convert__4 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__pipe 7 ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__close ada___userland__process__get_common_map ada___ipc__fifo__create ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pipe 0 -GG EK_GLOBALS ada___userland__syscall__pipe local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 9 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__get_common_map ada___userland__process__get_limit ada___ipc__fifo__create ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_uid 2 ada___userland__process__get_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_uid 0 -GG EK_GLOBALS ada___userland__syscall__get_uid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_uid calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__rename 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__rename ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__rename 0 -GG EK_GLOBALS ada___userland__syscall__rename local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__rename ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__sysconf 32 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___arch__mmu__get_statistics devices__fetch_name devices__get_unique_id scheduler__get_niceness scheduler__get_load_averages scheduler__convert scheduler__convert__2 scheduler__list_all scheduler__list_all__2 vfs__list_all vfs__get_backing_fs vfs__get_backing_device vfs__get_mount_point vfs__get_block_size vfs__get_fragment_size vfs__get_size vfs__get_inode_count vfs__get_free_blocks vfs__get_max_length networking__get_hostname ada___userland__process__list_all ada___userland__process__get_common_map ada___userland__process__convert ada___lib__messages__dump_logs ada___arch__local__get_current_process ada___memory__physical__get_statistics ada___arch__hooks__get_active_core_count ada___ipc__filelock__list_all ada___ipc__shm__get_total_size ada___networking__interfaces__list_interfaces -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sysconf 0 -GG EK_GLOBALS ada___userland__syscall__sysconf local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 ada___lib__messages__message_state proper_output 1 ada___lib__messages__message_state refined_proof_in 0 refined_input 1 ada___lib__messages__message_state refined_output 1 ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 31 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___arch__mmu__get_statistics devices__fetch_name devices__get_unique_id scheduler__get_niceness scheduler__get_load_averages scheduler__convert scheduler__convert__2 scheduler__list_all scheduler__list_all__2 vfs__list_all vfs__get_backing_fs vfs__get_backing_device vfs__get_mount_point vfs__get_block_size vfs__get_fragment_size vfs__get_size vfs__get_inode_count vfs__get_free_blocks vfs__get_max_length networking__get_hostname ada___userland__process__list_all ada___userland__process__get_common_map ada___userland__process__convert ada___arch__local__get_current_process ada___memory__physical__get_statistics ada___arch__hooks__get_active_core_count ada___ipc__filelock__list_all ada___ipc__shm__get_total_size ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___lib__messages__message_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__spawn 9 ada___userland__syscall__exec_into_process ada___userland__syscall__set_mac_capabilities__2 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__create_process ada___userland__process__duplicate_fd_table ada___userland__process__get_common_map ada___userland__process__convert ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__spawn 0 -GG EK_GLOBALS ada___userland__syscall__spawn local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 1 ada___userland__process__create_process calls_conditional 28 ada___system__storage_elements__to_address ada___arch__mmu__fork_table ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__close ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__reassign_process_addresses ada___userland__process__duplicate_fd_table ada___userland__process__flush_files ada___userland__process__flush_exec_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__set_identifier ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__set_capabilities ada___userland__process__check_permissions ada___lib__messages__image ada___userland__loader__start_program__2 ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_tid 2 scheduler__convert ada___arch__local__get_current_thread -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_tid 0 -GG EK_GLOBALS ada___userland__syscall__get_tid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 scheduler__convert ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__manage_thread_cluster 8 ada___userland__syscall__execute_mac_failure scheduler__set_scheduling_algorithm scheduler__set_time_slice scheduler__create_cluster scheduler__convert__2 scheduler__convert__4 ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__manage_thread_cluster 0 -GG EK_GLOBALS ada___userland__syscall__manage_thread_cluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 17 ada___arch__mmu__make_active scheduler__bail scheduler__set_scheduling_algorithm scheduler__set_time_slice scheduler__create_cluster scheduler__convert__2 scheduler__convert__4 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__fcntl 26 ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__is_primary_blocking ada___ipc__pty__set_primary_blocking ada___ipc__pty__is_secondary_blocking ada___ipc__pty__set_secondary_blocking ada___userland__process__duplicate ada___userland__process__get_file ada___userland__process__get_fd_flags ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__convert__2 ada___ipc__fifo__is_read_blocking ada___ipc__fifo__is_write_blocking ada___ipc__fifo__set_read_blocking ada___ipc__fifo__set_write_blocking ada___ipc__fifo__get_size ada___ipc__fifo__set_size ada___ipc__socket__is_blocking ada___ipc__socket__set_blocking ada___arch__local__get_current_process ada___ipc__filelock__could_acquire_lock ada___ipc__filelock__acquire_lock ada___ipc__filelock__release_lock -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fcntl 0 -GG EK_GLOBALS ada___userland__syscall__fcntl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 28 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__is_primary_blocking ada___ipc__pty__set_primary_blocking ada___ipc__pty__is_secondary_blocking ada___ipc__pty__set_secondary_blocking ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__duplicate ada___userland__process__get_file ada___userland__process__get_fd_flags ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___userland__process__convert ada___userland__process__convert__2 ada___userland__process__get_limit ada___ipc__fifo__is_read_blocking ada___ipc__fifo__is_write_blocking ada___ipc__fifo__set_read_blocking ada___ipc__fifo__set_write_blocking ada___ipc__fifo__get_size ada___ipc__fifo__set_size ada___ipc__socket__is_blocking ada___ipc__socket__set_blocking ada___arch__local__get_current_process ada___ipc__filelock__could_acquire_lock ada___ipc__filelock__acquire_lock ada___ipc__filelock__release_lock FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__exit_thread 4 scheduler__bail ada___userland__process__remove_thread ada___arch__local__get_current_thread ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__exit_thread 0 -GG EK_GLOBALS ada___userland__syscall__exit_thread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 scheduler__bail ada___userland__process__remove_thread calls_conditional 2 ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_random 7 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___cryptography__random__fill_data -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_random 0 -GG EK_GLOBALS ada___userland__syscall__get_random local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__mprotect 7 ada___userland__syscall__get_mmap_prot ada___userland__syscall__execute_mac_failure ada___system__storage_elements__to_address ada___arch__mmu__remap_range ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__mprotect 0 -GG EK_GLOBALS ada___userland__syscall__mprotect local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 14 ada___arch__mmu__make_active ada___arch__mmu__remap_range scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_mac_capabilities 2 ada___userland__syscall__set_mac_capabilities__2 ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_mac_capabilities 0 -GG EK_GLOBALS ada___userland__syscall__set_mac_capabilities local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__set_capabilities calls_conditional 2 ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_mac_capabilities 2 ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_mac_capabilities 0 -GG EK_GLOBALS ada___userland__syscall__get_mac_capabilities local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__add_mac_permissions 11 ada___userland__syscall__translate_status ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__close vfs__open__2 ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_capabilities ada___userland__process__add_entity ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__add_mac_permissions 0 -GG EK_GLOBALS ada___userland__syscall__add_mac_permissions local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 19 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__close vfs__open__2 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__add_entity ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_mac_enforcement 4 ada___userland__syscall__execute_mac_failure ada___userland__process__set_enforcement ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_mac_enforcement 0 -GG EK_GLOBALS ada___userland__syscall__set_mac_enforcement local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 13 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__set_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__mount 9 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__mount__2 vfs__get_mount vfs__remount ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__mount 0 -GG EK_GLOBALS ada___userland__syscall__mount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 18 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__mount__2 vfs__get_mount vfs__remount ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__umount 7 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__unmount ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__umount 0 -GG EK_GLOBALS ada___userland__syscall__umount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__unmount ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__readlink 12 ada___userland__syscall__translate_status ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__close vfs__read_symbolic_link ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__readlink 0 -GG EK_GLOBALS ada___userland__syscall__readlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 21 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__close vfs__read_symbolic_link ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__check_permissions ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__getdents__free 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__getdents__free 0 -GG EK_GLOBALS ada___userland__syscall__getdents__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 3 ada___userland__syscall__getdents ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__getdents 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__getdents 0 -GG EK_GLOBALS ada___userland__syscall__getdents local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 7 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__read_entries ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__sync 1 vfs__synchronize__3 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sync 0 -GG EK_GLOBALS ada___userland__syscall__sync local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 vfs__synchronize__3 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__makenode 10 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__create_node vfs__apply_umask ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_umask ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__makenode 0 -GG EK_GLOBALS ada___userland__syscall__makenode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__create_node vfs__apply_umask ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__get_umask ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__unlink 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__unlink ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__unlink 0 -GG EK_GLOBALS ada___userland__syscall__unlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__unlink ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__truncate 5 ada___userland__syscall__translate_status vfs__truncate ada___userland__process__get_file ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__truncate 0 -GG EK_GLOBALS ada___userland__syscall__truncate local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 vfs__truncate ada___userland__process__get_file ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__bind 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__bind 0 -GG EK_GLOBALS ada___userland__syscall__bind local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__bind ada___ipc__socket__bind__2 ada___ipc__socket__bind__3 ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__symlink 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__create_symbolic_link ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__symlink 0 -GG EK_GLOBALS ada___userland__syscall__symlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__create_symbolic_link ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__connect 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__connect 0 -GG EK_GLOBALS ada___userland__syscall__connect local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__connect ada___ipc__socket__connect__2 ada___ipc__socket__connect__3 ada___arch__local__get_current_process FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__open_pty 8 ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__create ada___ipc__pty__close ada___userland__process__close ada___userland__process__get_common_map ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__open_pty 0 -GG EK_GLOBALS ada___userland__syscall__open_pty local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__create ada___ipc__pty__close ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__get_common_map ada___userland__process__get_limit ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__fsync 4 ada___userland__syscall__translate_status vfs__synchronize__2 ada___userland__process__get_file ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fsync 0 -GG EK_GLOBALS ada___userland__syscall__fsync local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 vfs__synchronize__2 ada___userland__process__get_file ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__link 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__create_hard_link ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__link 0 -GG EK_GLOBALS ada___userland__syscall__link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__create_hard_link ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__ptrace 6 ada___userland__syscall__execute_mac_failure ada___userland__process__set_traced_info ada___userland__process__get_parent ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ptrace 0 -GG EK_GLOBALS ada___userland__syscall__ptrace local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 15 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__set_traced_info ada___userland__process__issue_exit ada___userland__process__get_parent ada___userland__process__convert ada___userland__process__convert__2 ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__listen 4 ada___userland__process__get_file ada___ipc__socket__get_type ada___ipc__socket__listen ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__listen 0 -GG EK_GLOBALS ada___userland__syscall__listen local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 ada___userland__process__get_file ada___ipc__socket__get_type ada___ipc__socket__listen ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__sys_accept 16 ada___userland__syscall__check_add_file ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__close ada___userland__process__get_file ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__close ada___ipc__socket__accept_connection ada___ipc__socket__accept_connection__2 ada___ipc__socket__accept_connection__3 ada___ipc__socket__accept_connection__4 ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sys_accept 0 -GG EK_GLOBALS ada___userland__syscall__sys_accept local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 17 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__close ada___userland__process__get_file ada___userland__process__set_fd_flags ada___userland__process__get_common_map ada___userland__process__get_limit ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__close ada___ipc__socket__accept_connection ada___ipc__socket__accept_connection__2 ada___ipc__socket__accept_connection__3 ada___ipc__socket__accept_connection__4 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_rlimit 3 ada___userland__syscall__mac_syscall_to_kernel ada___userland__process__get_limit ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_rlimit 0 -GG EK_GLOBALS ada___userland__syscall__get_rlimit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__get_limit ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_rlimit 3 ada___userland__syscall__mac_syscall_to_kernel ada___userland__process__set_limit ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_rlimit 0 -GG EK_GLOBALS ada___userland__syscall__set_rlimit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__set_limit ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__faccess 10 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__check_access ada___userland__process__get_common_map ada___userland__process__get_uid ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__faccess 0 -GG EK_GLOBALS ada___userland__syscall__faccess local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__open vfs__check_access ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_uid ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__ppoll__c1 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ppoll__c1 0 -GG EK_GLOBALS ada___userland__syscall__ppoll__c1 local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___userland__syscall__ppoll ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__ppoll__c2 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ppoll__c2 0 -GG EK_GLOBALS ada___userland__syscall__ppoll__c2 local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___userland__syscall__ppoll ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__ppoll 17 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__poll_primary ada___ipc__pty__poll_secondary scheduler__yield_if_able vfs__poll ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___ipc__fifo__poll_reader ada___ipc__fifo__poll_writer ada___ipc__socket__poll ada___arch__clocks__get_monotonic_time ada___lib__time__increment ada___lib__time__is_greater_equal ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__ppoll 2 ada___userland__syscall__ppoll__c1 ada___userland__syscall__ppoll__c2 -GG EK_GLOBALS ada___userland__syscall__ppoll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 1 ada___arch__clocks__monotonic_clock_state proper_output 1 ada___arch__clocks__monotonic_clock_state refined_proof_in 0 refined_input 1 ada___arch__clocks__monotonic_clock_state refined_output 1 ada___arch__clocks__monotonic_clock_state calls_proof 0 calls 0 calls_conditional 16 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__poll_primary ada___ipc__pty__poll_secondary scheduler__yield_if_able vfs__poll ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___ipc__fifo__poll_reader ada___ipc__fifo__poll_writer ada___ipc__socket__poll ada___lib__time__increment ada___lib__time__is_greater_equal ada___arch__local__get_current_process FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__clocks__monotonic_clock_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_euid 2 ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_euid 0 -GG EK_GLOBALS ada___userland__syscall__get_euid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_effective_uid calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_uids 5 ada___userland__process__get_uid ada___userland__process__set_uid ada___userland__process__set_effective_uid ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_uids 0 -GG EK_GLOBALS ada___userland__syscall__set_uids local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___userland__process__get_uid ada___userland__process__set_uid ada___userland__process__set_effective_uid ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__fchmod 11 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__change_mode ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fchmod 0 -GG EK_GLOBALS ada___userland__syscall__fchmod local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__open vfs__change_mode ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__umask 3 ada___userland__process__get_umask ada___userland__process__set_umask ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__umask 0 -GG EK_GLOBALS ada___userland__syscall__umask local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___userland__process__get_umask ada___userland__process__set_umask calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__reboot 7 ada___userland__syscall__execute_mac_failure ada___userland__process__get_capabilities ada___lib__panic__hard_panic ada___arch__local__get_current_process ada___arch__power__halt ada___arch__power__reboot ada___arch__power__poweroff -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__reboot 0 -GG EK_GLOBALS ada___userland__syscall__reboot local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 15 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process ada___arch__power__halt ada___arch__power__reboot ada___arch__power__poweroff FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__fchown 11 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__change_owner ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fchown 0 -GG EK_GLOBALS ada___userland__syscall__fchown local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__open vfs__change_owner ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__pread 8 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__read ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pread 0 -GG EK_GLOBALS ada___userland__syscall__pread local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 7 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__read ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__pwrite 9 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address vfs__write ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_limit ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pwrite 0 -GG EK_GLOBALS ada___userland__syscall__pwrite local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__write ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_limit ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_sock_name 10 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_bound ada___ipc__socket__get_bound__2 ada___ipc__socket__get_bound__3 ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_sock_name 0 -GG EK_GLOBALS ada___userland__syscall__get_sock_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 9 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_bound ada___ipc__socket__get_bound__2 ada___ipc__socket__get_bound__3 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_peer_name 10 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_peer ada___ipc__socket__get_peer__2 ada___ipc__socket__get_peer__3 ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_peer_name 0 -GG EK_GLOBALS ada___userland__syscall__get_peer_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 9 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_peer ada___ipc__socket__get_peer__2 ada___ipc__socket__get_peer__3 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shutdown 3 ada___userland__process__get_file ada___ipc__socket__shutdown ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shutdown 0 -GG EK_GLOBALS ada___userland__syscall__shutdown local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___userland__process__get_file ada___ipc__socket__shutdown ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__futex 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__futex 0 -GG EK_GLOBALS ada___userland__syscall__futex local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___arch__local__get_current_process ada___ipc__futex__wait ada___ipc__futex__wake FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__clock 11 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__clocks__get_monotonic_resolution ada___arch__clocks__get_monotonic_time ada___arch__clocks__get_real_time_resolution ada___arch__clocks__get_real_time ada___arch__clocks__set_real_time ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__clock 0 -GG EK_GLOBALS ada___userland__syscall__clock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 15 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__clock_nanosleep 11 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address scheduler__yield_if_able ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__clocks__get_monotonic_time ada___arch__clocks__get_real_time ada___lib__time__increment ada___lib__time__is_greater_equal ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__clock_nanosleep 0 -GG EK_GLOBALS ada___userland__syscall__clock_nanosleep local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 18 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__yield_if_able scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___lib__time__increment ada___lib__time__is_greater_equal ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_rusage 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_runtime_times ada___userland__process__get_children_runtimes ada___userland__process__get_common_map ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_rusage 0 -GG EK_GLOBALS ada___userland__syscall__get_rusage local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_runtime_times ada___userland__process__get_children_runtimes ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__recvfrom 13 ada___userland__syscall__translate_status__2 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__read ada___ipc__socket__read__2 ada___ipc__socket__read__3 ada___ipc__socket__read__4 ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__recvfrom 0 -GG EK_GLOBALS ada___userland__syscall__recvfrom local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__read ada___ipc__socket__read__2 ada___ipc__socket__read__3 ada___ipc__socket__read__4 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__sendto 13 ada___userland__syscall__translate_status__2 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address lib__c_string_length ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__write ada___ipc__socket__write__2 ada___ipc__socket__write__3 ada___ipc__socket__write__4 ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sendto 0 -GG EK_GLOBALS ada___userland__syscall__sendto local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_domain ada___ipc__socket__get_type ada___ipc__socket__write ada___ipc__socket__write__2 ada___ipc__socket__write__3 ada___ipc__socket__write__4 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__config_netinterface 12 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address devices__from_unique_id vfs__stat ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___networking__interfaces__block ada___networking__interfaces__modify_addresses ada___networking__interfaces__modify_addresses__2 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__config_netinterface 0 -GG EK_GLOBALS ada___userland__syscall__config_netinterface local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 21 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address devices__from_unique_id scheduler__bail vfs__stat ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process ada___networking__interfaces__block ada___networking__interfaces__modify_addresses ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__utimes 11 ada___userland__syscall__translate_status ada___userland__syscall__check_userland_access ada___userland__syscall__resolve_at_directive ada___system__storage_elements__to_address vfs__open vfs__change_access_times ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__utimes 0 -GG EK_GLOBALS ada___userland__syscall__utimes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___system__storage_elements__to_address ada___arch__mmu__translate_address vfs__open vfs__change_access_times ada___userland__process__get_file ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__get_effective_uid ada___userland__process__check_permissions ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__create_tcluster 5 ada___userland__syscall__execute_mac_failure scheduler__create_cluster scheduler__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__create_tcluster 0 -GG EK_GLOBALS ada___userland__syscall__create_tcluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 14 ada___arch__mmu__make_active scheduler__bail scheduler__create_cluster scheduler__convert__2 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__switch_tcluster 6 ada___userland__syscall__execute_mac_failure scheduler__switch_cluster scheduler__convert__3 scheduler__convert__4 ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__switch_tcluster 0 -GG EK_GLOBALS ada___userland__syscall__switch_tcluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 15 ada___arch__mmu__make_active scheduler__bail scheduler__switch_cluster scheduler__convert__3 scheduler__convert__4 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__sigprocmask__c1 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sigprocmask__c1 0 -GG EK_GLOBALS ada___userland__syscall__sigprocmask__c1 local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___userland__syscall__sigprocmask ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__sigprocmask__c2 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sigprocmask__c2 0 -GG EK_GLOBALS ada___userland__syscall__sigprocmask__c2 local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___userland__syscall__sigprocmask ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__sigprocmask 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sigprocmask 2 ada___userland__syscall__sigprocmask__c1 ada___userland__syscall__sigprocmask__c2 -GG EK_GLOBALS ada___userland__syscall__sigprocmask local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_masked_signals calls_conditional 5 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__set_masked_signals ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__sigaction 10 ada___userland__syscall__check_userland_access ada___userland__syscall__translate_signal ada___system__storage_elements__to_address ada___system__storage_elements__to_integer ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___userland__process__get_signal_handler ada___userland__process__set_signal_handler ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__sigaction 0 -GG EK_GLOBALS ada___userland__syscall__sigaction local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 8 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__get_masked_signals ada___userland__process__set_masked_signals ada___userland__process__get_signal_handler ada___userland__process__set_signal_handler ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__send_signal 7 ada___userland__syscall__translate_signal ada___userland__process__get_uid ada___userland__process__get_effective_uid ada___userland__process__raise_signal ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__send_signal 0 -GG EK_GLOBALS ada___userland__syscall__send_signal local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___userland__process__get_uid ada___userland__process__get_effective_uid ada___userland__process__raise_signal ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_prio 8 ada___userland__syscall__execute_mac_failure scheduler__get_niceness scheduler__convert__3 ada___userland__process__get_niceness ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_thread ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_prio 0 -GG EK_GLOBALS ada___userland__syscall__get_prio local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___arch__mmu__make_active scheduler__bail scheduler__get_niceness scheduler__convert__3 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_niceness ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__convert__2 ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_prio 8 ada___userland__syscall__execute_mac_failure scheduler__set_niceness scheduler__convert__3 ada___userland__process__set_niceness ada___userland__process__convert__2 ada___userland__process__get_capabilities ada___arch__local__get_current_thread ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_prio 0 -GG EK_GLOBALS ada___userland__syscall__set_prio local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___arch__mmu__make_active scheduler__bail scheduler__set_niceness scheduler__convert__3 ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__set_niceness ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__convert__2 ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_gid 2 ada___userland__process__get_gid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_gid 0 -GG EK_GLOBALS ada___userland__syscall__get_gid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_gid calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_egid 2 ada___userland__process__get_effective_gid ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_egid 0 -GG EK_GLOBALS ada___userland__syscall__get_egid local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__get_effective_gid calls_conditional 1 ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_gids 5 ada___userland__process__get_gid ada___userland__process__set_gid ada___userland__process__set_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_gids 0 -GG EK_GLOBALS ada___userland__syscall__set_gids local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___userland__process__get_gid ada___userland__process__set_gid ada___userland__process__set_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_groups 5 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_supplementary_groups ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_groups 0 -GG EK_GLOBALS ada___userland__syscall__get_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__get_supplementary_groups ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_groups 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__set_supplementary_groups ada___userland__process__empty_supplementary_groups ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_groups 0 -GG EK_GLOBALS ada___userland__syscall__set_groups local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__set_supplementary_groups ada___userland__process__empty_supplementary_groups ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__tty_name 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___ipc__pty__get_name ada___userland__process__get_file ada___userland__process__get_common_map ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__tty_name 0 -GG EK_GLOBALS ada___userland__syscall__tty_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___ipc__pty__get_name ada___userland__process__get_file ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__fadvise 4 ada___userland__syscall__translate_status vfs__synchronize__2 ada___userland__process__get_file ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__fadvise 0 -GG EK_GLOBALS ada___userland__syscall__fadvise local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 vfs__synchronize__2 ada___userland__process__get_file ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmat__align__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat__align__align_up 0 -GG EK_GLOBALS ada___userland__syscall__shmat__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmat__align ada___userland__syscall__shmat ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmat__align__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat__align__align_down 0 -GG EK_GLOBALS ada___userland__syscall__shmat__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmat__align ada___userland__syscall__shmat ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmat__align__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat__align__divide_round_up 0 -GG EK_GLOBALS ada___userland__syscall__shmat__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmat__align ada___userland__syscall__shmat ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmat__align 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat__align 0 -GG EK_GLOBALS ada___userland__syscall__shmat__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__syscall__shmat ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmat 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmat 0 -GG EK_GLOBALS ada___userland__syscall__shmat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__map_range ada___userland__process__get_common_map ada___userland__process__bump_alloc_base ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___ipc__shm__get_address ada___ipc__shm__check_permissions ada___ipc__shm__modify_attachment FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmctl 11 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___ipc__shm__check_permissions ada___ipc__shm__mark_refcounted ada___ipc__shm__modify_permissions ada___ipc__shm__fetch_information -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmctl 0 -GG EK_GLOBALS ada___userland__syscall__shmctl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 11 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_common_map ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___ipc__shm__check_permissions ada___ipc__shm__mark_refcounted ada___ipc__shm__modify_permissions ada___ipc__shm__fetch_information FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmdt 8 ada___system__storage_elements__to_address ada___system__storage_elements__to_integer ada___arch__mmu__translate_address ada___arch__mmu__unmap_range ada___userland__process__get_common_map ada___arch__local__get_current_process ada___ipc__shm__get_segment_and_size ada___ipc__shm__modify_attachment -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmdt 0 -GG EK_GLOBALS ada___userland__syscall__shmdt local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___arch__mmu__translate_address ada___ipc__shm__get_segment_and_size calls_conditional 4 ada___arch__mmu__unmap_range ada___userland__process__get_common_map ada___arch__local__get_current_process ada___ipc__shm__modify_attachment FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmget__align__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget__align__align_up 0 -GG EK_GLOBALS ada___userland__syscall__shmget__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmget__align ada___userland__syscall__shmget ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmget__align__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget__align__align_down 0 -GG EK_GLOBALS ada___userland__syscall__shmget__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmget__align ada___userland__syscall__shmget ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmget__align__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget__align__divide_round_up 0 -GG EK_GLOBALS ada___userland__syscall__shmget__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__shmget__align ada___userland__syscall__shmget ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmget__align 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget__align 0 -GG EK_GLOBALS ada___userland__syscall__shmget__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__syscall__shmget ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__shmget 8 ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid ada___arch__local__get_current_process ada___ipc__shm__create_segment ada___ipc__shm__create_unkeyed_segment ada___ipc__shm__get_segment ada___userland__syscall__shmget__align ada___userland__syscall__shmget__align__align_up -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__shmget 0 -GG EK_GLOBALS ada___userland__syscall__shmget local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___userland__process__get_effective_uid ada___userland__process__get_effective_gid calls_conditional 4 ada___arch__local__get_current_process ada___ipc__shm__create_segment ada___ipc__shm__create_unkeyed_segment ada___ipc__shm__get_segment FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__getsockopt 7 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_type ada___ipc__socket__is_listening ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__getsockopt 0 -GG EK_GLOBALS ada___userland__syscall__getsockopt local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 7 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___ipc__socket__get_type ada___ipc__socket__is_listening ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__setsockopt 4 ada___userland__syscall__check_userland_access ada___userland__process__get_file ada___userland__process__get_common_map ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__setsockopt 0 -GG EK_GLOBALS ada___userland__syscall__setsockopt local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 5 ada___system__storage_elements__to_address ada___arch__mmu__translate_address ada___userland__process__get_file ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_thread_name 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address scheduler__get_name scheduler__convert__3 ada___userland__process__get_common_map ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_thread_name 0 -GG EK_GLOBALS ada___userland__syscall__get_thread_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address scheduler__get_name scheduler__convert__3 ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_thread_name 6 ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address scheduler__set_name scheduler__convert__3 ada___userland__process__get_common_map ada___arch__local__get_current_process -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_thread_name 0 -GG EK_GLOBALS ada___userland__syscall__set_thread_name local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 6 ada___system__storage_elements__to_address ada___arch__mmu__translate_address scheduler__set_name scheduler__convert__3 ada___userland__process__get_common_map ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__failure_policy 10 ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___userland__process__get_common_map ada___userland__process__get_capabilities ada___arch__local__get_current_process ada___userland__memory_failure__get_system_policy ada___userland__memory_failure__set_system_policy ada___userland__oom_failure__get_killing_config ada___userland__oom_failure__configure_killing -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__failure_policy 0 -GG EK_GLOBALS ada___userland__syscall__failure_policy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 19 ada___system__storage_elements__to_address ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___lib__messages__image ada___arch__local__get_current_thread ada___arch__local__get_current_process ada___userland__memory_failure__get_system_policy ada___userland__memory_failure__set_system_policy ada___userland__oom_failure__get_killing_config ada___userland__oom_failure__configure_killing FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__do_exit 8 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___lib__messages__put_line ada___arch__local__get_current_thread -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__do_exit 0 -GG EK_GLOBALS ada___userland__syscall__do_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 5 scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit calls_conditional 2 ada___arch__mmu__make_active ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__do_exit__2 8 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit__2 ada___lib__messages__put_line ada___arch__local__get_current_thread -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__do_exit__2 0 -GG EK_GLOBALS ada___userland__syscall__do_exit__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 5 scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit__2 calls_conditional 2 ada___arch__mmu__make_active ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__pre_syscall_hook 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pre_syscall_hook 0 -GG EK_GLOBALS ada___userland__syscall__pre_syscall_hook local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___arch__mmu__make_active scheduler__yield_if_able scheduler__bail scheduler__signal_kernel_entry scheduler__convert ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_traced_info ada___userland__process__issue_exit__2 ada___userland__process__get_raised_signal_actions ada___ipc__fifo__is_empty ada___ipc__fifo__write ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__post_syscall_hook 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__post_syscall_hook 0 -GG EK_GLOBALS ada___userland__syscall__post_syscall_hook local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 16 ada___arch__mmu__make_active scheduler__yield_if_able scheduler__bail scheduler__signal_kernel_exit scheduler__convert ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_traced_info ada___userland__process__issue_exit__2 ada___userland__process__get_raised_signal_actions ada___ipc__fifo__is_empty ada___ipc__fifo__write ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_mappability 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_mappability 0 -GG EK_GLOBALS ada___userland__syscall__check_userland_mappability local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___system__storage_elements__to_address ada___arch__mmu__translate_address TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__do_remote_exit 3 ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__do_remote_exit 0 -GG EK_GLOBALS ada___userland__syscall__do_remote_exit local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 3 ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__common_syscall_hook 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__common_syscall_hook 0 -GG EK_GLOBALS ada___userland__syscall__common_syscall_hook local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 4 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state __HEAP refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 15 ada___arch__mmu__make_active scheduler__yield_if_able scheduler__bail scheduler__convert ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__get_file ada___userland__process__flush_files ada___userland__process__get_traced_info ada___userland__process__issue_exit__2 ada___userland__process__get_raised_signal_actions ada___ipc__fifo__is_empty ada___ipc__fifo__write ada___arch__local__get_current_thread ada___arch__local__get_current_process FALSE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__translate_status 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_status 0 -GG EK_GLOBALS ada___userland__syscall__translate_status local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__translate_status__2 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_status__2 0 -GG EK_GLOBALS ada___userland__syscall__translate_status__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__translate_status__3 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_status__3 0 -GG EK_GLOBALS ada___userland__syscall__translate_status__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__translate_status__4 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_status__4 0 -GG EK_GLOBALS ada___userland__syscall__translate_status__4 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__exec_into_process__free 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__exec_into_process__free 0 -GG EK_GLOBALS ada___userland__syscall__exec_into_process__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 3 ada___userland__syscall__exec_into_process ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__exec_into_process 18 ada___userland__syscall__to_string ada___userland__syscall__execute_mac_failure ada___userland__syscall__check_userland_access ada___system__storage_elements__to_address ada___arch__mmu__fork_table vfs__open vfs__close ada___userland__process__reassign_process_addresses ada___userland__process__flush_exec_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__get_cwd ada___userland__process__set_identifier ada___userland__process__get_effective_uid ada___userland__process__get_capabilities ada___userland__process__check_permissions ada___userland__loader__start_program__2 ada___userland__syscall__exec_into_process__free -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__exec_into_process 0 -GG EK_GLOBALS ada___userland__syscall__exec_into_process local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 0 calls_conditional 25 ada___system__storage_elements__to_address ada___arch__mmu__fork_table ada___arch__mmu__make_active ada___arch__mmu__translate_address scheduler__bail vfs__open vfs__close ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__reassign_process_addresses ada___userland__process__flush_files ada___userland__process__flush_exec_files ada___userland__process__set_common_map ada___userland__process__get_common_map ada___userland__process__issue_exit ada___userland__process__get_cwd ada___userland__process__set_identifier ada___userland__process__get_effective_uid ada___userland__process__convert ada___userland__process__get_enforcement ada___userland__process__get_capabilities ada___userland__process__check_permissions ada___lib__messages__image ada___userland__loader__start_program__2 ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 ada___arch__mmu__kernel_table LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__to_string 1 lib__c_string_length -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__to_string 0 -GG EK_GLOBALS ada___userland__syscall__to_string local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__get_mmap_prot 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__get_mmap_prot 0 -GG EK_GLOBALS ada___userland__syscall__get_mmap_prot local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__execute_mac_failure 5 ada___userland__syscall__do_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___lib__messages__put_line ada___lib__messages__image -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__execute_mac_failure 0 -GG EK_GLOBALS ada___userland__syscall__execute_mac_failure local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state proper_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_proof_in 0 refined_input 3 ada___arch__mmu__kernel_table ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state refined_output 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state calls_proof 0 calls 1 ada___lib__messages__image calls_conditional 9 ada___arch__mmu__make_active scheduler__bail ada___userland__process__remove_thread ada___userland__process__flush_threads ada___userland__process__flush_files ada___userland__process__issue_exit ada___userland__process__convert ada___userland__process__get_enforcement ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__pty_ioctl 10 ada___ipc__pty__get_termios ada___ipc__pty__set_termios ada___ipc__pty__get_winsize ada___ipc__pty__set_winsize ada___ipc__pty__flush_primary ada___ipc__pty__flush_secondary ada___ipc__pty__start_primary ada___ipc__pty__start_secondary ada___ipc__pty__stop_primary ada___ipc__pty__stop_secondary -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__pty_ioctl 0 -GG EK_GLOBALS ada___userland__syscall__pty_ioctl local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 10 ada___ipc__pty__get_termios ada___ipc__pty__set_termios ada___ipc__pty__get_winsize ada___ipc__pty__set_winsize ada___ipc__pty__flush_primary ada___ipc__pty__flush_secondary ada___ipc__pty__start_primary ada___ipc__pty__start_secondary ada___ipc__pty__stop_primary ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__set_mac_capabilities__2 2 ada___userland__process__get_capabilities ada___userland__process__set_capabilities -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__set_mac_capabilities__2 0 -GG EK_GLOBALS ada___userland__syscall__set_mac_capabilities__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 ada___userland__process__set_capabilities calls_conditional 1 ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__mac_syscall_to_kernel 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__mac_syscall_to_kernel 0 -GG EK_GLOBALS ada___userland__syscall__mac_syscall_to_kernel local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__check_add_file 3 ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__get_limit -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_add_file 0 -GG EK_GLOBALS ada___userland__syscall__check_add_file local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___userland__process__add_file ada___userland__process__get_file_count ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access__al__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access__al__align_up 0 -GG EK_GLOBALS ada___userland__syscall__check_userland_access__al__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__check_userland_access__al ada___userland__syscall__check_userland_access ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access__al__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access__al__align_down 0 -GG EK_GLOBALS ada___userland__syscall__check_userland_access__al__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__check_userland_access__al ada___userland__syscall__check_userland_access ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access__al__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access__al__divide_round_up 0 -GG EK_GLOBALS ada___userland__syscall__check_userland_access__al__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___userland__syscall__check_userland_access__al ada___userland__syscall__check_userland_access ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access__al 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access__al 0 -GG EK_GLOBALS ada___userland__syscall__check_userland_access__al local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___userland__syscall__check_userland_access ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__check_userland_access 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__check_userland_access 0 -GG EK_GLOBALS ada___userland__syscall__check_userland_access local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___system__storage_elements__to_address ada___arch__mmu__translate_address TRUE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__resolve_at_directive 2 ada___userland__process__get_file ada___userland__process__get_cwd -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__resolve_at_directive 0 -GG EK_GLOBALS ada___userland__syscall__resolve_at_directive local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___userland__process__get_file ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall__translate_signal 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall__translate_signal 0 -GG EK_GLOBALS ada___userland__syscall__translate_signal local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___userland__syscall userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___userland__syscall 0 -GG EK_PROOF_DEPENDENCIES ada___userland__syscall 0 -GG EK_GLOBALS ada___userland__syscall local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 userland proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_listening FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___networking__arp TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__initialize FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__symlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_parent FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__listen FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___networking__arp__add_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__flush_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE scheduler__create_user_thread__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__connect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__config_netinterface FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__3 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__socket FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_identifier FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sysconf FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__3 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__open_pty FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__utimes FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_status__4 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_hostname FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__start_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_elf FALSE FALSE FALSE FALSE TRUE ada___userland__elf VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__modify_static__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__spawn FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fsync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__set_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__yield_if_able FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__create_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ipc TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE scheduler__bail FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__link FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__create_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_program FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_runtime_times FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__switch_tcluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_uid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__stop_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__2 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_tid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__4 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__init FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_entry FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__to_string FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__disable_aslr FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__create_unkeyed_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__signal_kernel_exit FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_program__2 FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__3 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ptrace FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_mmap_prot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__manage_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___arch__hooks__devices_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_scheduling_algorithm FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmget__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__syscall__shmget BODY_PART -GG EK_FLOW_SCOPE ada___ipc__shm__get_segment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__execute_mac_failure FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___networking__arp__lookup__4 FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__prctl_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_effective_gid FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__get_segment_and_size FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_elf FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pty_ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__listen FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__syscall__exec_into_process__freeGP202833 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__panic_smp_hook FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_time_slice FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__arp__is_initialized FALSE FALSE FALSE FALSE TRUE ada___networking__arp VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__get_address FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__get_active_core_count FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__5 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__hooks__register_ram_files FALSE FALSE FALSE FALSE TRUE ada___arch__hooks VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sys_accept FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__10 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__loader__start_shebang FALSE FALSE FALSE FALSE TRUE ada___userland__loader VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__delete_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__check_permissions FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__switch_cluster FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__6 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE cryptography TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__syscall__shmget__align__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmget__align VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_filter FALSE FALSE FALSE FALSE TRUE ada___userland__mac PRIVATE_PART -GG EK_FLOW_SCOPE ada___devices__termios TRUE FALSE FALSE FALSE FALSE devices -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mac_syscall_to_kernel FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__mark_refcounted FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__list_all FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__empty_supplementary_groups FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigaction FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__modify_attachment FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv4_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__create_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_add_file FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE scheduler__get_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__modify_permissions FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__exec_into_process__freeGP202833 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__exec_into_process BODY_PART -GG EK_FLOW_SCOPE ada___ipc__fifo TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_umask FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__delete_process FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_niceness FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__send_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmget__align__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmget__align VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__create FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right__6 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_runtime_times FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_rlimit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_ipv6_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_masked_signals FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__set_name FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fcntl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__raise_signal FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__resolve_at_directive FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_children_runtimes FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random TRUE FALSE FALSE FALSE FALSE cryptography -GG EK_FLOW_SCOPE ada___userland__syscall__get_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__get_load_averages FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__get_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmget__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmget__align VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__fill_data FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__exit_thread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__faccess FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__scheduler_isr FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__feed_entropy FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__fetch_information FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_prio FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__translate_signal FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__memory_failure TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___userland__process__set_signal_handler FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_random FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_in FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fstat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_read_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__init_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__get_integer__2 FALSE FALSE FALSE FALSE TRUE ada___cryptography__random VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__get_total_size FALSE FALSE FALSE FALSE TRUE ada___ipc__shm VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__memory_failure__get_system_policy FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__reschedule_asap FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__fetch_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__shm__check_and_maybe_free FALSE FALSE FALSE FALSE TRUE ada___ipc__shm PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_gid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__memory_failure__set_system_policy FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_raised_signal_actions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_from_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mprotect FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__load_tcb FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__3 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_thread_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__memory_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__memory_failure VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_gp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_egid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_write_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__convert__4 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_stacks FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__chdir FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__time__normalize FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_gids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_core_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE networking TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___userland__process__remove_thread FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__success_fork_result FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ioctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__power TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___arch__context__init_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__local__get_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_to_end FALSE FALSE FALSE FALSE TRUE ada___ipc__pty PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__convert__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__save_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_threads FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access__al TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__syscall__check_userland_access BODY_PART -GG EK_FLOW_SCOPE ada___arch__power__halt FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART -GG EK_FLOW_SCOPE ada___cryptography__random__entropy_adjust FALSE FALSE FALSE FALSE TRUE ada___cryptography__random PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__local__set_current_thread FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__power__reboot FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__load_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__increment FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sched_yield FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__power__poweroff FALSE FALSE FALSE FALSE TRUE ada___arch__power VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__local__set_current_process FALSE FALSE FALSE FALSE TRUE ada___arch__local VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_groups FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__context__destroy_fp_context FALSE FALSE FALSE FALSE TRUE ada___arch__context VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__reassign_process_addresses FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__ppoll FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__delete_thread_cluster FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___ipc__fifo__poll_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure__get_killing_config FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__tty_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__time__substract FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pipe FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure__configure_killing FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__7 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE networking__get_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__oom_failure__handle_failure FALSE FALSE FALSE FALSE TRUE ada___userland__oom_failure VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_euid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__list_all__2 FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access__al__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__check_userland_access__al VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_niceness FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_uid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_mac_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__futex TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__process__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_uids FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_empty FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE config TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__rename FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_reader FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__is_valid_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fchmod FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE networking__set_hostname FALSE FALSE FALSE FALSE TRUE networking VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fadvise FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__time__is_greater_equal FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__futex__wait FALSE FALSE FALSE FALSE TRUE ada___ipc__futex VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__inner_unix_shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket PRIVATE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access__al__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__check_userland_access__al VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__add_mac_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__interrupts TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__add_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close_writer FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__futex__wake FALSE FALSE FALSE FALSE TRUE ada___ipc__futex VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__11 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__get_linker FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__umask FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical TRUE FALSE FALSE FALSE FALSE memory -GG EK_FLOW_SCOPE ada___lib__time__is_normalized FALSE FALSE FALSE FALSE TRUE ada___lib__time VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__3 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___memory__physical__init_allocator FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmat FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__waiting_spot FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf__load_header FALSE FALSE FALSE FALSE TRUE ada___userland__elf PRIVATE_PART -GG EK_FLOW_SCOPE ada___memory__physical__alloc FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__has_available_time FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file_count FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_mac_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_access__al__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__check_userland_access__al VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_limit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE scheduler__is_switchable FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__reboot FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__get_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__duplicate FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__add_bucket_and_shift FALSE FALSE FALSE FALSE TRUE scheduler PRIVATE_PART -GG EK_FLOW_SCOPE ada___memory__physical__free FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___userland__process__duplicate_fd_table FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__fchown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__set_size FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sys_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___ipc__pty TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__syscall__getdents__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___userland__syscall__getdents__freeGP83398 VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pread FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__arch_prctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces TRUE FALSE FALSE FALSE FALSE networking -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__close FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__register_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__read FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__create FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__get_statistics FALSE FALSE FALSE FALSE TRUE ada___memory__physical VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__pty__close FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__umount FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___memory__physical__calculate_signature FALSE FALSE FALSE FALSE TRUE ada___memory__physical PRIVATE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pwrite FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__readlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__write FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__open FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmctl FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_sock_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__getdents__freeGP83398 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__getdents BODY_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_interface_address__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_fd_flags FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___ipc__pty__write_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmat__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___userland__syscall__shmat BODY_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmdt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__is_valid FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__close FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_peer_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__block FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c TRUE FALSE FALSE FALSE FALSE interfaces -GG EK_FLOW_SCOPE ada___userland__syscall__read FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__remove_file FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__read_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__4 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___ipc__filelock__could_acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE ada___userland__syscall__shmget FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__write FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shutdown FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmat__align__align_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmat__align VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__get_suitable_interface__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__8 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__write_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__flush_exec_files FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__acquire_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket TRUE FALSE FALSE FALSE FALSE ipc -GG EK_FLOW_SCOPE ada___userland__process__set_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__seek FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__getsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ppoll__c1 FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___userland__syscall__ppoll__c1GP112594 VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__c_length_ghost__2 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_primary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmat__align__align_down FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmat__align VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_common_map FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__futex FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_bound__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__12 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__modify_addresses__2 FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__setsockopt FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__poll_secondary FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__getdents FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__create FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__fifo__common_close FALSE FALSE FALSE FALSE TRUE ada___ipc__fifo PRIVATE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ppoll__c1GP112594 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__ppoll BODY_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__shmat__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___userland__syscall__shmat__align VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ppoll__c2 FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___userland__syscall__ppoll__c2GP112674 VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_peer__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_domain FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_stack_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__mmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sync FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___ipc__filelock__release_lock__2 FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__clock FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__makenode FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__get_type FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_primary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__bump_alloc_base FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__set_thread_name FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask__c1 FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___userland__syscall__sigprocmask__c1GP163663 VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__bind__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__close FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__munmap FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__ppoll__c2GP112674 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__ppoll BODY_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__is_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__clock_nanosleep FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__unlink FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___networking__interfaces__list_interfaces FALSE FALSE FALSE FALSE TRUE ada___networking__interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_pid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__is_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_secondary_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__connect__3 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_traced_info FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_ppid FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__truncate FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask__c1GP163663 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__sigprocmask BODY_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__set_blocking FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__exec FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask__c2 FALSE FALSE FALSE TRUE ada___ada__unchecked_conversion TRUE ada___userland__syscall__sigprocmask__c2GP163743 VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__list_all FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__failure_policy FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_conversion FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___userland__process__issue_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__filelock__inner_could_acquire FALSE FALSE FALSE FALSE TRUE ada___ipc__filelock PRIVATE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__accept_connection__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__get_rusage FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__poll FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__do_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_enforcement FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_termios FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_c FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__issue_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__recvfrom FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__do_exit__2 FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__get_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sigprocmask__c2GP163743 TRUE FALSE FALSE FALSE TRUE ada___userland__syscall__sigprocmask BODY_PART -GG EK_FLOW_SCOPE ada___userland__syscall__clone FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__set_capabilities FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__pre_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__check_exit FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE scheduler TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__check_permissions FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_right FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__post_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__read__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__5 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__sendto FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__init FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__check_userland_mappability FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__idle_core FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__set_winsize FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE scheduler__create_user_thread FALSE FALSE FALSE FALSE TRUE scheduler VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__set_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__default_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__mac__add_entity FALSE FALSE FALSE FALSE TRUE ada___userland__mac VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__minimum_stack_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__parameters__adjust_storage_size FALSE FALSE FALSE FALSE TRUE ada___system__parameters VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__do_remote_exit FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__is_nul_terminated FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__pty__get_name FALSE FALSE FALSE FALSE TRUE ada___ipc__pty VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___interfaces__c__to_ada__9 FALSE FALSE FALSE FALSE TRUE ada___interfaces__c VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___userland__syscall__common_syscall_hook FALSE FALSE FALSE FALSE TRUE ada___userland__syscall PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__unsigned_types__rotate_left__2 FALSE FALSE FALSE FALSE TRUE ada___system__unsigned_types VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__shutdown FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__elf TRUE FALSE FALSE FALSE FALSE userland -GG EK_FLOW_SCOPE ada___userland__syscall__wait FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__syscall__bind FALSE FALSE FALSE FALSE TRUE ada___userland__syscall VISIBLE_PART -GG EK_FLOW_SCOPE ada___ipc__socket__write__4 FALSE FALSE FALSE FALSE TRUE ada___ipc__socket VISIBLE_PART -GG EK_FLOW_SCOPE ada___userland__process__get_cwd FALSE FALSE FALSE FALSE TRUE ada___userland__process VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_REMOTE_STATES 4 ada___arch__clocks__monotonic_clock_state ada___arch__clocks__rt_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland-syscall.cswi b/obj/gnatprove/phase1/userland-syscall.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland-syscall.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/userland.ads.stderr b/obj/gnatprove/phase1/userland.ads.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland.ads.stdout b/obj/gnatprove/phase1/userland.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/userland.ali b/obj/gnatprove/phase1/userland.ali deleted file mode 100644 index 44e4ee2..0000000 --- a/obj/gnatprove/phase1/userland.ali +++ /dev/null @@ -1,64 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U userland%s userland.ads 1671c2b9 OO PK - -D system.ads 20240507065137 14286b0f system%s -D userland.ads 20250222165738 1671c2b9 userland%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 2 userland.ads -17K9*Userland 23l5 23e13 -19P9*String_Acc(string) 20r58 21r58 -20A9*Argument_Arr(19P9) 22r36 -21A9*Environment_Arr(19P9) -22P9*Argument_Arr_Acc(20A9) - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS userland 0 -GG EK_PROOF_DEPENDENCIES userland 0 -GG EK_GLOBALS userland local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE userland TRUE FALSE FALSE FALSE FALSE __standard -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/userland.cswi b/obj/gnatprove/phase1/userland.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/userland.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/vfs-dev.adb.stderr b/obj/gnatprove/phase1/vfs-dev.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/vfs-dev.adb.stdout b/obj/gnatprove/phase1/vfs-dev.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/vfs-dev.ali b/obj/gnatprove/phase1/vfs-dev.ali deleted file mode 100644 index e5d731b..0000000 --- a/obj/gnatprove/phase1/vfs-dev.ali +++ /dev/null @@ -1,487 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RR NO_DELAY -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RR NO_TASKING -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ATTRIBUTES -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U vfs.dev%b vfs-dev.adb adc56e17 OO PK IU -Z system%s system.ads system.ali -Z system.storage_elements%s s-stoele.ads s-stoele.ali -W vfs%s vfs.adb vfs.ali - -U vfs.dev%s vfs-dev.ads 8f7f7e04 OO PK IU -W system%s system.ads system.ali -W vfs%s vfs.adb vfs.ali - -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D vfs.ads 20250222165738 63b4365d vfs%s -D vfs-dev.ads 20250222165738 f8e32356 vfs.dev%s -D vfs-dev.adb 20250222165738 55264d41 vfs.dev%b -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 arch.ads -20K9*Arch 52e9 11|97r18 100r18 12|284r18 287r18 -X 2 arch-mmu.ads -22K14*MMU 250e13 11|97r23 100r23 12|284r23 287r23 -26R9*Page_Permissions 32e14 11|100r27 12|287r27 -43P9*Page_Table_Acc(42R9) 11|97r27 12|284r27 -X 3 devices.ads -22K9*Devices 279e12 12|105r27 118r20 130r7 139r32 143r16 147r13 237r35 238r35 -. 243r13 266r24 293r10 310r7 315r20 318r7 320r17 336r10 -29A9*Operation_Data(4|70M9) 11|67r26 76r22 12|163r26 186r22 -34A9*UUID(4|70M9) 12|266r32 -83I9*Device_Handle 11|21r23 12|24r23 169r23 192r23 212r22 267r28 -. 291r22 308r22 334r22 -84A9*Device_List(83I9) 12|118r28 315r28 -88i4*Max_Name_Length{natural} 12|105r35 -123V13*Fetch{34A9} 12|270s28 -130U14*Fetch_Name 12|147s21 -141U14*List 12|130s15 318s15 -150V13*Is_Block_Device{boolean} 12|143s24 243s21 -152V13*Get_Block_Count{4|84M9} 12|238s43 -154V13*Get_Block_Size{natural} 12|237s43 -161V13*Get_Unique_ID{natural} 12|139s40 -165V13*From_Unique_ID{83I9} 12|169s40 192s40 212s39 267s45 291s39 308s39 -. 334s39 -171V13*Synchronize{boolean} 12|320s25 336s18 -193U14*Read 12|172s7 -210U14*Write 12|195s7 -224V13*IO_Control{boolean} 12|272s19 -236V13*Mmap{boolean} 12|293s18 -249U14*Poll 12|310s15 -X 4 interfac.ads -70M9*Unsigned_8 -81M9*Unsigned_32 -84M9*Unsigned_64 11|35r62 37r65 39r56 41r64 45r33 46r33 50r33 51r33 53r57 -. 66r22 75r22 90r17 99r18 12|56r62 62r65 68r56 74r64 82r33 83r33 93r33 94r33 -. 102r57 105r14 139r19 162r22 185r22 242r25 254r17 286r18 -X 7 memory.ads -19K9*Memory 36e11 11|98r18 12|285r18 -35M12*Virtual_Address{9|82M9} 11|98r25 12|285r25 -X 8 system.ads -37K9*System 155e11 11|17w6 24r27 28r23 33r35 35r35 37r38 39r29 41r36 44r29 -. 49r29 53r34 56r20 64r22 73r22 82r18 88r17 91r17 95r18 104r20 110r33 113r20 -. 12|27r27 34r20 39r23 51r35 53r13 56r35 62r38 68r29 74r36 81r29 92r29 102r34 -. 109r20 160r22 183r22 206r18 252r17 255r17 282r18 301r20 313r33 328r20 -67M9*Address 11|24r34 28r30 33r42 35r42 37r45 39r36 41r43 44r36 49r36 53r41 -. 56r27 64r29 73r29 82r25 88r24 91r24 95r25 104r27 110r40 113r27 12|27r34 -. 34r20 39r30 51r42 56r42 62r45 68r36 74r43 81r36 92r36 102r41 109r27 160r29 -. 183r29 206r25 252r24 255r24 282r25 301r27 313r40 328r27 -69m4*Null_Address{67M9} 12|53r20 -X 9 s-stoele.ads -82M9*Integer_Address -X 10 vfs.ads -24K9*VFS 674e8 11|19r9 116r5 12|17r14 342r5 -28M9*File_Inode_Number<4|84M9> 11|25r27 57r20 65r22 74r22 83r18 89r17 96r18 -. 105r20 114r20 12|28r27 110r20 161r22 184r22 207r18 253r17 283r18 302r20 -. 329r20 -32M12*File_Mode{4|81M9} -39n37*File_Directory{39E9} 12|217r35 -40n23*File_Character_Device{39E9} 12|142r33 231r35 -40n46*File_Block_Device{39E9} 12|145r19 244r31 -41R9*File_Stat 54e14 11|84r22 12|208r22 -42m7*Unique_Identifier{28M9} 12|216m14 230m14 -43e7*Type_Of_File{39E9} 12|217m14 231m14 244m15 -44m7*Mode{32M12} 12|218m14 232m14 -45m7*UID{4|81M9} 12|219m14 233m14 -46m7*GID{4|81M9} 12|220m14 234m14 -47i7*Hard_Link_Count{positive} 12|221m14 235m14 -48m7*Byte_Size{4|84M9} 12|222m14 236m14 242m12 -49i7*IO_Block_Size{natural} 12|223m14 237m14 242r40 -50m7*IO_Block_Count{4|84M9} 12|224m14 238m14 242r59 -51r7*Creation_Time{35R9} 12|225m14 239m14 -52r7*Modification_Time{35R9} 12|226m14 240m14 -53r7*Access_Time{35R9} 12|227m14 241m14 -58m7*Inode_Number{4|84M9} 12|138m17 -59a7*Name_Buffer{string} 12|140m17 149m49 -60i7*Name_Len{natural} 12|141m17 150m49 -61e7*Type_Of_File{39E9} 12|142m17 144m48 -63A9*Directory_Entities(57R9) 11|59r24 12|112r24 -234E9*FS_Status 242e16 11|61r24 70r26 79r26 85r22 92r21 101r22 110r56 115r36 -. 12|114r24 166r26 189r26 209r22 256r21 288r22 313r56 330r36 -235n8*FS_Success{234E9} 12|156r18 179r32 202r32 248r18 271r28 273r26 294r20 -. 324r14 337r17 -236n8*FS_Invalid_Value{234E9} 12|124r23 263r20 -241n8*FS_IO_Failure{234E9} 12|179r48 202r48 275r26 296r20 321r20 339r17 -X 11 vfs-dev.ads -19K13*Dev 10|24k9 11|116l9 116e12 12|17b18 342l9 342t12 -20U14*Probe 21>8 22>8 23>8 24<8 25<8 12|23b14 36l8 36t13 -21i8 Handle{3|83I9} 12|24b8 30r28 -22b8 Do_Read_Only{boolean} 12|25b8 31r28 -23b8 Do_Relatime{boolean} 12|26b8 32r28 -24m8 Data_Addr{8|67M9} 12|27b8 34m7 -25m8 Root_Ino{10|28M9} 12|28b8 35m7 -27U14*Remount 28>8 29>8 30>8 31<8 12|38b14 49l8 49t15 -28m8 FS{8|67M9} 12|39b8 44r28 -29b8 Do_Read_Only{boolean} 12|40b8 45r28 -30b8 Do_Relatime{boolean} 12|41b8 46r28 -31b8 Success{boolean} 12|42b8 48m7 -33U14*Unmount 33=23 12|51b14 54l8 54t15 -33m23 FS{8|67M9} 12|51b23 53m7 -35U14*Get_Block_Size 35>30 35<51 12|56b14 60l8 60t22 -35m30 FS{8|67M9} 12|56b30 57r28 -35m51 Size{4|84M9} 12|56b51 59m7 -37U14*Get_Fragment_Size 37>33 37<54 12|62b14 66l8 66t25 -37m33 FS{8|67M9} 12|62b33 63r28 -37m54 Size{4|84M9} 12|62b54 65m7 -39U14*Get_Size 39>24 39<45 12|68b14 72l8 72t16 -39m24 FS{8|67M9} 12|68b24 69r28 -39m45 Size{4|84M9} 12|68b45 71m7 -41U14*Get_Inode_Count 41>31 41<52 12|74b14 78l8 78t23 -41m31 FS{8|67M9} 12|74b31 75r28 -41m52 Count{4|84M9} 12|74b52 77m7 -43U14*Get_Free_Blocks 44>8 45<8 46<8 12|80b14 89l8 89t23 -44m8 FS{8|67M9} 12|81b8 85r28 -45m8 Free_Blocks{4|84M9} 12|82b8 87m7 -46m8 Free_Unpriviledged{4|84M9} 12|83b8 88m7 -48U14*Get_Free_Inodes 49>8 50<8 51<8 12|91b14 100l8 100t23 -49m8 FS{8|67M9} 12|92b8 96r28 -50m8 Free_Inodes{4|84M9} 12|93b8 98m7 -51m8 Free_Unpriviledged{4|84M9} 12|94b8 99m7 -53V13*Get_Max_Length{4|84M9} 53>29 12|102b13 106l8 106t22 -53m29 FS{8|67M9} 12|102b29 103r28 -55U14*Read_Entries 56>8 57>8 58>8 59<8 60<8 61<8 12|108b14 157l8 157t20 -56m8 FS_Data{8|67M9} 12|109b8 116r28 -57m8 Ino{10|28M9} 12|110b8 122r10 -58i8 Offset{natural} 12|111b8 132r22 -59a8 Entities{10|63A9} 12|112b8 133r28 137m13 137r23 144m16 144r26 149m17 -. 149r17 149r27 150m17 150r17 150r27 -60i8 Ret_Count{natural} 12|113b8 123m10 128m7 133r16 151m13 151r26 -61e8 Success{10|234E9} 12|114b8 124m10 156m7 -63U14*Read 64>8 65>8 66>8 67<8 68<8 69>8 70<8 12|159b14 180l8 180t12 -64m8 FS_Data{8|67M9} 12|160b8 168r28 -65m8 Ino{10|28M9} 12|161b8 169r65 -66m8 Offset{4|84M9} 12|162b8 174r26 -67a8 Data{3|29A9} 12|163b8 175m26 -68i8 Ret_Count{natural} 12|164b8 176m26 -69b8 Is_Blocking{boolean} 12|165b8 178r26 -70e8 Success{10|234E9} 12|166b8 179m7 -72U14*Write 73>8 74>8 75>8 76>8 77<8 78>8 79<8 12|182b14 203l8 203t13 -73m8 FS_Data{8|67M9} 12|183b8 191r28 -74m8 Ino{10|28M9} 12|184b8 192r65 -75m8 Offset{4|84M9} 12|185b8 197r26 -76a8 Data{3|29A9} 12|186b8 198r26 -77i8 Ret_Count{natural} 12|187b8 199m26 -78b8 Is_Blocking{boolean} 12|188b8 201r26 -79e8 Success{10|234E9} 12|189b8 202m7 -81U14*Stat 82>8 83>8 84<8 85<8 12|205b14 249l8 249t12 -82m8 Data{8|67M9} 12|206b8 211r28 -83m8 Ino{10|28M9} 12|207b8 212r64 214r10 230r35 -84r8 S{10|41R9} 12|208b8 215m10 229m10 242m10 242r38 242r57 244m13 -85e8 Success{10|234E9} 12|209b8 248m7 -87U14*IO_Control 88>8 89>8 90>8 91>8 92<8 12|251b14 279l8 279t18 -88m8 Data{8|67M9} 12|252b8 258r28 -89m8 Ino{10|28M9} 12|253b8 262r10 267r70 -90m8 Req{4|84M9} 12|254b8 269r16 272r36 -91m8 Arg{8|67M9} 12|255b8 266r61 272r41 -92e8 Status{10|234E9} 12|256b8 263m10 271m16 273m16 275m16 -94U14*Mmap 95>8 96>8 97>8 98>8 99>8 100>8 101<8 12|281b14 298l8 298t12 -95m8 Data{8|67M9} 12|282b8 290r28 -96m8 Ino{10|28M9} 12|283b8 291r64 -97p8 Map{2|43P9} 12|284b8 293r29 -98m8 Address{7|35M12} 12|285b8 293r34 -99m8 Length{4|84M9} 12|286b8 293r43 -100r8 Flags{2|26R9} 12|287b8 293r51 -101e8 Status{10|234E9} 12|288b8 294m10 296m10 -103U14*Poll 104>8 105>8 106<8 107<8 108<8 12|300b14 311l8 311t12 -104m8 Data{8|67M9} 12|301b8 307r28 -105m8 Ino{10|28M9} 12|302b8 308r64 -106b8 Can_Read{boolean} 12|303b8 310m26 -107b8 Can_Write{boolean} 12|304b8 310m36 -108b8 Is_Error{boolean} 12|305b8 310m47 -110V13*Synchronize{10|234E9} 110>26 12|313b13 325l8 325t19 -110m26 Data{8|67M9} 12|313b26 314r28 -112V13*Synchronize{10|234E9} 113>8 114>8 115>8 12|327b13 341l8 341t19 -113m8 Data{8|67M9} 12|328b8 332r28 -114m8 Ino{10|28M9} 12|329b8 334r64 -115b8 Data_Only{boolean} 12|330b8 333r28 -X 12 vfs-dev.adb -20N4 Root_Inode 35r20 122r17 214r16 216r35 262r16 -21N4 Device_Permissions 218r35 232r35 -118a7 Buffer{3|84A9} 130m21 139r55 143r41 148r17 -119i7 Idx{natural} 129m7 137r40 144r43 149r44 150r44 152m13 152r32 -120i7 Buffer_Len{natural} 130m29 131r21 -131i11 I{integer} 132r13 139r63 143r49 148r25 -169i7 Dev{3|83I9} 173r26 -170b7 Succ{boolean} 177m26 179r22 -192i7 Dev{3|83I9} 196r26 -193b7 Succ{boolean} 200m26 202r22 -212i7 Dev{3|83I9} 237r59 238r60 243r38 -260N7 DEV_UUID 269r22 -266a13 Arg_UUID{3|34A9} 270m16 -267i13 Dev{3|83I9} 270r35 272r31 -291i7 Dev{3|83I9} 293r24 -308i7 Dev{3|83I9} 310r21 -315a7 Buffer{3|84A9} 318m21 320r38 -316i7 Buffer_Len{natural} 318m29 319r21 -319i11 I{integer} 320r46 -334i7 Dev{3|83I9} 336r31 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___vfs__dev__probe 1 ada___system__storage_elements__to_address -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__probe 0 -GG EK_GLOBALS ada___vfs__dev__probe local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__remount 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__remount 0 -GG EK_GLOBALS ada___vfs__dev__remount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__unmount 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__unmount 0 -GG EK_GLOBALS ada___vfs__dev__unmount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__get_block_size 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_block_size 0 -GG EK_GLOBALS ada___vfs__dev__get_block_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__get_fragment_size 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_fragment_size 0 -GG EK_GLOBALS ada___vfs__dev__get_fragment_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__get_size 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_size 0 -GG EK_GLOBALS ada___vfs__dev__get_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__get_inode_count 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_inode_count 0 -GG EK_GLOBALS ada___vfs__dev__get_inode_count local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__get_free_blocks 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_free_blocks 0 -GG EK_GLOBALS ada___vfs__dev__get_free_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__get_free_inodes 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_free_inodes 0 -GG EK_GLOBALS ada___vfs__dev__get_free_inodes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__get_max_length 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__get_max_length 0 -GG EK_GLOBALS ada___vfs__dev__get_max_length local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__read_entries 4 devices__fetch_name devices__list devices__is_block_device devices__get_unique_id -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__read_entries 0 -GG EK_GLOBALS ada___vfs__dev__read_entries local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 devices__fetch_name devices__list devices__is_block_device devices__get_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__read 2 devices__from_unique_id devices__read -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__read 0 -GG EK_GLOBALS ada___vfs__dev__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 devices__read calls_conditional 1 devices__from_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__write 2 devices__from_unique_id devices__write -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__write 0 -GG EK_GLOBALS ada___vfs__dev__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 devices__write calls_conditional 1 devices__from_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__stat 4 devices__is_block_device devices__get_block_count devices__get_block_size devices__from_unique_id -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__stat 0 -GG EK_GLOBALS ada___vfs__dev__stat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 4 devices__is_block_device devices__get_block_count devices__get_block_size devices__from_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__io_control 3 devices__fetch__3 devices__from_unique_id devices__io_control -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__io_control 0 -GG EK_GLOBALS ada___vfs__dev__io_control local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 3 devices__fetch__3 devices__from_unique_id devices__io_control FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__mmap 2 devices__from_unique_id devices__mmap -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__mmap 0 -GG EK_GLOBALS ada___vfs__dev__mmap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 devices__from_unique_id devices__mmap FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__poll 2 devices__from_unique_id devices__poll -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__poll 0 -GG EK_GLOBALS ada___vfs__dev__poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 devices__poll calls_conditional 1 devices__from_unique_id FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__synchronize 2 devices__list devices__synchronize -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__synchronize 0 -GG EK_GLOBALS ada___vfs__dev__synchronize local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 1 devices__list calls_conditional 1 devices__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev__synchronize__2 2 devices__from_unique_id devices__synchronize -GG EK_PROOF_DEPENDENCIES ada___vfs__dev__synchronize__2 0 -GG EK_GLOBALS ada___vfs__dev__synchronize__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__dev vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 devices__from_unique_id devices__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__dev 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__dev 0 -GG EK_GLOBALS ada___vfs__dev local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___vfs__dev__read FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__write FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev TRUE FALSE FALSE FALSE FALSE vfs -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__io_control FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__mmap FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___vfs__dev__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__poll FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__dev__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__synchronize FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__dev__synchronize__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/vfs-dev.cswi b/obj/gnatprove/phase1/vfs-dev.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/vfs-dev.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/vfs-ext.adb.stderr b/obj/gnatprove/phase1/vfs-ext.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/vfs-ext.adb.stdout b/obj/gnatprove/phase1/vfs-ext.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/vfs-ext.ali b/obj/gnatprove/phase1/vfs-ext.ali deleted file mode 100644 index f16b8a7..0000000 --- a/obj/gnatprove/phase1/vfs-ext.ali +++ /dev/null @@ -1,1516 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RV NO_RECURSION -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_DEALLOCATION -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_ATTRIBUTES -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U vfs.ext%b vfs-ext.adb af4da9f3 OO PK IU -W ada%s ada.ads ada.ali -W ada.characters%s a-charac.ads a-charac.ali -W ada.characters.latin_1%s a-chlat1.ads a-chlat1.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W lib%s lib.adb lib.ali -W lib.alignment%s lib-alignment.adb lib-alignment.ali -W lib.messages%s lib-messages.adb lib-messages.ali -W lib.panic%s lib-panic.adb lib-panic.ali -W system%s system.ads system.ali -W system.address_to_access_conversions%s s-atacco.ads s-atacco.ali -Z system.storage_elements%s s-stoele.ads s-stoele.ali -W vfs%s vfs.adb vfs.ali - -U vfs.ext%s vfs-ext.ads 1b408ae8 OO PK IU -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W system%s system.ads system.ali -W vfs%s vfs.adb vfs.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-charac.ads 20240507065137 2d3ec45b ada.characters%s -D a-chlat1.ads 20240507065137 e0d72e76 ada.characters.latin_1%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-clocks.ads 20250222165738 f76b002b arch.clocks%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s -D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b -D lib-messages.ads 20250222165738 4282fa77 lib.messages%s -D lib-panic.ads 20250222165738 ca7c7da8 lib.panic%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-atacco.ads 20240507065137 5868e3ba system.address_to_access_conversions%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D vfs.ads 20250222165738 63b4365d vfs%s -D vfs-ext.ads 20250222165738 f0d56b8d vfs.ext%s -D vfs-ext.adb 20250222165738 c4998d1f vfs.ext%b -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 22|21r6 22r6 26r26 27r26 28r26 29r26 318r24 -X 2 a-charac.ads -16K13*Characters 18e19 22|22r10 318r28 -X 3 a-chlat1.ads -16K24*Latin_1 294e27 22|22w21 318r39 -23e4*NUL{character} 22|318r47 -X 4 a-uncdea.ads -20u15*Unchecked_Deallocation 22|21w10 26r30 27r30 28r30 29r30 -X 8 devices.ads -22K9*Devices 279e12 22|69r10 1229r10 1527r10 1534r10 1565r10 1572r10 1619r10 -. 1626r10 1683r13 1690r13 1697r13 1707r10 1714r10 1724r7 1770r10 1849r10 -. 2007r13 2023r16 2032r13 2048r16 2060r13 2087r10 2103r13 2113r10 2140r7 -. 2179r10 2210r10 2285r10 2320r10 -29A9*Operation_Data(9|70M9) 21|118r24 126r20 439r26 449r22 22|30r8 -. 229r19 231r19 798r24 848r20 1427r22 1456r19 1475r22 1523r20 1555r21 1599r21 -. 1655r36 1657r29 1659r26 1739r26 1797r22 1961r36 1963r29 1965r21 2162r17 -. 2268r17 2374r21 2461r21 -30P9*Operation_Data_Acc(29A9) 22|30r24 2161r20 2267r20 2367r20 2458r36 -83I9*Device_Handle 21|22r23 366r31 409r26 22|33r23 1516r26 -154V13*Get_Block_Size{natural} 22|909s52 933s35 2226s45 -156V13*Is_Read_Only{boolean} 22|69s18 -171V13*Synchronize{boolean} 22|1229s18 -193U14*Read 22|1534s18 1572s18 1626s18 1683s21 1690s21 1697s21 1707s18 1714s18 -. 1724s15 1770s18 2007s21 2032s21 2087s18 2179s18 2285s18 -210U14*Write 22|1527s18 1565s18 1619s18 1849s18 2023s24 2048s24 2060s21 2103s21 -. 2113s18 2140s15 2210s18 2320s18 -X 9 interfac.ads -70M9*Unsigned_8 21|230r33 231r33 354r21 355r21 495r22 507r38 509r49 22|218r29 -. 2363r22 2512r38 2523r49 -73M9*Unsigned_16 21|207r33 208r33 209r33 210r33 211r33 212r33 217r33 218r33 -. 220r33 221r33 232r33 286r59 291r34 292r34 293r34 310r29 311r29 317r29 318r29 -. 353r21 511r52 513r37 517r35 22|124r43 217r28 274r43 275r34 331r29 1109r55 -. 1156r22 1157r22 2402r35 2420r38 2534r52 2545r37 2559r35 2561r22 2561r37 -81M9*Unsigned_32 21|61r19 69r19 70r19 79r26 89r26 96r19 158r17 159r17 194r33 -. 195r33 196r33 197r33 198r33 199r33 200r33 201r33 202r33 203r33 204r33 205r33 -. 206r33 213r33 214r33 215r33 216r33 219r33 222r33 223r33 224r33 229r33 235r33 -. 236r33 237r33 288r34 289r34 290r34 308r56 312r29 313r29 314r29 315r29 316r29 -. 319r29 320r29 321r29 323r29 324r29 325r29 326r29 352r21 370r31 371r31 384r25 -. 387r29 389r29 417r27 424r26 432r22 432r42 446r22 456r22 464r22 465r22 466r22 -. 472r22 473r22 474r22 480r21 481r25 486r24 493r22 494r22 503r22 504r22 517r15 -. 536r22 22|213r19 221r36 224r36 247r29 399r19 400r19 425r26 430r48 447r29 -. 465r29 532r26 537r50 538r50 556r27 567r27 633r19 638r34 654r27 710r30 771r30 -. 812r30 870r30 887r25 918r30 929r35 930r35 971r30 991r32 1004r39 1032r17 -. 1047r30 1062r39 1101r30 1112r33 1127r17 1128r17 1149r30 1160r33 1203r30 -. 1210r38 1211r38 1214r33 1249r25 1252r29 1254r29 1355r32 1547r27 1553r21 -. 1562r27 1590r26 1595r39 1597r21 1616r31 1644r22 1644r42 1646r31 1647r40 -. 1648r31 1649r31 1650r31 1651r31 1652r31 1653r31 1746r24 1769r35 1794r22 -. 1803r24 1848r35 1878r22 1895r26 1896r26 1903r22 1904r22 1905r22 1908r17 -. 1946r22 1947r22 1948r22 1951r31 1952r40 1953r31 1954r31 1955r31 1956r31 -. 1957r31 1958r31 1959r31 2154r21 2155r25 2160r20 2199r34 2199r56 2226r32 -. 2261r24 2266r20 2304r34 2304r56 2361r22 2362r22 2454r22 2455r22 2559r15 -. 2588r22 2588r37 2589r22 2589r37 2617r22 2625r13 -84M9*Unsigned_64 21|35r62 37r65 39r56 41r64 45r33 46r33 50r33 51r33 53r57 -. 117r20 125r20 139r19 145r17 165r29 166r29 167r29 168r29 225r33 226r33 233r33 -. 234r33 395r20 401r22 403r22 405r26 410r26 437r22 438r22 447r22 448r22 457r22 -. 458r22 492r22 502r22 519r65 523r21 22|142r62 146r15 150r65 154r15 158r56 -. 162r15 167r64 171r16 177r33 178r33 183r22 184r29 190r33 191r33 196r22 197r29 -. 201r57 541r50 698r23 699r23 700r23 740r28 797r20 847r20 907r43 909r23 909r39 -. 910r14 935r36 936r36 937r36 950r19 955r22 1022r17 1175r29 1176r29 1177r29 -. 1178r29 1186r17 1187r17 1260r32 1263r32 1422r20 1445r22 1447r22 1449r26 -. 1454r19 1500r30 1505r38 1517r26 1567r27 1574r27 1621r27 1628r27 1685r30 -. 1692r30 1699r30 1709r27 1716r27 1726r24 1737r22 1738r22 1744r24 1745r24 -. 1747r24 1759r38 1760r43 1761r45 1762r27 1762r55 1764r25 1765r26 1772r27 -. 1773r27 1795r22 1796r22 1801r24 1802r24 1804r24 1807r19 1813r29 1820r37 -. 1838r38 1839r43 1840r45 1841r27 1841r55 1843r25 1844r26 1851r27 1852r27 -. 1879r22 1880r22 1883r25 1884r37 1886r25 1887r34 1888r31 2009r30 2025r32 -. 2034r30 2050r33 2062r30 2089r27 2105r30 2115r27 2142r24 2181r27 2212r27 -. 2287r27 2322r27 2360r22 2368r20 2370r20 2371r20 2398r17 2399r26 2453r22 -. 2572r65 2575r29 2576r29 2578r17 2584r21 -141V13*Shift_Left{81M9} 22|84s28 85s28 -166V13*Shift_Left{84M9} 22|2575s17 2576s17 -171V13*Shift_Right{84M9} 22|1884s10 1887s10 2589s50 -X 10 lib.ads -19K9*Lib 35e8 21|18r6 365r39 22|17r6 18r6 19r6 74r10 79r28 110r7 113r7 121r7 -. 145r7 147r7 153r7 155r7 161r7 164r7 170r7 172r7 182r7 185r7 195r7 198r7 -. 234r7 388r7 408r7 416r7 434r7 518r7 544r7 621r7 642r7 682r7 704r7 752r7 -. 767r7 790r7 807r7 840r7 856r7 897r7 907r28 914r7 943r7 958r7 1015r7 1034r7 -. 1073r7 1088r7 1120r7 1140r7 1168r7 1190r7 1222r7 2605r13 2607r13 2610r13 -. 2612r13 -X 11 lib-alignment.ads -19k13*Alignment 43e18 22|19w10 907r32 -X 13 lib-messages.ads -21K13*Messages 103e17 22|17w10 74r14 2605r17 2607r17 -41U14*Put_Line 22|74s23 2605s26 2607s26 -X 14 lib-panic.ads -21K13*Panic 39e14 22|18w10 2610r17 2612r17 -32U14*Hard_Panic 22|2610s23 2612s23 -X 15 lib-synchronization.ads -20K13*Synchronization 66e24 21|18w10 365r43 22|79r32 110r11 113r11 121r11 -. 145r11 147r11 153r11 155r11 161r11 164r11 170r11 172r11 182r11 185r11 195r11 -. 198r11 234r11 388r11 408r11 416r11 434r11 518r11 544r11 621r11 642r11 682r11 -. 704r11 752r11 767r11 790r11 807r11 840r11 856r11 897r11 914r11 943r11 958r11 -. 1015r11 1034r11 1073r11 1088r11 1120r11 1140r11 1168r11 1190r11 1222r11 -22R9*Binary_Semaphore 57e14 21|365r59 -23r4*Unlocked_Semaphore{22R9} 22|79r48 -27U14*Seize 22|110s27 121s27 145s27 153s27 161s27 170s27 182s27 195s27 234s27 -. 408s27 434s27 544s27 642s27 704s27 767s27 807s27 856s27 914s27 958s27 1034s27 -. 1088s27 1140s27 1190s27 -31U14*Release 22|113s27 147s27 155s27 164s27 172s27 185s27 198s27 388s27 -. 416s27 518s27 621s27 682s27 752s27 790s27 840s27 897s27 943s27 1015s27 -. 1073s27 1120s27 1168s27 1222s27 -X 17 system.ads -37K9*System 155e11 21|17w6 25r27 28r23 33r35 35r35 37r38 39r29 41r36 44r29 -. 49r29 53r34 56r19 65r19 74r26 83r26 93r19 100r20 108r20 115r20 123r20 131r18 -. 137r19 143r17 146r17 150r17 156r17 163r29 171r33 174r20 22|20r6 25r26 36r27 -. 103r23 117r35 139r13 142r35 150r38 158r29 167r36 176r29 189r29 201r34 208r19 -. 395r19 420r26 526r26 630r19 689r20 757r20 795r20 845r20 902r18 948r19 1020r17 -. 1023r17 1078r17 1125r17 1173r29 1226r33 1237r20 -67M9*Address 21|25r34 28r30 33r42 35r42 37r45 39r36 41r43 44r36 49r36 53r41 -. 56r26 65r26 74r33 83r33 93r26 100r27 108r27 115r27 123r27 131r25 137r26 -. 143r24 146r24 150r24 156r24 163r36 171r40 174r27 22|36r34 103r30 117r42 -. 142r42 150r45 158r36 167r43 176r36 189r36 201r41 208r26 395r26 420r33 526r33 -. 630r26 689r27 757r27 795r27 845r27 902r25 948r26 1020r24 1023r24 1078r24 -. 1125r24 1173r36 1226r40 1237r27 -69m4*Null_Address{67M9} 22|50r23 62r23 139r20 -X 18 s-atacco.ads -39k16*Address_To_Access_Conversions 65e41 22|20w13 25r33 -X 19 s-stoele.ads -82M9*Integer_Address -X 20 vfs.ads -24K9*VFS 674e8 21|20r9 542r5 22|24r14 2644r5 -28M9*File_Inode_Number<9|84M9> 21|57r19 66r19 75r26 77r26 84r26 86r26 94r19 -. 101r20 109r20 116r20 124r20 132r18 138r19 144r17 151r17 157r17 164r29 175r20 -. 22|209r19 396r19 421r26 423r26 527r26 529r26 631r19 690r20 758r20 796r20 -. 846r20 903r18 949r19 1021r17 1079r17 1126r17 1174r29 1238r20 -32M12*File_Mode{9|81M9} 21|60r19 152r17 22|212r19 928r35 1080r17 -39E9*File_Type 40e64 21|59r19 507r57 509r31 511r34 513r57 516r15 22|211r19 -. 803r23 1086r17 1259r32 1455r19 2512r57 2523r31 2534r34 2545r57 2558r15 -39n23*File_Regular{39E9} 22|511r40 614r40 823r15 878r63 976r54 1484r26 2515r32 -. 2526r15 2540r15 2551r34 2553r34 -39n37*File_Directory{39E9} 22|307r16 717r63 824r15 1275r26 1291r58 1300r26 -. 1323r28 2516r32 2527r15 2538r15 2549r34 2565r15 -39n53*File_Symbolic_Link{39E9} 22|776r59 1368r56 2519r32 2541r15 2552r34 -. 2567r15 -40n23*File_Character_Device{39E9} 22|2517r32 2528r15 2537r15 2548r34 2564r15 -40n46*File_Block_Device{39E9} 22|2518r32 2529r15 2539r15 2550r34 2566r15 -41R9*File_Stat 54e14 21|133r22 22|904r22 -42m7*Unique_Identifier{28M9} 22|926m14 -43e7*Type_Of_File{39E9} 22|927m14 -44m7*Mode{32M12} 22|928m14 -45m7*UID{9|81M9} 22|929m14 -46m7*GID{9|81M9} 22|930m14 -47i7*Hard_Link_Count{positive} 22|931m14 -48m7*Byte_Size{9|84M9} 22|932m14 -49i7*IO_Block_Size{natural} 22|933m14 -50m7*IO_Block_Count{9|84M9} 22|934m14 -51r7*Creation_Time{35R9} 22|935m14 -52r7*Modification_Time{35R9} 22|936m14 -53r7*Access_Time{35R9} 22|937m14 -57R9*Directory_Entity 62e14 21|404r26 22|701r23 1261r32 1448r26 -58m7*Inode_Number{9|84M9} 22|1355r52 1500m14 -59a7*Name_Buffer{string} 22|1352r23 1504m17 -60i7*Name_Len{natural} 22|1352r48 1502m14 -61e7*Type_Of_File{39E9} 22|1503m14 -63A9*Directory_Entities(57R9) 21|103r24 22|692r24 -234E9*FS_Status 242e16 21|62r23 71r23 80r30 90r30 97r23 105r24 112r24 120r24 -. 128r24 134r22 140r23 147r21 153r21 160r21 169r33 171r56 176r36 22|214r23 -. 401r23 426r30 533r30 634r23 694r24 761r24 800r24 850r24 905r22 951r23 1024r21 -. 1081r21 1129r21 1179r33 1226r56 1239r36 -235n8*FS_Success{234E9} 22|385r34 515r34 618r35 679r34 707r20 783r45 837r32 -. 894r32 938r21 1012r34 1057r26 1066r43 1116r37 1164r37 1218r37 1230r17 -236n8*FS_Invalid_Value{234E9} 22|240r20 256r20 412r20 440r20 474r20 550r20 -. 580r20 648r20 663r20 719r21 787r23 880r21 979r20 1068r26 -237n8*FS_Is_Directory{234E9} 22|824r44 -238n8*FS_Not_Supported{234E9} 22|414r20 825r44 -239n8*FS_Not_Allowed{234E9} 22|260r20 478r20 585r20 667r20 -240n8*FS_RO_Failure{234E9} 22|237r20 410r20 437r20 547r20 645r20 860r21 961r20 -. 1041r20 1095r20 1143r20 1193r20 -241n8*FS_IO_Failure{234E9} 22|269r20 303r20 385r50 456r20 490r20 501r20 515r50 -. 602r23 618r51 679r50 715r21 783r61 817r21 837r48 875r21 894r48 940r21 1012r50 -. 1052r20 1066r59 1106r20 1116r53 1154r20 1164r53 1208r20 1218r53 1232r17 -629V13*Is_Absolute{boolean} 22|1269s10 -X 21 vfs-ext.ads -20K13*EXT 20|24k9 21|542l9 542e12 22|24b18 2644l9 2644t12 -21U14*Probe 22>8 23>8 24>8 25<8 22|32b14 100l8 100t13 -22i8 Handle{8|83I9} 22|33b8 44r30 69r32 80r28 -23b8 Do_Read_Only{boolean} 22|34b8 68r10 -24b8 Do_Relatime{boolean} 22|35b8 83r28 -25m8 Data_Addr{17|67M9} 22|36b8 50m10 62m10 99m7 -27U14*Remount 28>8 29>8 30>8 31<8 22|102b14 115l8 115t15 -28m8 FS{17|67M9} 22|103b8 108r70 -29b8 Do_Read_Only{boolean} 22|104b8 111r28 -30b8 Do_Relatime{boolean} 22|105b8 112r28 -31b8 Success{boolean} 22|106b8 114m7 -33U14*Unmount 33=23 22|117b14 140l8 140t15 -33m23 FS{17|67M9} 22|117b23 118r64 139m7 -35U14*Get_Block_Size 35>30 35<51 22|142b14 148l8 148t22 -35m30 FS{17|67M9} 22|142b30 143r70 -35m51 Size{9|84M9} 22|142b51 146m7 -37U14*Get_Fragment_Size 37>33 37<54 22|150b14 156l8 156t25 -37m33 FS{17|67M9} 22|150b33 151r70 -37m54 Size{9|84M9} 22|150b54 154m7 -39U14*Get_Size 39>24 39<45 22|158b14 165l8 165t16 -39m24 FS{17|67M9} 22|158b24 159r70 -39m45 Size{9|84M9} 22|158b45 162m7 -41U14*Get_Inode_Count 41>31 41<52 22|167b14 173l8 173t23 -41m31 FS{17|67M9} 22|167b31 168r70 -41m52 Count{9|84M9} 22|167b52 171m7 -43U14*Get_Free_Blocks 44>8 45<8 46<8 22|175b14 186l8 186t23 -44m8 FS{17|67M9} 22|176b8 180r70 -45m8 Free_Blocks{9|84M9} 22|177b8 183m7 -46m8 Free_Unpriviledged{9|84M9} 22|178b8 184m7 -48U14*Get_Free_Inodes 49>8 50<8 51<8 22|188b14 199l8 199t23 -49m8 FS{17|67M9} 22|189b8 193r71 -50m8 Free_Inodes{9|84M9} 22|190b8 196m7 -51m8 Free_Unpriviledged{9|84M9} 22|191b8 197m7 -53V13*Get_Max_Length{9|84M9} 53>29 22|201b13 205l8 205t22 -53m29 FS{17|67M9} 22|201b29 202r28 -55U14*Create_Node 56>8 57>8 58>8 59>8 60>8 61>8 62<8 22|207b14 392l8 392t19 -56m8 FS{17|67M9} 22|208b8 216r74 -57m8 Relative{20|28M9} 22|209b8 247r42 -58a8 Path{string} 22|210b8 239r13 248r29 -59e8 Typ{20|39E9} 22|211b8 217r60 218r57 307r10 -60m8 Mode{20|32M12} 22|212b8 274r56 -61m8 User{9|81M9} 22|213b8 258r36 275r47 -62e8 Status{20|234E9} 22|214b8 237m10 240m10 256m10 260m10 269m10 303m10 -. 385m7 -64U14*Create_Symbolic_Link 65>8 66>8 67>8 68>8 69>8 70>8 71<8 22|394b14 417l8 -. 417t28 -65m8 FS{17|67M9} 22|395b8 406r70 -66m8 Relative{20|28M9} 22|396b8 404r28 -67a8 Path{string} 22|397b8 411r13 -68a8 Target{string} 22|398b8 411r32 -69m8 Mode{9|81M9} 22|399b8 403r28 -70m8 User{9|81M9} 22|400b8 405r28 -71e8 Status{20|234E9} 22|401b8 410m10 412m10 414m10 -73U14*Create_Hard_Link 74>8 75>8 76>8 77>8 78>8 79>8 80<8 22|419b14 523l8 -. 523t24 -74m8 FS{17|67M9} 22|420b8 428r70 -75m8 Relative_Path{20|28M9} 22|421b8 447r42 -76a8 Path{string} 22|422b8 439r13 448r29 -77m8 Relative_Target{20|28M9} 22|423b8 465r42 -78a8 Target{string} 22|424b8 439r32 466r29 -79m8 User{9|81M9} 22|425b8 476r36 -80e8 Status{20|234E9} 22|426b8 437m10 440m10 456m10 474m10 478m10 490m10 -. 501m10 515m7 -82U14*Rename 83>8 84>8 85>8 86>8 87>8 88>8 89>8 90<8 22|525b14 627l8 627t14 -83m8 FS{17|67M9} 22|526b8 535r70 -84m8 Relative_Source{20|28M9} 22|527b8 556r40 -85a8 Source{string} 22|528b8 549r13 557r27 -86m8 Relative_Target{20|28M9} 22|529b8 567r40 -87a8 Target{string} 22|530b8 549r34 568r27 -88b8 Keep{boolean} 22|531b8 579r54 -89m8 User{9|81M9} 22|532b8 582r36 -90e8 Status{20|234E9} 22|533b8 547m10 550m10 580m10 585m10 602m13 618m7 -92U14*Unlink 93>8 94>8 95>8 96>8 97<8 22|629b14 686l8 686t14 -93m8 FS{17|67M9} 22|630b8 636r70 -94m8 Relative{20|28M9} 22|631b8 654r40 -95a8 Path{string} 22|632b8 647r13 655r27 -96m8 User{9|81M9} 22|633b8 665r36 -97e8 Status{20|234E9} 22|634b8 645m10 648m10 663m10 667m10 679m7 -99U14*Read_Entries 100>8 101>8 102>8 103<8 104<8 105<8 22|688b14 754l8 754t20 -100m8 FS_Data{17|67M9} 22|689b8 696r68 -101m8 Ino{20|28M9} 22|690b8 710r43 -102i8 Offset{natural} 22|691b8 740r41 -103a8 Entities{20|63A9} 22|692b8 741r28 742m16 742r26 -104i8 Ret_Count{natural} 22|693b8 706m7 741r16 742r43 746m13 746r26 -105e8 Success{20|234E9} 22|694b8 707m7 715m10 719m10 -107U14*Read_Symbolic_Link 108>8 109>8 110<8 111<8 112<8 22|756b14 792l8 792t26 -108m8 FS_Data{17|67M9} 22|757b8 763r68 -109m8 Ino{20|28M9} 22|758b8 771r43 -110a8 Path{string} 22|759b8 781m27 785m10 -111i8 Ret_Count{natural} 22|760b8 768m7 782m27 783r25 786m10 -112e8 Success{20|234E9} 22|761b8 783m10 787m10 -114U14*Read 115>8 116>8 117>8 118<8 119<8 120<8 22|794b14 842l8 842t12 -115m8 FS_Data{17|67M9} 22|795b8 802r68 -116m8 Ino{20|28M9} 22|796b8 812r43 -117m8 Offset{9|84M9} 22|797b8 832r25 -118a8 Data{8|29A9} 22|798b8 833m25 -119i8 Ret_Count{natural} 22|799b8 809m7 834m25 -120e8 Success{20|234E9} 22|800b8 817m10 824m33 825m33 837m7 -122U14*Write 123>8 124>8 125>8 126>8 127<8 128<8 22|844b14 899l8 899t13 -123m8 FS_Data{17|67M9} 22|845b8 852r68 -124m8 Ino{20|28M9} 22|846b8 870r43 887r38 -125m8 Offset{9|84M9} 22|847b8 889r25 -126a8 Data{8|29A9} 22|848b8 890r25 -127i8 Ret_Count{natural} 22|849b8 858m7 891m25 -128e8 Success{20|234E9} 22|850b8 860m10 875m10 880m10 894m7 -130U14*Stat 131>8 132>8 133<8 134<8 22|901b14 945l8 945t12 -131m8 Data{17|67M9} 22|902b8 908r70 -132m8 Ino{20|28M9} 22|903b8 918r43 926r35 -133r8 S{20|41R9} 22|904b8 925m10 -134e8 Success{20|234E9} 22|905b8 938m10 940m10 -136U14*Truncate 137>8 138>8 139>8 140<8 22|947b14 1017l8 1017t16 -137m8 Data{17|67M9} 22|948b8 953r68 -138m8 Ino{20|28M9} 22|949b8 971r43 991r45 1004r52 -139m8 New_Size{9|84M9} 22|950b8 984r25 987r28 993r32 1000r36 -140e8 Status{20|234E9} 22|951b8 961m10 979m10 1012m7 -142U14*IO_Control 143>8 144>8 145>8 146>8 147<8 22|1019b14 1075l8 1075t18 -143m8 Data{17|67M9} 22|1020b8 1029r73 -144m8 Ino{20|28M9} 22|1021b8 1047r43 1062r52 -145m8 Req{9|84M9} 22|1022b8 1054r15 -146m8 Arg{17|67M9} 22|1023b8 1032r53 -147e8 Status{20|234E9} 22|1024b8 1041m10 1052m10 1057m16 1066m16 1068m16 -149U14*Change_Mode 150>8 151>8 152>8 153<8 22|1077b14 1122l8 1122t19 -150m8 Data{17|67M9} 22|1078b8 1083r73 -151m8 Ino{20|28M9} 22|1079b8 1101r43 1112r46 -152m8 Mode{20|32M12} 22|1080b8 1109r68 -153e8 Status{20|234E9} 22|1081b8 1095m10 1106m10 1116m10 -155U14*Change_Owner 156>8 157>8 158>8 159>8 160<8 22|1124b14 1170l8 1170t20 -156m8 Data{17|67M9} 22|1125b8 1131r73 -157m8 Ino{20|28M9} 22|1126b8 1149r43 1160r46 -158m8 Owner{9|81M9} 22|1127b8 1156r35 -159m8 Group{9|81M9} 22|1128b8 1157r35 -160e8 Status{20|234E9} 22|1129b8 1143m10 1154m10 1164m10 -162U14*Change_Access_Times 163>8 164>8 165>8 166>8 167>8 168>8 169<8 22|1172b14 -. 1224l8 1224t27 -163m8 Data{17|67M9} 22|1173b8 1184r73 -164m8 Ino{20|28M9} 22|1174b8 1203r43 1214r46 -165m8 Access_Seconds{9|84M9} 22|1175b8 1186r37 1210r51 -166m8 Access_Nanoseconds{9|84M9} 22|1176b8 1181r28 -167m8 Modify_Seconds{9|84M9} 22|1177b8 1187r37 1211r51 -168m8 Modify_Nanoseconds{9|84M9} 22|1178b8 1182r28 -169e8 Status{20|234E9} 22|1179b8 1193m10 1208m10 1218m10 -171V13*Synchronize{20|234E9} 171>26 22|1226b13 1234l8 1234t19 1244s14 -171m26 Data{17|67M9} 22|1226b26 1227r73 -173V13*Synchronize{20|234E9} 174>8 175>8 176>8 22|1236b13 1245l8 1245t19 -174m8 Data{17|67M9} 22|1237b8 1244r27 -175m8 Ino{20|28M9} 22|1238b8 1241r28 -176b8 Data_Only{boolean} 22|1239b8 1242r28 -180N4 State_Clean 22|70r34 -181N4 Policy_Ignore 22|2604r15 -182N4 Policy_Remount_RO 22|2606r15 -183N4 Policy_Panic 22|2609r15 -184N4 EXT_Signature 22|55r27 -185N4 Main_Superblock_Offset 22|45r30 129r33 -186N4 Required_Compression 22|58r37 -187N4 Required_Directory_Types 22|1479r50 -188N4 Required_Journal_Replay 22|59r37 -189N4 Required_Journal_Device 22|60r37 -190N4 RO_Sparse_Superblocks 22|88r41 -191N4 RO_64bit_Filesize 22|90r41 -192N4 RO_Binary_Trees 22|72r38 -193R9 Superblock 238e15 239r8 367r31 411r33 22|38r17 1518r33 1523r41 -194m7*Inode_Count{9|81M9} 240r7 22|171r40 2270r35 -195m7*Block_Count{9|81M9} 241r7 22|162r39 2164r35 -196m7*Reserved_Count{9|81M9} 242r7 -197m7*Unallocated_Block_Count{9|81M9} 243r7 22|183r46 184r53 2221m24 2222r27 -198m7*Unallocated_Inode_Count{9|81M9} 244r7 22|196r46 197r53 2331m24 2332r27 -199m7*Block_Containing_Super{9|81M9} 245r7 -200m7*Block_Size_Log{9|81M9} 246r7 22|56r14 84r59 1885r51 1889r51 -201m7*Fragment_Size_Log{9|81M9} 247r7 22|56r35 85r59 -202m7*Blocks_Per_Group{9|81M9} 248r7 22|2198r52 -203m7*Fragments_Per_Group{9|81M9} 249r7 -204m7*Inodes_Per_Group{9|81M9} 250r7 22|354r54 1602r60 1603r58 2303r52 -205m7*Last_Mount_Epoch{9|81M9} 251r7 -206m7*Last_Write_Epoch{9|81M9} 252r7 -207m7*Mounts_Since_Check{9|73M9} 253r7 22|71r14 124r21 126m21 126r54 -208m7*Max_Mounts_Since_Check{9|73M9} 254r7 22|71r39 -209m7*Signature{9|73M9} 255r7 22|55r14 -210m7*Filesystem_State{9|73M9} 256r7 22|70r14 -211m7*Error_Policy{9|73M9} 257r7 22|2603r23 -212m7*Minor_Version{9|73M9} 258r7 -213m7*Last_Check_Epoch{9|81M9} 259r7 -214m7*Interval_Between_Checks{9|81M9} 260r7 -215m7*Operating_System_ID{9|81M9} 261r7 -216m7*Major_Version{9|81M9} 262r7 22|57r14 -217m7*Reserved_Blocks_User_ID{9|73M9} 263r7 -218m7*Reserved_Blocks_Group{9|73M9} 264r7 -219m7*First_Non_Reserved{9|81M9} 265r7 22|2305r49 -220m7*Inode_Size{9|73M9} 266r7 22|1616r55 -221m7*Block_Group_Of_Super{9|73M9} 267r7 -222m7*Optional_Features{9|81M9} 268r7 -223m7*Required_Features{9|81M9} 269r7 22|58r15 59r15 60r15 1479r28 -224m7*RO_If_Not_Features{9|81M9} 270r7 22|72r15 88r18 90r18 -225m7*FS_ID_High{9|84M9} 271r7 -226m7*FS_ID_Low{9|84M9} 272r7 -227a7*Volume_Name{string} 273r7 -228a7*Last_Mountpoint{string} 274r7 -229m7*Compression_Algorithm{9|81M9} 275r7 -230m7*Preallocate_Files{9|70M9} 276r7 -231m7*Preallocate_Dirs{9|70M9} 277r7 -232m7*Unused{9|73M9} 278r7 -233m7*Journal_ID_High{9|84M9} 279r7 -234m7*Journal_ID_Low{9|84M9} 280r7 -235m7*Journal_Inode{9|81M9} 281r7 -236m7*Journal_Device{9|81M9} 282r7 -237m7*Head_Of_Orphan_Inodes{9|81M9} 283r7 -286A9 Descriptor_Padding(9|73M9) 294r34 -287R9 Block_Group_Descriptor 295e15 296r8 418r34 22|223r36 1548r34 1552r41 -. 1596r26 2159r20 2265r20 -288m7*Block_Usage_Bitmap_Block{9|81M9} 297r7 22|2181r45 2212r45 -289m7*Inode_Usage_Bitmap_Block{9|81M9} 298r7 22|2287r45 2322r45 -290m7*Inode_Table_Block{9|81M9} 299r7 22|1615r34 -291m7*Unallocated_Blocks{9|73M9} 300r7 22|2175r18 2223m15 2223r42 -292m7*Unallocated_Inodes{9|73M9} 301r7 22|2281r18 2333m15 2333r42 -293m7*Directory_Count{9|73M9} 302r7 22|361m21 361r51 -294a7*Padding{286A9} 303r7 -306N4 Flags_Immutable 528r23 -307N4 Flags_Append_Only 531r23 -308A9 Inode_Block_Arr(9|81M9) 322r29 327r29 -309R9 Inode 328e15 329r8 349r29 372r31 388r29 390r29 394r20 402r22 425r33 -. 431r22 436r22 445r29 455r29 463r29 471r29 479r28 491r29 501r29 519r29 522r28 -. 527r33 530r35 537r22 22|28r54 222r53 431r65 539r67 540r67 639r51 697r40 -. 764r40 804r40 853r40 911r31 954r39 1030r34 1084r34 1132r34 1185r34 1253r29 -. 1255r29 1421r20 1446r22 1591r33 1599r42 1643r22 1736r22 1793r29 1877r29 -. 1902r29 1945r29 2153r28 2359r29 2452r29 2572r29 2583r28 2618r22 -310m7*Permissions{9|73M9} 330r7 22|274m11 717r47 776r44 821r57 878r47 927r56 -. 928r51 976r38 1108r51 1109m15 1291r42 1363r60 2626r45 2627r45 2628r45 2633r45 -. 2634r45 2635r45 -311m7*UID{9|73M9} 331r7 22|275m11 929r53 1156m15 2625r31 -312m7*Size_Low{9|81M9} 332r7 22|276m11 2576r46 2578r34 2592m14 2596m14 -313m7*Access_Time_Epoch{9|81M9} 333r7 22|277m11 937r54 1210m15 -314m7*Creation_Time_Epoch{9|81M9} 334r7 22|278m11 935r54 -315m7*Modified_Time_Epoch{9|81M9} 335r7 22|279m11 936r54 1211m15 -316m7*Deleted_Time_Epoch{9|81M9} 336r7 22|280m11 -317m7*GID{9|73M9} 337r7 22|281m11 930r53 1157m15 -318m7*Hard_Link_Count{9|73M9} 338r7 22|282m11 368m23 368r55 369m23 369r55 -. 493m18 493r48 931r50 -319m7*Sectors{9|81M9} 339r7 22|283m11 2225m21 2225r43 -320m7*Flags{9|81M9} 340r7 528r13 531r13 22|284m11 1056r31 1059m21 -321m7*OS_Specific_Value_1{9|81M9} 341r7 22|285m11 -322a7*Blocks{308A9} 342r7 22|286m11 1428m38 1666r28 1685r54 1709r51 1726r48 -. 1972m21 1991r27 1998m27 2009r54 2025r56 2071r24 2078m24 2089r51 2105r54 -. 2124r21 2131m21 2142r48 -323m7*Generation_Number{9|81M9} 343r7 22|287m11 -324m7*EAB{9|81M9} 344r7 22|288m11 -325m7*Size_High{9|81M9} 345r7 22|289m11 2575r46 2593m14 -326m7*Fragment_Address{9|81M9} 346r7 22|290m11 -327a7*OS_Specific_Value_2{308A9} 347r7 22|291m11 -349P9 Inode_Acc(309R9) 22|28r64 222r36 431r48 539r50 540r50 639r34 697r23 -. 764r23 804r23 853r23 911r14 954r22 1030r17 1084r17 1132r17 1185r17 -351R9 Directory_Entry 356e15 357r8 22|225r36 1453r19 1456r40 1478r38 2388r21 -. 2393r19 2397r18 2411r26 2416r31 2480r19 2482r20 -352m7*Inode_Index{9|81M9} 358r7 22|330m14 1468r14 1500r47 2419m23 2485r20 -353m7*Entry_Count{9|73M9} 359r7 22|331m14 1505r55 2399r43 2402m20 2420m23 -. 2440r45 2486m21 2486r41 2486r59 2502r46 -354m7*Name_Length{9|70M9} 360r7 22|332m14 1474r48 2398r34 2421m23 -355m7*Dir_Type{9|70M9} 361r7 22|333m14 1481r43 2422m23 -364R9 EXT_Data 375e14 376r36 22|25r64 27r54 78r19 -365r7*Mutex{15|22R9} 22|79m11 110m39 113m41 121m39 145m39 147m41 153m39 155m41 -. 161m39 164m41 170m39 172m41 182m39 185m41 195m39 198m41 234m39 388m41 408m39 -. 416m41 434m39 518m41 544m39 621m41 642m39 682m41 704m37 752m39 767m37 790m39 -. 807m37 840m39 856m37 897m39 914m37 943m39 958m37 1015m39 1034m37 1073m39 -. 1088m37 1120m39 1140m37 1168m39 1190m37 1222m39 -366i7*Handle{8|83I9} 22|80m11 128r38 909r71 933r54 1229r39 1566r32 1573r32 -. 1620r32 1627r32 1684r38 1691r38 1698r38 1708r35 1715r35 1725r32 1771r35 -. 1850r35 2008r38 2024r40 2033r38 2049r40 2061r38 2088r35 2104r38 2114r35 -. 2141r32 2180r35 2211r35 2226r69 2286r35 2321r35 -367r7*Super{193R9} 22|81m11 124r15 126m15 126r48 130m38 162r33 171r34 183r40 -. 184r47 196r40 197r47 354r48 1479r22 1602r54 1603r52 1616r49 1885r45 1889r45 -. 2164r29 2198r46 2221m18 2222r21 2270r29 2303r46 2305r43 2331m18 2332r21 -. 2603r17 -368b7*Is_Read_Only{boolean} 22|82m11 111m12 123r19 236r15 409r15 436r15 546r15 -. 644r15 859r13 960r13 1040r13 1094r13 1142r13 1192r13 2608m18 -369b7*Do_Relatime{boolean} 22|83m11 112m12 -370m7*Block_Size{9|81M9} 22|84m11 146r33 163r15 331r47 1553r41 1558r15 1615r59 -. 1647r63 1686r38 1692r69 1699r68 1710r48 1716r65 1726r70 1760r64 1761r66 -. 1764r46 1765r47 1773r48 1839r64 1840r66 1843r46 1844r47 1852r48 1884r58 -. 1887r55 1888r52 1952r63 2010r38 2026r40 2034r69 2051r54 2062r68 2090r48 -. 2106r51 2115r65 2142r70 2162r55 2182r48 2213r48 2225r62 2268r55 2288r48 -. 2323r48 -371m7*Fragment_Size{9|81M9} 22|85m11 154r33 163r33 -372r7*Root{309R9} 22|96m35 1271r31 1273r31 -373b7*Has_Sparse_Superblock{boolean} 22|87m11 -374b7*Has_64bit_Filesizes{boolean} 22|89m11 219m43 508r59 590r44 674r59 729r59 -. 780r59 831r57 888r57 924r41 983r49 1000r49 1274r55 1299r55 1362r58 1821r36 -376P9 EXT_Data_Acc(364R9) 383r25 400r22 416r27 423r26 430r22 435r22 444r22 -. 454r22 462r22 470r22 478r21 485r20 490r22 500r22 533r36 22|27r64 39r17 -. 108r23 108r39 118r17 118r33 143r23 143r39 151r23 151r39 159r23 159r39 168r23 -. 168r39 180r23 180r39 193r24 193r40 216r27 216r43 406r23 406r39 428r23 428r39 -. 535r23 535r39 636r23 636r39 696r21 696r37 763r21 763r37 802r21 802r37 852r21 -. 852r37 908r23 908r39 953r21 953r37 1029r26 1029r42 1083r26 1083r42 1131r26 -. 1131r42 1184r26 1184r42 1227r26 1227r42 1248r25 1444r22 1546r27 1589r26 -. 1642r22 1735r22 1792r22 1876r22 1901r22 1944r22 2152r21 2260r20 2358r22 -. 2451r22 2601r36 -378N4 Root_Inode 22|1270r26 1272r26 -379N4 Max_File_Name_Size 22|204r14 -381P9 String_Acc(string) 386r29 22|26r64 220r36 429r48 536r50 637r34 1251r29 -382U14 Inner_Open_Inode 383>8 384>8 385>8 386<8 387<8 388<8 389<8 390<8 391<8 -. 22|245s7 445s7 463s7 554s7 565s7 652s7 1247b14 1378s19 1418l8 1418t24 -383p8 Data{376P9} 22|1248b8 1271r26 1273r26 1274r50 1285r33 1299r50 1335r32 -. 1357r39 1362r53 1379r23 -384m8 Relative{9|81M9} 22|1249b8 1286r33 1296r26 1297r26 -385a8 Path{string} 22|1250b8 1269r23 1277r13 1281r21 1282r21 1283r13 1302r13 -. 1306r21 1307r21 1312r23 1314r26 1314r45 1317r44 1343r29 1353r16 1368r28 -. 1381r52 1381r68 1415r10 1415r53 1416r40 1416r60 -386p8 Last_Component{381P9} 22|1251b8 1267m7 1382m23 1416m10 -387m8 Target_Index{9|81M9} 22|1252b8 1270m10 1296m10 1330r26 1355m16 1358r39 -. 1383m23 1404m7 1409m7 -388r8 Target_Inode{309R9} 22|1253b8 1271m10 1274r36 1287m33 1291r29 1298r26 -. 1299r36 1331r26 1359m39 1362r39 1363r47 1370r23 1384m23 -389m8 Parent_Index{9|81M9} 22|1254b8 1272m10 1297m10 1330m10 1380r23 1385m23 -. 1410m7 -390r8 Parent_Inode{309R9} 22|1255b8 1273m10 1298m10 1331m10 1337r32 1386m23 -391b8 Success{boolean} 22|1256b8 1289m33 1290r17 1341m32 1342r20 1361m39 -. 1364r23 1387m23 1400m7 1405m7 1411m7 -393U14 Inner_Read_Symbolic_Link 394>8 395>8 396<8 397<8 22|778s10 1369s19 -. 1420b14 1441l8 1441t32 -394r8 Ino{309R9} 22|1421b8 1428r34 -395m8 File_Size{9|84M9} 22|1422b8 1430r32 -396a8 Path{string} 22|1423b8 1427r43 1432m10 1438m10 1438r16 -397i8 Ret_Count{natural} 22|1424b8 1433m10 1440m7 -399U14 Inner_Read_Entry 400>8 401>8 402>8 403>8 404<8 405<8 406<8 22|727s10 -. 1334s13 1443b14 1513l8 1513t24 -400p8 FS_Data{376P9} 22|1444b8 1460r25 1479r14 1488r28 -401m8 Inode_Sz{9|84M9} 22|1445b8 1462r25 1490r28 -402r8 File_Ino{309R9} 22|1446b8 1461r25 1489r28 -403m8 Inode_Index{9|84M9} 22|1447b8 1463r25 1478r23 1505r24 -404r8 Entity{20|57R9} 22|1448b8 1499m10 1504m10 -405m8 Next_Index{9|84M9} 22|1449b8 1505m10 1511m7 -406b8 Success{boolean} 22|1450b8 1466m25 1467r15 1494m28 1495r17 1506m10 -. 1512m7 -408U14 RW_Superblock 409>8 410>8 411=8 412>8 413<8 22|43s7 127s10 1515b14 -. 1543l8 1543t21 -409i8 Handle{8|83I9} 22|1516b8 1528r27 1535r27 -410m8 Offset{9|84M9} 22|1517b8 1529r27 1536r27 -411r8 Super{193R9} 22|1518b8 1524m34 1524r34 -412b8 Write_Operation{boolean} 22|1519b8 1526r10 -413b8 Success{boolean} 22|1520b8 1532m27 1539m27 1542m7 1542r18 -415U14 RW_Block_Group_Descriptor 416>8 417>8 418=8 419>8 420<8 22|355s10 -. 362s10 1545b14 1586l8 1586t33 1605s7 2165s10 2237s10 2271s10 2335s10 -416p8 Data{376P9} 22|1546b8 1553r36 1558r10 1566r27 1573r27 1583r25 -417m8 Descriptor_Index{9|81M9} 22|1547b8 1562r54 -418r8 Result{287R9} 22|1548b8 1556m34 1556r34 -419b8 Write_Operation{boolean} 22|1549b8 1564r10 -420b8 Success{boolean} 22|1550b8 1570m27 1577m27 1580r10 1581m10 1584m10 -422U14 RW_Inode 423>8 424>8 425=8 426>8 427<8 22|93s7 372s7 378s7 483s7 494s7 -. 708s7 769s7 810s7 868s7 916s7 969s7 1002s16 1045s7 1060s16 1099s7 1110s10 -. 1147s7 1158s10 1201s7 1212s10 1284s10 1356s16 1588b14 1639l8 1639t16 1826s10 -. 1935s7 1999s16 2079s13 2132s10 2227s10 -423p8 Data{376P9} 22|1589b8 1602r49 1603r47 1606r31 1615r54 1616r44 1620r27 -. 1627r27 1636r25 -424m8 Inode_Index{9|81M9} 22|1590b8 1602r28 1603r28 -425r8 Result{309R9} 22|1591b8 1600m34 1600r34 -426b8 Write_Operation{boolean} 22|1592b8 1618r10 -427b8 Success{boolean} 22|1593b8 1610m31 1611r14 1624m27 1631m27 1633r10 -. 1634m10 1637m10 -429V13 Get_Block_Index{9|81M9} 430>8 431>8 432>8 22|1641b13 1732l8 1732t23 -. 1768s25 1847s25 1911s21 -430p8 FS_Data{376P9} 22|1642b8 1647r55 1684r30 1686r30 1691r30 1692r61 1698r30 -. 1699r60 1708r27 1710r40 1715r27 1716r57 1725r24 1726r62 -431r8 Inode_Data{309R9} 22|1643b8 1666r17 1685r43 1709r40 1726r37 -432m8 Searched{9|81M9} 22|1644b8 1646r46 1666r45 1668r28 -434U14 Read_From_Inode 435>8 436>8 437>8 438>8 439<8 440<8 441<8 22|828s7 -. 1459s7 1487s10 1734b14 1789l8 1789t23 2375s7 2462s7 -435p8 FS_Data{376P9} 22|1735b8 1760r56 1761r58 1764r38 1765r39 1769r14 1771r27 -. 1773r40 1780r28 -436r8 Inode_Data{309R9} 22|1736b8 1769r23 -437m8 Inode_Size{9|84M9} 22|1737b8 1750r19 1754r36 1755r34 -438m8 Offset{9|84M9} 22|1738b8 1744r39 1750r10 1754r13 1755r47 1759r29 -439a8 Data{8|29A9} 22|1739b8 1743r39 1754r22 1774m27 1774r27 1774r33 1775r33 -440i8 Ret_Count{natural} 22|1740b8 1751m10 1777m27 1787m7 -441b8 Success{boolean} 22|1741b8 1752m10 1778m27 1779r17 1788m7 -443U14 Write_To_Inode 444>8 445=8 446>8 447>8 448>8 449>8 450<8 451<8 22|309s10 -. 319s10 334s10 344s10 884s7 1791b14 1873l8 1873t22 2425s19 2487s16 -444p8 FS_Data{376P9} 22|1792b8 1809r29 1821r28 1827r33 1839r56 1840r58 1843r38 -. 1844r39 1848r14 1850r27 1852r40 1870r22 -445r8 Inode_Data{309R9} 22|1793b8 1810m29 1819m28 1829m33 1848r23 -446m8 Inode_Num{9|81M9} 22|1794b8 1811r29 1828r33 -447m8 Inode_Size{9|84M9} 22|1795b8 1807r47 -448m8 Offset{9|84M9} 22|1796b8 1801r39 1807r10 1812r29 1820r28 1838r29 -449a8 Data{8|29A9} 22|1797b8 1807r32 1813r42 1820r50 1837r26 1841r40 1853r27 -. 1853r33 1854r33 1865r20 -450i8 Ret_Count{natural} 22|1798b8 1856m27 1865m7 1871m7 -451b8 Success{boolean} 22|1799b8 1814m29 1815r17 1822m28 1823r17 1831m33 -. 1832r17 1857m27 1858r17 1866m7 1872m7 -453U14 Grow_Inode 454>8 455=8 456>8 457>8 458>8 459<8 22|988s13 1808s10 1875b14 -. 1898l8 1898t18 -454p8 FS_Data{376P9} 22|1876b8 1884r50 1885r37 1887r47 1888r44 1889r37 1892r26 -455r8 Inode_Data{309R9} 22|1877b8 1893m26 -456m8 Inode_Num{9|81M9} 22|1878b8 1894r26 -457m8 Start{9|84M9} 22|1879b8 1884r23 1887r24 -458m8 Count{9|84M9} 22|1880b8 1888r23 -459b8 Success{boolean} 22|1881b8 1897m26 -461U14 Assign_Inode_Blocks 462>8 463=8 464>8 465>8 466>8 467<8 22|1891s7 -. 1900b14 1941l8 1941t27 -462p8 FS_Data{376P9} 22|1901b8 1911r38 1914r31 1923r32 1936r30 -463r8 Inode_Data{309R9} 22|1902b8 1911r47 1915m31 1924m32 1938m30 -464m8 Inode_Num{9|81M9} 22|1903b8 1916r31 1925r32 1937r30 -465m8 Start_Blk{9|81M9} 22|1904b8 1911r59 1926r32 -466m8 Block_Count{9|81M9} 22|1905b8 1910r21 -467b8 Success{boolean} 22|1906b8 1918m31 1919r20 1928m32 1929r20 1940m30 -469U14 Wire_Inode_Blocks 470>8 471=8 472>8 473>8 474>8 475<8 22|1922s13 1943b14 -. 2149l8 2149t25 -470p8 FS_Data{376P9} 22|1944b8 1952r55 1993r34 2000r39 2008r30 2010r30 2017r34 -. 2024r32 2026r32 2033r30 2034r61 2042r34 2049r32 2051r46 2061r30 2062r60 -. 2073r31 2080r36 2088r27 2090r40 2097r31 2104r30 2106r43 2114r27 2115r57 -. 2126r28 2133r33 2141r24 2142r62 -471r8 Inode_Data{309R9} 22|1945b8 1972m10 1991r16 1994m34 1998m16 2002m39 -. 2009r43 2018m34 2025r45 2043m34 2071r13 2074m31 2078m13 2082m36 2089r40 -. 2098m31 2105r43 2124r10 2127m28 2131m10 2135m33 2142r37 -472m8 Inode_Num{9|81M9} 22|1946b8 1995r34 2001r39 2019r34 2044r34 2075r31 -. 2081r36 2099r31 2128r28 2134r33 -473m8 Block_Index{9|81M9} 22|1947b8 1951r46 -474m8 Wired_Block{9|81M9} 22|1948b8 1953r46 1972r58 -475b8 Success{boolean} 22|1949b8 1973m10 2067m13 2120m10 2147m7 -477U14 Allocate_Block_For_Inode 478>8 479=8 480>8 481<8 482<8 22|1913s13 -. 1992s16 2016s16 2041s16 2072s13 2096s13 2125s10 2151b14 2257l8 2257t32 -478p8 FS_Data{376P9} 22|2152b8 2162r47 2164r21 2166r34 2180r27 2182r40 2198r38 -. 2211r27 2213r40 2221r10 2222r13 2225r54 2226r61 2228r33 2238r34 -479r8 Inode_Data{309R9} 22|2153b8 2225m10 2225r32 2230m33 -480m8 Inode_Num{9|81M9} 22|2154b8 2229r33 -481m8 Ret_Block{9|81M9} 22|2155b8 2246m10 2255m7 -482b8 Success{boolean} 22|2156b8 2170m34 2171r17 2185m27 2186r17 2216m27 -. 2217r17 2232m33 2233r17 2242m34 2243r17 2248m10 2256m7 -484U14 Allocate_Inode 485>8 486<8 487<8 22|264s7 2259b14 2355l8 2355t22 -485p8 FS_Data{376P9} 22|2260b8 2268r47 2270r21 2272r34 2286r27 2288r40 2303r38 -. 2305r35 2321r27 2323r40 2331r10 2332r13 2336r34 -486m8 Inode_Num{9|81M9} 22|2261b8 2344m10 2352m7 -487b8 Success{boolean} 22|2262b8 2276m34 2277r17 2291m27 2292r17 2326m27 -. 2327r17 2340m34 2341r17 2346m10 2354m7 -489U14 Add_Directory_Entry 490>8 491=8 492>8 493>8 494>8 495>8 496>8 497<8 -. 22|293s7 505s7 608s7 2357b14 2448l8 2448t27 -490p8 FS_Data{376P9} 22|2358b8 2376r25 2426r37 -491r8 Inode_Data{309R9} 22|2359b8 2377r25 2428m37 -492m8 Inode_Size{9|84M9} 22|2360b8 2374r51 2378r25 2391r31 2429r37 -493m8 Inode_Index{9|81M9} 22|2361b8 2427r37 -494m8 Added_Index{9|81M9} 22|2362b8 2419r38 -495m8 Dir_Type{9|70M9} 22|2363b8 2422r38 -496a8 Name{string} 22|2364b8 2388r49 2414r43 2421r38 2423r31 -497b8 Success{boolean} 22|2365b8 2382m25 2383r14 2384m10 2406m19 2433m37 -. 2434r26 2435m22 2444m7 -499U14 Delete_Directory_Entry 500>8 501=8 502>8 503>8 504>8 505<8 22|594s10 -. 671s7 2450b14 2510l8 2510t30 -500p8 FS_Data{376P9} 22|2451b8 2463r25 2488r34 -501r8 Inode_Data{309R9} 22|2452b8 2464r25 2490m34 -502m8 Inode_Size{9|84M9} 22|2453b8 2461r51 2465r25 2478r31 2491r34 -503m8 Inode_Index{9|81M9} 22|2454b8 2489r34 -504m8 Added_Index{9|81M9} 22|2455b8 2485r34 -505b8 Success{boolean} 22|2456b8 2469m25 2470r14 2471m10 2495m34 2496r23 -. 2497m19 2506m7 -507V13 Get_Dir_Type{20|39E9} 507>27 22|1481s25 2512b13 2521l8 2521t20 -507m27 Dir_Type{9|70M9} 22|2512b27 2514r12 -509V13 Get_Dir_Type{9|70M9} 509>27 22|218s43 511s26 614s26 2523b13 2532l8 -. 2532t20 -509e27 T{20|39E9} 22|2523b27 2525r12 -511V13 Get_Permissions{9|73M9} 511>30 22|217s43 1109s30 2534b13 2543l8 2543t23 -511e30 T{20|39E9} 22|2534b30 2536r12 -513V13 Get_Inode_Type{20|39E9} 513>29 22|717s13 776s10 821s23 878s13 927s35 -. 976s10 1108s30 1291s13 1363s31 2545b13 2555l8 2555t22 -513m29 Perms{9|73M9} 22|2545b29 2547r12 -515V13 Get_Inode_Type{9|73M9} 516>8 517>8 22|2557b13 2570l8 2570t22 -516e8 T{20|39E9} 22|2558b8 2563r12 -517m8 Mode{9|81M9} 22|2559b8 2561r50 -519V13 Get_Size{9|84M9} 519>23 519>36 22|296s26 313s29 323s29 338s29 348s29 -. 508s26 589s29 674s26 729s27 780s27 831s25 888s25 924s18 983s23 1274s26 -. 1299s26 1362s29 2572b13 2580l8 2580t16 -519r23 Ino{309R9} 22|2572b23 2575r42 2576r42 2578r30 -519b36 Is_64_Bits{boolean} 22|2572b36 2574r10 -521U14 Set_Size 522=8 523>8 524>8 525<8 22|1000s13 1818s10 2582b14 2599l8 -. 2599t16 -522r8 Ino{309R9} 22|2583b8 2592m10 2593m10 2596m10 -523m8 New_Size{9|84M9} 22|2584b8 2588r50 2589r63 -524b8 Is_64_Bits{boolean} 22|2585b8 2591r10 -525b8 Success{boolean} 22|2586b8 2594m10 2597m10 -527V13 Is_Immutable{boolean} 527>27 22|877s13 977s10 -527r27 Ino{309R9} 528r9 -530V13 Is_Append_Only{boolean} 530>29 -530r29 Ino{309R9} 531r9 -533U14 Act_On_Policy 533>29 533>50 22|134s13 1583s10 1636s10 1780s13 1870s7 -. 2601b14 2614l8 2614t21 -533p29 Data{376P9} 22|2601b29 2603r12 2608r13 -533a50 Message{string} 22|2601b50 2605r36 2607r36 2610r35 -535V13 Check_User_Access{boolean} 536>8 537>8 538>8 539>8 540>8 22|258s17 -. 476s17 582s17 665s17 2616b13 2643l8 2643t25 -536m8 User{9|81M9} 22|2617b8 2624r10 2625r38 -537r8 Inod{309R9} 22|2618b8 2625r26 2626r40 2627r40 2628r40 2633r40 2634r40 -. 2635r40 -538b8 Check_Read{boolean} 541r19 22|2619b8 2626r17 2633r17 -539b8 Check_Write{boolean} 541r33 22|2620b8 2627r17 2634r17 -540b8 Check_Exec{boolean} 22|2621b8 2628r17 2635r17 -X 22 vfs-ext.adb -25K14 Conv[18|39] 99r20 99r37 108r53 118r47 143r53 151r53 159r53 168r53 180r53 -. 193r54 216r57 406r53 428r53 535r53 636r53 696r51 763r51 802r51 852r51 908r53 -. 953r51 1029r56 1083r56 1131r56 1184r56 1227r56 -26U14 Free[4|20] -26U14*Free[4|20] 391s7 459s7 522s7 564s7 626s7 685s7 -27U14 Free[4|20] -27U14*Free[4|20] 138s7 -28U14 Free[4|20] -28U14*Free[4|20] 389s7 390s7 519s7 520s7 521s7 622s7 623s7 624s7 625s7 683s7 -. 684s7 753s7 791s7 841s7 898s7 944s7 1016s7 1074s7 1121s7 1169s7 1223s7 -29U14 Free[4|20] -29U14*Free[4|20] 2247s10 2254s7 2345s10 2353s7 2447s7 2509s7 -38r7 Sup{21|193R9} 46m30 46r30 55r10 56r10 56r31 57r10 58r11 59r11 60r11 -. 70r10 71r10 71r35 72r11 81r28 84r55 85r55 88r14 90r14 -39p7 Data{21|376P9} 78m7 94r30 96r30 99r58 -40b7 Success{boolean} 48m30 49r14 98m30 -41b7 Is_RO{boolean} 67m7 73r10 82r28 -108p7 Data{21|376P9} 110r34 111r7 112r7 113r36 -118p7 Data{21|376P9} 121r34 123r14 124r10 126r10 126r43 128r33 130r33 134r28 -. 138m13 138r13 -119b7 Success{boolean} 132m33 133r17 -143p7 Data{21|376P9} 145r34 146r28 147r36 -151p7 Data{21|376P9} 153r34 154r28 155r36 -159p7 Data{21|376P9} 161r34 162r28 163r10 163r28 164r36 -168p7 Data{21|376P9} 170r34 171r29 172r36 -180p7 Data{21|376P9} 182r34 183r35 184r42 185r36 -193p7 Data{21|376P9} 195r34 196r35 197r42 198r36 -216p7 Data{21|376P9} 219r38 234r34 236r10 246r29 265r24 294r26 310r29 320r29 -. 331r42 335r29 345r29 354r43 356r34 363r34 373r30 379r30 388r36 -217m7 Perms{9|73M9} 274r34 -218m7 Dir_Type{9|70M9} 299r26 308r39 333r29 -219b7 Has_64bit_Sz{boolean} -220p7 Last_Component{21|381P9} 249m29 249r29 300r26 391m13 391r13 -221m7 Target_Index{9|81M9} 250m29 255r51 266m24 298r26 308r18 312r29 322r29 -. 337r29 347r29 354r24 374r30 -221m21 Parent_Index{9|81M9} 252m29 255r26 297r26 330r29 380r30 -222p7 Target_Inode{21|349P9} 251r29 273r7 311r29 313r39 321r29 323r39 336r29 -. 338r39 346r29 348r39 369r10 369r42 375r30 389m13 389r13 -222p21 Parent_Inode{21|349P9} 253r29 258r42 295r26 296r36 368r10 368r42 381r30 -. 390m13 390r13 -223r7 Descriptor{21|287R9} 358m34 358r34 361m10 361r40 365m34 365r34 -224m7 Desc_Index{9|81M9} 354m10 357r34 364r34 -225r7 Ent{21|351R9} 229r40 230m34 230r34 308m10 329m10 349r35 -226a7 Name{string} 232m34 232r34 318m10 343m10 -227i7 Temp{natural} 316m29 326m29 341m29 351m29 -228b7 Success{boolean} 254m29 255r10 267m24 268r14 301m26 302r14 317m29 327m29 -. 342m29 352m29 360m34 367m34 377m30 383m30 385r21 -229a7 Ent_Data{8|29A9} 315r29 340r29 -231a7 Name_Data{8|29A9} 325r29 350r29 -387L6 Cleanup 238r15 241r15 257r15 261r15 270r15 304r15 -406p7 Data{21|376P9} 408r34 409r10 416r36 -428p7 Data{21|376P9} 434r34 436r10 446r29 464r29 484r30 495r30 506r26 508r54 -. 518r36 -429p7 Last_Component{21|381P9} 449m29 449r29 459m13 459r13 467m29 467r29 -. 512r26 522m13 522r13 -430m7 Path_Index{9|81M9} 450m29 485r30 496r30 510r26 -430m19 Target_Index{9|81M9} 468m29 473r51 -430m33 Parent_Index{9|81M9} 452m29 470m29 473r26 509r26 -431p7 Path_Inode{21|349P9} 451r29 486r30 493r7 493r37 497r30 519m13 519r13 -431p19 Target_Inode{21|349P9} 469r29 520m13 520r13 -431p33 Parent_Inode{21|349P9} 453r29 471r29 476r42 507r26 508r36 521m13 521r13 -432b7 Success{boolean} 454m29 455r14 472m29 473r10 488m30 489r14 499m30 500r14 -. 513m26 515r21 -517L6 Cleanup 438r15 441r15 457r15 475r15 479r15 491r15 502r15 -535p7 Data{21|376P9} 544r34 546r10 555r27 566r27 590r39 595r29 609r26 621r36 -536p7 Last_Component{21|381P9} 558m31 558r31 564m13 564r13 569m31 569r31 -. 615r26 626m13 626r13 -537m7 Source_Index{9|81M9} 559m27 -537m21 Target_Index{9|81M9} 570m27 599r29 613r26 -538m7 Source_Parent_Index{9|81M9} 561m27 -538m28 Target_Parent_Index{9|81M9} 572m27 579r26 598r29 612r26 -539p7 Source_Inode{21|349P9} 560r27 622m13 622r13 -539p21 Target_Inode{21|349P9} 571r27 623m13 623r13 -540p7 Source_Parent_Inode{21|349P9} 562r27 624m13 624r13 -540p28 Target_Parent_Inode{21|349P9} 573r27 582r42 589r39 596r29 610r26 625m13 -. 625r13 -541m7 Target_Parent_Size{9|84M9} 589m7 597r29 611r26 -542b7 Success1{boolean} 563m27 579r14 600m29 601r17 616m26 618r21 -542b17 Success2{boolean} 574m27 579r63 593r10 -620L6 Cleanup 548r15 551r15 581r15 586r15 603r18 -636p7 Data{21|376P9} 642r34 644r10 653r27 672r26 674r54 682r36 -637p7 Last_Component{21|381P9} 656m31 656r31 685m13 685r13 -638m7 Path_Index{9|81M9} 657m27 676r26 -638m19 Parent_Index{9|81M9} 659m27 675r26 -639p7 Path_Inode{21|349P9} 658r27 683m13 683r13 -639p19 Parent_Inode{21|349P9} 660r27 665r42 673r26 674r36 684m13 684r13 -640b7 Success{boolean} 661m27 662r14 677m26 679r21 -681L6 Cleanup 646r15 649r15 664r15 668r15 -696p7 FS{21|376P9} 704r34 709r30 728r29 729r56 752r36 -697p7 Fetched_Inode{21|349P9} 711r30 717r29 729r37 730r29 753m13 753r13 -698m7 Curr_Index{9|84M9} 723m7 731r29 739m10 -699m7 Next_Index{9|84M9} 724m7 733m29 739r24 -700m7 Entry_Count{9|84M9} 725m7 740r13 748m10 748r25 -701r7 Entity{20|57R9} 732m29 742r57 -702b7 Succ{boolean} 713m30 714r14 734m29 735r17 -751L6 Cleanup 716r15 720r15 -763p7 FS{21|376P9} 767r34 770r30 780r56 790r36 -764p7 Fetched_Inode{21|349P9} 772r30 776r26 779r27 780r37 791m13 791r13 -765b7 Succ{boolean} 774m30 775r10 -802p7 FS{21|376P9} 807r34 811r30 829r25 831r54 840r36 -803e7 Fetched_Type{20|39E9} 821m7 822r12 -804p7 Fetched_Inode{21|349P9} 813r30 821r39 830r25 831r35 841m13 841r13 -805b7 Succ{boolean} 815m30 816r14 835m25 837r22 -839L6 Cleanup 818r15 824r67 825r67 -852p7 FS{21|376P9} 856r34 859r10 869r30 885r25 888r54 897r36 -853p7 Fetched_Inode{21|349P9} 871r30 877r27 878r29 886r25 888r35 898m13 898r13 -854b7 Succ{boolean} 873m30 874r14 892m25 894r22 -896L6 Cleanup 861r15 876r15 881r15 -907K15 Align[11|19] 934r35 -908p7 FS{21|376P9} 909r68 914r34 917r30 924r38 933r51 943r36 -909m7 Blk{9|84M9} 934r64 -910m7 Size{9|84M9} 924m10 932r35 934r58 -911p7 Inod{21|349P9} 919r30 924r28 927r51 928r46 929r48 930r48 931r45 935r49 -. 936r49 937r49 944m13 944r13 -912b7 Succ{boolean} 921m30 923r10 -953p7 FS{21|376P9} 958r34 960r10 970r30 983r46 989r32 1000r46 1003r39 1015r36 -954p7 Fetched{21|349P9} 972r30 976r26 977r24 983r33 990r32 1000r23 1005r39 -. 1016m13 1016r13 -955m7 Fetched_Size{9|84M9} 983m7 984r10 987r13 -956b7 Success{boolean} 974m30 975r14 985m10 994m32 996m13 999r13 1000m70 -. 1001r16 1007m39 1012r21 -1014L6 Cleanup 962r15 980r15 -1026N7 EXT_GETFLAGS 1055r18 -1027N7 EXT_SETFLAGS 1058r18 -1029p7 FS{21|376P9} 1034r34 1040r10 1046r30 1061r39 1073r36 -1030p7 Inod{21|349P9} 1048r30 1056r26 1059r16 1063r39 1074m13 1074r13 -1031b7 Success{boolean} 1050m30 1051r14 1065m39 1066r30 -1032m7 Flags{9|81M9} 1056m16 1059r30 -1072L6 Cleanup 1042r15 -1083p7 FS{21|376P9} 1088r34 1094r10 1100r30 1111r33 1120r36 -1084p7 Inod{21|349P9} 1102r30 1108r46 1109r10 1113r33 1121m13 1121r13 -1085b7 Success{boolean} 1104m30 1105r14 1115m33 1116r24 -1086e7 Typ{20|39E9} 1108m10 1109r47 -1119L6 Cleanup 1096r15 -1131p7 FS{21|376P9} 1140r34 1142r10 1148r30 1159r33 1168r36 -1132p7 Inod{21|349P9} 1150r30 1156r10 1157r10 1161r33 1169m13 1169r13 -1133b7 Success{boolean} 1152m30 1153r14 1163m33 1164r24 -1167L6 Cleanup 1144r15 -1184p7 FS{21|376P9} 1190r34 1192r10 1202r30 1213r33 1222r36 -1185p7 Inod{21|349P9} 1204r30 1210r10 1211r10 1215r33 1223m13 1223r13 -1186m7 AS=1186:37{9|84M9} -1187m7 MS=1187:37{9|84M9} -1188b7 Success{boolean} 1206m30 1207r14 1217m33 1218r24 -1221L6 Cleanup 1194r15 -1227p7 FS_Data{21|376P9} 1229r31 -1258i7 Name_Start{natural} 1268m7 1327m10 1415r24 1415r39 1416r46 -1259e7 Target_Type{20|39E9} 1275m10 1300m10 1323r13 1363m16 1368r42 -1260m7 Target_Sz{9|84M9} 1274m10 1299m10 1336r32 1362m16 1371r23 -1261r7 Entity{20|57R9} 1339m32 1352r16 1352r41 1355r45 -1262i7 First_I{natural} 1281m10 1306m10 1317r13 1317r34 1319m13 1319r24 1327r26 -. 1353r22 1396m10 -1262i16 Last_I{natural} 1282m10 1307m10 1312r13 1314r16 1314r51 1315m13 1315r23 -. 1317r23 1318m13 1318r24 1343r19 1353r33 1368r19 1381r58 1395m10 1395r21 -. 1396r21 -1263m7 Curr_Index{9|84M9} 1328m10 1338r32 1350m13 -1263m19 Next_Index{9|84M9} 1329m10 1340m32 1350r27 -1264a7 Symlink{string} 1372m23 1381r23 -1265i7 Symlink_Len{natural} 1373m23 1374r22 1381r37 -1313L9 Retry_Component 1320r18 -1394L9 Next_Iteration 1390r21 -1399L6 Perfect_Hit_Return 1278r18 1303r18 -1403L6 Target_Miss_Parent_Hit_Return 1344r24 -1408L6 Absolute_Miss_Return 1293r18 1309r15 1324r18 1346r24 1365r24 1375r27 -1414L6 Fix_Last_Component 1401r12 1406r12 -1426i7 Final_Length{natural} 1430m7 1431r10 1437r21 1440r20 -1427a7 Str_Data{8|29A9} 1438r54 -1437i11 I{integer} 1438r29 1438r64 -1452i7 Ret_Count{natural} 1465m25 1467r26 1493m28 1495r28 -1453r7 Dir{21|351R9} 1457m34 1457r34 1468r10 1474r44 1481r39 1500r43 1505r51 -1454m7 Tmp_Index{9|84M9} 1478m10 1483m13 1483r26 1491r28 -1455e7 Tmp_Type{20|39E9} 1481m13 1484m13 1503r30 -1456a7 Dir_Data{8|29A9} 1464m25 1467r39 -1474a10 Dir_Name{string} 1475r43 1476m37 1476r37 1502r30 1504r35 1504r55 -1475a10 Name_Data{8|29A9} 1492m28 1495r41 -1510L6 Error_Return 1470r15 1496r18 -1522i7 Ret_Count{natural} 1531m27 1538m27 1542r31 -1523a7 Super_Data{8|29A9} 1530r27 1537m27 1542r43 -1552i7 Descr_Size{natural} 1555r42 1562r40 -1553m7 Offset{9|81M9} 1559m10 1559r20 1562m7 1562r17 1567r40 1574r40 -1554i7 Ret_Count{natural} 1569m27 1576m27 1580r23 -1555a7 Result_Data{8|29A9} 1568r27 1575m27 1580r35 -1595m7 Table_Index{9|81M9} 1602m7 1616r17 -1595m20 Descriptor_Index{9|81M9} 1603m7 1607r31 -1596r7 Block_Descriptor{21|287R9} 1608m31 1608r31 1615r17 -1597m7 Offset{9|81M9} 1615m7 1621r40 1628r40 -1598i7 Ret_Count{natural} 1623m27 1630m27 1633r23 -1599a7 Result_Data{8|29A9} 1622r27 1629m27 1633r35 -1646m7 Adjusted_Block{9|81M9} 1665r10 1668m10 1671r10 1672m10 1672r29 1673r29 -. 1674r29 1678m13 1678r39 1679r39 1680r39 1727r39 -1647m7 Block_Level{9|81M9} 1671r28 1672r46 1673r46 1674r48 1677r29 1678r57 -. 1679r56 1680r58 -1648m7 Block_Index{9|81M9} 1660m34 1660r34 1704r20 1721r17 1731r14 -1649m7 Single_Index{9|81M9} 1673m10 1677r13 1710r61 -1650m7 Indirect_Offset{9|81M9} 1674m10 1680m13 1700r30 1717r40 -1651m7 Indirect_Block{9|81M9} 1658m34 1658r34 1675m10 1699r43 1716r40 -1652m7 Double_Indirect{9|81M9} 1679m13 1686r51 1692r43 -1653m7 Single_Indirect_Index{9|81M9} 1656m34 1656r34 1681m13 1693r45 -1655a7 Single_Indirect_Index_Data{8|29A9} 1687m30 -1657a7 Indirect_Block_Data{8|29A9} 1694m30 1711m27 -1659a7 Block_Index_Data{8|29A9} 1701m30 1718m27 1728m24 -1662i7 Discard_1{natural} 1688m30 1695m30 1702m30 1712m27 1719m27 1729m24 -1663b7 Discard_2{boolean} 1689m30 1696m30 1703m30 1713m27 1720m27 1730m24 -1743i7 Final_Count{natural} 1755m10 1758r26 1762r40 1787r20 -1744m7 Final_Offset{9|84M9} 1759m10 1760r28 1761m10 1761r28 1764r60 1765r61 -. 1773r62 -1745m7 Block_Searched{9|84M9} 1760m10 1769r48 -1746m7 Block_Index{9|81M9} 1768m10 1772r40 -1747m7 Step_Size{9|84M9} 1762m10 1764r13 1765m13 1776r42 1784r46 -1748i7 Bytes_Read{natural} 1758r13 1759r51 1762r68 1774r46 1775r46 1784m10 -. 1784r24 -1801m7 Final_Offset{9|84M9} 1838m10 1839r28 1840m10 1840r28 1843r60 1844r61 -. 1852r62 -1802m7 Block_Searched{9|84M9} 1839m10 1848r48 -1803m7 Block_Index{9|81M9} 1847m10 1851r40 -1804m7 Step_Size{9|84M9} 1841m10 1843r13 1844m13 1855r42 1862r46 -1805i7 Bytes_Read{natural} 1837r13 1838r51 1841r68 1853r46 1854r46 1862m10 -. 1862r24 -1869L6 Error_Return 1816r18 1824r18 1833r18 1859r18 -1883m7 Offset{9|84M9} 1895r39 -1886m7 BCount{9|84M9} 1896r39 -1908m7 Ret_Blk{9|81M9} 1911m10 1912r13 1917m31 1927r32 -1910m11 I{9|81M9} 1911r71 1926r44 -1951m7 Adjusted_Block{9|81M9} 1971r10 1972r38 1976m10 1976r28 1979r10 1980m10 -. 1980r29 1981r29 1982r29 1986m13 1986r39 1987r39 1988r39 2143r39 -1952m7 Block_Level{9|81M9} 1979r28 1980r46 1981r46 1982r48 1985r29 1986r57 -. 1987r56 1988r58 -1953m7 DBlock{9|81M9} 1966m34 1966r34 -1954m7 Single_Index{9|81M9} 1981m10 1985r13 2090r61 2107r43 -1955m7 Indirect_Offset{9|81M9} 1982m10 1988m13 2063r30 2116r40 -1956m7 Indirect_Block{9|81M9} 1964m34 1964r34 1983m10 2040r16 2057m16 2062r43 -. 2095r13 2100m31 2115r40 -1957m7 Double_Indirect{9|81M9} 1987m13 2010r51 2026r53 2034r43 2050r46 -1958m7 Single_Indirect_Index{9|81M9} 1962m34 1962r34 1989m13 2015r16 2020m34 -. 2035r45 2052r46 -1959m7 Temp{9|81M9} 1996m34 1998r42 2045m34 2057r34 2076m31 2078r39 2129m28 -. 2131r36 -1961a7 Single_Indirect_Index_Data{8|29A9} 2011m30 2027r32 -1963a7 Indirect_Block_Data{8|29A9} 2036m30 2053r32 2091m27 2108r30 -1965a7 DBlock_Data{8|29A9} 2064r30 2117r27 2144r24 -1968i7 Discard_1{natural} 2012m30 2028m32 2037m30 2054m32 2065m30 2092m27 -. 2109m30 2118m27 2145m24 -1969b7 Discard_2{boolean} 1997m34 2004m39 2013m30 2021m34 2029m32 2038m30 -. 2046m34 2055m32 2066m30 2077m31 2084m36 2093m27 2101m31 2110m30 2119m27 -. 2130m28 2137m33 2146m24 -2158i7 Ret_Count{natural} 2184m27 2215m27 -2159r7 Desc{21|287R9} 2168m34 2168r34 2175r13 2181r40 2212r40 2223m10 2223r37 -. 2240m34 2240r34 -2160m7 Curr_Block{9|81M9} 2190m10 2198m19 2206r13 2246r23 -2161p7 Bitmap{8|30P9} 2183r27 2191r19 2192r16 2196r20 2197r19 2197r33 2214r27 -. 2247m16 2247r16 2254m13 2254r13 -2164m11 I{9|81M9} 2167r34 2198r34 2239r34 -2191i14 J{integer} 2192r24 2196r28 2197r27 2197r41 2199r47 -2195i17 Bit{integer} 2196r40 2197r52 2199r69 -2203L12 Next_Next_Iteration 2193r21 -2205L9 End_Search_Loop 2200r24 -2250L6 Next_Iteration 2176r18 2207r18 -2253L6 Error_Return 2172r18 2187r18 2218r18 2234r18 2244r18 -2264i7 Ret_Count{natural} 2290m27 2325m27 -2265r7 Desc{21|287R9} 2274m34 2274r34 2281r13 2287r40 2322r40 2333m10 2333r37 -. 2338m34 2338r34 -2266m7 Curr_Block{9|81M9} 2296m10 2303m19 2305r22 2306r22 2316r13 2344r23 -2267p7 Bitmap{8|30P9} 2289r27 2297r19 2298r16 2302r20 2308r22 2308r36 2324r27 -. 2345m16 2345r16 2353m13 2353r13 -2270m11 I{9|81M9} 2273r34 2303r34 2337r34 -2297i14 J{integer} 2298r24 2302r28 2304r47 2308r30 2308r44 -2301i17 Bit{integer} 2302r40 2304r69 2308r55 -2313L12 Next_Next_Iteration 2299r21 -2315L9 End_Search_Loop 2309r27 -2348L6 Next_Iteration 2282r18 2317r18 -2351L6 Error_Return 2278r18 2293r18 2328r18 2342r18 -2367p7 Buffer{8|30P9} 2374m7 2380r25 2383r38 2394r40 2394r48 2403r28 2404r19 -. 2412r22 2412r30 2415r22 2415r30 2431r37 2434r50 2447m13 2447r13 -2368m7 Required{9|84M9} 2388m7 2401r29 -2369i7 Offset{natural} 2389m7 2391r13 2394r63 2403r19 2403r43 2412r45 2415r45 -. 2440m13 2440r23 -2370m7 Contracted{9|84M9} 2396m13 2399r58 2402r48 2403r61 2413r44 2415r63 -2371m7 Available{9|84M9} 2399m13 2401r16 2420r51 -2372i7 Ret_Count{natural} 2381m25 2383r25 2432m37 2434r37 -2393r13 Ent{21|351R9} 2398r30 2399r39 2402m16 2440r41 -2411r19 Ent2{21|351R9} 2418m19 -2414a19 Name_Buf{string} 2423m19 -2446L6 Cleanup 2385r15 2407r24 2437r24 -2458p7 Buffer{8|30P9} 2461m7 2467r25 2470r38 2481r40 2481r48 2483r40 2483r48 -. 2493r34 2496r47 2509m13 2509r13 -2459i7 Offset{natural} 2475m7 2478r13 2481r63 2501r24 2502m13 2502r24 -2459i15 Offset2{natural} 2476m7 2483r63 2501m13 -2459i24 Ret_Count{natural} 2468m25 2470r25 2494m34 2496r34 -2480r13 Ent{21|351R9} 2485r16 2486r55 2502r42 -2482r13 Ent2{21|351R9} 2486m16 2486r36 -2508L6 Cleanup 2472r15 2499r21 -2561m7 Ret{9|73M9} 2564r47 2565r47 2566r47 2567r47 2568r47 -2588m7 L32{9|81M9} 2592r27 2596r26 -2589m7 H32{9|81M9} 2593r27 2597r26 -18M9 T{9|84M9} 27r42[907] 27r52[907] 35r44[907] 35r54[907] 40r50[907] 40r60[907] -. 41r49[907] 23r42[907] 23r52[907] 27r14[907] 30r44[907] 30r54[907] 34r14[907] -. 37r50[907] 37r60[907] -27V13 Align_Up{9|84M9} 29r20[907] -27m23 Value{9|84M9} 24r61[907] -27m30 Alignment{9|84M9} 28r20[907] 28r40[907] 28r55[907] 29r40[907] 25r61[907] -35V13 Align_Down{9|84M9} 37r20[907] -35m25 Value{9|84M9} 31r61[907] -35m32 Alignment{9|84M9} 36r20[907] 36r40[907] 36r55[907] 37r42[907] 32r61[907] -40V13 Divide_Round_Up{9|84M9} 934s41[907] 42r20[907] -40m30 Dividend{9|84M9} 41r21[907] 39r15[907] -40m40 Divisor{9|84M9} 41r33[907] 41r62[907] 42r47[907] 39r27[907] 39r43[907] -37R9 Object{21|364R9} 43r7[25] 47r38[25] -47P9*Object_Pointer(21|364R9) 99r42[25] 48r8[25] 50r31[25] 57r56[25] 59r33[25] -57V13*To_Pointer{18|47P9[25]} 108s58[25] 118s52[25] 143s58[25] 151s58[25] -. 159s58[25] 168s58[25] 180s58[25] 193s59[25] 216s62[25] 406s58[25] 428s58[25] -. 535s58[25] 636s58[25] 696s56[25] 763s56[25] 802s56[25] 852s56[25] 908s58[25] -. 953s56[25] 1029s61[25] 1083s61[25] 1131s61[25] 1184s61[25] 1227s61[25] -. 62r30[25] -59V13*To_Address{17|67M9} 99s25[25] 63r30[25] -18P9*Name{21|381P9} 20r50[26] 20r50[27] 20r50[28] 20r50[29] -20p39 X{21|381P9} 21r15[26] 22r23[26] 23r11[26] 21r15[27] 22r23[27] 23r11[27] -. 21r15[28] 22r23[28] 23r11[28] 21r15[29] 22r23[29] 23r11[29] -24m7 Value2{19|82M9} 27r18[907] -25m7 Align2{19|82M9} 27r27[907] 27r48[907] -31m7 Value2{19|82M9} 34r17[907] -32m7 Align2{19|82M9} 34r33[907] - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___vfs__ext__probe 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__probe 0 -GG EK_GLOBALS ada___vfs__ext__probe local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 5 interfaces__shift_left__3 devices__is_read_only devices__read devices__write ada___lib__messages__put_line FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__remount 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__remount 0 -GG EK_GLOBALS ada___vfs__ext__remount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__unmount 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__unmount 0 -GG EK_GLOBALS ada___vfs__ext__unmount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__read devices__write ada___lib__synchronization__seize FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_block_size 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_block_size 0 -GG EK_GLOBALS ada___vfs__ext__get_block_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_fragment_size 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_fragment_size 0 -GG EK_GLOBALS ada___vfs__ext__get_fragment_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_size 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_size 0 -GG EK_GLOBALS ada___vfs__ext__get_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_inode_count 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_inode_count 0 -GG EK_GLOBALS ada___vfs__ext__get_inode_count local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_free_blocks 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_free_blocks 0 -GG EK_GLOBALS ada___vfs__ext__get_free_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_free_inodes 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_free_inodes 0 -GG EK_GLOBALS ada___vfs__ext__get_free_inodes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_max_length 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_max_length 0 -GG EK_GLOBALS ada___vfs__ext__get_max_length local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__create_node 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__create_node 0 -GG EK_GLOBALS ada___vfs__ext__create_node local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 6 vfs__is_absolute devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__create_symbolic_link 3 ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__ext__conv__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__create_symbolic_link 0 -GG EK_GLOBALS ada___vfs__ext__create_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__create_hard_link 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__create_hard_link 0 -GG EK_GLOBALS ada___vfs__ext__create_hard_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 6 vfs__is_absolute devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__rename 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__rename 0 -GG EK_GLOBALS ada___vfs__ext__rename local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 6 vfs__is_absolute devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__unlink 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__unlink 0 -GG EK_GLOBALS ada___vfs__ext__unlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 6 vfs__is_absolute devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__read_entries 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__read_entries 0 -GG EK_GLOBALS ada___vfs__ext__read_entries local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__read_symbolic_link 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__read_symbolic_link 0 -GG EK_GLOBALS ada___vfs__ext__read_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__read 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__read 0 -GG EK_GLOBALS ada___vfs__ext__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__write 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__write 0 -GG EK_GLOBALS ada___vfs__ext__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 5 devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__stat__align__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat__align__align_up 0 -GG EK_GLOBALS ada___vfs__ext__stat__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__ext__stat__align ada___vfs__ext__stat ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__stat__align__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat__align__align_down 0 -GG EK_GLOBALS ada___vfs__ext__stat__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__ext__stat__align ada___vfs__ext__stat ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__stat__align__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat__align__divide_round_up 0 -GG EK_GLOBALS ada___vfs__ext__stat__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__ext__stat__align ada___vfs__ext__stat ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__stat__align 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat__align 0 -GG EK_GLOBALS ada___vfs__ext__stat__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___vfs__ext__stat ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__stat 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__stat 0 -GG EK_GLOBALS ada___vfs__ext__stat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 5 devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__truncate 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__truncate 0 -GG EK_GLOBALS ada___vfs__ext__truncate local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 5 devices__get_block_size devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__io_control 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__io_control 0 -GG EK_GLOBALS ada___vfs__ext__io_control local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__change_mode 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__change_mode 0 -GG EK_GLOBALS ada___vfs__ext__change_mode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__change_owner 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__change_owner 0 -GG EK_GLOBALS ada___vfs__ext__change_owner local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__change_access_times 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__change_access_times 0 -GG EK_GLOBALS ada___vfs__ext__change_access_times local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 4 devices__read devices__write ada___lib__synchronization__seize ada___lib__synchronization__release FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__synchronize 2 devices__synchronize ada___vfs__ext__conv__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__synchronize 0 -GG EK_GLOBALS ada___vfs__ext__synchronize local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__synchronize__2 1 ada___vfs__ext__synchronize -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__synchronize__2 0 -GG EK_GLOBALS ada___vfs__ext__synchronize__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__inner_open_inode 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__inner_open_inode 0 -GG EK_GLOBALS ada___vfs__ext__inner_open_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 3 vfs__is_absolute devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__inner_read_symbolic_link 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__inner_read_symbolic_link 0 -GG EK_GLOBALS ada___vfs__ext__inner_read_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__inner_read_entry 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__inner_read_entry 0 -GG EK_GLOBALS ada___vfs__ext__inner_read_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__rw_superblock 2 devices__read devices__write -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__rw_superblock 0 -GG EK_GLOBALS ada___vfs__ext__rw_superblock local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 2 devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__rw_block_group_descriptor 3 ada___vfs__ext__act_on_policy devices__read devices__write -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__rw_block_group_descriptor 0 -GG EK_GLOBALS ada___vfs__ext__rw_block_group_descriptor local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 2 devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__rw_inode 4 ada___vfs__ext__rw_block_group_descriptor ada___vfs__ext__act_on_policy devices__read devices__write -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__rw_inode 0 -GG EK_GLOBALS ada___vfs__ext__rw_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 2 devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_block_index 1 devices__read -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_block_index 0 -GG EK_GLOBALS ada___vfs__ext__get_block_index local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__read_from_inode 3 ada___vfs__ext__get_block_index ada___vfs__ext__act_on_policy devices__read -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__read_from_inode 0 -GG EK_GLOBALS ada___vfs__ext__read_from_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__write_to_inode 6 ada___vfs__ext__rw_inode ada___vfs__ext__get_block_index ada___vfs__ext__grow_inode ada___vfs__ext__set_size ada___vfs__ext__act_on_policy devices__write -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__write_to_inode 0 -GG EK_GLOBALS ada___vfs__ext__write_to_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__grow_inode 2 ada___vfs__ext__assign_inode_blocks interfaces__shift_right__4 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__grow_inode 0 -GG EK_GLOBALS ada___vfs__ext__grow_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__assign_inode_blocks 4 ada___vfs__ext__rw_inode ada___vfs__ext__get_block_index ada___vfs__ext__wire_inode_blocks ada___vfs__ext__allocate_block_for_inode -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__assign_inode_blocks 0 -GG EK_GLOBALS ada___vfs__ext__assign_inode_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__wire_inode_blocks 4 ada___vfs__ext__rw_inode ada___vfs__ext__allocate_block_for_inode devices__read devices__write -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__wire_inode_blocks 0 -GG EK_GLOBALS ada___vfs__ext__wire_inode_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__allocate_block_for_inode 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__allocate_block_for_inode 0 -GG EK_GLOBALS ada___vfs__ext__allocate_block_for_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__allocate_inode 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__allocate_inode 0 -GG EK_GLOBALS ada___vfs__ext__allocate_inode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 2 devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__add_directory_entry 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__add_directory_entry 0 -GG EK_GLOBALS ada___vfs__ext__add_directory_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__delete_directory_entry 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__delete_directory_entry 0 -GG EK_GLOBALS ada___vfs__ext__delete_directory_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP proper_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_proof_in 0 refined_input 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP refined_output 4 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state __HEAP calls_proof 0 calls 0 calls_conditional 3 devices__get_block_size devices__read devices__write FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_dir_type 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_dir_type 0 -GG EK_GLOBALS ada___vfs__ext__get_dir_type local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_dir_type__2 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_dir_type__2 0 -GG EK_GLOBALS ada___vfs__ext__get_dir_type__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_permissions 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_permissions 0 -GG EK_GLOBALS ada___vfs__ext__get_permissions local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_inode_type 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_inode_type 0 -GG EK_GLOBALS ada___vfs__ext__get_inode_type local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_inode_type__2 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_inode_type__2 0 -GG EK_GLOBALS ada___vfs__ext__get_inode_type__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__get_size__2 1 interfaces__shift_left__4 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__get_size__2 0 -GG EK_GLOBALS ada___vfs__ext__get_size__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__set_size 1 interfaces__shift_right__4 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__set_size 0 -GG EK_GLOBALS ada___vfs__ext__set_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__is_immutable 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__is_immutable 0 -GG EK_GLOBALS ada___vfs__ext__is_immutable local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__is_append_only 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__is_append_only 0 -GG EK_GLOBALS ada___vfs__ext__is_append_only local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__act_on_policy 2 ada___lib__messages__put_line ada___lib__panic__hard_panic -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__act_on_policy 0 -GG EK_GLOBALS ada___vfs__ext__act_on_policy local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state proper_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_proof_in 0 refined_input 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state refined_output 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__check_user_access 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__check_user_access 0 -GG EK_GLOBALS ada___vfs__ext__check_user_access local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__conv__to_pointer 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__conv__to_pointer 0 -GG EK_GLOBALS ada___vfs__ext__conv__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__ext__conv ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__conv__to_address 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__conv__to_address 0 -GG EK_GLOBALS ada___vfs__ext__conv__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__ext__conv ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__conv 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__conv 0 -GG EK_GLOBALS ada___vfs__ext__conv local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__free 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__free 0 -GG EK_GLOBALS ada___vfs__ext__free local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__free__2 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__free__2 0 -GG EK_GLOBALS ada___vfs__ext__free__2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__free__3 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__free__3 0 -GG EK_GLOBALS ada___vfs__ext__free__3 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext__free__4 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__ext__free__4 0 -GG EK_GLOBALS ada___vfs__ext__free__4 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__ext vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__ext 1 ada___vfs__ext__conv -GG EK_PROOF_DEPENDENCIES ada___vfs__ext 0 -GG EK_GLOBALS ada___vfs__ext local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 1 ada___vfs__ext__conv local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___vfs__ext__rw_block_group_descriptor FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__address_to_access_conversions TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__messages__image FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__panic TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__read_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__rw_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__image__2 FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__read FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_block_index FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__is_initialized FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__freeGP1161 TRUE FALSE FALSE FALSE TRUE ada___vfs__ext BODY_PART -GG EK_FLOW_SCOPE ada___vfs__ext__read_from_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___lib__panic__hard_panic FALSE FALSE FALSE FALSE TRUE ada___lib__panic VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__write FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__stat__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___vfs__ext__stat BODY_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__write_to_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__free__4 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__ext__freeGP1236 VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__stat__align__align_up FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__stat__align VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__truncate FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__grow_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__io_control FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__characters TRUE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__freeGP1236 TRUE FALSE FALSE FALSE TRUE ada___vfs__ext BODY_PART -GG EK_FLOW_SCOPE ada___vfs__ext__assign_inode_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__conv TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___vfs__ext BODY_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__get_timestamp FALSE FALSE FALSE FALSE TRUE ada___lib__messages PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__stat__align__align_down FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__stat__align VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext TRUE FALSE FALSE FALSE FALSE vfs -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___ada___ada__characters__latin_1 TRUE FALSE FALSE FALSE FALSE ada___ada__characters -GG EK_FLOW_SCOPE ada___vfs__ext__change_mode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__wire_inode_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__ext__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__change_owner FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__stat__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__stat__align VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__allocate_block_for_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___vfs__ext__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__change_access_times FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__conv__to_pointer FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__conv VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__allocate_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__conv__to_address FALSE FALSE FALSE FALSE TRUE ada___vfs__ext__conv VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__add_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__synchronize FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__synchronize__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__ext__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___vfs__ext__delete_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__initialize_sources FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__free FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__ext__freeGP1007 VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_dir_type FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_dir_type__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__create_node FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_permissions FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_monotonic_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_type FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_type__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time_resolution FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_size__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__create_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__freeGP1007 TRUE FALSE FALSE FALSE TRUE ada___vfs__ext BODY_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__set_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__get_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages TRUE FALSE FALSE FALSE FALSE lib -GG EK_PART_OF ada___lib__messages__message_state 4 ada___lib__messages__log_ring_buffer ada___lib__messages__small_log_buffer ada___lib__messages__curr_entry ada___lib__messages__messages_mutex -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__inner_open_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__is_immutable FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__ext__create_hard_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__enable_logging FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__clocks__set_real_time FALSE FALSE FALSE FALSE TRUE ada___arch__clocks VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__free__2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__ext__freeGP1083 VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__is_append_only FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__put_line FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__act_on_policy FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__inner_read_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__rename FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__check_user_access FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__inner_read_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__messages__dump_logs FALSE FALSE FALSE FALSE TRUE ada___lib__messages VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__freeGP1083 TRUE FALSE FALSE FALSE TRUE ada___vfs__ext BODY_PART -GG EK_FLOW_SCOPE ada___vfs__ext__unlink FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__rw_superblock FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__free__3 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__ext__freeGP1161 VISIBLE_PART -GG EK_REMOTE_STATES 3 ada___arch__clocks__monotonic_clock_state ada___lib__messages__message_state ada___lib__panic__panic_state -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/vfs-ext.cswi b/obj/gnatprove/phase1/vfs-ext.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/vfs-ext.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/vfs-fat.adb.stderr b/obj/gnatprove/phase1/vfs-fat.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/vfs-fat.adb.stdout b/obj/gnatprove/phase1/vfs-fat.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/vfs-fat.ali b/obj/gnatprove/phase1/vfs-fat.ali deleted file mode 100644 index 90794c8..0000000 --- a/obj/gnatprove/phase1/vfs-fat.ali +++ /dev/null @@ -1,698 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_DEALLOCATION -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_ATTRIBUTES -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U vfs.fat%b vfs-fat.adb 21e714da OO PK IU -W ada%s ada.ads ada.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W lib%s lib.adb lib.ali -W lib.alignment%s lib-alignment.adb lib-alignment.ali -W system%s system.ads system.ali -W system.address_to_access_conversions%s s-atacco.ads s-atacco.ali -W system.storage_elements%s s-stoele.ads s-stoele.ali -W vfs%s vfs.adb vfs.ali - -U vfs.fat%s vfs-fat.ads 3d3f4adc OO PK IU -W vfs%s vfs.adb vfs.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-alignment.ads 20250222165738 68e8a917 lib.alignment%s -D lib-alignment.adb 20250222165738 a3b617fd lib.alignment%b -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-atacco.ads 20240507065137 5868e3ba system.address_to_access_conversions%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D vfs.ads 20250222165738 63b4365d vfs%s -D vfs-fat.ads 20250222165738 5e8b7c81 vfs.fat%s -D vfs-fat.adb 20250222165738 409a5a7b vfs.fat%b -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 17|19r6 25r28 26r28 -X 2 a-uncdea.ads -20u15*Unchecked_Deallocation 17|19w10 25r32 26r32 -X 5 devices.ads -22K9*Devices 279e12 17|42r7 340r10 385r32 410r7 436r10 -29A9*Operation_Data(6|70M9) 16|72r24 17|39r19 299r24 402r21 427r23 -83I9*Device_Handle 16|19r23 190r24 17|29r23 -154V13*Get_Block_Size{natural} 17|373s52 385s40 -156V13*Is_Read_Only{boolean} 17|52s29 -193U14*Read 17|42s15 340s18 410s15 436s18 -X 6 interfac.ads -70M9*Unsigned_8 16|87r52 92r31 94r31 97r31 110r31 111r31 112r31 161r28 162r28 -. 163r28 238r36 -73M9*Unsigned_16 16|91r31 93r31 95r31 96r31 98r31 99r31 100r31 104r31 105r31 -. 107r31 108r31 117r31 164r28 165r28 166r28 167r28 168r28 169r28 170r28 -81M9*Unsigned_32 16|101r31 102r31 103r31 106r31 113r31 171r28 193r24 194r24 -. 195r24 200r23 208r18 215r24 216r28 228r45 232r30 233r30 234r30 17|54r29 -. 55r29 56r29 57r29 145r20 196r39 197r30 240r17 307r24 308r33 309r10 338r37 -. 369r43 373r23 373r39 374r23 395r18 408r34 421r24 422r28 -84M9*Unsigned_64 16|32r57 34r60 36r51 38r58 42r33 43r33 47r33 48r33 50r57 -. 71r20 90r31 209r18 228r65 229r11 234r50 17|85r57 91r60 97r51 103r58 111r33 -. 112r33 122r33 123r33 131r57 147r20 179r24 241r17 262r21 275r22 282r19 298r20 -. 306r24 310r24 322r33 323r34 328r32 329r23 330r13 330r39 332r35 384r32 386r32 -. 396r18 400r21 425r23 429r18 432r10 438r37 -141V13*Shift_Left{81M9} 17|196s27 -X 7 lib.ads -19K9*Lib 35e8 17|20r6 369r28 -X 8 lib-alignment.ads -19k13*Alignment 43e18 17|20w10 369r32 -X 12 system.ads -37K9*System 155e11 16|21r27 25r23 30r35 32r34 34r37 36r28 38r35 41r29 46r29 -. 50r34 53r18 58r26 61r20 69r20 77r18 17|17r6 17r35 18r6 23r28 24r28 31r27 -. 46r23 66r23 78r35 82r13 85r34 91r37 97r28 103r35 110r29 121r29 131r34 138r18 -. 221r26 230r20 296r20 364r18 -67M9*Address 16|21r34 25r30 30r42 32r41 34r44 36r35 38r42 41r36 46r36 50r41 -. 53r25 58r33 61r27 69r27 77r25 17|31r34 66r30 78r42 85r41 91r44 97r35 103r42 -. 110r36 121r36 131r41 138r25 221r33 230r27 296r27 364r25 -69m4*Null_Address{67M9} 17|46r30 82r20 -X 13 s-atacco.ads -39k16*Address_To_Access_Conversions 65e41 17|18w13 23r35 24r35 -X 14 s-stoele.ads -40K16*Storage_Elements 90e28 17|17w13 17r42 -82M9*Integer_Address 17|224r42 239r42 305r42 372r42 -84V13*To_Address{12|67M9} 17|224s30 239s30 305s30 372s30 -87V13*To_Integer{82M9} 17|211s33 -X 15 vfs.ads -24K9*VFS 674e8 16|17r9 241r5 17|22r14 505r5 -28M9*File_Inode_Number<6|84M9> 16|55r22 58r48 62r20 70r20 78r18 17|140r22 -. 211r14 221r48 231r20 297r20 365r18 378r32 -39E9*File_Type 40e64 16|201r23 238r55 17|146r20 -39n23*File_Regular{39E9} 16|240r13 17|317r29 -39n37*File_Directory{39E9} 16|239r58 17|146r35 168r27 249r29 -41R9*File_Stat 54e14 16|79r22 17|366r22 -42m7*Unique_Identifier{28M9} 17|378m11 -43e7*Type_Of_File{39E9} 17|379m11 -44m7*Mode{32M12} 17|380m11 -45m7*UID{6|81M9} 17|381m11 -46m7*GID{6|81M9} 17|382m11 -47i7*Hard_Link_Count{positive} 17|383m11 -48m7*Byte_Size{6|84M9} 17|384m11 -49i7*IO_Block_Size{natural} 17|385m11 -50m7*IO_Block_Count{6|84M9} 17|386m11 -51r7*Creation_Time{35R9} 17|387m11 -52r7*Modification_Time{35R9} 17|388m11 -53r7*Access_Time{35R9} 17|389m11 -58m7*Inode_Number{6|84M9} 17|281m32 -59a7*Name_Buffer{string} 17|283m32 -60i7*Name_Len{natural} 17|285m32 -61e7*Type_Of_File{39E9} 17|286m32 -63A9*Directory_Entities(57R9) 16|64r24 17|233r24 -234E9*FS_Status 242e16 16|56r22 66r24 74r24 80r22 17|141r22 235r24 301r24 -. 367r22 -235n8*FS_Success{234E9} 17|213r18 254r18 326r18 390r18 -236n8*FS_Invalid_Value{234E9} 17|218r18 250r21 318r21 -241n8*FS_IO_Failure{234E9} 17|258r24 348r24 355r24 -X 16 vfs-fat.ads -17K13*FAT 15|24k9 16|241l9 241e12 17|22b18 505l9 505t12 -18U14*Probe 19>8 20>8 21<8 17|28b14 63l8 63t13 -19i8 Handle{5|83I9} 17|29b8 42r21 51r29 52r43 -20b8 Do_Read_Only{boolean} 17|30b8 33r28 -21m8 Data_Addr{12|67M9} 17|31b8 46m10 62m7 -24U14*Remount 25>8 26>8 27>8 28<8 17|65b14 76l8 76t15 -25m8 FS{12|67M9} 17|66b8 71r28 -26b8 Do_Read_Only{boolean} 17|67b8 72r28 -27b8 Do_Relatime{boolean} 17|68b8 73r28 -28b8 Success{boolean} 17|69b8 75m7 -30U14*Unmount 30=23 17|78b14 83l8 83t15 -30m23 FS{12|67M9} 17|78b23 79r63 82m7 -32V13*Get_Block_Size{6|84M9} 32>29 17|85b13 89l8 89t22 -32m29 FS{12|67M9} 17|85b29 86r28 -34V13*Get_Fragment_Size{6|84M9} 34>32 17|91b13 95l8 95t25 -34m32 FS{12|67M9} 17|91b32 92r28 -36V13*Get_Size{6|84M9} 36>23 17|97b13 101l8 101t16 -36m23 FS{12|67M9} 17|97b23 98r28 -38V13*Get_Inode_Count{6|84M9} 38>30 17|103b13 107l8 107t23 -38m30 FS{12|67M9} 17|103b30 104r28 -40U14*Get_Free_Blocks 41>8 42<8 43<8 17|109b14 118l8 118t23 -41m8 FS{12|67M9} 17|110b8 114r28 -42m8 Free_Blocks{6|84M9} 17|111b8 116m7 -43m8 Free_Unpriviledged{6|84M9} 17|112b8 117m7 -45U14*Get_Free_Inodes 46>8 47<8 48<8 17|120b14 129l8 129t23 -46m8 FS{12|67M9} 17|121b8 125r28 -47m8 Free_Inodes{6|84M9} 17|122b8 127m7 -48m8 Free_Unpriviledged{6|84M9} 17|123b8 128m7 -50V13*Get_Max_Length{6|84M9} 50>29 17|131b13 135l8 135t22 -50m29 FS{12|67M9} 17|131b29 132r28 -52U14*Open 53>8 54>8 55<8 56<8 17|137b14 219l8 219t12 -53m8 FS{12|67M9} 17|138b8 143r72 -54a8 Path{string} 17|139b8 153r10 157r18 158r18 161r23 164r26 164r45 193r33 -55m8 Ino{15|28M9} 17|140b8 211m7 217m7 -56e8 Success{15|234E9} 17|141b8 213m7 218m7 -58U14*Close 58>21 58>42 17|221b14 227l8 227t13 -58m21 FS{12|67M9} 17|221b21 222r28 -58m42 Ino{15|28M9} 17|221b42 224r59 -60U14*Read_Entries 61>8 62>8 63>8 64<8 65<8 66<8 17|229b14 293l8 293t20 -61m8 FS_Data{12|67M9} 17|230b8 237r70 -62m8 Ino{15|28M9} 17|231b8 239r59 -63i8 Offset{natural} 17|232b8 275r35 -64a8 Entities{15|63A9} 17|233b8 278r28 280r24 281m16 283m16 285m16 286m16 -65i8 Ret_Count{natural} 17|234b8 248m7 278r16 280r41 288m13 288r26 -66e8 Success{15|234E9} 17|235b8 250m10 254m7 258m13 -68U14*Read 69>8 70>8 71>8 72<8 73<8 74<8 17|295b14 361l8 361t12 -69m8 FS_Data{12|67M9} 17|296b8 303r70 -70m8 Ino{15|28M9} 17|297b8 305r59 -71m8 Offset{6|84M9} 17|298b8 310r39 322r10 323r69 -72a8 Data{5|29A9} 17|299b8 313r39 322r19 343m27 343r27 343r33 344r33 -73i8 Ret_Count{natural} 17|300b8 316m7 327r13 329r36 343r46 344r46 359m10 -. 359r23 -74e8 Success{15|234E9} 17|301b8 318m10 326m7 348m13 355m13 -76U14*Stat 77>8 78>8 79<8 80<8 17|363b14 391l8 391t12 -77m8 Data{12|67M9} 17|364b8 370r72 -78m8 Ino{15|28M9} 17|365b8 372r59 -79r8 S{15|41R9} 17|366b8 377m7 -80e8 Success{15|234E9} 17|367b8 390m7 -84N4 Sector_Size 229r34 17|309r53 429r59 -85N4 Boot_Signature 17|44r31 -87A9 FAT32_Bytes(6|70M9) 89r31 109r31 116r31 -88R9 BIOS_Parameter_Block 118e15 119r8 192r24 17|36r19 -89a7*Infinite_Loop{87A9} 120r7 -90m7*OEM_Identifier{6|84M9} 121r7 -91m7*Bytes_Per_Sector{6|73M9} 122r7 -92m7*Sectors_Per_Cluster{6|70M9} 123r7 17|179r46 262r41 309r30 338r57 408r56 -93m7*Reserved_Sectors{6|73M9} 124r7 17|55r45 56r45 -94m7*FAT_Count{6|70M9} 125r7 17|57r45 -95m7*Root_Entry_Count{6|73M9} 126r7 -96m7*Sector_Count{6|73M9} 127r7 17|54r45 -97m7*Media_Descriptor_Type{6|70M9} 128r7 -98m7*Sectors_Per_FAT_Old{6|73M9} 129r7 -99m7*Sectors_Per_Track{6|73M9} 130r7 -100m7*Head_Count{6|73M9} 131r7 -101m7*Hidden_Sector_Count{6|81M9} 132r7 -102m7*Large_Sector_Count{6|81M9} 133r7 17|59r34 -103m7*Sectors_Per_FAT{6|81M9} 134r7 17|57r61 429r40 -104m7*Flags{6|73M9} 135r7 -105m7*FAT_Version_Number{6|73M9} 136r7 -106m7*Root_Entry_Cluster{6|81M9} 137r7 17|145r44 -107m7*FSInfo_Sector{6|73M9} 138r7 -108m7*Backup_MBR_Sector{6|73M9} 139r7 -109a7*Reserved{87A9} 140r7 -110m7*Drive_Number{6|70M9} 141r7 -111m7*NT_FLags{6|70M9} 142r7 -112m7*Signature{6|70M9} 143r7 -113m7*Volume_ID_Serial{6|81M9} 144r7 -114a7*Volume_Label{string} 145r7 -115a7*System_Identifier{string} 146r7 -116a7*Boot_Code{87A9} 147r7 -117m7*Boot_Signature{6|73M9} 148r7 17|44r13 -151N4 Directory_Read_Only -152N4 Directory_Hidden -153N4 Directory_System -154N4 Directory_Volume_ID -155N4 Directory_Directory 239r27 -156N4 Directory_Archive -157N4 Directory_LFN 17|192r36 192r54 276r33 276r51 -158R9 Directory_Entry 172e15 173r8 202r23 210r22 221r15 224r17 17|148r20 -. 242r17 397r22 402r42 452r15 470r17 -159a7*File_Name{string} 174r7 17|478r20 495r17 500r17 -160a7*File_Extension{string} 175r7 17|485r20 496r17 -161m7*Attributes{6|70M9} 176r7 17|187r20 192r21 195r44 270r17 276r18 286r62 -162m7*Reserved_NT{6|70M9} 177r7 -163m7*Creation_Time_1{6|70M9} 178r7 -164m7*Creation_Time_2{6|73M9} 179r7 -165m7*Creation_Time_3{6|73M9} 180r7 -166m7*Access_Time{6|73M9} 181r7 -167m7*First_Cluster_High{6|73M9} 182r7 17|196r56 -168m7*Modification_Time{6|73M9} 183r7 -169m7*Modification_Date{6|73M9} 184r7 -170m7*First_Cluster_Low{6|73M9} 185r7 17|197r47 282r36 -171m7*Size{6|81M9} 186r7 17|322r60 323r61 375r47 384r59 -189R9 FAT_Data 196e14 197r36 17|23r66 25r56 50r19 -190i7*Handle{5|83I9} 17|51m11 341r30 373r71 385r59 411r29 437r32 -191b7*Is_Read_Only{boolean} 17|52m11 -192r7*BPB{88R9} 17|53m11 145r40 179r42 262r37 309r26 338r53 408r52 429r36 -193m7*Sector_Count{6|81M9} 17|54m11 58r15 59m15 -194m7*FAT_Offset{6|81M9} 17|55m11 430r45 -195m7*Cluster_Offset{6|81M9} 17|56m11 337r40 407r39 -197P9 FAT_Data_Acc(189R9) 207r18 214r24 17|25r66 35r19 79r14 79r30 143r23 -. 143r39 237r21 237r37 303r21 303r37 370r23 370r39 394r18 420r24 -199R9 FAT_File 203e14 204r36 17|24r66 26r56 210r21 -200m7*Begin_Cluster{6|81M9} 17|240r37 307r44 378r56 -201e7*Inner_Type{15|39E9} 17|249r15 317r15 379r37 -202r7*FS_Entry{158R9} 17|322r51 323r52 375r38 384r50 -204P9 FAT_File_Acc(199R9) 17|26r66 144r20 223r14 223r30 238r23 238r39 304r24 -. 304r40 371r23 371r39 -206U14 Read_Directory_Entry 207>8 208>8 209>8 210<8 211<8 17|174s13 256s10 -. 393b14 417l8 417t28 -207p8 Data{197P9} 17|394b8 407r34 408r47 411r24 -208m8 Cluster{6|81M9} 17|395b8 406r34 -209m8 Index{6|84M9} 17|396b8 412r33 -210r8 Result{158R9} 17|397b8 403m26 403r26 -211b8 Success{boolean} 17|398b8 415m24 416m7 416r18 -213U14 Get_Next_Cluster 214>8 215>8 216<8 217<8 17|181s16 264s13 353s10 419b14 -. 448l8 448t24 -214p8 Data{197P9} 17|420b8 429r31 430r40 437r27 -215m8 Cluster_Index{6|81M9} 17|421b8 432r23 438r50 -216m8 Returned{6|81M9} 17|422b8 427m63 427r63 433m10 445r24 -217b8 Success{boolean} 17|423b8 434m10 441m27 442r17 443m13 445m13 -219V13 Are_Paths_Equal{boolean} 220>8 221>8 17|193s16 450b13 467l8 467t23 -220a8 Base{string} 17|451b8 455r34 -221r8 Ent{158R9} 17|452b8 465r21 -223U14 Compose_Path 224>8 225<8 226<8 17|279s16 465s7 469b14 504l8 504t20 -224r8 Ent{158R9} 17|470b8 478r16 479r13 485r16 486r13 495r13 496r13 500r13 -225a8 Result{string} 17|471b8 494m10 494r18 494r34 499m10 499r18 499r34 -226i8 Length{natural} 17|472b8 503m7 -228V13 Sector_To_Disk_Offset{6|84M9} 228>36 235s8 17|430s17 -228m36 Sector{6|81M9} 229r24 -231V13 Cluster_To_Disk_Offset{6|84M9} 232>8 233>8 234>8 17|335s28 405s17 -232m8 Cluster{6|81M9} 235r48 -233m8 Cluster_Begin{6|81M9} 235r31 -234m8 Sectors_Per_Cluster{6|81M9} 236r31 -238V13 Get_Type{15|39E9} 238>23 17|195s30 286s48 -238m23 Attributes{6|70M9} 239r12 -X 17 vfs-fat.adb -23K14 Conv_1[13|39] 62r20 62r39 79r44 143r53 237r51 303r51 370r53 -24K14 Conv_2[13|39] 212r11 212r30 224r11 239r11 305r11 372r11 -25U14 Free_1[2|20] -25U14*Free_1[2|20] 81s7 -26U14 Free_2[2|20] -26U14*Free_2[2|20] 226s7 -35p7 Data{16|197P9} 50m7 58r10 59r10 62r62 -36r7 BP{16|88R9} 39r40 40m34 40r34 44r10 53r29 54r42 55r42 56r42 57r42 57r58 -. 59r31 -37i7 Ret_Count{natural} 42m41 43r25 -38b7 Success{boolean} 42m52 43r14 -39a7 BP_Data{5|29A9} 42m32 43r38 -79p7 Data{16|197P9} 81m15 81r15 -143p7 Data{16|197P9} 145r35 174r35 179r37 181r34 -144p7 Result{16|204P9} 210m7 212r53 -145m7 Cluster{6|81M9} 174r41 181r40 181m49 196m16 210r31 -146e7 Inner_Type{15|39E9} 168r13 195m16 210r40 -147m7 Index{6|84M9} 172m10 174r50 179r16 180m16 201m13 201r22 -148r7 Ent{16|158R9} 174m57 187r16 192r17 193r63 195r40 196r52 197r43 210r52 -149i7 First_I{natural} 157m7 193r39 206m10 -150i7 Last_I{natural} 158m7 161r13 164r16 164r51 165m13 165r23 193r50 205m10 -. 205r21 206r21 -151b7 Success2{boolean} 174m62 175r20 181m58 182r23 -204L9 Next_Iteration 198r21 -209L6 End_Return 154r15 -216L6 Error_Return 169r18 176r21 183r24 188r21 -223p7 File{16|204P9} 226m15 226r15 -237p7 FS{16|197P9} 256r32 262r34 264r31 -238p7 File{16|204P9} 240r32 249r10 -240m7 Cluster{6|81M9} 256r36 264r35 264m44 -241m7 Index{6|84M9} 256r45 262r13 263m13 275r13 291m10 291r19 -242r7 Ent{16|158R9} 256m52 270r13 276r14 279r30 282r32 286r58 -243a7 Composed{string} 279m35 284r19 -244i7 Composed_Len{natural} 279m45 283r50 284r34 285r48 -245i7 Temp{natural} 280m16 281r26 283r26 285r26 286r26 -246b7 Success2{boolean} 256m57 257r17 264m53 265r20 -303p7 FS{16|197P9} 309r23 337r37 338r50 341r27 353r28 -304p7 File{16|204P9} 307r39 317r10 322r46 323r47 -306m7 Cluster_Offset{6|84M9} 335m10 342r27 -307m7 Cluster{6|81M9} 336r37 353r32 353m41 -308m7 Cluster_Sz{6|81M9} 330r52 332r48 -310m7 Final_Offset{6|84M9} 330r66 332r62 342r44 352m10 -311i7 Step_Size{natural} 328m10 330r26 332m13 344r62 359r35 -312i7 Discard{natural} 345m27 -313i7 Final_Count{natural} 323m10 327r25 328r45 -314b7 Succ{boolean} 346m27 347r17 353m50 354r17 -369K15 Align[8|19] 375r10 -370p7 FS{16|197P9} 373r68 385r56 -371p7 File{16|204P9} 375r33 378r51 379r32 384r45 -373m7 Blk{6|81M9} 375r53 -374m7 Cnt{6|81M9} 386r45 -400m7 Offset{6|84M9} 405m7 412r24 -401i7 Ret_Count{natural} 414m24 416r30 -402a7 Result_Data{5|29A9} 413m24 416r42 -425m7 Limit{6|84M9} 429m7 432r41 -425m14 Offset{6|84M9} 430m7 438r27 -426i7 Ret_Count{natural} 440m27 442r28 -427a7 Returned_Data{5|29A9} 439m27 442r41 -454N7 Offset 461r53 -455a7 Base_Copy{string} 459r16 460r13 461m13 461r48 466r14 -456a7 Composed{string} 465m26 466r26 -457i7 Composed_Len{natural} 465m36 466r41 -459e11 C=459:16{character} -474i7 Ret{natural} 493m10 494r49 498m10 499r49 503r17 -475i7 Ent_Name_Len{natural} 482m10 482r26 493r17 495r33 498r17 500r33 -476i7 Ent_Ext_Len{natural} 489m10 489r25 492r10 493r36 496r38 -478e11 C{character} -485e11 C{character} -37R9 Object{16|189R9} 43r7[23] 47r38[23] 43r7[24] 47r38[24] -47P9*Object_Pointer(16|189R9) 62r46[23] 212r37[24] 48r8[23] 50r31[23] 57r56[23] -. 59r33[23] 48r8[24] 50r31[24] 57r56[24] 59r33[24] -57V13*To_Pointer{13|47P9[23]} 79s51[23] 143s60[23] 224s18[24] 237s58[23] -. 239s18[24] 303s58[23] 305s18[24] 370s60[23] 372s18[24] 62r30[23] 62r30[24] -59V13*To_Address{12|67M9} 62s27[23] 212s18[24] -18P9*Name{16|197P9} 20r50[25] 20r50[26] -20p39 X{16|197P9} 21r15[25] 22r23[25] 23r11[25] 21r15[26] 22r23[26] 23r11[26] -18M9 T{6|81M9} 27r42[369] 27r52[369] 35r44[369] 35r54[369] 40r50[369] 40r60[369] -. 41r49[369] 23r42[369] 23r52[369] 27r14[369] 30r44[369] 30r54[369] 34r14[369] -. 37r50[369] 37r60[369] -27V13 Align_Up{6|81M9} 29r20[369] -27m23 Value{6|81M9} 24r61[369] -27m30 Alignment{6|81M9} 28r20[369] 28r40[369] 28r55[369] 29r40[369] 25r61[369] -35V13 Align_Down{6|81M9} 37r20[369] -35m25 Value{6|81M9} 31r61[369] -35m32 Alignment{6|81M9} 36r20[369] 36r40[369] 36r55[369] 37r42[369] 32r61[369] -40V13 Divide_Round_Up{6|81M9} 375s16[369] 42r20[369] -40m30 Dividend{6|81M9} 41r21[369] 39r15[369] -40m40 Divisor{6|81M9} 41r33[369] 41r62[369] 42r47[369] 39r27[369] 39r43[369] -24m7 Value2{14|82M9} 27r18[369] -25m7 Align2{14|82M9} 27r27[369] 27r48[369] -31m7 Value2{14|82M9} 34r17[369] -32m7 Align2{14|82M9} 34r33[369] - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS ada___vfs__fat__probe 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__probe 0 -GG EK_GLOBALS ada___vfs__fat__probe local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 1 __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 2 devices__is_read_only devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__remount 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__remount 0 -GG EK_GLOBALS ada___vfs__fat__remount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__unmount 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__unmount 0 -GG EK_GLOBALS ada___vfs__fat__unmount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__get_block_size 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_block_size 0 -GG EK_GLOBALS ada___vfs__fat__get_block_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__get_fragment_size 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_fragment_size 0 -GG EK_GLOBALS ada___vfs__fat__get_fragment_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__get_size 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_size 0 -GG EK_GLOBALS ada___vfs__fat__get_size local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__get_inode_count 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_inode_count 0 -GG EK_GLOBALS ada___vfs__fat__get_inode_count local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__get_free_blocks 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_free_blocks 0 -GG EK_GLOBALS ada___vfs__fat__get_free_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__get_free_inodes 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_free_inodes 0 -GG EK_GLOBALS ada___vfs__fat__get_free_inodes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__get_max_length 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_max_length 0 -GG EK_GLOBALS ada___vfs__fat__get_max_length local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__open 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__open 0 -GG EK_GLOBALS ada___vfs__fat__open local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 3 interfaces__shift_left__3 devices__read ada___system__storage_elements__to_integer FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__close 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__close 0 -GG EK_GLOBALS ada___vfs__fat__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___system__storage_elements__to_address FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__read_entries 7 ada___vfs__fat__read_directory_entry ada___vfs__fat__get_next_cluster ada___vfs__fat__compose_path ada___vfs__fat__get_type ada___system__storage_elements__to_address ada___vfs__fat__conv_1__to_pointer ada___vfs__fat__conv_2__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__read_entries 0 -GG EK_GLOBALS ada___vfs__fat__read_entries local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__read 6 ada___vfs__fat__get_next_cluster ada___vfs__fat__cluster_to_disk_offset devices__read ada___system__storage_elements__to_address ada___vfs__fat__conv_1__to_pointer ada___vfs__fat__conv_2__to_pointer -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__read 0 -GG EK_GLOBALS ada___vfs__fat__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__stat__align__align_up 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat__align__align_up 0 -GG EK_GLOBALS ada___vfs__fat__stat__align__align_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__fat__stat__align ada___vfs__fat__stat ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__stat__align__align_down 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat__align__align_down 0 -GG EK_GLOBALS ada___vfs__fat__stat__align__align_down local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__fat__stat__align ada___vfs__fat__stat ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__stat__align__divide_round_up 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat__align__divide_round_up 0 -GG EK_GLOBALS ada___vfs__fat__stat__align__divide_round_up local TRUE E_FUNCTION FALSE ORIGIN_FLOW 4 ada___vfs__fat__stat__align ada___vfs__fat__stat ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__stat__align 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat__align 0 -GG EK_GLOBALS ada___vfs__fat__stat__align local TRUE E_PACKAGE FALSE ORIGIN_FLOW 3 ada___vfs__fat__stat ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__stat 6 devices__get_block_size ada___system__storage_elements__to_address ada___vfs__fat__conv_1__to_pointer ada___vfs__fat__conv_2__to_pointer ada___vfs__fat__stat__align ada___vfs__fat__stat__align__divide_round_up -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__stat 0 -GG EK_GLOBALS ada___vfs__fat__stat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__get_block_size FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__read_directory_entry 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__read_directory_entry 0 -GG EK_GLOBALS ada___vfs__fat__read_directory_entry local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__get_next_cluster 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_next_cluster 0 -GG EK_GLOBALS ada___vfs__fat__get_next_cluster local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 1 __HEAP proper_output 0 refined_proof_in 0 refined_input 1 __HEAP refined_output 0 calls_proof 0 calls 0 calls_conditional 1 devices__read FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__are_paths_equal 1 ada___vfs__fat__compose_path -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__are_paths_equal 0 -GG EK_GLOBALS ada___vfs__fat__are_paths_equal local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__compose_path 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__compose_path 0 -GG EK_GLOBALS ada___vfs__fat__compose_path local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__sector_to_disk_offset 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__sector_to_disk_offset 0 -GG EK_GLOBALS ada___vfs__fat__sector_to_disk_offset local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__cluster_to_disk_offset 1 ada___vfs__fat__sector_to_disk_offset -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__cluster_to_disk_offset 0 -GG EK_GLOBALS ada___vfs__fat__cluster_to_disk_offset local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__get_type 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__get_type 0 -GG EK_GLOBALS ada___vfs__fat__get_type local FALSE E_FUNCTION FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__conv_1__to_pointer 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_1__to_pointer 0 -GG EK_GLOBALS ada___vfs__fat__conv_1__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__fat__conv_1 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__conv_1__to_address 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_1__to_address 0 -GG EK_GLOBALS ada___vfs__fat__conv_1__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__fat__conv_1 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__conv_1 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_1 0 -GG EK_GLOBALS ada___vfs__fat__conv_1 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__conv_2__to_pointer 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_2__to_pointer 0 -GG EK_GLOBALS ada___vfs__fat__conv_2__to_pointer local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__fat__conv_2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__conv_2__to_address 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_2__to_address 0 -GG EK_GLOBALS ada___vfs__fat__conv_2__to_address local TRUE E_FUNCTION FALSE ORIGIN_FLOW 3 ada___vfs__fat__conv_2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__conv_2 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__conv_2 0 -GG EK_GLOBALS ada___vfs__fat__conv_2 local TRUE E_PACKAGE TRUE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__free_1 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__free_1 0 -GG EK_GLOBALS ada___vfs__fat__free_1 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat__free_2 0 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat__free_2 0 -GG EK_GLOBALS ada___vfs__fat__free_2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 ada___vfs__fat vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS ada___vfs__fat 2 ada___vfs__fat__conv_1 ada___vfs__fat__conv_2 -GG EK_PROOF_DEPENDENCIES ada___vfs__fat 0 -GG EK_GLOBALS ada___vfs__fat local FALSE E_PACKAGE TRUE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 0 refined_initializes 0 calls_proof 0 calls 0 calls_conditional 0 local_packages 2 ada___vfs__fat__conv_1 ada___vfs__fat__conv_2 local_var 0 TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__fat__get_type FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__free_1 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__fat__free_1GP1076 VISIBLE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__fat__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__conv_1__to_pointer FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__conv_1 VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__stat__align TRUE FALSE FALSE TRUE ada___lib__alignment TRUE ada___vfs__fat__stat BODY_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE ada___vfs__fat__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__conv_1__to_address FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__conv_1 VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__free_1GP1076 TRUE FALSE FALSE FALSE TRUE ada___vfs__fat BODY_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__stat__align__align_up FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__stat__align VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__open FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE ada___vfs__fat__free_2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE ada___vfs__fat__free_2GP1156 VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__close FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__conv_2 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___vfs__fat BODY_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__stat__align__align_down FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__stat__align VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__address_to_access_conversions TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__read_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__read FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_next_cluster FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__free_2GP1156 TRUE FALSE FALSE FALSE TRUE ada___vfs__fat BODY_PART -GG EK_FLOW_SCOPE ada___vfs__fat__stat__align__divide_round_up FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__stat__align VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__conv_2__to_pointer FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__conv_2 VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__are_paths_equal FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__conv_2__to_address FALSE FALSE FALSE FALSE TRUE ada___vfs__fat__conv_2 VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__alignment TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat TRUE FALSE FALSE FALSE FALSE vfs -GG EK_FLOW_SCOPE ada___vfs__fat__compose_path FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__sector_to_disk_offset FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__conv_1 TRUE FALSE FALSE TRUE ada___system__address_to_access_conversions TRUE ada___vfs__fat BODY_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__cluster_to_disk_offset FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/vfs-fat.cswi b/obj/gnatprove/phase1/vfs-fat.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/vfs-fat.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp diff --git a/obj/gnatprove/phase1/vfs.adb.stderr b/obj/gnatprove/phase1/vfs.adb.stderr deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/vfs.adb.stdout b/obj/gnatprove/phase1/vfs.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/obj/gnatprove/phase1/vfs.ali b/obj/gnatprove/phase1/vfs.ali deleted file mode 100644 index 9416390..0000000 --- a/obj/gnatprove/phase1/vfs.ali +++ /dev/null @@ -1,1046 +0,0 @@ -V "GNAT Lib v14" -A -x -A ada -A -gnatA -A -g -A -g -A -O2 -A -pipe -A -gnaty -A -Wall -A -Wextra -A -fno-stack-protector -A -fno-stack-check -A -fdata-sections -A -ffunction-sections -A -gnateDIroncladName="Ironclad" -A -gnateDVersion="g4411615" -A -gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" -A -gnateDArchName="riscv64-limine" -A -ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. -A -gnateDALLOCONLY=False -A -fno-pie -A -fno-pic -A -mno-relax -A -march=rv64imac_zicsr_zifencei -A -mabi=lp64 -A -gnatc -P GP - -RN -RV NO_ALLOCATORS -RR NO_DELAY -RV NO_DIRECT_BOOLEAN_OPERATORS -RR NO_DISPATCH -RR NO_EXCEPTION_PROPAGATION -RR NO_FINALIZATION -RR NO_FLOATING_POINT -RR NO_IMPLICIT_DYNAMIC_CODE -RV NO_LOCAL_ALLOCATORS -RR NO_PROTECTED_TYPES -RV NO_RECURSION -RR NO_SECONDARY_STACK -RV NO_STANDARD_STORAGE_POOLS -RR NO_TASKING -RV NO_UNCHECKED_DEALLOCATION -RV NO_DEFAULT_INITIALIZATION -RV NO_DYNAMIC_SIZED_OBJECTS -RV NO_IMPLEMENTATION_ASPECT_SPECIFICATIONS -RV NO_IMPLEMENTATION_PRAGMAS -RV NO_IMPLEMENTATION_RESTRICTIONS -RR NO_ELABORATION_CODE -RR NO_OBSOLESCENT_FEATURES - -U vfs%b vfs.adb a6087a9d OO PK IU -W ada%s ada.ads ada.ali -W ada.unchecked_deallocation%s a-uncdea.ads a-uncdea.ali -W vfs%s vfs.adb vfs.ali -W vfs.dev%s vfs-dev.adb vfs-dev.ali -W vfs.ext%s vfs-ext.adb vfs-ext.ali -W vfs.fat%s vfs-fat.adb vfs-fat.ali -N A194:7 gnatprove false_positive "range check might fail" "in List? how?" - -U vfs%s vfs.ads a745dd19 OO PK IU -W arch%s arch.ads arch.ali -W arch.mmu%s arch-mmu.adb arch-mmu.ali -W devices%s devices.adb devices.ali -W interfaces%s interfac.ads interfac.ali -W lib%s lib.adb lib.ali -W lib.synchronization%s lib-synchronization.adb lib-synchronization.ali -W memory%s memory.ads memory.ali -W system%s system.ads system.ali - -D ada.ads 20240507065137 76789da1 ada%s -D a-uncdea.ads 20240507065137 c3a8ac65 ada.unchecked_deallocation%s -D arch.ads 20250222165738 7fd82c9e arch%s -D arch-mmu.ads 20250222165738 1ac94a0b arch.mmu%s -D devices.ads 20250222165738 f45ecf09 devices%s -D interfac.ads 20240507065137 9111f9c1 interfaces%s -D lib.ads 20250222165738 8d95f6f9 lib%s -D lib-synchronization.ads 20250222165738 9c09bc37 lib.synchronization%s -D memory.ads 20250222165738 335640bf memory%s -D system.ads 20240507065137 14286b0f system%s -D s-stoele.ads 20240507065137 ccded4e8 system.storage_elements%s -D vfs.ads 20250222165738 63b4365d vfs%s -D vfs.adb 20250222165738 50a9d4ff vfs%b -D vfs-dev.ads 20250222165738 f8e32356 vfs.dev%s -D vfs-ext.ads 20250222165738 f0d56b8d vfs.ext%s -D vfs-fat.ads 20250222165738 5e8b7c81 vfs.fat%s -D /home/sean/capstone/ICK-RISCV-Context/source/pragmas.adc 20250222165738 00000000 -G a Z -X 1 ada.ads -16K9*Ada 20e8 13|17r6 346r30 347r30 -X 2 a-uncdea.ads -20u15*Unchecked_Deallocation 13|17w10 346r34 347r34 -X 3 arch.ads -20K9*Arch 52e9 12|21r6 478r18 482r18 13|884r18 888r18 -X 4 arch-mmu.ads -22K14*MMU 250e13 12|21w11 478r23 482r23 13|884r23 888r23 -26R9*Page_Permissions 32e14 12|482r27 13|888r27 -43P9*Page_Table_Acc(42R9) 12|478r27 13|884r27 -X 5 devices.ads -22K9*Devices 279e12 12|19w6 19r22 93r41 94r19 111r41 112r19 139r19 13|29r26 -. 66r46 78r15 101r41 145r39 155r42 175r39 204r39 1060r39 -29A9*Operation_Data(6|70M9) 12|404r26 422r22 13|760r26 799r22 -83I9*Device_Handle 12|156r57 649r21 13|66r29 225r57 -85i4*Error_Handle{83I9} 13|29r34 78r23 101r49 145r47 155r50 175r47 204r47 -. 1060r47 -88i4*Max_Name_Length{natural} 12|93r49 111r49 -105V13*Fetch{83I9} 13|66s54 -145V13*Is_Initialized{boolean} 12|94s27 112s27 139s27 -X 6 interfac.ads -38K9*Interfaces 233e15 12|17w6 17r22 -70M9*Unsigned_8 -81M9*Unsigned_32 12|32r25 45r27 46r27 262r21 282r19 299r19 300r19 318r26 -. 338r26 352r19 538r17 539r17 559r22 598r21 623r18 636r19 636r46 668r21 669r21 -. 13|339r21 601r19 619r19 620r19 640r26 661r26 679r19 965r17 966r17 986r22 -. 1035r21 1074r18 1093r21 1094r21 -84M9*Unsigned_64 12|28r34 36r32 37r32 48r27 50r27 58r22 185r58 192r61 198r52 -. 204r60 213r33 214r33 223r33 224r33 230r60 403r22 421r22 448r19 461r18 479r18 -. 481r18 574r29 575r29 576r29 577r29 13|257r58 266r61 275r52 284r60 295r33 -. 296r33 298r12 299r12 310r33 311r33 313r12 314r12 323r60 759r22 798r22 849r19 -. 864r18 885r18 887r18 1013r29 1014r29 1015r29 1016r29 -X 7 lib.ads -19K9*Lib 35e8 12|20r6 663r27 13|37r23 97r7 137r7 143r7 161r7 173r7 186r7 -. 202r7 212r7 1058r7 1066r7 -X 8 lib-synchronization.ads -20K13*Synchronization 66e24 12|20w10 663r31 13|37r27 97r11 137r11 143r11 -. 161r11 173r11 186r11 202r11 212r11 1058r11 1066r11 -22R9*Binary_Semaphore 57e14 12|663r47 -23r4*Unlocked_Semaphore{22R9} 13|37r43 -27U14*Seize 13|97s27 143s27 173s27 202s27 1058s27 -31U14*Release 13|137s27 161s27 186s27 212s27 1066s27 -X 9 memory.ads -19K9*Memory 36e11 12|22w6 480r18 13|886r18 -35M12*Virtual_Address{11|82M9} 12|480r25 13|886r25 -X 10 system.ads -37K9*System 155e11 12|18w6 18r22 150r58 462r18 651r21 13|31r26 68r20 121r21 -. 220r58 248r23 865r18 -67M9*Address 12|150r65 462r25 651r28 13|68r27 220r65 248r30 865r25 -69m4*Null_Address{67M9} 13|31r33 121r28 154r46 -81V14*"="{boolean} 13|121r18 154r44 -X 11 s-stoele.ads -82M9*Integer_Address -X 12 vfs.ads -24K9*VFS 674l5 674e8 13|18r6 19r6 20r6 22b14 67r46 171r17 444r10 502r22 552r7 -. 1123l5 1123t8 -28M9*File_Inode_Number<6|84M9> 42r27 257r21 260r25 278r19 296r19 314r26 316r26 -. 333r26 335r26 350r19 359r44 371r20 386r20 402r22 420r22 435r19 447r19 460r18 -. 477r18 494r20 513r20 524r17 537r17 554r22 573r29 596r25 655r21 656r21 13|70r20 -. 71r20 334r21 337r25 351r25 353r25 432r33 597r19 616r19 636r26 638r26 656r26 -. 658r26 677r19 691r44 702r20 739r20 758r22 797r22 831r19 848r19 863r18 883r18 -. 905r20 933r20 949r17 964r17 981r22 1012r29 1033r25 -32M12*File_Mode{6|81M9} 44r27 281r19 525r17 621r18 635r40 635r58 636r8 670r21 -. 13|600r19 950r17 1072r18 1095r21 -35R9*File_Timestamp 38e14 51r27 52r27 53r27 -36m7*Seconds_Since_Epoch{6|84M9} -37m7*Additional_Nanoseconds{6|84M9} -39E9*File_Type 40e64 43r27 61r22 280r19 620r18 13|599r19 1071r18 -39n23*File_Regular{39E9} -39n37*File_Directory{39E9} 13|476r45 495r18 -39n53*File_Symbolic_Link{39E9} 13|453r42 521r18 -40n23*File_Character_Device{39E9} -40n46*File_Block_Device{39E9} -41R9*File_Stat 54e14 436r23 13|357r25 832r23 989r18 -42m7*Unique_Identifier{28M9} -43e7*Type_Of_File{39E9} 13|453r27 476r30 494r26 -44m7*Mode{32M12} 13|514r45 559r36 999r34 -45m7*UID{6|81M9} 13|513r45 558r36 998r34 -46m7*GID{6|81M9} -47i7*Hard_Link_Count{positive} -48m7*Byte_Size{6|84M9} -49i7*IO_Block_Size{natural} -50m7*IO_Block_Count{6|84M9} -51r7*Creation_Time{35R9} -52r7*Modification_Time{35R9} -53r7*Access_Time{35R9} -57R9*Directory_Entity 62e14 63r63 -58m7*Inode_Number{6|84M9} 13|432r56 -59a7*Name_Buffer{string} 13|427r23 -60i7*Name_Len{natural} 13|427r45 -61e7*Type_Of_File{39E9} -63A9*Directory_Entities(57R9) 64r42 373r24 13|348r11 356r51 704r24 -64P9*Directory_Entities_Acc(63A9) 13|348r31 356r21 -70i4*Max_Symlink_Loop{natural} 644c4 -73E9*FS_Type 73e46 107r23 144r53 650r21 13|50r17 61r23 215r53 -73n23*FS_DEV{73E9} 13|51r19 111r15 149r21 251r15 260r15 269r15 278r15 287r15 -. 302r15 317r15 326r15 694r15 710r15 767r15 806r15 837r15 870r15 894r15 912r15 -. 925r15 938r15 -73n31*FS_EXT{73E9} 13|30r26 113r15 150r21 252r15 261r15 270r15 279r15 288r15 -. 303r15 318r15 327r15 606r15 625r15 645r15 666r15 684r15 695r15 718r15 746r15 -. 776r15 815r15 839r15 854r15 873r15 926r15 940r15 955r15 971r15 1021r15 -73n39*FS_FAT{73E9} 13|116r15 151r21 253r15 262r15 271r15 280r15 289r15 304r15 -. 319r15 328r15 696r15 726r15 784r15 841r15 927r15 -74I9*FS_Handle 75r34 129r21 133r55 144r35 150r40 156r39 163r17 175r23 -. 185r36 192r39 198r30 204r37 212r29 222r29 230r36 256r21 259r25 277r19 295r19 -. 313r26 332r26 349r19 359r27 370r20 385r20 401r22 419r22 434r19 446r19 459r18 -. 476r18 493r20 503r32 512r20 523r17 536r17 553r22 572r29 595r25 643c9 645r34 -. 654r21 659r38 13|67r33 69r20 167r21 215r35 220r40 225r39 231r17 243r23 -. 257r36 266r39 275r30 284r37 294r29 309r29 323r36 333r21 336r25 350r33 352r33 -. 596r19 615r19 635r26 655r26 676r19 691r27 701r20 738r20 757r22 796r22 830r19 -. 847r19 862r18 882r18 904r20 922r32 932r20 948r17 963r17 980r22 1011r29 -. 1032r25 -75i4*Error_Handle{74I9} 145r45 151r45 157r45 166r45 179r45 186r45 193r45 -. 199r45 205r45 215r45 225r45 231r45 266r45 284r45 302r45 320r45 340r45 354r45 -. 360r45 376r45 390r45 408r45 426r45 438r45 450r45 464r45 484r45 498r45 504r45 -. 515r45 527r45 541r45 561r45 579r45 604r28 645c4 13|34r26 67r50 69r33 171r21 -. 200r27 350r46 400r28 577r20 585r20 -76i4*Path_Buffer_Length{natural} 167r34 646c4 652r40 653r34 13|77r30 237r40 -79U14*Init 13|25b14 38l8 38t12 -87U14*Mount 88>8 89>8 90>8 91>8 92<8 13|40b14 56l8 56t13 -88a8 Device_Name{string} 93r19 13|41b8 48r29 -89a8 Mount_Path{string} 13|42b8 52r26 -90b8 Do_Read_Only{boolean} 13|43b8 52r42 -91b8 Do_Relatime{boolean} 13|44b8 52r56 -92b8 Success{boolean} 13|45b8 52m69 53r23 -104U14*Mount 105>8 106>8 107>8 108>8 109>8 110<8 13|52s13 58b14 138l8 138t13 -105a8 Device_Name{string} 111r19 13|59b8 66r61 -106a8 Mount_Path{string} 13|60b8 76r27 77r10 83r10 85r28 126r29 132r44 132r66 -107e8 FS{73E9} 13|61b8 110r12 124r29 -108b8 Do_Read_Only{boolean} 13|62b8 112r28 114r28 117r28 -109b8 Do_Relatime{boolean} 13|63b8 112r42 114r42 -110b8 Success{boolean} 13|64b8 74m7 93m13 133m10 -119U14*Unmount 119>23 119>38 119<55 13|140b14 162l8 162t15 -119a23 Path{string} 13|140b23 146r68 -119b38 Force{boolean} 13|140b38 154r16 -119b55 Success{boolean} 13|140b55 142m7 156m16 -126U14*Get_Mount 127>8 128<8 129<8 13|164b14 191l8 191t17 -127a8 Path{string} 13|165b8 176r13 178r13 180r13 180r19 180r33 -128i8 Match{natural} 13|166b8 170m7 177r13 183m13 188r10 189m10 189r19 -129i8 Handle{74I9} 13|167b8 171m7 182m13 -133A9*Mountpoint_Arr(74I9) 138r35 13|193r35 -138U14*List_All 138<24 138<51 13|193b14 213l8 213t16 -138a24 List{133A9} 13|193b24 200m7 205r29 206m16 206r22 -138i51 Total{natural} 13|193b51 199m7 209m13 209r22 -144V13*Get_Backing_FS{73E9} 144>29 13|215b13 218l8 218t22 -144i29 Key{74I9} 145r38 13|215b29 217r22 -150V13*Get_Backing_FS_Data{10|67M9} 150>34 13|220b13 223l8 223t27 -150i34 Key{74I9} 151r38 13|220b34 222r22 -156V13*Get_Backing_Device{5|83I9} 156>33 13|225b13 228l8 228t26 -156i33 Key{74I9} 157r38 13|225b33 227r22 -162U14*Get_Mount_Point 163>8 164<8 165<8 13|230b14 240l8 240t23 -163i8 Key{74I9} 166r38 13|231b8 238r18 239r25 -164a8 Name{string} 167r19 13|232b8 236m7 237m7 237r13 237r27 -165i8 Length{natural} 13|233b8 239m7 -174U14*Remount 175>8 176>8 177>8 178<8 13|242b14 255l8 255t15 -175i8 Key{74I9} 179r38 13|243b8 248r49 250r20 -176b8 Do_Read_Only{boolean} 13|244b8 251r44 252r44 253r44 -177b8 Do_Relatime{boolean} 13|245b8 251r58 252r58 253r58 -178b8 Success{boolean} 13|246b8 251m71 252m71 253m71 -185U14*Get_Block_Size 185>30 185<47 13|257b14 264l8 264t22 -185i30 Key{74I9} 186r38 13|257b30 259r20 260r53 261r53 262r61 -185m47 Size{6|84M9} 13|257b47 260m67 261m67 262m25 -192U14*Get_Fragment_Size 192>33 192<50 13|266b14 273l8 273t25 -192i33 Key{74I9} 193r38 13|266b33 268r20 269r56 270r56 271r64 -192m50 Size{6|84M9} 13|266b50 269m70 270m70 271m25 -198U14*Get_Size 198>24 198<41 13|275b14 282l8 282t16 -198i24 Key{74I9} 199r38 13|275b24 277r20 278r47 279r47 280r55 -198m41 Size{6|84M9} 13|275b41 278m61 279m61 280m25 -204U14*Get_Inode_Count 204>31 204<48 13|284b14 291l8 291t23 -204i31 Key{74I9} 205r38 13|284b31 286r20 287r54 288r54 289r63 -204m48 Count{6|84M9} 13|284b48 287m68 288m68 289m25 -211U14*Get_Free_Blocks 212>8 213<8 214<8 13|293b14 306l8 306t23 -212i8 Key{74I9} 215r38 13|294b8 301r20 302r54 303r54 304r54 -213m8 Free_Blocks{6|84M9} 13|295b8 298r32 -214m8 Free_Unpriviledged{6|84M9} 13|296b8 299r32 -221U14*Get_Free_Inodes 222>8 223<8 224<8 13|308b14 321l8 321t23 -222i8 Key{74I9} 225r38 13|309b8 316r20 317r54 318r54 319r54 -223m8 Free_Inodes{6|84M9} 13|310b8 313r32 -224m8 Free_Unpriviledged{6|84M9} 13|311b8 314r32 -230U14*Get_Max_Length 230>30 230<47 13|323b14 330l8 330t22 -230i30 Key{74I9} 231r38 13|323b30 325r20 326r63 327r63 328r63 -230m47 Length{6|84M9} 13|323b47 326m25 327m25 328m25 -234E9*FS_Status 242e16 261r25 283r23 301r23 319r30 339r30 353r23 375r24 389r24 -. 407r26 425r26 437r23 449r23 463r22 483r22 503r50 514r36 526r21 540r21 560r26 -. 578r33 597r25 622r22 13|72r20 338r25 602r23 621r23 641r30 662r30 680r23 -. 706r24 742r24 763r26 802r26 833r23 850r23 866r22 889r22 922r50 934r36 951r21 -. 967r21 987r26 1017r33 1034r25 1073r22 -235n8*FS_Success{234E9} 603r34 13|92r21 420r27 421r27 445r24 460r30 503r36 -. 528r30 553r21 571r20 992r20 1004r20 -236n8*FS_Invalid_Value{234E9} 13|579r20 -237n8*FS_Is_Directory{234E9} -238n8*FS_Not_Supported{234E9} 13|610r23 630r23 650r23 671r23 687r23 752r26 -. 825r26 857r23 877r23 899r23 927r32 943r20 958r23 975r23 1026r23 -239n8*FS_Not_Allowed{234E9} 13|587r20 1006r20 -240n8*FS_RO_Failure{234E9} -241n8*FS_IO_Failure{234E9} 13|1061r34 -242n8*FS_Loop{234E9} -255U14*Open 256>8 257>8 258>8 259<8 260<8 261<8 262>8 263>8 264>8 265>8 13|332b14 -. 464s16 532s16 593l8 593t12 1041s7 -256i8 Key{74I9} 266r38 13|333b8 352r46 -257m8 Relative{28M9} 13|334b8 353r46 -258a8 Path{string} 13|335b8 363r10 367r23 378r16 378r41 379r16 379r22 383r13 -. 383r37 390r16 390r42 391r16 391r22 398r13 398r19 398r44 401r16 401r22 401r47 -. 428r19 428r25 428r50 452r13 452r38 536r31 536r37 536r67 -259i8 Final_Key{74I9} 13|336b8 468m34 537m34 569m7 577m7 585m7 -260m8 Ino{28M9} 13|337b8 469m34 538m34 570m7 578m7 586m7 -261e8 Success{234E9} 13|338b8 419m30 420r17 421r16 444m56 445r13 459m33 460r19 -. 470m34 502m68 503r25 527m33 528r19 539m34 552m53 553r10 571m7 579m7 587m7 -262m8 User{6|81M9} 13|339b8 471r34 512r34 540r34 557r25 -263b8 Want_Read{boolean} 13|340b8 472r34 541r34 560r25 -264b8 Want_Write{boolean} 13|341b8 473r34 542r34 561r25 -265b8 Do_Follow{boolean} 13|342b8 453r65 474r34 543r34 -276U14*Create_Node 277>8 278>8 279>8 280>8 281>8 282>8 283<8 13|595b14 612l8 -. 612t19 1077s7 -277i8 Key{74I9} 284r38 13|596b8 605r20 608r25 -278m8 Relative{28M9} 13|597b8 608r39 -279a8 Path{string} 13|598b8 608r49 -280e8 Typ{39E9} 13|599b8 608r55 -281m8 Mode{32M12} 13|600b8 608r60 -282m8 User{6|81M9} 13|601b8 608r66 -283e8 Status{234E9} 13|602b8 608m72 610m13 -294U14*Create_Symbolic_Link 295>8 296>8 297>8 298>8 299>8 300>8 301<8 13|614b14 -. 632l8 632t28 -295i8 Key{74I9} 302r38 13|615b8 624r20 627r25 -296m8 Relative{28M9} 13|616b8 627r39 -297a8 Path{string} 13|617b8 627r49 -298a8 Target{string} 13|618b8 627r55 -299m8 Mode{6|81M9} 13|619b8 627r63 -300m8 User{6|81M9} 13|620b8 627r69 -301e8 Status{234E9} 13|621b8 628m17 630m13 -312U14*Create_Hard_Link 313>8 314>8 315>8 316>8 317>8 318>8 319<8 13|634b14 -. 652l8 652t24 -313i8 Key{74I9} 320r38 13|635b8 644r20 647r25 -314m8 Relative_Path{28M9} 13|636b8 647r39 -315a8 Path{string} 13|637b8 647r54 -316m8 Relative_Target{28M9} 13|638b8 647r60 -317a8 Target{string} 13|639b8 648r17 -318m8 User{6|81M9} 13|640b8 648r25 -319e8 Status{234E9} 13|641b8 648m31 650m13 -331U14*Rename 332>8 333>8 334>8 335>8 336>8 337>8 338>8 339<8 13|654b14 673l8 -. 673t14 -332i8 Key{74I9} 340r38 13|655b8 665r20 668r25 -333m8 Relative_Source{28M9} 13|656b8 668r39 -334a8 Source{string} 13|657b8 668r56 -335m8 Relative_Target{28M9} 13|658b8 668r64 -336a8 Target{string} 13|659b8 669r17 -337b8 Keep{boolean} 13|660b8 669r25 -338m8 User{6|81M9} 13|661b8 669r31 -339e8 Status{234E9} 13|662b8 669m37 671m13 -348U14*Unlink 349>8 350>8 351>8 352>8 353<8 13|675b14 689l8 689t14 -349i8 Key{74I9} 354r38 13|676b8 683r20 685r33 -350m8 Relative{28M9} 13|677b8 685r47 -351a8 Path{string} 13|678b8 685r57 -352m8 User{6|81M9} 13|679b8 685r63 -353e8 Status{234E9} 13|680b8 685m69 687m13 -359U14*Close 359>21 359>38 13|691b14 698l8 698t13 -359i21 Key{74I9} 360r38 13|691b21 693r20 696r44 -359m38 Ino{28M9} 13|691b38 696r58 -369U14*Read_Entries 370>8 371>8 372>8 373<8 374<8 375<8 13|413s13 700b14 -. 735l8 735t20 -370i8 Key{74I9} 376r38 13|701b8 709r20 712r25 720r25 728r25 -371m8 Ino{28M9} 13|702b8 713r17 721r17 729r17 -372i8 Offset{natural} 13|703b8 714r17 722r17 730r17 -373a8 Entities{63A9} 13|704b8 715m17 723m17 731m17 -374i8 Ret_Count{natural} 13|705b8 716m17 724m17 732m17 -375e8 Success{234E9} 13|706b8 717m17 725m17 733m17 -384U14*Read_Symbolic_Link 385>8 386>8 387<8 388<8 389<8 13|454s16 522s16 -. 737b14 754l8 754t26 -385i8 Key{74I9} 390r38 13|738b8 745r20 748r25 -386m8 Ino{28M9} 13|739b8 748r39 -387a8 Path{string} 13|740b8 748m44 750m13 -388i8 Ret_Count{natural} 13|741b8 748m50 751m13 -389e8 Success{234E9} 13|742b8 748m61 752m13 -400U14*Read 401>8 402>8 403>8 404<8 405<8 406>8 407<8 13|756b14 793l8 793t12 -401i8 Key{74I9} 408r38 13|757b8 766r20 769r25 778r25 786r25 -402m8 Ino{28M9} 13|758b8 770r17 779r17 787r17 -403m8 Offset{6|84M9} 13|759b8 771r17 780r17 788r17 -404a8 Data{5|29A9} 13|760b8 772m17 781m17 789m17 -405i8 Ret_Count{natural} 13|761b8 773m17 782m17 790m17 -406b8 Is_Blocking{boolean} 13|762b8 774r17 -407e8 Success{234E9} 13|763b8 775m17 783m17 791m17 -418U14*Write 419>8 420>8 421>8 422>8 423<8 424>8 425<8 13|795b14 827l8 827t13 -419i8 Key{74I9} 426r38 13|796b8 805r20 808r25 817r25 -420m8 Ino{28M9} 13|797b8 809r17 818r17 -421m8 Offset{6|84M9} 13|798b8 810r17 819r17 -422a8 Data{5|29A9} 13|799b8 811r17 820r17 -423i8 Ret_Count{natural} 13|800b8 812m17 821m17 824m13 -424b8 Is_Blocking{boolean} 13|801b8 813r17 -425e8 Success{234E9} 13|802b8 814m17 822m17 825m13 -433U14*Stat 434>8 435>8 436<8 437<8 13|444s14 502s26 552s11 829b14 844l8 -. 844t12 991s7 -434i8 Key{74I9} 438r38 13|830b8 836r20 838r31 840r31 842r31 -435m8 Ino{28M9} 13|831b8 838r45 840r45 842r45 -436r8 Stat_Val{41R9} 13|832b8 838m50 840m50 842m50 -437e8 Success{234E9} 13|833b8 838m60 840m60 842m60 -445U14*Truncate 446>8 447>8 448>8 449<8 13|846b14 859l8 859t16 -446i8 Key{74I9} 450r38 13|847b8 853r20 855r35 -447m8 Ino{28M9} 13|848b8 855r49 -448m8 New_Size{6|84M9} 13|849b8 855r54 -449e8 Status{234E9} 13|850b8 855m64 857m13 -458U14*IO_Control 459>8 460>8 461>8 462>8 463<8 13|861b14 879l8 879t18 -459i8 Key{74I9} 464r38 13|862b8 869r20 872r25 875r25 -460m8 Ino{28M9} 13|863b8 872r39 875r39 -461m8 Request{6|84M9} 13|864b8 872r44 875r44 -462m8 Arg{10|67M9} 13|865b8 872r53 875r53 -463e8 Status{234E9} 13|866b8 872m58 875m58 877m13 -475U14*Mmap 476>8 477>8 478>8 479>8 480>8 481>8 482>8 483<8 13|881b14 901l8 -. 901t12 -476i8 Key{74I9} 484r38 13|882b8 893r20 896r25 -477m8 Ino{28M9} 13|883b8 896r39 -478p8 Map{4|43P9} 13|884b8 896r44 -479m8 Offset{6|84M9} 13|885b8 891r28 -480m8 Address{9|35M12} 13|886b8 896r49 -481m8 Length{6|84M9} 13|887b8 896r58 -482r8 Flags{4|26R9} 13|888b8 896r66 -483e8 Status{234E9} 13|889b8 897m17 899m13 -492U14*Poll 493>8 494>8 495<8 496<8 497<8 13|903b14 920l8 920t12 -493i8 Key{74I9} 498r38 13|904b8 911r20 914r25 -494m8 Ino{28M9} 13|905b8 914r39 -495b8 Can_Read{boolean} 13|906b8 914m44 916m13 -496b8 Can_Write{boolean} 13|907b8 914m54 917m13 -497b8 Is_Error{boolean} 13|908b8 914m65 918m13 -503V13*Synchronize{234E9} 503>26 13|922b13 929l8 929t19 1061s16 -503i26 Key{74I9} 504r38 13|922b26 924r20 925r57 926r57 -511V13*Synchronize{234E9} 512>8 513>8 514>8 13|931b13 945l8 945t19 -512i8 Key{74I9} 515r38 13|932b8 937r20 939r45 941r45 -513m8 Ino{28M9} 13|933b8 939r59 941r59 -514b8 Data_Only{boolean} 13|934b8 939r64 941r64 -522U14*Change_Mode 523>8 524>8 525>8 526<8 13|947b14 960l8 960t19 -523i8 Key{74I9} 527r38 13|948b8 954r20 956r38 -524m8 Ino{28M9} 13|949b8 956r52 -525m8 Mode{32M12} 13|950b8 956r57 -526e8 Status{234E9} 13|951b8 956m63 958m13 -535U14*Change_Owner 536>8 537>8 538>8 539>8 540<8 13|962b14 977l8 977t20 -536i8 Key{74I9} 541r38 13|963b8 970r20 973r25 -537m8 Ino{28M9} 13|964b8 973r39 -538m8 Owner{6|81M9} 13|965b8 973r44 -539m8 Group{6|81M9} 13|966b8 973r51 -540e8 Status{234E9} 13|967b8 973m58 975m13 -552U14*Check_Access 553>8 554>8 555>8 556>8 557>8 558>8 559>8 560<8 13|979b14 -. 1008l8 1008t20 -553i8 Key{74I9} 561r38 13|980b8 991r13 -554m8 Ino{28M9} 13|981b8 991r18 -555b8 Exists_Only{boolean} 13|982b8 992r39 -556b8 Can_Read{boolean} 13|983b8 1000r25 -557b8 Can_Write{boolean} 13|984b8 1001r25 -558b8 Can_Exec{boolean} 13|985b8 1002r25 -559m8 Real_UID{6|81M9} 13|986b8 997r25 -560e8 Status{234E9} 13|987b8 991m33 992r10 1004m10 1006m10 -571U14*Change_Access_Times 572>8 573>8 574>8 575>8 576>8 577>8 578<8 13|1010b14 -. 1028l8 1028t27 -572i8 Key{74I9} 579r38 13|1011b8 1020r20 1023r25 -573m8 Ino{28M9} 13|1012b8 1023r39 -574m8 Access_Seconds{6|84M9} 13|1013b8 1023r44 -575m8 Access_Nanoseconds{6|84M9} 13|1014b8 1023r60 -576m8 Modify_Seconds{6|84M9} 13|1015b8 1024r17 -577m8 Modify_Nanoseconds{6|84M9} 13|1016b8 1024r33 -578e8 Status{234E9} 13|1017b8 1024m53 1026m13 -593U14*Open 594>8 595<8 596<8 597<8 598>8 599>8 600>8 601>8 13|84s10 1030b14 -. 1052l8 1052t12 -594a8 Path{string} 13|1031b8 1044r25 -595i8 Key{74I9} 604r21 13|1032b8 1045m25 -596m8 Ino{28M9} 13|1033b8 1046m25 -597e8 Success{234E9} 603r24 13|1034b8 1047m25 -598m8 User{6|81M9} 13|1035b8 1048r25 -599b8 Want_Read{boolean} 13|1036b8 1049r25 -600b8 Want_Write{boolean} 13|1037b8 1050r25 -601b8 Do_Follow{boolean} 13|1038b8 1051r25 -609U14*Synchronize 609<27 13|1054b14 1067l8 1067t19 -609b27 Success{boolean} 13|1054b27 1056m7 1062m16 -618U14*Create_Node 619>8 620>8 621>8 622<8 623>8 13|1069b14 1085l8 1085t19 -619a8 Path{string} 13|1070b8 1080r23 -620e8 Typ{39E9} 13|1071b8 1081r23 -621m8 Mode{32M12} 13|1072b8 1082r23 -622e8 Success{234E9} 13|1073b8 1084m23 -623m8 User{6|81M9} 13|1074b8 1083r23 -629V13*Is_Absolute{boolean} 629>26 13|76s14 367s10 1087b13 1090l8 1090t19 -629a26 Path{string} 13|1087b26 1089r14 1089r40 1089r46 -635V13*Apply_Umask{32M12} 635>26 635>32 -635m26 Mode{32M12} 636r32 -635m32 Umask{32M12} 636r59 -639V13*Is_Initialized{boolean} 79s32 95s19 113s19 120s19 130s19 139s46 145s19 -. 151s19 157s19 166s19 179s19 186s19 193s19 199s19 205s19 215s19 225s19 231s19 -. 266s19 284s19 302s19 320s19 340s19 354s19 360s19 376s19 390s19 408s19 426s19 -. 438s19 450s19 464s19 484s19 498s19 504s19 515s19 527s19 541s19 561s19 579s19 -. 602s20 610s19 624s19 665b13 -648R9 Mount_Data 657e14 659r65 -649i7*Mounted_Dev{5|83I9} 13|29m11 99r24 101r27 123m14 145r24 155m27 175r24 -. 204r24 227r27 1060r24 -650e7*Mounted_FS{73E9} 13|30m11 124m14 148r29 217r27 250r25 259r25 268r25 -. 277r25 286r25 301r25 316r25 325r25 605r25 624r25 644r25 665r25 683r25 693r25 -. 709r25 745r25 766r25 805r25 836r25 853r25 869r25 893r25 911r25 924r25 937r25 -. 954r25 970r25 1020r25 -651m7*FS_Data{10|67M9} 13|31m11 125m14 149m55 150m55 151m55 154r36 222r27 -. 248r54 260r58 261r58 262r66 269r61 270r61 271r69 278r52 279r52 280r60 287r59 -. 288r59 289r68 302r59 303r59 304r59 317r59 318r59 319r59 326r68 327r68 328r68 -. 608r30 627r30 647r30 668r30 685r38 696r49 712r30 720r30 728r30 748r30 769r30 -. 778r30 786r30 808r30 817r30 838r36 840r36 842r36 855r40 872r30 875r30 896r30 -. 914r30 925r62 926r62 939r50 941r50 956r43 973r30 1023r30 -652i7*Path_Length{integer} 13|32m11 126m14 146r53 176r39 177r32 178r52 179r53 -. 180r57 183r34 239r30 -653a7*Path_Buffer{string} 13|33m11 127m14 132m26 146r24 179r24 238r23 -654i7*Base_Key{74I9} 13|34m11 128m14 479r33 497r33 -655m7*Base_Ino{28M9} 13|35m11 129m14 480r33 498r33 -656m7*Root_Ino{28M9} 13|36m11 130m14 369r35 483r47 501r47 1043r36 1079r34 -659A9 Mount_Registry(648R9)<74I9> 660r38 13|28r21 -660P9 Mount_Registry_Acc(659A9) 662r19 -662p4 Mounts{660P9} 665r47 13|28m7 98r16 99r13 101r16 122r10 132r10 144r16 -. 145r13 146r13 146r42 148r18 149r44 150r44 151r44 154r25 155r16 174r16 175r13 -. 176r28 177r21 178r41 179r13 179r42 180r46 183r23 203r16 204r13 217r14 222r14 -. 227r14 238r10 239r17 248r41 250r12 259r12 260r45 261r45 262r53 268r12 269r48 -. 270r48 271r56 277r12 278r39 279r39 280r47 286r12 287r46 288r46 289r55 301r12 -. 302r46 303r46 304r46 316r12 317r46 318r46 319r46 325r12 326r55 327r55 328r55 -. 369r24 478r25 479r22 480r22 483r36 496r25 497r22 498r22 501r36 605r12 608r17 -. 624r12 627r17 644r12 647r17 665r12 668r17 683r12 685r25 693r12 696r36 709r12 -. 712r17 720r17 728r17 745r12 748r17 766r12 769r17 778r17 786r17 805r12 808r17 -. 817r17 836r12 838r23 840r23 842r23 853r12 855r27 869r12 872r17 875r17 893r12 -. 896r17 911r12 914r17 924r12 925r49 926r49 937r12 939r37 941r37 954r12 956r30 -. 970r12 973r17 1020r12 1023r17 1043r25 1059r16 1060r13 1079r23 -663r4 Mounts_Mutex{8|22R9} 13|37m7 97m34 97r34 137m36 137r36 143m34 143r34 -. 161m36 161r36 173m34 173r34 186m36 186r36 202m34 202r34 212m36 212r36 1058m34 -. 1058r34 1066m36 1066r36 -667V13 Can_Access_File{boolean} 668>8 669>8 670>8 671>8 672>8 673>8 13|511s23 -. 556s14 996s10 1092b13 1122l8 1122t23 -668m8 User{6|81M9} 13|1093b8 1101r10 1105r23 -669m8 File_Owner{6|81M9} 13|1094b8 1105r10 -670m8 Mode{32M12} 13|1095b8 1106r36 1107r36 1108r36 1113r36 1114r36 1115r36 -671b8 Want_Read{boolean} 13|1096b8 1106r14 1113r14 -672b8 Want_Write{boolean} 13|1097b8 1107r14 1114r14 -673b8 Want_Exec{boolean} 13|1098b8 1108r14 1115r14 -X 13 vfs.adb -48a7 Name=48:29{string} -50e11 FS{12|73E9} 51r13 52r38 -66i7 De{5|83I9} 78r10 99r38 112r24 114r24 117r24 123r29 -67i7 Free_I{12|74I9} 102m13 122r18 132r18 -68m7 FS_Data{10|67M9} 112m55 114m55 117m42 121r10 125r29 -69i7 Key{12|74I9} 86m28 128r29 -70m7 Ino{12|28M9} 87m28 129r29 -71m7 Root_Inode{12|28M9} 112m64 115m13 118m13 130r29 -72e7 Succ{12|234E9} 88m28 92r13 -98i11 I 99r21 101r24 102r23 -109L6 Try_Probe 103r18 -136L6 Cleanup 100r18 107r12 -144i11 I 145r21 146r21 146r50 148r26 149r52 150r52 151r52 154r33 -. 155r24 -174i11 I 175r21 176r36 177r29 178r49 179r21 179r50 180r54 182r23 -. 183r31 -197i7 Curr_Index{natural} 205r16 206r35 207m16 207r30 -203i11 I 204r21 206r50 -248m7 Data{10|67M9} 251r38 252r38 253r38 -298m7 FB=298:32{6|84M9} -299m7 FU=299:32{6|84M9} -313m7 FI=313:32{6|84M9} -314m7 FU=314:32{6|84M9} -344P12 String_Acc(string) 346r66 360r25 -346U17 Free1[2|20] -346U17 Free1[2|20] 567s7 575s7 583s7 591s7 -347U17 Free2[2|20] -347U17 Free2[2|20] 568s7 576s7 584s7 592s7 -350i7 Orig_Key{12|74I9} 400r16 403r27 430m19 465r34 533r34 -351m7 Orig_Ino{12|28M9} 404r27 431m19 466r34 534r34 -352i7 Actual_Key{12|74I9} 368m10 403m13 414r30 430r33 444r20 455r33 479r44 -. 482m22 497r44 500m22 502r32 523r33 552r17 569r20 -353m7 Actual_Ino{12|28M9} 369m10 404m13 415r30 431r33 432m19 444r32 456r33 -. 480r44 483m22 498r44 501m22 502r44 524r33 552r29 570r20 -354i7 Path_Idx{natural} 372m7 378r29 379r35 381m13 381r25 383r26 389r23 398r32 -. 401r35 428r38 548m10 -355i7 Path_Last{natural} 389m10 390r29 391r35 393m13 393r26 395m10 395r23 -. 398r57 401r60 428r63 452r26 536r50 548r22 -356p7 Dir_Entries{12|64P9} 417r30 426r24 568m14 568r14 576m14 576r14 584m14 -. 584r14 592m14 592r14 -357r7 Entry_Stat{12|41R9} 444m44 453r16 476r19 494r15 502m56 513r34 514r34 -. 552m41 558r25 559r25 -358i7 Entries_Offset{natural} 410m10 416r30 437m13 437r31 -359i7 Entries_Count{natural} 411m10 418m30 420r42 426r42 437r48 -360p7 Symlink_Path{344P12} 457r33 467r34 525r33 535r34 567m14 567r14 575m14 -. 575r14 583m14 583r14 591m14 591r14 -361i7 Symlink_Len{natural} 458m33 467r53 526m33 535r53 -426r17 Ent{12|57R9} -442L6 Found_Entry 399r18 405r18 433r24 -478i20 I 479r30 480r30 482r36 483r44 -496i20 I 497r30 498r30 500r36 501r44 -574L6 Invalid_Value_Return 364r15 440r15 446r18 461r24 504r30 529r24 546r21 -. 554r15 -582L6 Not_Allowed_Return 519r24 564r15 -590L6 Cleanup_Only_Return 475r21 544r21 -989r7 Ino_Stat{12|41R9} 991m23 998r25 999r25 -1059i11 I 1060r21 1061r29 -18P9 Name{344P12} 20r50[346] 20r50[347] -20p39 X{344P12} 21r15[346] 22r23[346] 23r11[346] 21r15[347] 22r23[347] 23r11[347] -X 14 vfs-dev.ads -19K13*Dev 13|18w10 112r13 149r31 251r25 260r25 269r25 278r25 287r25 302r25 -. 317r25 326r35 711r13 768r13 807r13 838r13 871r13 895r13 913r13 925r32 939r20 -. 14|116e12 -20U14*Probe 13|112s17 -27U14*Remount 13|251s29 -33U14*Unmount 13|149s35 -35U14*Get_Block_Size 13|260s29 -37U14*Get_Fragment_Size 13|269s29 -39U14*Get_Size 13|278s29 -41U14*Get_Inode_Count 13|287s29 -43U14*Get_Free_Blocks 13|302s29 -48U14*Get_Free_Inodes 13|317s29 -53V13*Get_Max_Length{6|84M9} 13|326s39 -55U14*Read_Entries 13|711s17 -63U14*Read 13|768s17 -72U14*Write 13|807s17 -81U14*Stat 13|838s17 -87U14*IO_Control 13|871s17 -94U14*Mmap 13|895s17 -103U14*Poll 13|913s17 -110V13*Synchronize{12|234E9} 13|925s36 -112V13*Synchronize{12|234E9} 13|939s24 -X 15 vfs-ext.ads -20K13*EXT 13|19w10 114r13 150r31 252r25 261r25 270r25 279r25 288r25 303r25 -. 318r25 327r35 607r13 626r13 646r13 667r13 685r13 719r13 747r13 777r13 816r13 -. 840r13 855r13 874r13 926r32 941r20 956r13 972r13 1022r13 15|542e12 -21U14*Probe 13|114s17 -27U14*Remount 13|252s29 -33U14*Unmount 13|150s35 -35U14*Get_Block_Size 13|261s29 -37U14*Get_Fragment_Size 13|270s29 -39U14*Get_Size 13|279s29 -41U14*Get_Inode_Count 13|288s29 -43U14*Get_Free_Blocks 13|303s29 -48U14*Get_Free_Inodes 13|318s29 -53V13*Get_Max_Length{6|84M9} 13|327s39 -55U14*Create_Node 13|607s17 -64U14*Create_Symbolic_Link 13|626s17 -73U14*Create_Hard_Link 13|646s17 -82U14*Rename 13|667s17 -92U14*Unlink 13|685s17 -99U14*Read_Entries 13|719s17 -107U14*Read_Symbolic_Link 13|747s17 -114U14*Read 13|777s17 -122U14*Write 13|816s17 -130U14*Stat 13|840s17 -136U14*Truncate 13|855s17 -142U14*IO_Control 13|874s17 -149U14*Change_Mode 13|956s17 -155U14*Change_Owner 13|972s17 -162U14*Change_Access_Times 13|1022s17 -171V13*Synchronize{12|234E9} 13|926s36 -173V13*Synchronize{12|234E9} 13|941s24 -X 16 vfs-fat.ads -17K13*FAT 13|20w10 117r13 151r31 253r25 262r33 271r33 280r33 289r34 304r25 -. 319r25 328r35 696r25 727r13 785r13 842r13 16|241e12 -18U14*Probe 13|117s17 -24U14*Remount 13|253s29 -30U14*Unmount 13|151s35 -32V13*Get_Block_Size{6|84M9} 13|262s37 -34V13*Get_Fragment_Size{6|84M9} 13|271s37 -36V13*Get_Size{6|84M9} 13|280s37 -38V13*Get_Inode_Count{6|84M9} 13|289s38 -40U14*Get_Free_Blocks 13|304s29 -45U14*Get_Free_Inodes 13|319s29 -50V13*Get_Max_Length{6|84M9} 13|328s39 -58U14*Close 13|696s29 -60U14*Read_Entries 13|727s17 -68U14*Read 13|785s17 -76U14*Stat 13|842s17 - -QQ SPARKVERSION 0.0w -GG EK_DIRECT_CALLS vfs__init 1 vfs__is_initialized -GG EK_PROOF_DEPENDENCIES vfs__init 1 vfs__is_initialized -GG EK_GLOBALS vfs__init local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 2 vfs__mounts vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 2 vfs__mounts vfs__mounts_mutex calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 -GG EK_DIRECT_CALLS vfs__mount 2 vfs__is_initialized devices__is_initialized -GG EK_PROOF_DEPENDENCIES vfs__mount 2 vfs__is_initialized devices__is_initialized -GG EK_GLOBALS vfs__mount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 3 vfs__mounts vfs__mounts_mutex __HEAP proper_output 3 vfs__mounts vfs__mounts_mutex __HEAP refined_proof_in 0 refined_input 3 vfs__mounts vfs__mounts_mutex __HEAP refined_output 3 vfs__mounts vfs__mounts_mutex __HEAP calls_proof 0 calls 0 calls_conditional 14 devices__fetch devices__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__dev__probe ada___vfs__dev__read_entries ada___vfs__dev__stat ada___vfs__ext__probe ada___vfs__ext__read_entries ada___vfs__ext__read_symbolic_link ada___vfs__ext__stat ada___vfs__fat__probe ada___vfs__fat__read_entries ada___vfs__fat__stat FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS vfs__mount__2 10 vfs__open__2 vfs__is_absolute vfs__is_initialized devices__fetch devices__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__dev__probe ada___vfs__ext__probe ada___vfs__fat__probe -GG EK_PROOF_DEPENDENCIES vfs__mount__2 0 -GG EK_GLOBALS vfs__mount__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 3 vfs__mounts vfs__mounts_mutex __HEAP proper_output 3 vfs__mounts vfs__mounts_mutex __HEAP refined_proof_in 0 refined_input 3 vfs__mounts vfs__mounts_mutex __HEAP refined_output 3 vfs__mounts vfs__mounts_mutex __HEAP calls_proof 1 devices__is_initialized calls 0 calls_conditional 13 devices__fetch ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__dev__probe ada___vfs__dev__read_entries ada___vfs__dev__stat ada___vfs__ext__probe ada___vfs__ext__read_entries ada___vfs__ext__read_symbolic_link ada___vfs__ext__stat ada___vfs__fat__probe ada___vfs__fat__read_entries ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 -GG EK_DIRECT_CALLS vfs__unmount 6 vfs__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release ada___vfs__dev__unmount ada___vfs__ext__unmount ada___vfs__fat__unmount -GG EK_PROOF_DEPENDENCIES vfs__unmount 0 -GG EK_GLOBALS vfs__unmount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 2 vfs__mounts vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 2 vfs__mounts vfs__mounts_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 3 ada___vfs__dev__unmount ada___vfs__ext__unmount ada___vfs__fat__unmount FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_mount 3 vfs__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES vfs__get_mount 0 -GG EK_GLOBALS vfs__get_mount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 1 vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 1 vfs__mounts_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 -GG EK_DIRECT_CALLS vfs__list_all 4 vfs__is_initialized devices__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES vfs__list_all 0 -GG EK_GLOBALS vfs__list_all local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 1 vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 1 vfs__mounts_mutex calls_proof 1 devices__is_initialized calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_backing_fs 1 vfs__is_initialized -GG EK_PROOF_DEPENDENCIES vfs__get_backing_fs 0 -GG EK_GLOBALS vfs__get_backing_fs local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_backing_fs_data 1 vfs__is_initialized -GG EK_PROOF_DEPENDENCIES vfs__get_backing_fs_data 0 -GG EK_GLOBALS vfs__get_backing_fs_data local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_backing_device 1 vfs__is_initialized -GG EK_PROOF_DEPENDENCIES vfs__get_backing_device 0 -GG EK_GLOBALS vfs__get_backing_device local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_mount_point 1 vfs__is_initialized -GG EK_PROOF_DEPENDENCIES vfs__get_mount_point 0 -GG EK_GLOBALS vfs__get_mount_point local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__remount 4 vfs__is_initialized ada___vfs__dev__remount ada___vfs__ext__remount ada___vfs__fat__remount -GG EK_PROOF_DEPENDENCIES vfs__remount 0 -GG EK_GLOBALS vfs__remount local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__remount ada___vfs__ext__remount ada___vfs__fat__remount FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_block_size 4 vfs__is_initialized ada___vfs__dev__get_block_size ada___vfs__ext__get_block_size ada___vfs__fat__get_block_size -GG EK_PROOF_DEPENDENCIES vfs__get_block_size 0 -GG EK_GLOBALS vfs__get_block_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_block_size ada___vfs__ext__get_block_size ada___vfs__fat__get_block_size FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_fragment_size 4 vfs__is_initialized ada___vfs__dev__get_fragment_size ada___vfs__ext__get_fragment_size ada___vfs__fat__get_fragment_size -GG EK_PROOF_DEPENDENCIES vfs__get_fragment_size 0 -GG EK_GLOBALS vfs__get_fragment_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_fragment_size ada___vfs__ext__get_fragment_size ada___vfs__fat__get_fragment_size FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_size 4 vfs__is_initialized ada___vfs__dev__get_size ada___vfs__ext__get_size ada___vfs__fat__get_size -GG EK_PROOF_DEPENDENCIES vfs__get_size 0 -GG EK_GLOBALS vfs__get_size local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_size ada___vfs__ext__get_size ada___vfs__fat__get_size FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_inode_count 4 vfs__is_initialized ada___vfs__dev__get_inode_count ada___vfs__ext__get_inode_count ada___vfs__fat__get_inode_count -GG EK_PROOF_DEPENDENCIES vfs__get_inode_count 0 -GG EK_GLOBALS vfs__get_inode_count local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_inode_count ada___vfs__ext__get_inode_count ada___vfs__fat__get_inode_count FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_free_blocks 4 vfs__is_initialized ada___vfs__dev__get_free_blocks ada___vfs__ext__get_free_blocks ada___vfs__fat__get_free_blocks -GG EK_PROOF_DEPENDENCIES vfs__get_free_blocks 0 -GG EK_GLOBALS vfs__get_free_blocks local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_free_blocks ada___vfs__ext__get_free_blocks ada___vfs__fat__get_free_blocks FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_free_inodes 4 vfs__is_initialized ada___vfs__dev__get_free_inodes ada___vfs__ext__get_free_inodes ada___vfs__fat__get_free_inodes -GG EK_PROOF_DEPENDENCIES vfs__get_free_inodes 0 -GG EK_GLOBALS vfs__get_free_inodes local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_free_inodes ada___vfs__ext__get_free_inodes ada___vfs__fat__get_free_inodes FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__get_max_length 4 vfs__is_initialized ada___vfs__dev__get_max_length ada___vfs__ext__get_max_length ada___vfs__fat__get_max_length -GG EK_PROOF_DEPENDENCIES vfs__get_max_length 0 -GG EK_GLOBALS vfs__get_max_length local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__get_max_length ada___vfs__ext__get_max_length ada___vfs__fat__get_max_length FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__open__free1 0 -GG EK_PROOF_DEPENDENCIES vfs__open__free1 0 -GG EK_GLOBALS vfs__open__free1 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 vfs__open vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS vfs__open__free2 0 -GG EK_PROOF_DEPENDENCIES vfs__open__free2 0 -GG EK_GLOBALS vfs__open__free2 local TRUE E_PROCEDURE FALSE ORIGIN_FLOW 2 vfs__open vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 FALSE FALSE TRUE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS vfs__open 1 vfs__is_initialized -GG EK_PROOF_DEPENDENCIES vfs__open 1 vfs__is_initialized -GG EK_GLOBALS vfs__open local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 vfs__mounts __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 7 ada___vfs__dev__read_entries ada___vfs__dev__stat ada___vfs__ext__read_entries ada___vfs__ext__read_symbolic_link ada___vfs__ext__stat ada___vfs__fat__read_entries ada___vfs__fat__stat FALSE FALSE FALSE TRUE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__create_node 2 vfs__is_initialized ada___vfs__ext__create_node -GG EK_PROOF_DEPENDENCIES vfs__create_node 0 -GG EK_GLOBALS vfs__create_node local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__create_node FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__create_symbolic_link 2 vfs__is_initialized ada___vfs__ext__create_symbolic_link -GG EK_PROOF_DEPENDENCIES vfs__create_symbolic_link 0 -GG EK_GLOBALS vfs__create_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__create_symbolic_link FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__create_hard_link 2 vfs__is_initialized ada___vfs__ext__create_hard_link -GG EK_PROOF_DEPENDENCIES vfs__create_hard_link 0 -GG EK_GLOBALS vfs__create_hard_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__create_hard_link FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__rename 2 vfs__is_initialized ada___vfs__ext__rename -GG EK_PROOF_DEPENDENCIES vfs__rename 0 -GG EK_GLOBALS vfs__rename local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__rename FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__unlink 2 vfs__is_initialized ada___vfs__ext__unlink -GG EK_PROOF_DEPENDENCIES vfs__unlink 0 -GG EK_GLOBALS vfs__unlink local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__unlink FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__close 2 vfs__is_initialized ada___vfs__fat__close -GG EK_PROOF_DEPENDENCIES vfs__close 0 -GG EK_GLOBALS vfs__close local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__fat__close FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__read_entries 4 vfs__is_initialized ada___vfs__dev__read_entries ada___vfs__ext__read_entries ada___vfs__fat__read_entries -GG EK_PROOF_DEPENDENCIES vfs__read_entries 0 -GG EK_GLOBALS vfs__read_entries local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__read_entries ada___vfs__ext__read_entries ada___vfs__fat__read_entries FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__read_symbolic_link 2 vfs__is_initialized ada___vfs__ext__read_symbolic_link -GG EK_PROOF_DEPENDENCIES vfs__read_symbolic_link 0 -GG EK_GLOBALS vfs__read_symbolic_link local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__read_symbolic_link FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__read 4 vfs__is_initialized ada___vfs__dev__read ada___vfs__ext__read ada___vfs__fat__read -GG EK_PROOF_DEPENDENCIES vfs__read 0 -GG EK_GLOBALS vfs__read local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__read ada___vfs__ext__read ada___vfs__fat__read FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__write 3 vfs__is_initialized ada___vfs__dev__write ada___vfs__ext__write -GG EK_PROOF_DEPENDENCIES vfs__write 0 -GG EK_GLOBALS vfs__write local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___vfs__dev__write ada___vfs__ext__write FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__stat 4 vfs__is_initialized ada___vfs__dev__stat ada___vfs__ext__stat ada___vfs__fat__stat -GG EK_PROOF_DEPENDENCIES vfs__stat 0 -GG EK_GLOBALS vfs__stat local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__stat ada___vfs__ext__stat ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__truncate 2 vfs__is_initialized ada___vfs__ext__truncate -GG EK_PROOF_DEPENDENCIES vfs__truncate 0 -GG EK_GLOBALS vfs__truncate local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__truncate FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__io_control 3 vfs__is_initialized ada___vfs__dev__io_control ada___vfs__ext__io_control -GG EK_PROOF_DEPENDENCIES vfs__io_control 0 -GG EK_GLOBALS vfs__io_control local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___vfs__dev__io_control ada___vfs__ext__io_control FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__mmap 2 vfs__is_initialized ada___vfs__dev__mmap -GG EK_PROOF_DEPENDENCIES vfs__mmap 0 -GG EK_GLOBALS vfs__mmap local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__dev__mmap FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__poll 2 vfs__is_initialized ada___vfs__dev__poll -GG EK_PROOF_DEPENDENCIES vfs__poll 0 -GG EK_GLOBALS vfs__poll local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__dev__poll FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__synchronize 3 vfs__is_initialized ada___vfs__dev__synchronize ada___vfs__ext__synchronize -GG EK_PROOF_DEPENDENCIES vfs__synchronize 0 -GG EK_GLOBALS vfs__synchronize local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___vfs__dev__synchronize ada___vfs__ext__synchronize TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__synchronize__2 3 vfs__is_initialized ada___vfs__dev__synchronize__2 ada___vfs__ext__synchronize__2 -GG EK_PROOF_DEPENDENCIES vfs__synchronize__2 0 -GG EK_GLOBALS vfs__synchronize__2 local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 2 ada___vfs__dev__synchronize__2 ada___vfs__ext__synchronize__2 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__change_mode 2 vfs__is_initialized ada___vfs__ext__change_mode -GG EK_PROOF_DEPENDENCIES vfs__change_mode 0 -GG EK_GLOBALS vfs__change_mode local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__change_mode FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__change_owner 2 vfs__is_initialized ada___vfs__ext__change_owner -GG EK_PROOF_DEPENDENCIES vfs__change_owner 0 -GG EK_GLOBALS vfs__change_owner local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__change_owner FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__check_access 3 vfs__stat vfs__is_initialized vfs__can_access_file -GG EK_PROOF_DEPENDENCIES vfs__check_access 0 -GG EK_GLOBALS vfs__check_access local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 3 ada___vfs__dev__stat ada___vfs__ext__stat ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS vfs__change_access_times 2 vfs__is_initialized ada___vfs__ext__change_access_times -GG EK_PROOF_DEPENDENCIES vfs__change_access_times 0 -GG EK_GLOBALS vfs__change_access_times local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__change_access_times FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__open__2 2 vfs__open vfs__is_initialized -GG EK_PROOF_DEPENDENCIES vfs__open__2 0 -GG EK_GLOBALS vfs__open__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts __HEAP proper_output 1 __HEAP refined_proof_in 0 refined_input 2 vfs__mounts __HEAP refined_output 1 __HEAP calls_proof 0 calls 0 calls_conditional 7 ada___vfs__dev__read_entries ada___vfs__dev__stat ada___vfs__ext__read_entries ada___vfs__ext__read_symbolic_link ada___vfs__ext__stat ada___vfs__fat__read_entries ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__synchronize__3 4 vfs__synchronize vfs__is_initialized ada___lib__synchronization__seize ada___lib__synchronization__release -GG EK_PROOF_DEPENDENCIES vfs__synchronize__3 0 -GG EK_GLOBALS vfs__synchronize__3 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 2 vfs__mounts vfs__mounts_mutex proper_output 1 vfs__mounts_mutex refined_proof_in 0 refined_input 2 vfs__mounts vfs__mounts_mutex refined_output 1 vfs__mounts_mutex calls_proof 0 calls 2 ada___lib__synchronization__seize ada___lib__synchronization__release calls_conditional 2 ada___vfs__dev__synchronize ada___vfs__ext__synchronize FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 2 vfs__mounts vfs__mounts_mutex LOCKS 0 -GG EK_DIRECT_CALLS vfs__create_node__2 2 vfs__create_node vfs__is_initialized -GG EK_PROOF_DEPENDENCIES vfs__create_node__2 0 -GG EK_GLOBALS vfs__create_node__2 local FALSE E_PROCEDURE FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 1 ada___vfs__ext__create_node FALSE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__is_absolute 0 -GG EK_PROOF_DEPENDENCIES vfs__is_absolute 0 -GG EK_GLOBALS vfs__is_absolute local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS vfs__apply_umask 0 -GG EK_PROOF_DEPENDENCIES vfs__apply_umask 0 -GG EK_GLOBALS vfs__apply_umask local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS vfs__is_initialized 0 -GG EK_PROOF_DEPENDENCIES vfs__is_initialized 0 -GG EK_GLOBALS vfs__is_initialized local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 1 vfs__mounts proper_output 0 refined_proof_in 0 refined_input 1 vfs__mounts refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 1 vfs__mounts LOCKS 0 -GG EK_DIRECT_CALLS vfs__can_access_file 0 -GG EK_PROOF_DEPENDENCIES vfs__can_access_file 0 -GG EK_GLOBALS vfs__can_access_file local FALSE E_FUNCTION FALSE ORIGIN_FLOW 1 vfs proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 calls_proof 0 calls 0 calls_conditional 0 TRUE FALSE FALSE FALSE TRUE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_DIRECT_CALLS vfs 0 -GG EK_PROOF_DEPENDENCIES vfs 0 -GG EK_GLOBALS vfs local FALSE E_PACKAGE TRUE ORIGIN_FLOW 0 proper_proof_in 0 proper_input 0 proper_output 0 refined_proof_in 0 refined_input 0 refined_output 0 initializes 1 vfs__mounts refined_initializes 1 vfs__mounts calls_proof 0 calls 0 calls_conditional 0 local_packages 0 local_var 2 vfs__mounts vfs__mounts_mutex TRUE FALSE FALSE FALSE FALSE ENTRY_CALLS 0 SUSPENDS_ON 0 UNSYNCH_ACCESSES 0 LOCKS 0 -GG EK_FLOW_SCOPE ada___vfs__fat__read FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_type__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE devices__poll FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_size__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__create_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__set_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization TRUE FALSE FALSE FALSE FALSE lib -GG EK_FLOW_SCOPE ada___vfs__fat__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_inode_count FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_uuid FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__inner_open_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__is_immutable FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize__3 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__free1 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE vfs__open__free1GP11769 VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__create_hard_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__write FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__seize__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch__3 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_blocks FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_node__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__is_append_only FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__release__2 FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__fetch_name FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__remap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__act_on_policy FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__inner_read_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__rename FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_free_inodes FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_absolute FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__check_user_access FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__stat FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE arch TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__apply_umask FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__inner_read_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__free1GP11769 TRUE FALSE FALSE FALSE TRUE vfs__open BODY_PART -GG EK_FLOW_SCOPE vfs__get_max_length FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___lib__synchronization__poll_until_zero FALSE FALSE FALSE FALSE TRUE ada___lib__synchronization PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__unlink FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE devices__list FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__is_initialized FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__truncate FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__rw_superblock FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_initialized FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___arch__mmu__unmap_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__open__free2 FALSE FALSE FALSE TRUE ada___ada__unchecked_deallocation TRUE vfs__open__free2GP11847 VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE devices__to_integer FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE devices TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE system TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE vfs__open FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_block_device FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__rw_block_group_descriptor FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__init FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_le FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__io_control FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__read FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE devices__convert_be FALSE FALSE FALSE FALSE TRUE devices PRIVATE_PART -GG EK_FLOW_SCOPE vfs__mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__read_symbolic_link FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_count FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__rw_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_user_mapped_size FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__write FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mmap FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_block_size FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__read FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_block_index FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___arch__mmu TRUE FALSE FALSE FALSE FALSE arch -GG EK_FLOW_SCOPE vfs__open__free2GP11847 TRUE FALSE FALSE FALSE TRUE vfs__open BODY_PART -GG EK_FLOW_SCOPE vfs__create_node FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__mount__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__read_from_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__2 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__is_read_only FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__read_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__write FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__get_statistics FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE memory TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE interfaces__shift_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE devices__get_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_next_cluster FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__write_to_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__create_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__io_control FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs__poll FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__stat FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__init FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unmount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__are_paths_equal FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE devices__from_unique_id FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__can_access_file FALSE FALSE FALSE FALSE TRUE vfs PRIVATE_PART -GG EK_FLOW_SCOPE system__Olt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__compose_path FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__mmap FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__truncate FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__grow_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__get_mount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat TRUE FALSE FALSE FALSE FALSE vfs -GG EK_FLOW_SCOPE ada___vfs__fat__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__fork_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE system__Ole FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__synchronize FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__create_hard_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__sector_to_disk_offset FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements TRUE FALSE FALSE FALSE FALSE system -GG EK_FLOW_SCOPE system__Ogt FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__io_control FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE interfaces TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__fat__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__destroy_table FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE devices__synchronize__2 FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__cluster_to_disk_offset FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE vfs__synchronize__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__assign_inode_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE system__Oge FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE vfs__list_all FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext TRUE FALSE FALSE FALSE FALSE vfs -GG EK_FLOW_SCOPE ada___vfs__ext__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE system__Oeq FALSE FALSE FALSE FALSE TRUE system VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__poll FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__make_active FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__change_mode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__rename FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_type FALSE FALSE FALSE FALSE TRUE ada___vfs__fat PRIVATE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__wire_inode_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__change_mode FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE devices__read FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__3 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__translate_address FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__synchronize FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE lib TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__ext__change_owner FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_fs_data FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__c_string_length FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__synchronize__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__allocate_block_for_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__unmount FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_owner FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_block_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__change_access_times FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE lib__least_common_multiple FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE vfs__unlink FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_backing_device FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE devices__write FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__allocate_inode FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Oadd__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_fragment_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___ada__unchecked_deallocation FALSE FALSE FALSE FALSE FALSE ada -GG EK_FLOW_SCOPE vfs__get_mount_point FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__add_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__check_access FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_size FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__synchronize FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_right_arithmetic__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__close FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE lib__greatest_common_divisor FALSE FALSE FALSE FALSE TRUE lib VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_count FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Osubtract__2 FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__synchronize__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE devices__io_control FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__open FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_free_blocks FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE vfs__remount FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__delete_directory_entry FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE interfaces__rotate_left__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__read_entries FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__Omod FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE devices__init FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE vfs__change_access_times FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_free_inodes FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__fat__close FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE devices__mmap FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE devices__register FALSE FALSE FALSE FALSE TRUE devices VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__rotate_right__4 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_dir_type FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_address FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_block_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev TRUE FALSE FALSE FALSE FALSE vfs -GG EK_FLOW_SCOPE ada___vfs__fat__read_entries FALSE FALSE FALSE FALSE TRUE ada___vfs__fat VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_max_length FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__probe FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_FLOW_SCOPE vfs TRUE FALSE FALSE FALSE FALSE __standard -GG EK_FLOW_SCOPE ada___vfs__ext__get_dir_type__2 FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__read_symbolic_link FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__create_node FALSE FALSE FALSE FALSE TRUE ada___vfs__ext VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_permissions FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE ada___system__storage_elements__to_integer FALSE FALSE FALSE FALSE TRUE ada___system__storage_elements VISIBLE_PART -GG EK_FLOW_SCOPE interfaces__shift_left__5 FALSE FALSE FALSE FALSE TRUE interfaces VISIBLE_PART -GG EK_FLOW_SCOPE vfs__get_fragment_size FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__ext__get_inode_type FALSE FALSE FALSE FALSE TRUE ada___vfs__ext PRIVATE_PART -GG EK_FLOW_SCOPE vfs__open__2 FALSE FALSE FALSE FALSE TRUE vfs VISIBLE_PART -GG EK_FLOW_SCOPE ada___arch__mmu__map_allocated_range FALSE FALSE FALSE FALSE TRUE ada___arch__mmu VISIBLE_PART -GG EK_FLOW_SCOPE ada___vfs__dev__remount FALSE FALSE FALSE FALSE TRUE ada___vfs__dev VISIBLE_PART -GG EK_END_MARKER diff --git a/obj/gnatprove/phase1/vfs.cswi b/obj/gnatprove/phase1/vfs.cswi deleted file mode 100644 index 2ba9819..0000000 --- a/obj/gnatprove/phase1/vfs.cswi +++ /dev/null @@ -1,28 +0,0 @@ -20250224202256 --c --x -ada --gnatA --g --O2 --pipe --gnaty --Wall --Wextra --fno-stack-protector --fno-stack-check --fdata-sections --ffunction-sections --gnateDIroncladName="Ironclad" --gnateDVersion="g4411615" --gnateDBugSite="https://ironclad.nongnu.org/usersupport.html" --gnateDArchName="riscv64-limine" --ffile-prefix-map=/home/sean/capstone/ICK-RISCV-Context=. --gnateDALLOCONLY=False --fno-pie --fno-pic --mno-relax --march=rv64imac_zicsr_zifencei --mabi=lp64 --gnatc --gnates=/home/sean/capstone/ICK-RISCV-Context/obj/gnatprove/dea97157.tmp From 7f4a76f69c3bfe342a59679be5cd63642a9027d1 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:40:55 -0500 Subject: [PATCH 89/99] Delete source/tests/obj directory --- source/tests/obj/rv64_test_suite.ads.stderr | 1 - source/tests/obj/rv64_test_suite.ads.stdout | 0 source/tests/obj/test-harness.adb.stderr | 3 --- source/tests/obj/test-harness.adb.stdout | 0 source/tests/obj/test_harness_rv64.adb.stderr | 3 --- source/tests/obj/test_harness_rv64.adb.stdout | 0 source/tests/obj/test_suite.adb.stderr | 5 ----- source/tests/obj/test_suite.adb.stdout | 0 8 files changed, 12 deletions(-) delete mode 100644 source/tests/obj/rv64_test_suite.ads.stderr delete mode 100644 source/tests/obj/rv64_test_suite.ads.stdout delete mode 100644 source/tests/obj/test-harness.adb.stderr delete mode 100644 source/tests/obj/test-harness.adb.stdout delete mode 100644 source/tests/obj/test_harness_rv64.adb.stderr delete mode 100644 source/tests/obj/test_harness_rv64.adb.stdout delete mode 100644 source/tests/obj/test_suite.adb.stderr delete mode 100644 source/tests/obj/test_suite.adb.stdout diff --git a/source/tests/obj/rv64_test_suite.ads.stderr b/source/tests/obj/rv64_test_suite.ads.stderr deleted file mode 100644 index 6d909e1..0000000 --- a/source/tests/obj/rv64_test_suite.ads.stderr +++ /dev/null @@ -1 +0,0 @@ -cannot generate code for file rv64_test_suite.ads (package spec) diff --git a/source/tests/obj/rv64_test_suite.ads.stdout b/source/tests/obj/rv64_test_suite.ads.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/test-harness.adb.stderr b/source/tests/obj/test-harness.adb.stderr deleted file mode 100644 index 9f75857..0000000 --- a/source/tests/obj/test-harness.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -test-harness.adb:1:06: error: file "aunit.ads" not found -test-harness.adb:2:06: error: file "test_suite.ads" not found -test-harness.adb:5:11: warning: file name does not match unit name, should be "test_harness.adb" [enabled by default] diff --git a/source/tests/obj/test-harness.adb.stdout b/source/tests/obj/test-harness.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/test_harness_rv64.adb.stderr b/source/tests/obj/test_harness_rv64.adb.stderr deleted file mode 100644 index 7f7e0b3..0000000 --- a/source/tests/obj/test_harness_rv64.adb.stderr +++ /dev/null @@ -1,3 +0,0 @@ -test_harness_rv64.adb:1:06: error: file "aunit.ads" not found -test_harness_rv64.adb:2:06: error: file "test_suite.ads" not found -test_harness_rv64.adb:5:11: warning: file name does not match unit name, should be "test_harness.adb" [enabled by default] diff --git a/source/tests/obj/test_harness_rv64.adb.stdout b/source/tests/obj/test_harness_rv64.adb.stdout deleted file mode 100644 index e69de29..0000000 diff --git a/source/tests/obj/test_suite.adb.stderr b/source/tests/obj/test_suite.adb.stderr deleted file mode 100644 index 44847d2..0000000 --- a/source/tests/obj/test_suite.adb.stderr +++ /dev/null @@ -1,5 +0,0 @@ -test_suite.adb:10:13: error: no selector "Add_Test" for type "Test_Suite'Class" defined at aunit-test_suites.ads:43 -test_context.ads:4:09: error: type must be declared abstract or "Name" overridden -test_context.ads:4:09: error: "Name" has been inherited at aunit-test_cases.ads:41 -test_context.ads:4:09: error: "Name" has been inherited from subprogram at aunit-simple_test_cases.ads:47 -test_context.ads:7:76: error: "Message_String" not declared in "Test_Cases" diff --git a/source/tests/obj/test_suite.adb.stdout b/source/tests/obj/test_suite.adb.stdout deleted file mode 100644 index e69de29..0000000 From cf480d1af2223c94831ba44ab85d608a21b14181 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 14:04:52 -0500 Subject: [PATCH 90/99] Added some more comments in the code to explain what is happening. --- source/arch/riscv64-limine/arch-context.adb | 32 ++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index bab5423..c917975 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -56,7 +56,7 @@ package body Arch.Context is -- Start General-Purpose Section ------------------------------------------ - -- Initialize the general-purpose context + -- Initialize the general-purpose context. procedure Init_GP_Context (Ctx : out GP_Context; Stack : System.Address; @@ -69,28 +69,38 @@ package body Arch.Context is pragma Assume(Stack /= System.Null_Address and Start_Addr /= System.Null_Address); pragma Assert(Stack_Int mod 16 = 0, "Stack address must be 16-byte aligned"); pragma Assert(Start_Int /= 0, "Start address must be nonzero"); + + -- Initialize context fields. Ctx_Impl.SP := Unsigned_64(Stack_Int); Ctx_Impl.SEPC := Unsigned_64(Start_Int); Ctx_Impl.SSTATUS := Get_CSR(16#100#); Ctx_Impl.A0 := 0; + + -- Convert internal context representation to external frame. Ctx := To_Frame(Ctx_Impl); + pragma Assert(Ctx.R2 = Unsigned_32(Stack_Int and 16#FFFFFFFF#), "Stack pointer correctly set"); pragma Assert(Ctx.R10 = 0, "Initial fork return value must be zero"); end Init_GP_Context; - -- Load the general-purpose context + -- Load the general-purpose context. procedure Load_GP_Context(Ctx : GP_Context) with No_Return is Ctx_Impl : GP_Context_Type := To_GP_Context_Type(Ctx); begin + -- Validate that critical registers are properly set. pragma Assert(Ctx_Impl.SP /= 0, "SP must not be zero"); pragma Assert(Ctx_Impl.SEPC /= 0, "SEPC must not be zero"); pragma Assert(Ctx_Impl.SSTATUS /= 0, "SSTATUS must not be zero"); + + -- Minimal inline assembly to restore context and jump to SEPC. Asm("csrw sepc, %0; csrw sstatus, %1; mv sp, %2; sret", Inputs => (Unsigned_64'Asm_Input("r", Ctx_Impl.SEPC), Unsigned_64'Asm_Input("r", Ctx_Impl.SSTATUS), Unsigned_64'Asm_Input("r", Ctx_Impl.SP)), Clobber => "memory", Volatile => True); + + -- sret shoud not return to this context; add an infinite loop safeguard to prevent undetermined state. loop null; end loop; end Load_GP_Context; @@ -106,8 +116,9 @@ package body Arch.Context is Old_SEPC : Unsigned_64 := Ctx_Impl.SEPC; begin Ctx_Impl.A0 := 0; - Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; -- Advance by 4 bytes (size of one instruction) + Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; -- Advance by one instruction. Ctx := To_Frame(Ctx_Impl); + pragma Assert(Ctx.R10 = 0, "Forked process must return zero"); pragma Assert(Ctx_Impl.SEPC > Old_SEPC, "SEPC should have advanced"); end Success_Fork_Result; @@ -115,12 +126,13 @@ package body Arch.Context is -- Save the Core Context procedure Save_Core_Context(Ctx : out Core_Context) is Current_Hart : constant Unsigned_64 := Get_Hart_ID; - -- Map the current hart ID (assumed to start at 0) to a 1-based index in Core_Locals. + -- Map current hart ID to a 1-based index in Core_Locals. Core_Index : constant Positive := Positive(Integer(Current_Hart) + 1); begin pragma Assert(Core_Index <= Core_Count, "Core index out of bounds"); - -- Save the entire per-core state (User_Stack, Kernel_Stack, Hart_ID, etc.) from Core_Locals. + -- Save the entire per-core state from Core_Locals. Ctx := Core_Locals(Core_Index); + pragma Assert(Ctx.Hart_ID = Current_Hart, "Saved core context must have the current hart ID"); pragma Assert(Ctx.Number = Core_Index, "Saved core context must have the correct core number"); end Save_Core_Context; @@ -139,7 +151,8 @@ package body Arch.Context is "FP context must be zeroed at init"); Setup_FP_Routines; FP_Save_Routine.all(Ctx); - pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, "FP context should remain zero after Init_FP_Context"); + pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, + "FP context should remain zero after Init_FP_Context"); end Init_FP_Context; -- Save the floating-point context @@ -177,7 +190,6 @@ package body Arch.Context is function To_Frame(Ctx : GP_Context_Type) return GP_Context is pragma Inline; begin - -- Ensure that only lower 32 bits of SP and A0 are used. pragma Assert(Ctx.SP <= 16#FFFFFFFF#, "Internal SP exceeds 32 bits"); pragma Assert(Ctx.A0 <= 16#FFFFFFFF#, "Internal A0 exceeds 32 bits"); return ( @@ -231,10 +243,12 @@ package body Arch.Context is begin pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop + -- Save each single-precision FP register. Asm("fsw f" & Reg'Image & ", " & (Reg * 4)'Image & "(%0)", Inputs => System.Address'Asm_Input("r", FP_Ptr), Volatile => True); end loop; + -- Clear unused portion of the FP context. for Offset in 128 .. FP_Context'Length - 1 loop Ctx(Offset + 1) := 0; end loop; @@ -246,6 +260,7 @@ package body Arch.Context is begin pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop + -- Load each single-precision FP register. Asm("flw f" & Reg'Image & ", " & (Reg * 4)'Image & "(%0)", Inputs => System.Address'Asm_Input("r", FP_Ptr), Volatile => True); @@ -261,6 +276,7 @@ package body Arch.Context is begin pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop + -- Save each double-precision FP register. Asm("fsd f" & Reg'Image & ", " & (Reg * 8)'Image & "(%0)", Inputs => System.Address'Asm_Input("r", FP_Ptr), Volatile => True); @@ -276,6 +292,7 @@ package body Arch.Context is begin pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop + -- Load each double-precision FP register. Asm("fld f" & Reg'Image & ", " & (Reg * 8)'Image & "(%0)", Inputs => System.Address'Asm_Input("r", FP_Ptr), Volatile => True); @@ -300,6 +317,7 @@ package body Arch.Context is FP_Save_Routine := FP_Save_Routine_Type'(FP_Save_NoOp'Access); FP_Load_Routine := FP_Load_Routine_Type'(FP_Load_NoOp'Access); end if; + -- Assert FP routines are properly set. pragma Assert(FP_Save_Routine /= null and FP_Load_Routine /= null, "FP dispatch routines must be set"); end Setup_FP_Routines; From e7e6ec5eaeda03fbd29b607b90b9a40d695e49e1 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 14:19:08 -0500 Subject: [PATCH 91/99] added more comments explaining asserts and specific code blocks --- source/arch/riscv64-limine/arch-context.adb | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/source/arch/riscv64-limine/arch-context.adb b/source/arch/riscv64-limine/arch-context.adb index c917975..094e737 100644 --- a/source/arch/riscv64-limine/arch-context.adb +++ b/source/arch/riscv64-limine/arch-context.adb @@ -66,6 +66,7 @@ package body Arch.Context is Stack_Int : Integer := To_Integer(Stack); Start_Int : Integer := To_Integer(Start_Addr); begin + -- Verify that the stack and start addresses are valid. pragma Assume(Stack /= System.Null_Address and Start_Addr /= System.Null_Address); pragma Assert(Stack_Int mod 16 = 0, "Stack address must be 16-byte aligned"); pragma Assert(Start_Int /= 0, "Start address must be nonzero"); @@ -79,6 +80,7 @@ package body Arch.Context is -- Convert internal context representation to external frame. Ctx := To_Frame(Ctx_Impl); + -- Validate that critical registers are properly set. pragma Assert(Ctx.R2 = Unsigned_32(Stack_Int and 16#FFFFFFFF#), "Stack pointer correctly set"); pragma Assert(Ctx.R10 = 0, "Initial fork return value must be zero"); end Init_GP_Context; @@ -115,10 +117,12 @@ package body Arch.Context is Ctx_Impl : GP_Context_Type := To_GP_Context_Type(Ctx); Old_SEPC : Unsigned_64 := Ctx_Impl.SEPC; begin + -- Set the a0 return register and advance the SEPC for the forked process. Ctx_Impl.A0 := 0; Ctx_Impl.SEPC := Ctx_Impl.SEPC + 4; -- Advance by one instruction. Ctx := To_Frame(Ctx_Impl); + -- Validate that the forked process has the correct return value and SEPC. pragma Assert(Ctx.R10 = 0, "Forked process must return zero"); pragma Assert(Ctx_Impl.SEPC > Old_SEPC, "SEPC should have advanced"); end Success_Fork_Result; @@ -129,10 +133,12 @@ package body Arch.Context is -- Map current hart ID to a 1-based index in Core_Locals. Core_Index : constant Positive := Positive(Integer(Current_Hart) + 1); begin + -- Validate that the core index is within bounds. pragma Assert(Core_Index <= Core_Count, "Core index out of bounds"); -- Save the entire per-core state from Core_Locals. Ctx := Core_Locals(Core_Index); + -- Validate that the saved core context has saved the correct core. pragma Assert(Ctx.Hart_ID = Current_Hart, "Saved core context must have the current hart ID"); pragma Assert(Ctx.Number = Core_Index, "Saved core context must have the correct core number"); end Save_Core_Context; @@ -147,10 +153,12 @@ package body Arch.Context is procedure Init_FP_Context(Ctx : out FP_Context) is begin Ctx := (others => 0); + -- Assert that the FP context is zeroed after initialization. pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, "FP context must be zeroed at init"); Setup_FP_Routines; FP_Save_Routine.all(Ctx); + -- Assert that the FP context is zeroed after the save routine. pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, "FP context should remain zero after Init_FP_Context"); end Init_FP_Context; @@ -171,6 +179,7 @@ package body Arch.Context is procedure Destroy_FP_Context(Ctx : in out FP_Context) is begin Ctx := (others => 0); + -- Assert that the FP context is zeroed after destruction. pragma Assert(for all I in FP_Context'Range => Ctx(I) = 0, "FP context successfully destroyed"); end Destroy_FP_Context; @@ -188,8 +197,10 @@ package body Arch.Context is -- Convert a GP_Context_Type record to a GP_Context record function To_Frame(Ctx : GP_Context_Type) return GP_Context is + -- Tell compiler to inline this function. pragma Inline; begin + -- Assert that the register values are within bounds. pragma Assert(Ctx.SP <= 16#FFFFFFFF#, "Internal SP exceeds 32 bits"); pragma Assert(Ctx.A0 <= 16#FFFFFFFF#, "Internal A0 exceeds 32 bits"); return ( @@ -201,8 +212,10 @@ package body Arch.Context is -- Convert a GP_Context record to a GP_Context_Type record function To_GP_Context_Type(Frame : GP_Context) return GP_Context_Type is + -- Tell compiler to inline this function. pragma Inline; begin + -- Assert that the register values are within bounds. pragma Assert(Frame.R2 <= 16#FFFFFFFF#, "Frame.R2 invalid"); pragma Assert(Frame.R10 <= 16#FFFFFFFF#, "Frame.R10 invalid"); return ( @@ -241,6 +254,7 @@ package body Arch.Context is procedure Save_FP_Context_F(Ctx : in out FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin + -- Assert that the FP context pointer is not null. pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop -- Save each single-precision FP register. @@ -258,6 +272,7 @@ package body Arch.Context is procedure Load_FP_Context_F(Ctx : FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin + -- Assert that the FP context pointer is not null. pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop -- Load each single-precision FP register. @@ -274,6 +289,7 @@ package body Arch.Context is procedure Save_FP_Context_D(Ctx : in out FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin + -- Assert that the FP context pointer is not null. pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop -- Save each double-precision FP register. @@ -290,6 +306,7 @@ package body Arch.Context is procedure Load_FP_Context_D(Ctx : FP_Context) is FP_Ptr : System.Address := FP_Context'Address(Ctx); begin + -- Assert that the FP context pointer is not null. pragma Assert(FP_Ptr /= System.Null_Address, "FP context pointer must not be null"); for Reg in 0 .. 31 loop -- Load each double-precision FP register. @@ -305,6 +322,7 @@ package body Arch.Context is -- Set the FP save and load routines based on the MISA register procedure Setup_FP_Routines is begin + -- Set the FP save and load routines based on the MISA register. if (MISA_Value and F_Extension_Bit) /= 0 then if (MISA_Value and D_Extension_Bit) /= 0 then FP_Save_Routine := FP_Save_Routine_Type'(Save_FP_Context_D'Access); @@ -318,8 +336,7 @@ package body Arch.Context is FP_Load_Routine := FP_Load_Routine_Type'(FP_Load_NoOp'Access); end if; -- Assert FP routines are properly set. - pragma Assert(FP_Save_Routine /= null and FP_Load_Routine /= null, - "FP dispatch routines must be set"); + pragma Assert(FP_Save_Routine /= null and FP_Load_Routine /= null, "FP dispatch routines must be set"); end Setup_FP_Routines; ------------------------------------------ From f8771a5e276ed0e920fe9315eff994cf14062e28 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 15:01:25 -0500 Subject: [PATCH 92/99] Trying to get AUnit tests to work --- source/tests/riscv64/arch_rv64_test_suite.adb | 1 - source/tests/riscv64/csr_extension_tests.adb | 2 +- source/tests/riscv64/gp_context_tests.adb | 18 +++++++++ source/tests/riscv64/gp_context_tests.ads | 3 +- source/tests/riscv64/stubs.adb | 23 +++++++++++ source/tests/riscv64/stubs.ads | 19 ++++++++++ .../riscv64/success_fork_result_tests.adb | 38 +++++++++---------- .../riscv64/success_fork_result_tests.ads | 9 +++-- 8 files changed, 85 insertions(+), 28 deletions(-) create mode 100644 source/tests/riscv64/stubs.adb create mode 100644 source/tests/riscv64/stubs.ads diff --git a/source/tests/riscv64/arch_rv64_test_suite.adb b/source/tests/riscv64/arch_rv64_test_suite.adb index 68079df..0e14d4e 100644 --- a/source/tests/riscv64/arch_rv64_test_suite.adb +++ b/source/tests/riscv64/arch_rv64_test_suite.adb @@ -1,6 +1,5 @@ with AUnit.Test_Suites; with Context_Test_Suite; - package body Arch_RV64_Test_Suite is function Suite return AUnit.Test_Suites.Access_Test_Suite is begin diff --git a/source/tests/riscv64/csr_extension_tests.adb b/source/tests/riscv64/csr_extension_tests.adb index 875de92..f63f32d 100644 --- a/source/tests/riscv64/csr_extension_tests.adb +++ b/source/tests/riscv64/csr_extension_tests.adb @@ -3,7 +3,7 @@ with AUnit.Test_Cases.Registration; use AUnit.Test_Cases.Registration; with Arch.Context; use Arch.Context; with AUnit; use AUnit; with AUnit.Test_Cases; use AUnit.Test_Cases; - +with Test.Stubs; use Test.Stubs; -- Using our stub for Has_Extension package body CSR_Extension_Tests is procedure Test_MISA_Value (T : in out Test_Case'Class) is diff --git a/source/tests/riscv64/gp_context_tests.adb b/source/tests/riscv64/gp_context_tests.adb index 2cc7028..a5587b4 100644 --- a/source/tests/riscv64/gp_context_tests.adb +++ b/source/tests/riscv64/gp_context_tests.adb @@ -65,12 +65,30 @@ package body GP_Context_Tests is Check_Equal(0, Internal.A0, "A0 should be initialized to zero"); end Test_Init_GP_Context; + -- Test verifying fork success behavior. + procedure Test_Success_Fork_Result (T : in out Test_Case'Class) is + Ctx : Arch.Context.GP_Context; + Stack : System.Address := Memory.Physical.Alloc(4096); + Dummy_Start : constant System.Address := System.Address'Value(16#5000#); + Internal : Arch.Context.GP_Context_Type; + Old_SEPC : Unsigned_64; + begin + Arch.Context.Init_GP_Context(Ctx, Stack, Dummy_Start); + Internal := Arch.Context.To_GP_Context_Type(Ctx); + Old_SEPC := Internal.SEPC; + Arch.Context.Success_Fork_Result(Ctx); + Internal := Arch.Context.To_GP_Context_Type(Ctx); + Check_Equal(0, Internal.A0, "A0 should be set to 0 by Success_Fork_Result"); + Check_True(Internal.SEPC > Old_SEPC, "SEPC should be advanced after Success_Fork_Result"); + end Test_Success_Fork_Result; + overriding procedure Register_Tests (T : in out GP_Context_Test) is use AUnit.Test_Cases.Registration; begin Register_Routine(T, Test_To_GP_Context_Type'Access, "Test_To_GP_Context_Type"); Register_Routine(T, Test_To_Frame'Access, "Test_To_Frame"); Register_Routine(T, Test_Init_GP_Context'Access, "Test_Init_GP_Context"); + Register_Routine(T, Test_Success_Fork_Result'Access, "Test_Success_Fork_Result"); end Register_Tests; overriding function Name (T : GP_Context_Test) return Message_String is diff --git a/source/tests/riscv64/gp_context_tests.ads b/source/tests/riscv64/gp_context_tests.ads index c51d4d3..b71b02f 100644 --- a/source/tests/riscv64/gp_context_tests.ads +++ b/source/tests/riscv64/gp_context_tests.ads @@ -3,7 +3,8 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package GP_Context_Tests is type GP_Context_Test is new Test_Cases.Test_Case with null record; - Test_Case : aliased GP_Context_Test := new GP_Context_Test'(Name => "GP_Context_Tests"); + Test_Case : aliased GP_Context_Test := + new GP_Context_Test'(Name => "GP_Context_Tests"); overriding procedure Register_Tests (T : in out GP_Context_Test); overriding function Name (T : GP_Context_Test) return Message_String; end GP_Context_Tests; diff --git a/source/tests/riscv64/stubs.adb b/source/tests/riscv64/stubs.adb new file mode 100644 index 0000000..3f3c678 --- /dev/null +++ b/source/tests/riscv64/stubs.adb @@ -0,0 +1,23 @@ +with Interfaces; +with System; +package body Test.Stubs is + + procedure Initialize_Core_Locals is + begin + for I in Core_Locals'Range loop + Core_Locals(I).User_Stack := System.Address'Value(16#1000# + I * 16#100#); + Core_Locals(I).Hart_ID := Interfaces.Unsigned_64(I - 1); + Core_Locals(I).Number := I; + end loop; + end Initialize_Core_Locals; + + function Has_Extension(Bit : Interfaces.Unsigned_64) return Boolean is + begin + -- For testing, assume that F (0x20) and D (0x40) extensions are supported. + if Bit = 16#20# or Bit = 16#40# then + return True; + else + return False; + end if; + end Has_Extension; +end Test.Stubs; diff --git a/source/tests/riscv64/stubs.ads b/source/tests/riscv64/stubs.ads new file mode 100644 index 0000000..cbc39b0 --- /dev/null +++ b/source/tests/riscv64/stubs.ads @@ -0,0 +1,19 @@ +with Interfaces; +with System; +package Test.Stubs is + type Core_Context_Record is record + User_Stack : System.Address; + Hart_ID : Interfaces.Unsigned_64; + Number : Positive; + end record; + + Core_Count : constant Positive := 4; + -- Simulated per-core local storage. + Core_Locals : array (Positive range 1 .. Core_Count) of Core_Context_Record; + + -- For testing, initialize Core_Locals with dummy values. + procedure Initialize_Core_Locals; + + -- Stub for FP extension detection. + function Has_Extension(Bit : Interfaces.Unsigned_64) return Boolean; +end Test.Stubs; diff --git a/source/tests/riscv64/success_fork_result_tests.adb b/source/tests/riscv64/success_fork_result_tests.adb index e202f76..c175d28 100644 --- a/source/tests/riscv64/success_fork_result_tests.adb +++ b/source/tests/riscv64/success_fork_result_tests.adb @@ -1,8 +1,6 @@ with AUnit.Assertions; use AUnit.Assertions; with AUnit.Test_Cases.Registration; use AUnit.Test_Cases.Registration; with Arch.Context; use Arch.Context; -with Arch.Interrupts; use Arch.Interrupts; -with Interfaces; use Interfaces; with Memory.Physical; with System; with AUnit; use AUnit; @@ -10,31 +8,29 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package body Success_Fork_Result_Tests is - procedure Test_Success_Fork (T : in out Test_Case'Class) is - Ctx : GP_Context; - Dummy_Stack : System.Address := Memory.Physical.Alloc(4096); - Dummy_Start : constant System.Address := System.Address'Value(16#30000#); - Old_Internal, New_Internal : GP_Context_Type; + procedure Test_Success_Fork_Result (T : in out Test_Case'Class) is + Ctx : Arch.Context.GP_Context; + Stack : System.Address := Memory.Physical.Alloc(4096); + Dummy_Start : constant System.Address := System.Address'Value(16#6000#); + Internal : Arch.Context.GP_Context_Type; + Old_SEPC : Unsigned_64; begin - Init_GP_Context(Ctx, Dummy_Stack, Dummy_Start); - Old_Internal := To_GP_Context_Type(Ctx); - Check_True(Old_Internal.SEPC /= 0, "Precondition: Old SEPC must be nonzero"); - - Success_Fork_Result(Ctx); - - New_Internal := To_GP_Context_Type(Ctx); - Check_Equal(0, New_Internal.A0, "Forked process should return 0 in A0"); - Check_Equal(Old_Internal.SEPC + 4, New_Internal.SEPC, - "SEPC should be advanced by 4 bytes after fork"); - end Test_Success_Fork; + Arch.Context.Init_GP_Context(Ctx, Stack, Dummy_Start); + Internal := Arch.Context.To_GP_Context_Type(Ctx); + Old_SEPC := Internal.SEPC; + Arch.Context.Success_Fork_Result(Ctx); + Internal := Arch.Context.To_GP_Context_Type(Ctx); + Check_Equal(0, Internal.A0, "A0 should be set to 0 by Success_Fork_Result"); + Check_True(Internal.SEPC > Old_SEPC, "SEPC should advance after Success_Fork_Result"); + end Test_Success_Fork_Result; - overriding procedure Register_Tests (T : in out Success_Fork_Test) is + overriding procedure Register_Tests (T : in out Success_Fork_Result_Test) is use AUnit.Test_Cases.Registration; begin - Register_Routine(T, Test_Success_Fork'Access, "Test_Success_Fork"); + Register_Routine(T, Test_Success_Fork_Result'Access, "Test_Success_Fork_Result"); end Register_Tests; - overriding function Name (T : Success_Fork_Test) return Message_String is + overriding function Name (T : Success_Fork_Result_Test) return Message_String is begin return "Success_Fork_Result_Tests"; end Name; diff --git a/source/tests/riscv64/success_fork_result_tests.ads b/source/tests/riscv64/success_fork_result_tests.ads index e2c902b..22b8ea7 100644 --- a/source/tests/riscv64/success_fork_result_tests.ads +++ b/source/tests/riscv64/success_fork_result_tests.ads @@ -2,8 +2,9 @@ with AUnit; use AUnit; with AUnit.Test_Cases; use AUnit.Test_Cases; package Success_Fork_Result_Tests is - type Success_Fork_Test is new Test_Cases.Test_Case with null record; - Test_Case : aliased Success_Fork_Test := new Success_Fork_Test'(Name => "Success_Fork_Result_Tests"); - overriding procedure Register_Tests (T : in out Success_Fork_Test); - overriding function Name (T : Success_Fork_Test) return Message_String; + type Success_Fork_Result_Test is new Test_Cases.Test_Case with null record; + Test_Case : aliased Success_Fork_Result_Test := + new Success_Fork_Result_Test'(Name => "Success_Fork_Result_Tests"); + overriding procedure Register_Tests (T : in out Success_Fork_Result_Test); + overriding function Name (T : Success_Fork_Result_Test) return Message_String; end Success_Fork_Result_Tests; From d324b52f0f9a77eb7932a1efb994ecf7d5b1f033 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 15:02:06 -0500 Subject: [PATCH 93/99] updated test harness to use stubs. --- source/tests/riscv64/test_harness.adb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/tests/riscv64/test_harness.adb b/source/tests/riscv64/test_harness.adb index 597156c..296ea96 100644 --- a/source/tests/riscv64/test_harness.adb +++ b/source/tests/riscv64/test_harness.adb @@ -2,11 +2,16 @@ with AUnit.Reporter.Text; with AUnit.Run; with Arch_RV64_Test_Suite; with Ada.Text_IO; +with Test.Stubs; use Test.Stubs; procedure Test_Harness is + -- Instantiate the test runner for the RISC-V context switch test suite. procedure Run is new AUnit.Run.Test_Runner(Arch_RV64_Test_Suite.Suite); Reporter : AUnit.Reporter.Text.Text_Reporter; begin + -- Initialize the test stubs so that Core_Locals and other hardware-dependent behaviors are simulated. + Initialize_Core_Locals; + Ada.Text_IO.Put_Line("Running RISC-V Context Switch Tests..."); Run(Reporter); end Test_Harness; From 292e625a46633566ecc36c6ea9ed8303fd028749 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 19:58:25 -0500 Subject: [PATCH 94/99] fixing stub package name --- source/tests/riscv64/stubs.adb | 2 +- source/tests/riscv64/stubs.ads | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/tests/riscv64/stubs.adb b/source/tests/riscv64/stubs.adb index 3f3c678..f39d6d3 100644 --- a/source/tests/riscv64/stubs.adb +++ b/source/tests/riscv64/stubs.adb @@ -1,6 +1,6 @@ with Interfaces; with System; -package body Test.Stubs is +package body Stubs is procedure Initialize_Core_Locals is begin diff --git a/source/tests/riscv64/stubs.ads b/source/tests/riscv64/stubs.ads index cbc39b0..9dcc511 100644 --- a/source/tests/riscv64/stubs.ads +++ b/source/tests/riscv64/stubs.ads @@ -1,6 +1,6 @@ with Interfaces; with System; -package Test.Stubs is +package Stubs is type Core_Context_Record is record User_Stack : System.Address; Hart_ID : Interfaces.Unsigned_64; From c3842ca8dcc8c84a50069618be2fc4b972084e30 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 19:59:08 -0500 Subject: [PATCH 95/99] fixing package calling for stubs --- source/tests/riscv64/test_harness.adb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/tests/riscv64/test_harness.adb b/source/tests/riscv64/test_harness.adb index 296ea96..0e87300 100644 --- a/source/tests/riscv64/test_harness.adb +++ b/source/tests/riscv64/test_harness.adb @@ -2,7 +2,7 @@ with AUnit.Reporter.Text; with AUnit.Run; with Arch_RV64_Test_Suite; with Ada.Text_IO; -with Test.Stubs; use Test.Stubs; +with Stubs; use Stubs; procedure Test_Harness is -- Instantiate the test runner for the RISC-V context switch test suite. From 6a72fb2f686fc322f6aec1671f8f003a64767245 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Wed, 5 Mar 2025 20:00:27 -0500 Subject: [PATCH 96/99] fixing more syntax errors in stubs --- source/tests/riscv64/stubs.adb | 2 +- source/tests/riscv64/stubs.ads | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/tests/riscv64/stubs.adb b/source/tests/riscv64/stubs.adb index f39d6d3..f79f012 100644 --- a/source/tests/riscv64/stubs.adb +++ b/source/tests/riscv64/stubs.adb @@ -20,4 +20,4 @@ package body Stubs is return False; end if; end Has_Extension; -end Test.Stubs; +end Stubs; diff --git a/source/tests/riscv64/stubs.ads b/source/tests/riscv64/stubs.ads index 9dcc511..b2d4903 100644 --- a/source/tests/riscv64/stubs.ads +++ b/source/tests/riscv64/stubs.ads @@ -16,4 +16,4 @@ package Stubs is -- Stub for FP extension detection. function Has_Extension(Bit : Interfaces.Unsigned_64) return Boolean; -end Test.Stubs; +end Stubs; From a35a94a6634250828ff963a35f8837f4d872e5c5 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Thu, 6 Mar 2025 08:39:28 -0500 Subject: [PATCH 97/99] fixing errors with stubs.ads and adb --- source/tests/riscv64/stubs.adb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/source/tests/riscv64/stubs.adb b/source/tests/riscv64/stubs.adb index f79f012..60e06df 100644 --- a/source/tests/riscv64/stubs.adb +++ b/source/tests/riscv64/stubs.adb @@ -1,17 +1,21 @@ with Interfaces; with System; +with System.Storage_Elements; use System.Storage_Elements; + package body Stubs is procedure Initialize_Core_Locals is begin for I in Core_Locals'Range loop - Core_Locals(I).User_Stack := System.Address'Value(16#1000# + I * 16#100#); - Core_Locals(I).Hart_ID := Interfaces.Unsigned_64(I - 1); + -- Convert the numeric value to an address using To_Address. + Core_Locals(I).User_Stack := To_Address(16#1000# + I * 16#100#); + -- With "use Interfaces;" the conversion operator for Unsigned_64 is now visible. + Core_Locals(I).Hart_ID := Unsigned_64(I - 1); Core_Locals(I).Number := I; end loop; end Initialize_Core_Locals; - function Has_Extension(Bit : Interfaces.Unsigned_64) return Boolean is + function Has_Extension(Bit : Unsigned_64) return Boolean is begin -- For testing, assume that F (0x20) and D (0x40) extensions are supported. if Bit = 16#20# or Bit = 16#40# then From 4e33473b1cc257164108fb7fa8bd9076bb78925e Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Thu, 6 Mar 2025 08:43:52 -0500 Subject: [PATCH 98/99] still trying to fix stubs package --- source/tests/riscv64/stubs.adb | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/source/tests/riscv64/stubs.adb b/source/tests/riscv64/stubs.adb index 60e06df..ff098b5 100644 --- a/source/tests/riscv64/stubs.adb +++ b/source/tests/riscv64/stubs.adb @@ -7,18 +7,22 @@ package body Stubs is procedure Initialize_Core_Locals is begin for I in Core_Locals'Range loop - -- Convert the numeric value to an address using To_Address. - Core_Locals(I).User_Stack := To_Address(16#1000# + I * 16#100#); - -- With "use Interfaces;" the conversion operator for Unsigned_64 is now visible. - Core_Locals(I).Hart_ID := Unsigned_64(I - 1); - Core_Locals(I).Number := I; + declare + -- Convert the integer expression to type Integer_Address. + A : Integer_Address := Integer_Address(16#1000# + I * 16#100#); + begin + Core_Locals(I).User_Stack := To_Address(A); + end; + -- Explicitly convert to Unsigned_64. + Core_Locals(I).Hart_ID := Unsigned_64(I - 1); + Core_Locals(I).Number := I; end loop; end Initialize_Core_Locals; function Has_Extension(Bit : Unsigned_64) return Boolean is begin - -- For testing, assume that F (0x20) and D (0x40) extensions are supported. - if Bit = 16#20# or Bit = 16#40# then + -- Convert numeric literals to Unsigned_64 to match the type of Bit. + if Bit = Unsigned_64(16#20#) or Bit = Unsigned_64(16#40#) then return True; else return False; From 103270056b94bf0bef6daf23dfaec6bb237bde03 Mon Sep 17 00:00:00 2001 From: "Sean C. Weeks" <112424278+scweeks@users.noreply.github.com> Date: Thu, 6 Mar 2025 18:29:15 -0500 Subject: [PATCH 99/99] tryign to fix AUnit tests --- source/tests/riscv64/arch_rv64_test_suite.adb | 1 + source/tests/riscv64/context_test_suite.adb | 11 ++++++----- source/tests/riscv64/core_context_tests.ads | 6 +++--- source/tests/riscv64/csr_extension_tests.adb | 4 ++-- source/tests/riscv64/csr_extension_tests.ads | 6 +++--- source/tests/riscv64/fp_context_tests.adb | 2 +- source/tests/riscv64/fp_context_tests.ads | 6 +++--- source/tests/riscv64/gp_context_tests.adb | 3 +-- source/tests/riscv64/gp_context_tests.ads | 8 ++++---- source/tests/riscv64/stubs.adb | 17 +++++++++++------ .../tests/riscv64/success_fork_result_tests.adb | 2 +- .../tests/riscv64/success_fork_result_tests.ads | 6 ++---- source/tests/riscv64/test_harness.adb | 3 +-- 13 files changed, 39 insertions(+), 36 deletions(-) diff --git a/source/tests/riscv64/arch_rv64_test_suite.adb b/source/tests/riscv64/arch_rv64_test_suite.adb index 0e14d4e..68079df 100644 --- a/source/tests/riscv64/arch_rv64_test_suite.adb +++ b/source/tests/riscv64/arch_rv64_test_suite.adb @@ -1,5 +1,6 @@ with AUnit.Test_Suites; with Context_Test_Suite; + package body Arch_RV64_Test_Suite is function Suite return AUnit.Test_Suites.Access_Test_Suite is begin diff --git a/source/tests/riscv64/context_test_suite.adb b/source/tests/riscv64/context_test_suite.adb index 6a5a0ba..8d007a1 100644 --- a/source/tests/riscv64/context_test_suite.adb +++ b/source/tests/riscv64/context_test_suite.adb @@ -9,11 +9,12 @@ package body Context_Test_Suite is function Suite return AUnit.Test_Suites.Access_Test_Suite is Result : AUnit.Test_Suites.Access_Test_Suite := AUnit.Test_Suites.New_Suite; begin - Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(GP_Context_Tests.Test_Case'Access)); - Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(CSR_Extension_Tests.Test_Case'Access)); - Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(FP_Context_Tests.Test_Case'Access)); - Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(Core_Context_Tests.Test_Case'Access)); - Result.Add_Test(AUnit.Test_Suites.Access_Test_Suite(Success_Fork_Result_Tests.Test_Case'Access)); + -- Simply add the test cases without any extra conversion. + Result.Add_Test(GP_Context_Tests.Test_Case'Access); + Result.Add_Test(CSR_Extension_Tests.Test_Case'Access); + Result.Add_Test(FP_Context_Tests.Test_Case'Access); + Result.Add_Test(Core_Context_Tests.Test_Case'Access); + Result.Add_Test(Success_Fork_Result_Tests.Test_Case'Access); return Result; end Suite; diff --git a/source/tests/riscv64/core_context_tests.ads b/source/tests/riscv64/core_context_tests.ads index c829a8f..da14587 100644 --- a/source/tests/riscv64/core_context_tests.ads +++ b/source/tests/riscv64/core_context_tests.ads @@ -3,7 +3,7 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package Core_Context_Tests is type Core_Context_Test is new Test_Cases.Test_Case with null record; - Test_Case : aliased Core_Context_Test := new Core_Context_Test'(Name => "Core_Context_Tests"); - overriding procedure Register_Tests (T : in out Core_Context_Test); - overriding function Name (T : Core_Context_Test) return Message_String; + overriding function Name (T : Core_Context_Test) return Test_String; + procedure Register_Tests (T : in out Core_Context_Test); + Test_Case : constant access Core_Context_Test := new Core_Context_Test'(Name => "Core_Context_Tests"); end Core_Context_Tests; diff --git a/source/tests/riscv64/csr_extension_tests.adb b/source/tests/riscv64/csr_extension_tests.adb index f63f32d..230bf5e 100644 --- a/source/tests/riscv64/csr_extension_tests.adb +++ b/source/tests/riscv64/csr_extension_tests.adb @@ -3,7 +3,7 @@ with AUnit.Test_Cases.Registration; use AUnit.Test_Cases.Registration; with Arch.Context; use Arch.Context; with AUnit; use AUnit; with AUnit.Test_Cases; use AUnit.Test_Cases; -with Test.Stubs; use Test.Stubs; -- Using our stub for Has_Extension +with Test.Stubs; use Test.Stubs; package body CSR_Extension_Tests is procedure Test_MISA_Value (T : in out Test_Case'Class) is @@ -26,7 +26,7 @@ package body CSR_Extension_Tests is end if; end Test_FP_Extension_Bits; - overriding procedure Register_Tests (T : in out CSR_Extension_Test) is + procedure Register_Tests (T : in out CSR_Extension_Test) is use AUnit.Test_Cases.Registration; begin Register_Routine(T, Test_MISA_Value'Access, "Test_MISA_Value"); diff --git a/source/tests/riscv64/csr_extension_tests.ads b/source/tests/riscv64/csr_extension_tests.ads index be828d1..63aee34 100644 --- a/source/tests/riscv64/csr_extension_tests.ads +++ b/source/tests/riscv64/csr_extension_tests.ads @@ -3,7 +3,7 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package CSR_Extension_Tests is type CSR_Extension_Test is new Test_Cases.Test_Case with null record; - Test_Case : aliased CSR_Extension_Test := new CSR_Extension_Test'(Name => "CSR_Extension_Tests"); - overriding procedure Register_Tests (T : in out CSR_Extension_Test); - overriding function Name (T : CSR_Extension_Test) return Message_String; + overriding function Name (T : CSR_Extension_Test) return Test_String; + procedure Register_Tests (T : in out CSR_Extension_Test); + Test_Case : constant access CSR_Extension_Test := new CSR_Extension_Test'(Name => "CSR_Extension_Tests"); end CSR_Extension_Tests; diff --git a/source/tests/riscv64/fp_context_tests.adb b/source/tests/riscv64/fp_context_tests.adb index ab3018f..b1abaea 100644 --- a/source/tests/riscv64/fp_context_tests.adb +++ b/source/tests/riscv64/fp_context_tests.adb @@ -37,7 +37,7 @@ package body FP_Context_Tests is Check_True(FP_Load_Routine /= null, "FP_Load_Routine must not be null"); end Test_FP_Dispatch; - overriding procedure Register_Tests (T : in out FP_Context_Test) is + procedure Register_Tests (T : in out FP_Context_Test) is use AUnit.Test_Cases.Registration; begin Register_Routine(T, Test_Init_FP_Context'Access, "Test_Init_FP_Context"); diff --git a/source/tests/riscv64/fp_context_tests.ads b/source/tests/riscv64/fp_context_tests.ads index dc29485..5afe3e1 100644 --- a/source/tests/riscv64/fp_context_tests.ads +++ b/source/tests/riscv64/fp_context_tests.ads @@ -3,7 +3,7 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package FP_Context_Tests is type FP_Context_Test is new Test_Cases.Test_Case with null record; - Test_Case : aliased FP_Context_Test := new FP_Context_Test'(Name => "FP_Context_Tests"); - overriding procedure Register_Tests (T : in out FP_Context_Test); - overriding function Name (T : FP_Context_Test) return Message_String; + overriding function Name (T : FP_Context_Test) return Test_String; + procedure Register_Tests (T : in out FP_Context_Test); + Test_Case : constant access FP_Context_Test := new FP_Context_Test'(Name => "FP_Context_Tests"); end FP_Context_Tests; diff --git a/source/tests/riscv64/gp_context_tests.adb b/source/tests/riscv64/gp_context_tests.adb index a5587b4..01081fe 100644 --- a/source/tests/riscv64/gp_context_tests.adb +++ b/source/tests/riscv64/gp_context_tests.adb @@ -65,7 +65,6 @@ package body GP_Context_Tests is Check_Equal(0, Internal.A0, "A0 should be initialized to zero"); end Test_Init_GP_Context; - -- Test verifying fork success behavior. procedure Test_Success_Fork_Result (T : in out Test_Case'Class) is Ctx : Arch.Context.GP_Context; Stack : System.Address := Memory.Physical.Alloc(4096); @@ -82,7 +81,7 @@ package body GP_Context_Tests is Check_True(Internal.SEPC > Old_SEPC, "SEPC should be advanced after Success_Fork_Result"); end Test_Success_Fork_Result; - overriding procedure Register_Tests (T : in out GP_Context_Test) is + procedure Register_Tests (T : in out GP_Context_Test) is use AUnit.Test_Cases.Registration; begin Register_Routine(T, Test_To_GP_Context_Type'Access, "Test_To_GP_Context_Type"); diff --git a/source/tests/riscv64/gp_context_tests.ads b/source/tests/riscv64/gp_context_tests.ads index b71b02f..b93ac3f 100644 --- a/source/tests/riscv64/gp_context_tests.ads +++ b/source/tests/riscv64/gp_context_tests.ads @@ -3,8 +3,8 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package GP_Context_Tests is type GP_Context_Test is new Test_Cases.Test_Case with null record; - Test_Case : aliased GP_Context_Test := - new GP_Context_Test'(Name => "GP_Context_Tests"); - overriding procedure Register_Tests (T : in out GP_Context_Test); - overriding function Name (T : GP_Context_Test) return Message_String; + overriding function Name (T : GP_Context_Test) return Test_String; + procedure Register_Tests (T : in out GP_Context_Test); + -- Changed from an aliased object to a constant access object. + Test_Case : constant access GP_Context_Test := new GP_Context_Test'(Name => "GP_Context_Tests"); end GP_Context_Tests; diff --git a/source/tests/riscv64/stubs.adb b/source/tests/riscv64/stubs.adb index ff098b5..bf78715 100644 --- a/source/tests/riscv64/stubs.adb +++ b/source/tests/riscv64/stubs.adb @@ -8,21 +8,26 @@ package body Stubs is begin for I in Core_Locals'Range loop declare - -- Convert the integer expression to type Integer_Address. A : Integer_Address := Integer_Address(16#1000# + I * 16#100#); begin Core_Locals(I).User_Stack := To_Address(A); end; - -- Explicitly convert to Unsigned_64. - Core_Locals(I).Hart_ID := Unsigned_64(I - 1); + Core_Locals(I).Hart_ID := Interfaces.Unsigned_64(I - 1); Core_Locals(I).Number := I; end loop; end Initialize_Core_Locals; - function Has_Extension(Bit : Unsigned_64) return Boolean is + function Eq_U64(L, R : Interfaces.Unsigned_64) return Boolean is begin - -- Convert numeric literals to Unsigned_64 to match the type of Bit. - if Bit = Unsigned_64(16#20#) or Bit = Unsigned_64(16#40#) then + -- Compare via the 'Image attribute. + return L'Image = R'Image; + end Eq_U64; + + function Has_Extension(Bit : Interfaces.Unsigned_64) return Boolean is + begin + if Eq_U64(Bit, Interfaces.Unsigned_64(16#20#)) or else + Eq_U64(Bit, Interfaces.Unsigned_64(16#40#)) + then return True; else return False; diff --git a/source/tests/riscv64/success_fork_result_tests.adb b/source/tests/riscv64/success_fork_result_tests.adb index c175d28..fba3161 100644 --- a/source/tests/riscv64/success_fork_result_tests.adb +++ b/source/tests/riscv64/success_fork_result_tests.adb @@ -30,7 +30,7 @@ package body Success_Fork_Result_Tests is Register_Routine(T, Test_Success_Fork_Result'Access, "Test_Success_Fork_Result"); end Register_Tests; - overriding function Name (T : Success_Fork_Result_Test) return Message_String is + overriding function Name (T : Success_Fork_Result_Test) return Test_String is begin return "Success_Fork_Result_Tests"; end Name; diff --git a/source/tests/riscv64/success_fork_result_tests.ads b/source/tests/riscv64/success_fork_result_tests.ads index 22b8ea7..6d4d0d7 100644 --- a/source/tests/riscv64/success_fork_result_tests.ads +++ b/source/tests/riscv64/success_fork_result_tests.ads @@ -3,8 +3,6 @@ with AUnit.Test_Cases; use AUnit.Test_Cases; package Success_Fork_Result_Tests is type Success_Fork_Result_Test is new Test_Cases.Test_Case with null record; - Test_Case : aliased Success_Fork_Result_Test := - new Success_Fork_Result_Test'(Name => "Success_Fork_Result_Tests"); - overriding procedure Register_Tests (T : in out Success_Fork_Result_Test); - overriding function Name (T : Success_Fork_Result_Test) return Message_String; + Test_Case : Success_Fork_Result_Test := new Success_Fork_Result_Test; + procedure Register_Tests (T : in out Success_Fork_Result_Test); end Success_Fork_Result_Tests; diff --git a/source/tests/riscv64/test_harness.adb b/source/tests/riscv64/test_harness.adb index 0e87300..4ac1083 100644 --- a/source/tests/riscv64/test_harness.adb +++ b/source/tests/riscv64/test_harness.adb @@ -5,11 +5,10 @@ with Ada.Text_IO; with Stubs; use Stubs; procedure Test_Harness is - -- Instantiate the test runner for the RISC-V context switch test suite. procedure Run is new AUnit.Run.Test_Runner(Arch_RV64_Test_Suite.Suite); Reporter : AUnit.Reporter.Text.Text_Reporter; begin - -- Initialize the test stubs so that Core_Locals and other hardware-dependent behaviors are simulated. + -- Initialize test stubs. Initialize_Core_Locals; Ada.Text_IO.Put_Line("Running RISC-V Context Switch Tests...");