From f056ae4c365112c0017963386e301e65fab48700 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Mon, 21 Dec 2009 11:26:48 +0000 Subject: [PATCH] - Workaround build on native ppc64 host. - More RHEL-5 compatibility updates. - Disable warning messages new for gdb-6.8+ for RHEL-5 backward compatibility. - Workaround RHEL-5 kernels for detaching SIGSTOPped processes (BZ 498595). - Serialize the testsuite output to keep the order for regression checks. - Re-enable python for all non-ppc* arches. - More gcc44 stack exceptions when running the testsuite on RHEL-5. - Fix backward compatibility with G++ 4.1 namespaces "::". - Fix regression on re-setting the single ppc watchpoint slot. - Update snapshot of FSF gdb-7.0.x branch. - Backport fix of dcache invalidation locking up GDB on ppc64 targets. --- gdb-7.0-upstream.patch | 2942 ++++++++++++++++++++++++++--- gdb-empty-namespace.patch | 204 ++ gdb-ppc-hw-watchpoint-twice.patch | 21 + gdb-rhel5-compat.patch | 43 + gdb-rhel5-fortran44.patch | 189 -- gdb-rhel5-gcc44.patch | 405 ++++ gdb.spec | 46 +- 7 files changed, 3444 insertions(+), 406 deletions(-) create mode 100644 gdb-empty-namespace.patch create mode 100755 gdb-ppc-hw-watchpoint-twice.patch create mode 100644 gdb-rhel5-compat.patch delete mode 100644 gdb-rhel5-fortran44.patch create mode 100644 gdb-rhel5-gcc44.patch diff --git a/gdb-7.0-upstream.patch b/gdb-7.0-upstream.patch index 0f86381..a431404 100644 --- a/gdb-7.0-upstream.patch +++ b/gdb-7.0-upstream.patch @@ -1,6 +1,1019 @@ -### ./gdb/ChangeLog 6 Oct 2009 16:32:30 -0000 1.10874.2.46 -### ./gdb/ChangeLog 22 Oct 2009 20:31:36 -0000 1.10874.2.52 -## -1,3 +1,33 @@ +--- a/gdb/COPYING ++++ b/gdb/COPYING +@@ -1,286 +1,626 @@ +- GNU GENERAL PUBLIC LICENSE +- Version 2, June 1991 ++ GNU GENERAL PUBLIC LICENSE ++ Version 3, 29 June 2007 + +- Copyright (C) 1989, 1991 Free Software Foundation, Inc. +- 51 Franklin Street, Fifth Floor, +- Boston, MA 02110-1301, USA ++ 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 ++ Preamble + +- The licenses for most software are designed to take away your +-freedom to share and change it. By contrast, the GNU General Public +-License is intended to guarantee your freedom to share and change free +-software--to make sure the software is free for all its users. This +-General Public License applies to most of the Free Software +-Foundation's software and to any other program whose authors commit to +-using it. (Some other Free Software Foundation software is covered by +-the GNU Library General Public License instead.) You can apply it to ++ 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 +-this service 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. ++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 make restrictions that forbid +-anyone to deny you these rights or to ask you to surrender the rights. +-These restrictions translate to certain responsibilities for you if you +-distribute copies of the software, or if you modify it. ++ 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 give the recipients all the rights that +-you have. 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. +- +- We protect your rights with two steps: (1) copyright the software, and +-(2) offer you this license which gives you legal permission to copy, +-distribute and/or modify the software. +- +- Also, for each author's protection and ours, we want to make certain +-that everyone understands that there is no warranty for this free +-software. If the software is modified by someone else and passed on, we +-want its recipients to know that what they have is not the original, so +-that any problems introduced by others will not reflect on the original +-authors' reputations. +- +- Finally, any free program is threatened constantly by software +-patents. We wish to avoid the danger that redistributors of a free +-program will individually obtain patent licenses, in effect making the +-program proprietary. To prevent this, we have made it clear that any +-patent must be licensed for everyone's free use or not licensed at all. ++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. +- +- GNU GENERAL PUBLIC LICENSE +- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +- +- 0. This License applies to any program or other work which contains +-a notice placed by the copyright holder saying it may be distributed +-under the terms of this General Public License. The "Program", below, +-refers to any such program or work, and a "work based on the Program" +-means either the Program or any derivative work under copyright law: +-that is to say, a work containing the Program or a portion of it, +-either verbatim or with modifications and/or translated into another +-language. (Hereinafter, translation is included without limitation in +-the term "modification".) Each licensee is addressed as "you". +- +-Activities other than copying, distribution and modification are not +-covered by this License; they are outside its scope. The act of +-running the Program is not restricted, and the output from the Program +-is covered only if its contents constitute a work based on the +-Program (independent of having been made by running the Program). +-Whether that is true depends on what the Program does. +- +- 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +-notices that refer to this License and to the absence of any warranty; +-and give any other recipients of the Program a copy of this License +-along with the Program. +- +-You may charge a fee for the physical act of transferring a copy, and +-you may at your option offer warranty protection in exchange for a fee. +- +- 2. You may modify your copy or copies of the Program or any portion +-of it, thus forming a work based on the Program, and copy and +-distribute such modifications or work under the terms of Section 1 +-above, provided that you also meet all of these conditions: +- +- a) You must cause the modified files to carry prominent notices +- stating that you changed the files and the date of any change. +- +- b) You must cause any work that you distribute or publish, that in +- whole or in part contains or is derived from the Program or any +- part thereof, to be licensed as a whole at no charge to all third +- parties under the terms of this License. +- +- c) If the modified program normally reads commands interactively +- when run, you must cause it, when started running for such +- interactive use in the most ordinary way, to print or display an +- announcement including an appropriate copyright notice and a +- notice that there is no warranty (or else, saying that you provide +- a warranty) and that users may redistribute the program under +- these conditions, and telling the user how to view a copy of this +- License. (Exception: if the Program itself is interactive but +- does not normally print such an announcement, your work based on +- the Program is not required to print an announcement.) +- +-These requirements apply to the modified work as a whole. If +-identifiable sections of that work are not derived from the Program, +-and can be reasonably considered independent and separate works in +-themselves, then this License, and its terms, do not apply to those +-sections when you distribute them as separate works. But when you +-distribute the same sections as part of a whole which is a work based +-on the Program, the distribution of the whole must be on the terms of +-this License, whose permissions for other licensees extend to the +-entire whole, and thus to each and every part regardless of who wrote it. +- +-Thus, it is not the intent of this section to claim rights or contest +-your rights to work written entirely by you; rather, the intent is to +-exercise the right to control the distribution of derivative or +-collective works based on the Program. +- +-In addition, mere aggregation of another work not based on the Program +-with the Program (or with a work based on the Program) on a volume of +-a storage or distribution medium does not bring the other work under +-the scope of this License. +- +- 3. You may copy and distribute the Program (or a work based on it, +-under Section 2) in object code or executable form under the terms of +-Sections 1 and 2 above provided that you also do one of the following: +- +- a) Accompany it with the complete corresponding machine-readable +- source code, which must be distributed under the terms of Sections +- 1 and 2 above on a medium customarily used for software interchange; or, +- +- b) Accompany it with a written offer, valid for at least three +- years, to give any third party, for a charge no more than your +- cost of physically performing source distribution, a complete +- machine-readable copy of the corresponding source code, to be +- distributed under the terms of Sections 1 and 2 above on a medium +- customarily used for software interchange; or, +- +- c) Accompany it with the information you received as to the offer +- to distribute corresponding source code. (This alternative is +- allowed only for noncommercial distribution and only if you +- received the program in object code or executable form with such +- an offer, in accord with Subsection b above.) +- +-The source code for a work means the preferred form of the work for +-making modifications to it. For an executable work, complete source +-code means all the source code for all modules it contains, plus any +-associated interface definition files, plus the scripts used to +-control compilation and installation of the executable. However, as a +-special exception, the source code distributed need not include +-anything that is normally distributed (in either source or binary +-form) with the major components (compiler, kernel, and so on) of the +-operating system on which the executable runs, unless that component +-itself accompanies the executable. +- +-If distribution of executable or object code is made by offering +-access to copy from a designated place, then offering equivalent +-access to copy the source code from the same place counts as +-distribution of the source code, even though third parties are not +-compelled to copy the source along with the object code. +- +- 4. You may not copy, modify, sublicense, or distribute the Program +-except as expressly provided under this License. Any attempt +-otherwise to copy, modify, sublicense or distribute the Program is +-void, and will automatically terminate your rights under this License. +-However, parties who have received copies, or rights, from you under +-this License will not have their licenses terminated so long as such +-parties remain in full compliance. +- +- 5. You are not required to accept this License, since you have not +-signed it. However, nothing else grants you permission to modify or +-distribute the Program or its derivative works. These actions are +-prohibited by law if you do not accept this License. Therefore, by +-modifying or distributing the Program (or any work based on the +-Program), you indicate your acceptance of this License to do so, and +-all its terms and conditions for copying, distributing or modifying +-the Program or works based on it. +- +- 6. Each time you redistribute the Program (or any work based on the +-Program), the recipient automatically receives a license from the +-original licensor to copy, distribute or modify the Program subject to +-these terms and conditions. You may not impose any further +-restrictions on the recipients' exercise of the rights granted herein. +-You are not responsible for enforcing compliance by third parties to ++ ++ 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. + +- 7. If, as a consequence of a court judgment or allegation of patent +-infringement or for any other reason (not limited to patent issues), +-conditions are imposed on you (whether by court order, agreement or ++ 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 +-distribute so as to satisfy simultaneously your obligations under this +-License and any other pertinent obligations, then as a consequence you +-may not distribute the Program at all. For example, if a patent +-license would not permit royalty-free redistribution of the Program by +-all those who receive copies directly or indirectly through you, then +-the only way you could satisfy both it and this License would be to +-refrain entirely from distribution of the Program. +- +-If any portion of this section is held invalid or unenforceable under +-any particular circumstance, the balance of the section is intended to +-apply and the section as a whole is intended to apply in other +-circumstances. +- +-It is not the purpose of this section to induce you to infringe any +-patents or other property right claims or to contest validity of any +-such claims; this section has the sole purpose of protecting the +-integrity of the free software distribution system, which is +-implemented by public license practices. Many people have made +-generous contributions to the wide range of software distributed +-through that system in reliance on consistent application of that +-system; it is up to the author/donor to decide if he or she is willing +-to distribute software through any other system and a licensee cannot +-impose that choice. +- +-This section is intended to make thoroughly clear what is believed to +-be a consequence of the rest of this License. +- +- 8. If the distribution and/or use of the Program is restricted in +-certain countries either by patents or by copyrighted interfaces, the +-original copyright holder who places the Program under this License +-may add an explicit geographical distribution limitation excluding +-those countries, so that distribution is permitted only in or among +-countries not thus excluded. In such case, this License incorporates +-the limitation as if written in the body of this License. +- +- 9. The Free Software Foundation may publish revised and/or new versions +-of the General Public License from time to time. Such new versions will ++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 a version number of this License which applies to it and "any +-later version", you have the option of following the terms and conditions +-either of that version or of any later version published by the Free +-Software Foundation. If the Program does not specify a version number of +-this License, you may choose any version ever published by the Free Software +-Foundation. +- +- 10. If you wish to incorporate parts of the Program into other free +-programs whose distribution conditions are different, write to the author +-to ask for permission. For software which is copyrighted by the Free +-Software Foundation, write to the Free Software Foundation; we sometimes +-make exceptions for this. Our decision will be guided by the two goals +-of preserving the free status of all derivatives of our free software and +-of promoting the sharing and reuse of software generally. +- +- NO WARRANTY +- +- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. +- +- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +-REDISTRIBUTE 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. +- +- END OF TERMS AND CONDITIONS +- +- How to Apply These Terms to Your New Programs ++ 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 +@@ -288,15 +628,15 @@ 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 +-convey the exclusion of warranty; and each file should have at least ++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) 19yy ++ Copyright (C) + +- This program is free software; you can redistribute it and/or modify ++ 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 2 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, +@@ -305,38 +645,30 @@ the "copyright" line and a pointer to where the full notice is found. + 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, write to the Free Software +- Foundation, Inc., 51 Franklin Street, Fifth Floor, +- Boston, MA 02110-1301, USA +- ++ along with this program. If not, see . + + Also add information on how to contact you by electronic and paper mail. + +-If the program is interactive, make it output a short notice like this +-when it starts in an interactive mode: ++ If the program does terminal interaction, make it output a short ++notice like this when it starts in an interactive mode: + +- Gnomovision version 69, Copyright (C) 19yy name of author +- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. ++ 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, the commands you use may +-be called something other than `show w' and `show c'; they could even be +-mouse-clicks or menu items--whatever suits your program. +- +-You should also get your employer (if you work as a programmer) or your +-school, if any, to sign a "copyright disclaimer" for the program, if +-necessary. Here is a sample; alter the names: +- +- Yoyodyne, Inc., hereby disclaims all copyright interest in the program +- `Gnomovision' (which makes passes at compilers) written by James Hacker. +- +- , 1 April 1989 +- Ty Coon, President of Vice +- +-This 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 Library General +-Public License instead of this License. ++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 ++. +--- a/gdb/ChangeLog ++++ b/gdb/ChangeLog +@@ -1,3 +1,78 @@ ++2009-12-21 Joel Brobecker ++ ++ * COPYING: Update to GPL version 3. ++ ++2009-12-21 Doug Evans ++ ++ * dcache.c (dcache_block): Replace member newer with next,prev. ++ (dcache_struct): Delete member newest. ++ (block_func): New typedef. ++ (append_block, remove_block, for_each_block): New functions. ++ (invalidate_block, free_block): New functions. ++ (dcache_invalidate): Update ++ (dcache_invalidate_line, dcache_alloc): Update to use new list ++ accessors. ++ (dcache_free): Ditto. Fix memory leak. ++ ++2009-12-21 Joel Brobecker ++ ++ * completer.c (complete_line_internal): Make sure the command ++ completer is not NULL before calling it. ++ ++2009-12-20 Michael Snyder ++ ++ * amd64-tdep.c (amd64_epilogue_frame_cache): Fix buf size. ++ ++2009-11-23 Rainer Orth ++ ++ * dwarf2read.c [HAVE_MMAP] (MAP_FAILED): Define if missing. ++ ++2009-11-13 Ramana Radhakrishnan ++ ++ Backport from mainline. ++ 2009-07-28 Daniel Jacobowitz ++ ++ * arm-tdep.c (arm_push_dummy_call): Set the low bit of LR for ++ a Thumb entry point. ++ (thumb_get_next_pc): Handle Thumb-2 and ARM v6 instructions. ++ Refuse to single step into IT blocks. ++ ++ 2009-10-28 Daniel Jacobowitz ++ ++ Reported by Antti Hatala ++ * arm-tdep.c (thumb_get_next_pc): Limit check to IT instructions ++ correctly. ++ +2009-10-22 Paul Pluzhnikov + + PR gdb/10819 @@ -34,9 +1047,20 @@ 2009-10-06 Joel Brobecker * NEWS: Change "Changes since GDB 6.8" into "Changes in GDB 7.0". ---- ./gdb/amd64fbsd-nat.c 3 Jan 2009 05:57:50 -0000 1.22 -+++ ./gdb/amd64fbsd-nat.c 17 Oct 2009 04:19:19 -0000 1.22.4.1 -@@ -95,6 +95,7 @@ static int amd64fbsd32_r_reg_offset[I386 +--- a/gdb/amd64-tdep.c ++++ b/gdb/amd64-tdep.c +@@ -1925,7 +1925,7 @@ amd64_epilogue_frame_cache (struct frame_info *this_frame, void **this_cache) + struct gdbarch *gdbarch = get_frame_arch (this_frame); + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + struct amd64_frame_cache *cache; +- gdb_byte buf[4]; ++ gdb_byte buf[8]; + + if (*this_cache) + return *this_cache; +--- a/gdb/amd64fbsd-nat.c ++++ b/gdb/amd64fbsd-nat.c +@@ -95,6 +95,7 @@ static int amd64fbsd32_r_reg_offset[I386_NUM_GREGS] = #include #include @@ -44,7 +1068,7 @@ #include "bsd-kvm.h" -@@ -123,10 +124,12 @@ amd64fbsd_supply_pcb (struct regcache *r +@@ -123,10 +124,12 @@ amd64fbsd_supply_pcb (struct regcache *regcache, struct pcb *pcb) regcache_raw_supply (regcache, 13, &pcb->pcb_r13); regcache_raw_supply (regcache, 14, &pcb->pcb_r14); regcache_raw_supply (regcache, 15, &pcb->pcb_r15); @@ -57,9 +1081,1577 @@ return 1; } ---- ./gdb/dwarf2-frame.c 15 Sep 2009 16:20:53 -0000 1.99 -+++ ./gdb/dwarf2-frame.c 22 Oct 2009 20:31:36 -0000 1.99.2.1 -@@ -1525,6 +1525,14 @@ find_cie (struct dwarf2_cie_table *cie_t +--- a/gdb/arm-tdep.c ++++ b/gdb/arm-tdep.c +@@ -1627,7 +1627,8 @@ arm_push_dummy_call (struct gdbarch *gdbarch, struct value *function, + + /* Set the return address. For the ARM, the return breakpoint is + always at BP_ADDR. */ +- /* XXX Fix for Thumb. */ ++ if (arm_pc_is_thumb (bp_addr)) ++ bp_addr |= 1; + regcache_cooked_write_unsigned (regcache, ARM_LR_REGNUM, bp_addr); + + /* Walk through the list of args and determine how large a temporary +@@ -2263,9 +2264,43 @@ thumb_get_next_pc (struct frame_info *frame, CORE_ADDR pc) + unsigned short inst1; + CORE_ADDR nextpc = pc + 2; /* default is next instruction */ + unsigned long offset; ++ ULONGEST status, it; + + inst1 = read_memory_unsigned_integer (pc, 2, byte_order_for_code); + ++ /* Thumb-2 conditional execution support. There are eight bits in ++ the CPSR which describe conditional execution state. Once ++ reconstructed (they're in a funny order), the low five bits ++ describe the low bit of the condition for each instruction and ++ how many instructions remain. The high three bits describe the ++ base condition. One of the low four bits will be set if an IT ++ block is active. These bits read as zero on earlier ++ processors. */ ++ status = get_frame_register_unsigned (frame, ARM_PS_REGNUM); ++ it = ((status >> 8) & 0xfc) | ((status >> 25) & 0x3); ++ ++ /* On GNU/Linux, where this routine is used, we use an undefined ++ instruction as a breakpoint. Unlike BKPT, IT can disable execution ++ of the undefined instruction. So we might miss the breakpoint! */ ++ if (((inst1 & 0xff00) == 0xbf00 && (inst1 & 0x000f) != 0) || (it & 0x0f)) ++ error (_("Stepping through Thumb-2 IT blocks is not yet supported")); ++ ++ if (it & 0x0f) ++ { ++ /* We are in a conditional block. Check the condition. */ ++ int cond = it >> 4; ++ ++ if (! condition_true (cond, status)) ++ { ++ /* Advance to the next instruction. All the 32-bit ++ instructions share a common prefix. */ ++ if ((inst1 & 0xe000) == 0xe000 && (inst1 & 0x1800) != 0) ++ return pc + 4; ++ else ++ return pc + 2; ++ } ++ } ++ + if ((inst1 & 0xff00) == 0xbd00) /* pop {rlist, pc} */ + { + CORE_ADDR sp; +@@ -2281,7 +2316,6 @@ thumb_get_next_pc (struct frame_info *frame, CORE_ADDR pc) + } + else if ((inst1 & 0xf000) == 0xd000) /* conditional branch */ + { +- unsigned long status = get_frame_register_unsigned (frame, ARM_PS_REGNUM); + unsigned long cond = bits (inst1, 8, 11); + if (cond != 0x0f && condition_true (cond, status)) /* 0x0f = SWI */ + nextpc = pc_val + (sbits (inst1, 0, 7) << 1); +@@ -2290,15 +2324,166 @@ thumb_get_next_pc (struct frame_info *frame, CORE_ADDR pc) + { + nextpc = pc_val + (sbits (inst1, 0, 10) << 1); + } +- else if ((inst1 & 0xf800) == 0xf000) /* long branch with link, and blx */ ++ else if ((inst1 & 0xe000) == 0xe000) /* 32-bit instruction */ + { + unsigned short inst2; + inst2 = read_memory_unsigned_integer (pc + 2, 2, byte_order_for_code); +- offset = (sbits (inst1, 0, 10) << 12) + (bits (inst2, 0, 10) << 1); +- nextpc = pc_val + offset; +- /* For BLX make sure to clear the low bits. */ +- if (bits (inst2, 11, 12) == 1) +- nextpc = nextpc & 0xfffffffc; ++ ++ /* Default to the next instruction. */ ++ nextpc = pc + 4; ++ ++ if ((inst1 & 0xf800) == 0xf000 && (inst2 & 0x8000) == 0x8000) ++ { ++ /* Branches and miscellaneous control instructions. */ ++ ++ if ((inst2 & 0x1000) != 0 || (inst2 & 0xd001) == 0xc000) ++ { ++ /* B, BL, BLX. */ ++ int j1, j2, imm1, imm2; ++ ++ imm1 = sbits (inst1, 0, 10); ++ imm2 = bits (inst2, 0, 10); ++ j1 = bit (inst2, 13); ++ j2 = bit (inst2, 11); ++ ++ offset = ((imm1 << 12) + (imm2 << 1)); ++ offset ^= ((!j2) << 22) | ((!j1) << 23); ++ ++ nextpc = pc_val + offset; ++ /* For BLX make sure to clear the low bits. */ ++ if (bit (inst2, 12) == 0) ++ nextpc = nextpc & 0xfffffffc; ++ } ++ else if (inst1 == 0xf3de && (inst2 & 0xff00) == 0x3f00) ++ { ++ /* SUBS PC, LR, #imm8. */ ++ nextpc = get_frame_register_unsigned (frame, ARM_LR_REGNUM); ++ nextpc -= inst2 & 0x00ff; ++ } ++ else if ((inst2 & 0xd000) == 0xc000 && (inst1 & 0x0380) != 0x0380) ++ { ++ /* Conditional branch. */ ++ if (condition_true (bits (inst1, 6, 9), status)) ++ { ++ int sign, j1, j2, imm1, imm2; ++ ++ sign = sbits (inst1, 10, 10); ++ imm1 = bits (inst1, 0, 5); ++ imm2 = bits (inst2, 0, 10); ++ j1 = bit (inst2, 13); ++ j2 = bit (inst2, 11); ++ ++ offset = (sign << 20) + (j2 << 19) + (j1 << 18); ++ offset += (imm1 << 12) + (imm2 << 1); ++ ++ nextpc = pc_val + offset; ++ } ++ } ++ } ++ else if ((inst1 & 0xfe50) == 0xe810) ++ { ++ /* Load multiple or RFE. */ ++ int rn, offset, load_pc = 1; ++ ++ rn = bits (inst1, 0, 3); ++ if (bit (inst1, 7) && !bit (inst1, 8)) ++ { ++ /* LDMIA or POP */ ++ if (!bit (inst2, 15)) ++ load_pc = 0; ++ offset = bitcount (inst2) * 4 - 4; ++ } ++ else if (!bit (inst1, 7) && bit (inst1, 8)) ++ { ++ /* LDMDB */ ++ if (!bit (inst2, 15)) ++ load_pc = 0; ++ offset = -4; ++ } ++ else if (bit (inst1, 7) && bit (inst1, 8)) ++ { ++ /* RFEIA */ ++ offset = 0; ++ } ++ else if (!bit (inst1, 7) && !bit (inst1, 8)) ++ { ++ /* RFEDB */ ++ offset = -8; ++ } ++ else ++ load_pc = 0; ++ ++ if (load_pc) ++ { ++ CORE_ADDR addr = get_frame_register_unsigned (frame, rn); ++ nextpc = get_frame_memory_unsigned (frame, addr + offset, 4); ++ } ++ } ++ else if ((inst1 & 0xffef) == 0xea4f && (inst2 & 0xfff0) == 0x0f00) ++ { ++ /* MOV PC or MOVS PC. */ ++ nextpc = get_frame_register_unsigned (frame, bits (inst2, 0, 3)); ++ } ++ else if ((inst1 & 0xff70) == 0xf850 && (inst2 & 0xf000) == 0xf000) ++ { ++ /* LDR PC. */ ++ CORE_ADDR base; ++ int rn, load_pc = 1; ++ ++ rn = bits (inst1, 0, 3); ++ base = get_frame_register_unsigned (frame, rn); ++ if (rn == 15) ++ { ++ base = (base + 4) & ~(CORE_ADDR) 0x3; ++ if (bit (inst1, 7)) ++ base += bits (inst2, 0, 11); ++ else ++ base -= bits (inst2, 0, 11); ++ } ++ else if (bit (inst1, 7)) ++ base += bits (inst2, 0, 11); ++ else if (bit (inst2, 11)) ++ { ++ if (bit (inst2, 10)) ++ { ++ if (bit (inst2, 9)) ++ base += bits (inst2, 0, 7); ++ else ++ base -= bits (inst2, 0, 7); ++ } ++ } ++ else if ((inst2 & 0x0fc0) == 0x0000) ++ { ++ int shift = bits (inst2, 4, 5), rm = bits (inst2, 0, 3); ++ base += get_frame_register_unsigned (frame, rm) << shift; ++ } ++ else ++ /* Reserved. */ ++ load_pc = 0; ++ ++ if (load_pc) ++ nextpc = get_frame_memory_unsigned (frame, base, 4); ++ } ++ else if ((inst1 & 0xfff0) == 0xe8d0 && (inst2 & 0xfff0) == 0xf000) ++ { ++ /* TBB. */ ++ CORE_ADDR table, offset, length; ++ ++ table = get_frame_register_unsigned (frame, bits (inst1, 0, 3)); ++ offset = get_frame_register_unsigned (frame, bits (inst2, 0, 3)); ++ length = 2 * get_frame_memory_unsigned (frame, table + offset, 1); ++ nextpc = pc_val + length; ++ } ++ else if ((inst1 & 0xfff0) == 0xe8d0 && (inst2 & 0xfff0) == 0xf000) ++ { ++ /* TBH. */ ++ CORE_ADDR table, offset, length; ++ ++ table = get_frame_register_unsigned (frame, bits (inst1, 0, 3)); ++ offset = 2 * get_frame_register_unsigned (frame, bits (inst2, 0, 3)); ++ length = 2 * get_frame_memory_unsigned (frame, table + offset, 2); ++ nextpc = pc_val + length; ++ } + } + else if ((inst1 & 0xff00) == 0x4700) /* bx REG, blx REG */ + { +@@ -2311,6 +2496,17 @@ thumb_get_next_pc (struct frame_info *frame, CORE_ADDR pc) + if (nextpc == pc) + error (_("Infinite loop detected")); + } ++ else if ((inst1 & 0xf500) == 0xb100) ++ { ++ /* CBNZ or CBZ. */ ++ int imm = (bit (inst1, 9) << 6) + (bits (inst1, 3, 7) << 1); ++ ULONGEST reg = get_frame_register_unsigned (frame, bits (inst1, 0, 2)); ++ ++ if (bit (inst1, 11) && reg != 0) ++ nextpc = pc_val + imm; ++ else if (!bit (inst1, 11) && reg == 0) ++ nextpc = pc_val + imm; ++ } + + return nextpc; + } +--- a/gdb/completer.c ++++ b/gdb/completer.c +@@ -676,7 +676,7 @@ complete_line_internal (const char *text, char *line_buffer, int point, + p--) + ; + } +- if (reason != handle_brkchars) ++ if (reason != handle_brkchars && c->completer != NULL) + list = (*c->completer) (c, p, word); + } + } +@@ -747,7 +747,7 @@ complete_line_internal (const char *text, char *line_buffer, int point, + p--) + ; + } +- if (reason != handle_brkchars) ++ if (reason != handle_brkchars && c->completer != NULL) + list = (*c->completer) (c, p, word); + } + } +--- a/gdb/dcache.c ++++ b/gdb/dcache.c +@@ -88,7 +88,10 @@ + + struct dcache_block + { +- struct dcache_block *newer; /* for LRU and free list */ ++ /* for least-recently-allocated and free lists */ ++ struct dcache_block *prev; ++ struct dcache_block *next; ++ + CORE_ADDR addr; /* address of data */ + gdb_byte data[LINE_SIZE]; /* bytes at given address */ + int refs; /* # hits */ +@@ -97,9 +100,10 @@ struct dcache_block + struct dcache_struct + { + splay_tree tree; +- struct dcache_block *oldest; +- struct dcache_block *newest; ++ struct dcache_block *oldest; /* least-recently-allocated list */ + ++ /* The free list is maintained identically to OLDEST to simplify ++ the code: we only need one set of accessors. */ + struct dcache_block *freelist; + + /* The number of in-use lines in the cache. */ +@@ -109,6 +113,8 @@ struct dcache_struct + ptid_t ptid; + }; + ++typedef void (block_func) (struct dcache_block *block, void *param); ++ + static struct dcache_block *dcache_hit (DCACHE *dcache, CORE_ADDR addr); + + static int dcache_write_line (DCACHE *dcache, struct dcache_block *db); +@@ -132,28 +138,93 @@ show_dcache_enabled_p (struct ui_file *file, int from_tty, + + static DCACHE *last_cache; /* Used by info dcache */ + +-/* Free all the data cache blocks, thus discarding all cached data. */ ++/* Append BLOCK to circular block list starting at BLIST. ++ The block is appended for the least-recently-allocated list's sake: ++ BLIST points to the oldest block. */ + +-void +-dcache_invalidate (DCACHE *dcache) ++static void ++append_block (struct dcache_block **blist, struct dcache_block *block) + { +- struct dcache_block *block, *next; ++ if (*blist) ++ { ++ block->next = *blist; ++ block->prev = (*blist)->prev; ++ block->prev->next = block; ++ (*blist)->prev = block; ++ /* We don't update *BLIST here to maintain the invariant that for the ++ least-recently-allocated list *BLIST points to the oldest block. */ ++ } ++ else ++ { ++ block->next = block; ++ block->prev = block; ++ *blist = block; ++ } ++} + +- block = dcache->oldest; ++/* Remove BLOCK from circular block list BLIST. */ + +- while (block) ++static void ++remove_block (struct dcache_block **blist, struct dcache_block *block) ++{ ++ if (block->next == block) ++ { ++ *blist = NULL; ++ } ++ else + { +- splay_tree_remove (dcache->tree, (splay_tree_key) block->addr); +- next = block->newer; ++ block->next->prev = block->prev; ++ block->prev->next = block->next; ++ /* If we removed the block *BLIST points to, shift it to the next block ++ to maintain the invariant that for the least-recently-allocated list ++ *BLIST points to the oldest block. */ ++ if (*blist == block) ++ *blist = block->next; ++ } ++} + +- block->newer = dcache->freelist; +- dcache->freelist = block; ++/* Iterate over all elements in BLIST, calling FUNC. ++ PARAM is passed to FUNC. ++ FUNC may remove the block it's passed, but only that block. */ + +- block = next; ++static void ++for_each_block (struct dcache_block **blist, block_func *func, void *param) ++{ ++ struct dcache_block *db; ++ ++ if (*blist == NULL) ++ return; ++ ++ db = *blist; ++ do ++ { ++ struct dcache_block *next = db->next; ++ ++ func (db, param); ++ db = next; + } ++ while (*blist && db != *blist); ++} ++ ++/* BLOCK_FUNC function for dcache_invalidate. */ ++ ++static void ++invalidate_block (struct dcache_block *block, void *param) ++{ ++ DCACHE *dcache = (DCACHE *) param; ++ ++ splay_tree_remove (dcache->tree, (splay_tree_key) block->addr); ++ append_block (&dcache->freelist, block); ++} ++ ++/* Free all the data cache blocks, thus discarding all cached data. */ ++ ++void ++dcache_invalidate (DCACHE *dcache) ++{ ++ for_each_block (&dcache->oldest, invalidate_block, dcache); + + dcache->oldest = NULL; +- dcache->newest = NULL; + dcache->size = 0; + dcache->ptid = null_ptid; + } +@@ -168,8 +239,8 @@ dcache_invalidate_line (DCACHE *dcache, CORE_ADDR addr) + if (db) + { + splay_tree_remove (dcache->tree, (splay_tree_key) db->addr); +- db->newer = dcache->freelist; +- dcache->freelist = db; ++ remove_block (&dcache->oldest, db); ++ append_block (&dcache->freelist, db); + --dcache->size; + } + } +@@ -251,9 +322,9 @@ dcache_alloc (DCACHE *dcache, CORE_ADDR addr) + + if (dcache->size >= DCACHE_SIZE) + { +- /* Evict the least recently used line. */ ++ /* Evict the least recently allocated line. */ + db = dcache->oldest; +- dcache->oldest = db->newer; ++ remove_block (&dcache->oldest, db); + + splay_tree_remove (dcache->tree, (splay_tree_key) db->addr); + } +@@ -261,7 +332,7 @@ dcache_alloc (DCACHE *dcache, CORE_ADDR addr) + { + db = dcache->freelist; + if (db) +- dcache->freelist = db->newer; ++ remove_block (&dcache->freelist, db); + else + db = xmalloc (sizeof (struct dcache_block)); + +@@ -269,16 +340,10 @@ dcache_alloc (DCACHE *dcache, CORE_ADDR addr) + } + + db->addr = MASK (addr); +- db->newer = NULL; + db->refs = 0; + +- if (dcache->newest) +- dcache->newest->newer = db; +- +- dcache->newest = db; +- +- if (!dcache->oldest) +- dcache->oldest = db; ++ /* Put DB at the end of the list, it's the newest. */ ++ append_block (&dcache->oldest, db); + + splay_tree_insert (dcache->tree, (splay_tree_key) db->addr, + (splay_tree_value) db); +@@ -356,7 +421,6 @@ dcache_init (void) + NULL); + + dcache->oldest = NULL; +- dcache->newest = NULL; + dcache->freelist = NULL; + dcache->size = 0; + dcache->ptid = null_ptid; +@@ -365,22 +429,25 @@ dcache_init (void) + return dcache; + } + ++/* BLOCK_FUNC routine for dcache_free. */ ++ ++static void ++free_block (struct dcache_block *block, void *param) ++{ ++ free (block); ++} ++ + /* Free a data cache. */ + + void + dcache_free (DCACHE *dcache) + { +- struct dcache_block *db, *next; +- + if (last_cache == dcache) + last_cache = NULL; + + splay_tree_delete (dcache->tree); +- for (db = dcache->freelist; db != NULL; db = next) +- { +- next = db->newer; +- xfree (db); +- } ++ for_each_block (&dcache->oldest, free_block, NULL); ++ for_each_block (&dcache->freelist, free_block, NULL); + xfree (dcache); + } + +--- a/gdb/doc/ChangeLog ++++ b/gdb/doc/ChangeLog +@@ -1,3 +1,7 @@ ++2009-12-20 Joel Brobecker ++ ++ * gpl.texi: Update to version 3 of the GPL. ++ + 2009-10-04 Pedro Alves + + * gdb.texinfo (Remote Protocol): Don't mention vCont;T. +--- a/gdb/doc/gpl.texi ++++ b/gdb/doc/gpl.texi +@@ -6,404 +6,730 @@ + gfdl(7), fsf-funding(7). + @c man end + @c man begin COPYRIGHT +-Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. +-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} + +-Everyone is permitted to copy and distribute verbatim copies +-of this license document, but changing it is not allowed. ++Everyone is permitted to copy and distribute verbatim copies of this ++license document, but changing it is not allowed. + @c man end + @end ignore + @node Copying + @c man begin DESCRIPTION + @appendix GNU GENERAL PUBLIC LICENSE +-@center Version 2, June 1991 ++@c The GNU General Public License. ++@center Version 3, 29 June 2007 ++ ++@c This file is intended to be included within another document, ++@c hence no sectioning command or @node. + + @display +-Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. +-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} + +-Everyone is permitted to copy and distribute verbatim copies +-of this license document, but changing it is not allowed. ++Everyone is permitted to copy and distribute verbatim copies of this ++license document, but changing it is not allowed. + @end display + +-@unnumberedsec Preamble ++@heading Preamble ++ ++The GNU General Public License is a free, copyleft license for ++software and other kinds of works. + +- The licenses for most software are designed to take away your +-freedom to share and change it. By contrast, the GNU General Public +-License is intended to guarantee your freedom to share and change free +-software---to make sure the software is free for all its users. This +-General Public License applies to most of the Free Software +-Foundation's software and to any other program whose authors commit to +-using it. (Some other Free Software Foundation software is covered by +-the GNU Library General Public License instead.) You can apply it to +-your programs, too. ++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 ++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 +-this service 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 make restrictions that forbid +-anyone to deny you these rights or to ask you to surrender the rights. +-These restrictions translate to certain responsibilities for you if you +-distribute copies of the software, or if you modify it. +- +- For example, if you distribute copies of such a program, whether +-gratis or for a fee, you must give the recipients all the rights that +-you have. 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. +- +- We protect your rights with two steps: (1) copyright the software, and +-(2) offer you this license which gives you legal permission to copy, +-distribute and/or modify the software. +- +- Also, for each author's protection and ours, we want to make certain +-that everyone understands that there is no warranty for this free +-software. If the software is modified by someone else and passed on, we +-want its recipients to know that what they have is not the original, so +-that any problems introduced by others will not reflect on the original +-authors' reputations. +- +- Finally, any free program is threatened constantly by software +-patents. We wish to avoid the danger that redistributors of a free +-program will individually obtain patent licenses, in effect making the +-program proprietary. To prevent this, we have made it clear that any +-patent must be licensed for everyone's free use or not licensed at all. +- +- The precise terms and conditions for copying, distribution and ++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. + +-@iftex +-@unnumberedsec TERMS AND CONDITIONS FOR COPYING,@*DISTRIBUTION AND MODIFICATION +-@end iftex +-@ifnottex +-@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +-@end ifnottex ++@heading TERMS AND CONDITIONS + + @enumerate 0 ++@item 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. ++ ++@item 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. ++ ++@item 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. ++ ++@item 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. ++ ++@item 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. ++ ++@item 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: ++ ++@enumerate a + @item +-This License applies to any program or other work which contains +-a notice placed by the copyright holder saying it may be distributed +-under the terms of this General Public License. The ``Program'', below, +-refers to any such program or work, and a ``work based on the Program'' +-means either the Program or any derivative work under copyright law: +-that is to say, a work containing the Program or a portion of it, +-either verbatim or with modifications and/or translated into another +-language. (Hereinafter, translation is included without limitation in +-the term ``modification''.) Each licensee is addressed as ``you''. +- +-Activities other than copying, distribution and modification are not +-covered by this License; they are outside its scope. The act of +-running the Program is not restricted, and the output from the Program +-is covered only if its contents constitute a work based on the +-Program (independent of having been made by running the Program). +-Whether that is true depends on what the Program does. ++The work must carry prominent notices stating that you modified it, ++and giving a relevant date. + + @item +-You may copy and distribute 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 and disclaimer of warranty; keep intact all the +-notices that refer to this License and to the absence of any warranty; +-and give any other recipients of the Program a copy of this License +-along with the Program. ++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''. + +-You may charge a fee for the physical act of transferring a copy, and +-you may at your option offer warranty protection in exchange for a fee. ++@item ++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. + + @item +-You may modify your copy or copies of the Program or any portion +-of it, thus forming a work based on the Program, and copy and +-distribute such modifications or work under the terms of Section 1 +-above, provided that you also meet all of these conditions: ++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. ++@end enumerate ++ ++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. ++ ++@item 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: + + @enumerate a + @item +-You must cause the modified files to carry prominent notices +-stating that you changed the files and the date of any change. ++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. + + @item +-You must cause any work that you distribute or publish, that in +-whole or in part contains or is derived from the Program or any +-part thereof, to be licensed as a whole at no charge to all third +-parties under the terms of this License. ++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. + + @item +-If the modified program normally reads commands interactively +-when run, you must cause it, when started running for such +-interactive use in the most ordinary way, to print or display an +-announcement including an appropriate copyright notice and a +-notice that there is no warranty (or else, saying that you provide +-a warranty) and that users may redistribute the program under +-these conditions, and telling the user how to view a copy of this +-License. (Exception: if the Program itself is interactive but +-does not normally print such an announcement, your work based on +-the Program is not required to print an announcement.) +-@end enumerate ++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. + +-These requirements apply to the modified work as a whole. If +-identifiable sections of that work are not derived from the Program, +-and can be reasonably considered independent and separate works in +-themselves, then this License, and its terms, do not apply to those +-sections when you distribute them as separate works. But when you +-distribute the same sections as part of a whole which is a work based +-on the Program, the distribution of the whole must be on the terms of +-this License, whose permissions for other licensees extend to the +-entire whole, and thus to each and every part regardless of who wrote it. +- +-Thus, it is not the intent of this section to claim rights or contest +-your rights to work written entirely by you; rather, the intent is to +-exercise the right to control the distribution of derivative or +-collective works based on the Program. +- +-In addition, mere aggregation of another work not based on the Program +-with the Program (or with a work based on the Program) on a volume of +-a storage or distribution medium does not bring the other work under +-the scope of this License. ++@item ++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. + + @item +-You may copy and distribute the Program (or a work based on it, +-under Section 2) in object code or executable form under the terms of +-Sections 1 and 2 above provided that you also do one of the following: ++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. ++ ++@end enumerate ++ ++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. ++ ++@item 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: + + @enumerate a + @item +-Accompany it with the complete corresponding machine-readable +-source code, which must be distributed under the terms of Sections +-1 and 2 above on a medium customarily used for software interchange; or, ++Disclaiming warranty or limiting liability differently from the terms ++of sections 15 and 16 of this License; or + + @item +-Accompany it with a written offer, valid for at least three +-years, to give any third party, for a charge no more than your +-cost of physically performing source distribution, a complete +-machine-readable copy of the corresponding source code, to be +-distributed under the terms of Sections 1 and 2 above on a medium +-customarily used for software interchange; or, ++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 + + @item +-Accompany it with the information you received as to the offer +-to distribute corresponding source code. (This alternative is +-allowed only for noncommercial distribution and only if you +-received the program in object code or executable form with such +-an offer, in accord with Subsection b above.) +-@end enumerate +- +-The source code for a work means the preferred form of the work for +-making modifications to it. For an executable work, complete source +-code means all the source code for all modules it contains, plus any +-associated interface definition files, plus the scripts used to +-control compilation and installation of the executable. However, as a +-special exception, the source code distributed need not include +-anything that is normally distributed (in either source or binary +-form) with the major components (compiler, kernel, and so on) of the +-operating system on which the executable runs, unless that component +-itself accompanies the executable. +- +-If distribution of executable or object code is made by offering +-access to copy from a designated place, then offering equivalent +-access to copy the source code from the same place counts as +-distribution of the source code, even though third parties are not +-compelled to copy the source along with the object code. ++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 + + @item +-You may not copy, modify, sublicense, or distribute the Program +-except as expressly provided under this License. Any attempt +-otherwise to copy, modify, sublicense or distribute the Program is +-void, and will automatically terminate your rights under this License. +-However, parties who have received copies, or rights, from you under +-this License will not have their licenses terminated so long as such +-parties remain in full compliance. ++Limiting the use for publicity purposes of names of licensors or ++authors of the material; or + + @item +-You are not required to accept this License, since you have not +-signed it. However, nothing else grants you permission to modify or +-distribute the Program or its derivative works. These actions are +-prohibited by law if you do not accept this License. Therefore, by +-modifying or distributing the Program (or any work based on the +-Program), you indicate your acceptance of this License to do so, and +-all its terms and conditions for copying, distributing or modifying +-the Program or works based on it. ++Declining to grant rights under trademark law for use of some trade ++names, trademarks, or service marks; or + + @item +-Each time you redistribute the Program (or any work based on the +-Program), the recipient automatically receives a license from the +-original licensor to copy, distribute or modify the Program subject to +-these terms and conditions. You may not impose any further +-restrictions on the recipients' exercise of the rights granted herein. +-You are not responsible for enforcing compliance by third parties to ++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. ++@end enumerate ++ ++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. ++ ++@item 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. ++ ++@item 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. ++ ++@item 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. ++ ++@item 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. + +-@item +-If, as a consequence of a court judgment or allegation of patent +-infringement or for any other reason (not limited to patent issues), +-conditions are imposed on you (whether by court order, agreement or ++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. ++ ++@item 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 +-distribute so as to satisfy simultaneously your obligations under this +-License and any other pertinent obligations, then as a consequence you +-may not distribute the Program at all. For example, if a patent +-license would not permit royalty-free redistribution of the Program by +-all those who receive copies directly or indirectly through you, then +-the only way you could satisfy both it and this License would be to +-refrain entirely from distribution of the Program. +- +-If any portion of this section is held invalid or unenforceable under +-any particular circumstance, the balance of the section is intended to +-apply and the section as a whole is intended to apply in other +-circumstances. +- +-It is not the purpose of this section to induce you to infringe any +-patents or other property right claims or to contest validity of any +-such claims; this section has the sole purpose of protecting the +-integrity of the free software distribution system, which is +-implemented by public license practices. Many people have made +-generous contributions to the wide range of software distributed +-through that system in reliance on consistent application of that +-system; it is up to the author/donor to decide if he or she is willing +-to distribute software through any other system and a licensee cannot +-impose that choice. +- +-This section is intended to make thoroughly clear what is believed to +-be a consequence of the rest of this License. ++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. ++ ++@item 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. ++ ++@item Revised Versions of this License. + +-@item +-If the distribution and/or use of the Program is restricted in +-certain countries either by patents or by copyrighted interfaces, the +-original copyright holder who places the Program under this License +-may add an explicit geographical distribution limitation excluding +-those countries, so that distribution is permitted only in or among +-countries not thus excluded. In such case, this License incorporates +-the limitation as if written in the body of this License. +- +-@item + The Free Software Foundation may publish revised and/or new versions +-of the 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. ++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 a version number of this License which applies to it and ``any +-later version'', you have the option of following the terms and conditions +-either of that version or of any later version published by the Free +-Software Foundation. If the Program does not specify a version number of +-this License, you may choose any version ever published by the Free Software +-Foundation. +- +-@item +-If you wish to incorporate parts of the Program into other free +-programs whose distribution conditions are different, write to the author +-to ask for permission. For software which is copyrighted by the Free +-Software Foundation, write to the Free Software Foundation; we sometimes +-make exceptions for this. Our decision will be guided by the two goals +-of preserving the free status of all derivatives of our free software and +-of promoting the sharing and reuse of software generally. +- +-@iftex +-@heading NO WARRANTY +-@end iftex +-@ifnottex +-@center NO WARRANTY +-@end ifnottex +- +-@item +-BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. ++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. ++ ++@item 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. ++ ++@item Limitation of Liability. + +-@item + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +-REDISTRIBUTE 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. ++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. ++ ++@item 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 enumerate + +-@iftex + @heading END OF TERMS AND CONDITIONS +-@end iftex +-@ifnottex +-@center END OF TERMS AND CONDITIONS +-@end ifnottex + +-@page +-@unnumberedsec How to Apply These Terms to Your New Programs ++@heading How to Apply These Terms to Your New Programs + +- If you develop a new program, and you want it to be of the greatest ++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. ++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 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 +-convey the exclusion of warranty; and each file should have at least ++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. + + @smallexample + @var{one line to give the program's name and a brief idea of what it does.} +-Copyright (C) @var{year} @var{name of author} ++Copyright (C) @var{year} @var{name of author} + +-This program is free software; you can redistribute it and/or modify ++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 2 of the License, or +-(at your option) any later version. ++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. ++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, write to the Free Software +-Foundation, Inc., 51 Franklin Street, Fifth Floor, +-Boston, MA 02110-1301, USA. ++along with this program. If not, see @url{http://www.gnu.org/licenses/}. + @end smallexample + + Also add information on how to contact you by electronic and paper mail. + +-If the program is interactive, make it output a short notice like this +-when it starts in an interactive mode: ++If the program does terminal interaction, make it output a short ++notice like this when it starts in an interactive mode: + + @smallexample +-Gnomovision version 69, Copyright (C) @var{year} @var{name of author} +-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +-type `show w'. ++@var{program} Copyright (C) @var{year} @var{name of author} ++This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}. + This is free software, and you are welcome to redistribute it +-under certain conditions; type `show c' for details. ++under certain conditions; type @samp{show c} for details. + @end smallexample + + The hypothetical commands @samp{show w} and @samp{show c} should show +-the appropriate parts of the General Public License. Of course, the +-commands you use may be called something other than @samp{show w} and +-@samp{show c}; they could even be mouse-clicks or menu items---whatever +-suits your program. +- +-You should also get your employer (if you work as a programmer) or your +-school, if any, to sign a ``copyright disclaimer'' for the program, if +-necessary. Here is a sample; alter the names: +- +-@smallexample +-Yoyodyne, Inc., hereby disclaims all copyright interest in the program +-`Gnomovision' (which makes passes at compilers) written by James Hacker. +- +-@var{signature of Ty Coon}, 1 April 1989 +-Ty Coon, President of Vice +-@end smallexample +- +-This 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 Library General +-Public License instead of this License. ++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 ++@url{http://www.gnu.org/licenses/}. ++ ++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 @url{http://www.gnu.org/philosophy/why-not-lgpl.html}. + @c man end +--- a/gdb/dwarf2-frame.c ++++ b/gdb/dwarf2-frame.c +@@ -1525,6 +1525,14 @@ find_cie (struct dwarf2_cie_table *cie_table, ULONGEST cie_pointer) { struct dwarf2_cie **p_cie; @@ -74,9 +2666,21 @@ p_cie = bsearch (&cie_pointer, cie_table->entries, cie_table->num_entries, sizeof (cie_table->entries[0]), bsearch_cie_cmp); if (p_cie != NULL) ---- ./gdb/elfread.c 30 Apr 2009 21:59:03 -0000 1.77 -+++ ./gdb/elfread.c 8 Oct 2009 17:42:10 -0000 1.77.4.1 -@@ -535,7 +535,7 @@ elf_symtab_read (struct objfile *objfile +--- a/gdb/dwarf2read.c ++++ b/gdb/dwarf2read.c +@@ -58,6 +58,9 @@ + #endif + #ifdef HAVE_MMAP + #include ++#ifndef MAP_FAILED ++#define MAP_FAILED ((void *) -1) ++#endif + #endif + + #if 0 +--- a/gdb/elfread.c ++++ b/gdb/elfread.c +@@ -535,7 +535,7 @@ elf_symtab_read (struct objfile *objfile, int type, if (len > 4 && strcmp (sym->name + len - 4, "@plt") == 0) { @@ -85,7 +2689,7 @@ struct minimal_symbol *mtramp; memcpy (base_name, sym->name, len - 4); -@@ -543,6 +543,7 @@ elf_symtab_read (struct objfile *objfile +@@ -543,6 +543,7 @@ elf_symtab_read (struct objfile *objfile, int type, mtramp = record_minimal_symbol (base_name, symaddr, mst_solib_trampoline, sym->section, objfile); @@ -93,9 +2697,9 @@ if (mtramp) { MSYMBOL_SIZE (mtramp) = MSYMBOL_SIZE (msym); ---- ./gdb/objfiles.c 18 Sep 2009 17:39:36 -0000 1.96.2.1 -+++ ./gdb/objfiles.c 22 Oct 2009 20:31:36 -0000 1.96.2.2 -@@ -1045,6 +1045,14 @@ update_section_map (struct obj_section * +--- a/gdb/objfiles.c ++++ b/gdb/objfiles.c +@@ -1045,6 +1045,14 @@ update_section_map (struct obj_section ***pmap, int *pmap_size) if (insert_section_p (objfile->obfd, s->the_bfd_section)) alloc_size += 1; @@ -125,8 +2729,8 @@ sp = (struct obj_section **) bsearch (&pc, sections, num_sections, sizeof (*sections), bsearch_cmp); if (sp != NULL) ---- ./gdb/score-tdep.c 6 Aug 2009 10:28:38 -0000 1.21 -+++ ./gdb/score-tdep.c 19 Oct 2009 09:02:18 -0000 1.21.2.1 +--- a/gdb/score-tdep.c ++++ b/gdb/score-tdep.c @@ -56,58 +56,6 @@ struct score_frame_cache static int target_mach = bfd_mach_score7; @@ -186,8 +2790,8 @@ static struct type * score_register_type (struct gdbarch *gdbarch, int regnum) { ---- ./gdb/score-tdep.h 6 Aug 2009 10:28:38 -0000 1.6 -+++ ./gdb/score-tdep.h 19 Oct 2009 09:02:18 -0000 1.6.2.1 +--- a/gdb/score-tdep.h ++++ b/gdb/score-tdep.h @@ -85,68 +85,4 @@ struct pt_regs { typedef struct pt_regs elf_gregset_t; @@ -257,42 +2861,33 @@ -#endif /* WITH_SIM */ - #endif /* SCORE_TDEP_H */ -### ./gdb/version.in 6 Oct 2009 16:25:13 -0000 1.2997.2.26 -### ./gdb/version.in 30 Oct 2009 00:00:33 -0000 1.2997.2.51 -## -1 +1 @@ --7.0 -+7.0.0.20091030-cvs - - - -http://sourceware.org/ml/gdb-patches/2009-11/msg00594.html -http://sourceware.org/ml/gdb-cvs/2009-11/msg00233.html -Subject: [patch] testsuite: bigcore.exp fuzzy PASS message fix - -Hi, - -seen needlessly fuzzy results: - -PASS: gdb.base/bigcore.exp: extract next heap (stop at 50) - -PASS: gdb.base/bigcore.exp: extract prev heap (stop at 50) - +PASS: gdb.base/bigcore.exp: extract next heap - +PASS: gdb.base/bigcore.exp: extract prev heap - -but the .exp file just is not patient enough: - -Total of 4292375328 (0xffd87320) bytes bytes 53 chunks - +Total of 4292422432 (0xffd92b20) bytes bytes 41 chunks - -Increased to 200. Tested on {x86_64,x86_64-m32}-fedora12-linux-gnu. - - -Thanks, -Jan - - -gdb/testsuite/ -2009-11-29 Jan Kratochvil - - * gdb.base/bigcore.exp (extract_heap): Set $lim limit to 200. - +--- a/gdb/testsuite/ChangeLog ++++ b/gdb/testsuite/ChangeLog +@@ -1,3 +1,24 @@ ++2009-12-21 Jan Kratochvil ++ ++ * gdb.base/foll-fork.exp (unpatch child, breakpoint at exit call): ++ Force $srcfile file. ++ * gdb.base/foll-fork.c (callee): Comment out the printf call. ++ ++2009-12-21 Jan Kratochvil ++ ++ Fix spurious false FAILs. ++ * gdb.base/structs.c (chartest): New. ++ (main): Fill-in chartest. ++ * gdb.base/structs.exp (anychar_re, first): New. ++ (start_structs_test): Import global anychar_re and first. ++ New gdb_test call "set print elements 300; ${testfile}" ++ (start_structs_test <$first>): New block. ++ (any): Import global anychar_re. New variable ac. Use ${ac}. ++ ++2009-12-21 Jan Kratochvil ++ ++ * gdb.base/bigcore.exp (extract_heap): Set $lim limit to 200. ++ + 2009-09-29 Jan Kratochvil + + * gdb.base/breakpoint-shadow.exp: Move the ia64 part into ... --- a/gdb/testsuite/gdb.base/bigcore.exp +++ b/gdb/testsuite/gdb.base/bigcore.exp @@ -96,7 +96,7 @@ proc extract_heap { dir } { @@ -304,63 +2899,30 @@ gdb/testsuite/ pass "$test (stop at $lim)" } else { incr lim - - - -http://sourceware.org/ml/gdb-patches/2009-11/msg00593.html -http://sourceware.org/ml/gdb-cvs/2009-12/msg00013.html -Subject: [patch] testcase: Fix spurious structs.exp FAILs - -Hi, - -There were some rare unreproducible fuzzy FAILs seen on i386 (32-bit) inferiors: - - return foo2 - The location at which to store the function's return value is unknown. - If you continue, the return value that you specified will be ignored. - Make fun2 return now? (y or n) y - #0 main () at /rpmbuild/BUILD/gdb-7.0/gdb/testsuite/gdb.base/structs.c:435 - 435 L2 = fun2(); - (gdb) next - 436 L3 = fun3(); - (gdb) PASS: gdb.base/structs.exp: return foo; return 2 structs-tf-td - p/c L2 --$4 = {a = -16 '\360', b = 0 '\000'} --(gdb) PASS: gdb.base/structs.exp: value foo returned; return 2 structs-tf-td -+$4 = {a = 44 ',', b = 0 '\000'} -+(gdb) FAIL: gdb.base/structs.exp: value foo returned; return 2 structs-tf-td - -Apparently - a = 44 ',', -does not match - a = \[^,\}\]*, -which is needed for cases where L2 (L*) remains uninitialized with random -content. - -Alternative patch would just use regex `.*' and the whole new `chartest' and -`anychar_re' parts can be dropped. - -Formerly 9s, now 11s, without the $first optimization it would cost 47s. - -Testcase has been run on {x86_64,x86_64-m32}-fedora12-linux-gnu. - - -Thanks, -Jan - - -gdb/testsuite/ -2009-11-29 Jan Kratochvil - - Fix spurious false FAILs. - * gdb.base/structs.c (chartest): New. - (main): Fill-in chartest. - * gdb.base/structs.exp (anychar_re, first): New. - (start_structs_test): Import global anychar_re and first. - New gdb_test call "set print elements 300; ${testfile}" - (start_structs_test <$first>): New block. - (any): Import global anychar_re. New variable ac. Use ${ac}. - +--- a/gdb/testsuite/gdb.base/foll-fork.c ++++ b/gdb/testsuite/gdb.base/foll-fork.c +@@ -9,7 +9,8 @@ void callee (i) + int i; + #endif + { +- printf("callee: %d\n", i); ++ /* Any output corrupts GDB CLI expect strings. ++ printf("callee: %d\n", i); */ + } + + #ifdef PROTOTYPES +--- a/gdb/testsuite/gdb.base/foll-fork.exp ++++ b/gdb/testsuite/gdb.base/foll-fork.exp +@@ -240,7 +240,8 @@ proc catch_fork_unpatch_child {} { + # Delete all breakpoints and catchpoints. + delete_breakpoints + +- gdb_test "break $bp_exit" \ ++ # Force $srcfile as the current GDB source can be in glibc sourcetree. ++ gdb_test "break $srcfile:$bp_exit" \ + "Breakpoint .*file .*$srcfile, line .*" \ + "unpatch child, breakpoint at exit call" + --- a/gdb/testsuite/gdb.base/structs.c +++ b/gdb/testsuite/gdb.base/structs.c @@ -396,6 +396,8 @@ zed () @@ -487,76 +3049,11 @@ gdb/testsuite/ } # Given N (0..25), return the corresponding alphabetic letter in lower - - - -http://sourceware.org/ml/gdb-patches/2009-11/msg00573.html -http://sourceware.org/ml/gdb-cvs/2009-11/msg00232.html -Subject: [patch] testsuite fuzzy results fixup: foll-fork.exp - -Hi, - -one occasional timeout: - - (gdb) PASS: gdb.base/foll-fork.exp: default show parent follow, no catchpoints - next 2 --callee: 9949 - 25 if (pid == 0) /* set breakpoint here */ --(gdb) PASS: gdb.base/foll-fork.exp: default parent follow, no catchpoints -+(gdb) callee: 18747 -+FAIL: gdb.base/foll-fork.exp: (timeout) default parent follow, no catchpoints - -Dropped the strings as there is no "callee" string expectation in -foll-fork.exp. - - -and with glibc-debuginfo installed one gets: - -(gdb) break 39 -Reading in symbols for ../nptl/sysdeps/unix/sysv/linux/fork.c...done. -Breakpoint 12 at 0x3ad22a4876: file ../nptl/sysdeps/unix/sysv/linux/fork.c, line 39. -(gdb) FAIL: gdb.base/foll-fork.exp: unpatch child, breakpoint at exit call -+ -Breakpoint 12, __libc_fork () at ../nptl/sysdeps/unix/sysv/linux/fork.c:158 -158 fresetlockfiles (); -(gdb) FAIL: gdb.base/foll-fork.exp: unpatch child, unpatched parent breakpoints from child (unknown output) - - -Thanks, -Jan - - -gdb/testsuite/ -2009-11-26 Jan Kratochvil - - * gdb.base/foll-fork.exp (unpatch child, breakpoint at exit call): - Force $srcfile file. - * gdb.base/foll-fork.c (callee): Comment out the printf call. - ---- a/gdb/testsuite/gdb.base/foll-fork.c -+++ b/gdb/testsuite/gdb.base/foll-fork.c -@@ -9,7 +9,8 @@ void callee (i) - int i; - #endif - { -- printf("callee: %d\n", i); -+ /* Any output corrupts GDB CLI expect strings. -+ printf("callee: %d\n", i); */ - } - - #ifdef PROTOTYPES ---- a/gdb/testsuite/gdb.base/foll-fork.exp -+++ b/gdb/testsuite/gdb.base/foll-fork.exp -@@ -240,7 +240,8 @@ proc catch_fork_unpatch_child {} { - # Delete all breakpoints and catchpoints. - delete_breakpoints - -- gdb_test "break $bp_exit" \ -+ # Force $srcfile as the current GDB source can be in glibc sourcetree. -+ gdb_test "break $srcfile:$bp_exit" \ - "Breakpoint .*file .*$srcfile, line .*" \ - "unpatch child, breakpoint at exit call" - +### a/gdb/version.in +### b/gdb/version.in +## -1 +1 @@ +-7.0 ++7.0.0.20091221-cvs @@ -627,37 +3124,54 @@ gdb/ -http://sourceware.org/ml/gdb-patches/2009-11/msg00422.html -http://sourceware.org/ml/gdb-cvs/2009-11/msg00169.html +Re: [RFA] Fix "show convenience" test +http://sourceware.org/ml/gdb-patches/2009-09/msg00565.html +http://sourceware.org/ml/gdb-cvs/2009-09/msg00099.html -### src/gdb/ChangeLog 2009/11/19 22:42:48 1.11094 -### src/gdb/ChangeLog 2009/11/19 22:44:32 1.11095 -## -1,3 +1,8 @@ -+2009-11-19 Joel Brobecker +### src/gdb/testsuite/ChangeLog 2009/09/15 18:51:25 1.1960 +### src/gdb/testsuite/ChangeLog 2009/09/17 17:49:46 1.1961 +## -1,3 +1,7 @@ ++2009-09-17 Paul Pluzhnikov + -+ * completer.c (complete_line_internal): Make sure the command -+ completer is not NULL before calling it. ++ * gdb.base/default.exp: Fix "show convenience". + - 2009-11-19 Jerome Guitton + 2009-09-15 Tom Tromey - * ada-lang.c (packed_array_type): Rename to... ---- src/gdb/completer.c 2009/03/25 10:50:56 1.34 -+++ src/gdb/completer.c 2009/11/19 22:44:34 1.35 -@@ -676,7 +676,7 @@ - p--) - ; - } -- if (reason != handle_brkchars) -+ if (reason != handle_brkchars && c->completer != NULL) - list = (*c->completer) (c, p, word); - } - } -@@ -747,7 +747,7 @@ - p--) - ; - } -- if (reason != handle_brkchars) -+ if (reason != handle_brkchars && c->completer != NULL) - list = (*c->completer) (c, p, word); - } - } + * lib/mi-support.exp (mi_create_varobj): Update. +--- src/gdb/testsuite/gdb.base/default.exp 2009/08/13 14:58:27 1.31 ++++ src/gdb/testsuite/gdb.base/default.exp 2009/09/17 17:49:46 1.32 +@@ -598,7 +598,7 @@ + #test show confirm + gdb_test "show confirm" "Whether to confirm potentially dangerous operations is o\[a-z\]*." "show confirm" + #test show convenience +-gdb_test "show convenience" "No debugger convenience variables now defined.(\[^\r\n\]*\[\r\n\])+Convenience variables have names starting with \".\";(\[^\r\n\]*\[\r\n\])+use \"set\" as in \"set .foo = 5\" to define them." "show convenience" ++gdb_test "show convenience" "\\\$_siginfo = void" "show convenience" + #test show directories + gdb_test "show directories" "Source directories searched: .cdir\[:;\].cwd" "show directories" + #test show editing +### src/gdb/doc/ChangeLog 2009/09/15 18:51:24 1.953 +### src/gdb/doc/ChangeLog 2009/09/17 17:49:46 1.954 +## -1,3 +1,8 @@ ++2009-09-17 Paul Pluzhnikov ++ ++ * gdb.texinfo (convenince variables): Mention ++ $_siginfo could be empty. ++ + 2009-09-15 Tom Tromey + + * gdb.texinfo (GDB/MI Variable Objects): Document +--- src/gdb/doc/gdb.texinfo 2009/09/15 18:51:25 1.624 ++++ src/gdb/doc/gdb.texinfo 2009/09/17 17:49:46 1.625 +@@ -7819,8 +7819,10 @@ + + @item $_siginfo + @vindex $_siginfo@r{, convenience variable} +-The variable @code{$_siginfo} is bound to extra signal information +-inspection (@pxref{extra signal information}). ++The variable @code{$_siginfo} contains extra signal information ++(@pxref{extra signal information}). Note that @code{$_siginfo} ++could be empty, if the application has not yet received any signals. ++For example, it will be empty before you execute the @code{run} command. + @end table + + On HP-UX systems, if you refer to a function or variable name that diff --git a/gdb-empty-namespace.patch b/gdb-empty-namespace.patch new file mode 100644 index 0000000..a8baf05 --- /dev/null +++ b/gdb-empty-namespace.patch @@ -0,0 +1,204 @@ +gdb/ +2009-12-20 Jan Kratochvil + + Fix compatibility with G++-4.1. + * dwarf2read.c (partial_die_parent_scope): New variable PARENT_NAME. + Ignore parent namespaces with name "::". + (physname_prefix_1): Ignore namespaces with name "::". + +gdb/testsuite/ +2009-12-20 Jan Kratochvil + + * gdb.dwarf2/dw2-empty-namespace.exp, gdb.dwarf2/dw2-empty-namespace.S: + New. + +--- a/gdb/dwarf2read.c ++++ b/gdb/dwarf2read.c +@@ -2355,11 +2355,18 @@ partial_die_parent_scope (struct partial_die_info *pdi, + || parent->tag == DW_TAG_interface_type + || parent->tag == DW_TAG_union_type) + { ++ char *parent_name = parent->name; ++ ++ /* G++ 4.1 produced DW_TAG_namespace with DW_AT_name "::". */ ++ if (parent->tag == DW_TAG_namespace && parent_name != NULL ++ && strcmp (parent_name, "::") == 0) ++ parent_name = NULL; ++ + if (grandparent_scope == NULL) +- parent->scope = parent->name; ++ parent->scope = parent_name; + else + parent->scope = typename_concat (&cu->comp_unit_obstack, grandparent_scope, +- parent->name, cu); ++ parent_name, cu); + } + else if (parent->tag == DW_TAG_enumeration_type) + /* Enumerators should not get the name of the enumeration as a prefix. */ +@@ -9008,6 +9015,9 @@ physname_prefix_1 (struct ui_file *buf, struct die_info *die, + name = dwarf2_name (die, cu); + if (name == NULL) + name = "(anonymous namespace)"; ++ /* G++ 4.1 produced DW_TAG_namespace with DW_AT_name "::". */ ++ else if (strcmp (name, "::") == 0) ++ name = NULL; + break; + + case DW_TAG_class_type: +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.S +@@ -0,0 +1,108 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2009 Free Software Foundation, Inc. ++ ++ 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 . */ ++ ++/* Test G++ 4.1 producing DW_TAG_namespace with DW_AT_name "::". */ ++ ++ .data ++var: .4byte 1 ++ ++ .section .debug_info ++.Lcu1_begin: ++ /* CU header */ ++ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */ ++.Lcu1_start: ++ .2byte 2 /* DWARF Version */ ++ .4byte .Labbrev1_begin /* Offset into abbrev section */ ++ .byte 4 /* Pointer size */ ++ ++ /* CU die */ ++ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ ++ .ascii "file1.txt\0" /* DW_AT_name */ ++ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ ++ .byte 4 /* DW_LANG_C_plus_plus (C++) */ ++ ++.Ltype_int: ++ .uleb128 2 /* Abbrev: DW_TAG_base_type */ ++ .ascii "int\0" /* DW_AT_name */ ++ .byte 4 /* DW_AT_byte_size */ ++ .byte 5 /* DW_AT_encoding */ ++ ++ .uleb128 3 /* Abbrev: DW_TAG_namespace */ ++ .ascii "::\0" /* DW_AT_name */ ++ ++ .uleb128 7 /* Abbrev: DW_TAG_variable (location) */ ++ .ascii "var\0" /* DW_AT_name */ ++ .byte 2f - 1f /* DW_AT_location */ ++1: .byte 3 /* DW_OP_addr */ ++ .4byte var /* */ ++2: .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */ ++ ++ .byte 0 /* End of children of DW_TAG_namespace */ ++ ++ .byte 0 /* End of children of CU */ ++ ++.Lcu1_end: ++ ++/* Abbrev table */ ++ .section .debug_abbrev ++.Labbrev1_begin: ++ .uleb128 1 /* Abbrev code */ ++ .uleb128 0x11 /* DW_TAG_compile_unit */ ++ .byte 1 /* has_children */ ++ .uleb128 0x3 /* DW_AT_name */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .uleb128 0x25 /* DW_AT_producer */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .uleb128 0x13 /* DW_AT_language */ ++ .uleb128 0xb /* DW_FORM_data1 */ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ ++ .uleb128 2 /* Abbrev code */ ++ .uleb128 0x24 /* DW_TAG_base_type */ ++ .byte 0 /* has_children */ ++ .uleb128 0x3 /* DW_AT_name */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .uleb128 0xb /* DW_AT_byte_size */ ++ .uleb128 0xb /* DW_FORM_data1 */ ++ .uleb128 0x3e /* DW_AT_encoding */ ++ .uleb128 0xb /* DW_FORM_data1 */ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ ++ .uleb128 3 /* Abbrev code */ ++ .uleb128 0x39 /* DW_TAG_namespace */ ++ .byte 1 /* has_children */ ++ .uleb128 0x3 /* DW_AT_name */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ ++ .uleb128 7 /* Abbrev code (location) */ ++ .uleb128 0x34 /* DW_TAG_variable */ ++ .byte 0 /* has_children */ ++ .uleb128 0x3 /* DW_AT_name */ ++ .uleb128 0x8 /* DW_FORM_string */ ++ .uleb128 0x2 /* DW_AT_location */ ++ .uleb128 0xa /* DW_FORM_block1 */ ++ .uleb128 0x49 /* DW_AT_type */ ++ .uleb128 0x13 /* DW_FORM_ref4 */ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ ++ ++ .byte 0x0 /* Terminator */ ++ .byte 0x0 /* Terminator */ +--- /dev/null ++++ b/gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.exp +@@ -0,0 +1,43 @@ ++# Copyright 2009 Free Software Foundation, Inc. ++ ++# 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 . ++ ++# Test G++ 4.1 producing DW_TAG_namespace with DW_AT_name "::". ++ ++# This test can only be run on targets which support DWARF-2 and use gas. ++# For now pick a sampling of likely targets. ++if {![istarget *-*-linux*] ++ && ![istarget *-*-gnu*] ++ && ![istarget *-*-elf*] ++ && ![istarget *-*-openbsd*] ++ && ![istarget arm-*-eabi*] ++ && ![istarget powerpc-*-eabi*]} { ++ return 0 ++} ++ ++set testfile "dw2-empty-namespace" ++set srcfile ${testfile}.S ++set executable ${testfile}.x ++ ++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objdir}/${subdir}/${executable}" object {nodebug}] != "" } { ++ return -1 ++} ++ ++clean_restart $executable ++ ++# `p var' below can work without identified DWARF DIE just based on its ELF symbol. ++# Catch it here as `type = '. ++gdb_test "ptype var" "type = int" ++ ++gdb_test "p var" " = 1" diff --git a/gdb-ppc-hw-watchpoint-twice.patch b/gdb-ppc-hw-watchpoint-twice.patch new file mode 100755 index 0000000..e363158 --- /dev/null +++ b/gdb-ppc-hw-watchpoint-twice.patch @@ -0,0 +1,21 @@ +pcc regression from: +http://sourceware.org/ml/gdb-patches/2008-12/msg00143.html + +gdb/ +2009-12-21 Jan Kratochvil + + * breakpoint.c (update_watchpoint): Set B->TYPE to bp_watchpoint before + calling hw_watchpoint_used_count. + +--- a/gdb/breakpoint.c ++++ b/gdb/breakpoint.c +@@ -1152,6 +1152,9 @@ update_watchpoint (struct breakpoint *b, int reparse) + { + int i, mem_cnt, other_type_used; + ++ /* Do not count with B twice below. */ ++ b->type = bp_watchpoint; ++ + i = hw_watchpoint_used_count (bp_hardware_watchpoint, + &other_type_used); + mem_cnt = can_use_hardware_watchpoint (val_chain); diff --git a/gdb-rhel5-compat.patch b/gdb-rhel5-compat.patch new file mode 100644 index 0000000..c894ee5 --- /dev/null +++ b/gdb-rhel5-compat.patch @@ -0,0 +1,43 @@ +gdb/linux-nat.c: +- Workaround RHEL-5 kernels for detaching SIGSTOPped processes (BZ 498595). + +--- gdb-6.8/gdb-orig/symfile.c 2008-08-21 00:06:50.000000000 +0200 ++++ gdb-6.8/gdb/symfile.c 2008-08-21 22:31:00.000000000 +0200 +@@ -1456,8 +1456,10 @@ find_separate_debug_file (struct objfile + /* Prevent looping on a stripped .debug file. */ + if (build_id_name != NULL && strcmp (build_id_name, objfile->name) == 0) + { ++#if 0 /* RHEL-5 backward behavior compatibility. */ + warning (_("\"%s\": separate debug info file has no debug info"), + build_id_name); ++#endif + xfree (build_id_name); + } + else if (build_id_name != NULL) +--- gdb-7.0-orig/gdb/linux-nat.c 2009-12-19 20:53:46.000000000 +0100 ++++ gdb-7.0/gdb/linux-nat.c 2009-12-19 20:55:02.000000000 +0100 +@@ -1604,8 +1604,22 @@ GPT: lwp %s had signal %s, but it is in + *status = lp->status; + } + +- if (*status == 0 && GET_PID (lp->ptid) == pid_was_stopped) +- *status = W_STOPCODE (SIGSTOP); ++ /* Workaround RHEL-5 kernel which has unreliable PTRACE_DETACH, SIGSTOP (that ++ many TIDs are left unstopped). See RH Bug 496732. */ ++ if (GET_PID (lp->ptid) == pid_was_stopped) ++ { ++ int err; ++ ++ errno = 0; ++ err = kill_lwp (GET_LWP (lp->ptid), SIGSTOP); ++ if (debug_linux_nat) ++ { ++ fprintf_unfiltered (gdb_stdlog, ++ "SC: lwp kill %d %s\n", ++ err, ++ errno ? safe_strerror (errno) : "ERRNO-OK"); ++ } ++ } + + return 0; + } diff --git a/gdb-rhel5-fortran44.patch b/gdb-rhel5-fortran44.patch deleted file mode 100644 index 068ea6c..0000000 --- a/gdb-rhel5-fortran44.patch +++ /dev/null @@ -1,189 +0,0 @@ -Some functionality is available on RHEL-5.4+ only with gfortran44 as the -default gfortran binary is from gcc-4.1. - ---- ./gdb/testsuite/gdb.fortran/common-block.exp 2009-12-15 05:13:56.000000000 +0100 -+++ ./gdb/testsuite/gdb.fortran/common-block.exp 2009-12-15 05:21:00.000000000 +0100 -@@ -20,7 +20,25 @@ set testfile "common-block" - set srcfile ${testfile}.f90 - set binfile ${objdir}/${subdir}/${testfile} - --if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] != "" } { -+# Temporarily provide f77compiler=gfortran44 saving the original value around. -+ -+set board [target_info name] -+if [board_info $board exists f77compiler] { -+ set old_f77compiler [board_info $board f77compiler] -+ unset_board_info f77compiler -+} elseif [info exists old_f77compiler] { -+ unset old_f77compiler -+} -+set_board_info f77compiler gfortran44 -+ -+set err [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] -+ -+unset_board_info f77compiler -+if [info exists old_f77compiler] { -+ set_board_info f77compiler $old_f77compiler -+} -+ -+if { $err != "" } { - untested "Couldn't compile ${srcfile}" - return -1 - } ---- ./gdb/testsuite/gdb.fortran/dwarf-stride.exp 2009-12-15 05:13:56.000000000 +0100 -+++ ./gdb/testsuite/gdb.fortran/dwarf-stride.exp 2009-12-15 05:20:07.000000000 +0100 -@@ -27,7 +27,25 @@ - set testfile dwarf-stride - set srcfile ${testfile}.f90 - --if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug f77}] } { -+# Temporarily provide f77compiler=gfortran44 saving the original value around. -+ -+set board [target_info name] -+if [board_info $board exists f77compiler] { -+ set old_f77compiler [board_info $board f77compiler] -+ unset_board_info f77compiler -+} elseif [info exists old_f77compiler] { -+ unset old_f77compiler -+} -+set_board_info f77compiler gfortran44 -+ -+set err [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug f77}] -+ -+unset_board_info f77compiler -+if [info exists old_f77compiler] { -+ set_board_info f77compiler $old_f77compiler -+} -+ -+if $err { - return -1 - } - ---- ./gdb/testsuite/gdb.fortran/dynamic.exp 2009-12-15 05:13:56.000000000 +0100 -+++ ./gdb/testsuite/gdb.fortran/dynamic.exp 2009-12-15 05:17:21.000000000 +0100 -@@ -25,7 +25,25 @@ set testfile "dynamic" - set srcfile ${testfile}.f90 - set binfile ${objdir}/${subdir}/${testfile} - --if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] != "" } { -+# Temporarily provide f77compiler=gfortran44 saving the original value around. -+ -+set board [target_info name] -+if [board_info $board exists f77compiler] { -+ set old_f77compiler [board_info $board f77compiler] -+ unset_board_info f77compiler -+} elseif [info exists old_f77compiler] { -+ unset old_f77compiler -+} -+set_board_info f77compiler gfortran44 -+ -+set err [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] -+ -+unset_board_info f77compiler -+if [info exists old_f77compiler] { -+ set_board_info f77compiler $old_f77compiler -+} -+ -+if { $err != "" } { - untested "Couldn't compile ${srcfile}" - return -1 - } ---- ./gdb/testsuite/gdb.fortran/library-module.exp 2009-12-15 05:13:56.000000000 +0100 -+++ ./gdb/testsuite/gdb.fortran/library-module.exp 2009-12-15 05:22:37.000000000 +0100 -@@ -25,16 +25,34 @@ if [get_compiler_info not-used] { - return -1 - } - --if { [gdb_compile_shlib "${srcdir}/${subdir}/${srclibfile}" $objdir/$subdir/$libfile {debug f77}] != "" } { -- untested "Couldn't compile ${srclibfile}" -- return -1 -+# Temporarily provide f77compiler=gfortran44 saving the original value around. -+ -+set board [target_info name] -+if [board_info $board exists f77compiler] { -+ set old_f77compiler [board_info $board f77compiler] -+ unset_board_info f77compiler -+} elseif [info exists old_f77compiler] { -+ unset old_f77compiler - } -+set_board_info f77compiler gfortran44 - - # prepare_for_testing cannot be used as linking with $libfile cannot be passed - # just for the linking phase (and not the source compilation phase). And any - # warnings on ignored $libfile abort the process. - --if { [gdb_compile [list $srcdir/$subdir/$srcfile $objdir/$subdir/$libfile] $objdir/$subdir/$binfile executable {debug f77}] != "" } { -+set err1 [gdb_compile_shlib "${srcdir}/${subdir}/${srclibfile}" $objdir/$subdir/$libfile {debug f77}] -+set err2 [gdb_compile [list $srcdir/$subdir/$srcfile $objdir/$subdir/$libfile] $objdir/$subdir/$binfile executable {debug f77}] -+ -+unset_board_info f77compiler -+if [info exists old_f77compiler] { -+ set_board_info f77compiler $old_f77compiler -+} -+ -+if { $err1 != "" } { -+ untested "Couldn't compile ${srclibfile}" -+ return -1 -+} -+if { $err2 != "" } { - untested "Couldn't compile ${srcfile}" - return -1 - } ---- ./gdb/testsuite/gdb.fortran/module.exp 2009-12-15 05:13:56.000000000 +0100 -+++ ./gdb/testsuite/gdb.fortran/module.exp 2009-12-15 05:28:49.000000000 +0100 -@@ -16,7 +16,25 @@ - set testfile "module" - set srcfile ${testfile}.f90 - --if { [prepare_for_testing $testfile.exp $testfile $srcfile {debug f77}] } { -+# Temporarily provide f77compiler=gfortran44 saving the original value around. -+ -+set board [target_info name] -+if [board_info $board exists f77compiler] { -+ set old_f77compiler [board_info $board f77compiler] -+ unset_board_info f77compiler -+} elseif [info exists old_f77compiler] { -+ unset old_f77compiler -+} -+set_board_info f77compiler gfortran44 -+ -+set err [prepare_for_testing $testfile.exp $testfile $srcfile {debug f77}] -+ -+unset_board_info f77compiler -+if [info exists old_f77compiler] { -+ set_board_info f77compiler $old_f77compiler -+} -+ -+if $err { - return -1 - } - ---- ./gdb/testsuite/gdb.fortran/string.exp 2009-12-15 05:13:56.000000000 +0100 -+++ ./gdb/testsuite/gdb.fortran/string.exp 2009-12-15 05:18:13.000000000 +0100 -@@ -23,7 +23,25 @@ set testfile "string" - set srcfile ${testfile}.f90 - set binfile ${objdir}/${subdir}/${testfile} - --if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] != "" } { -+# Temporarily provide f77compiler=gfortran44 saving the original value around. -+ -+set board [target_info name] -+if [board_info $board exists f77compiler] { -+ set old_f77compiler [board_info $board f77compiler] -+ unset_board_info f77compiler -+} elseif [info exists old_f77compiler] { -+ unset old_f77compiler -+} -+set_board_info f77compiler gfortran44 -+ -+set err [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] -+ -+unset_board_info f77compiler -+if [info exists old_f77compiler] { -+ set_board_info f77compiler $old_f77compiler -+} -+ -+if { $err != "" } { - untested "Couldn't compile ${srcfile}" - return -1 - } diff --git a/gdb-rhel5-gcc44.patch b/gdb-rhel5-gcc44.patch new file mode 100644 index 0000000..c1fa8c4 --- /dev/null +++ b/gdb-rhel5-gcc44.patch @@ -0,0 +1,405 @@ +Some functionality is available on RHEL-5.4+ only with gcc44 and gfortran44 as +the default gcc and gfortran binaries are from gcc-4.1. + +--- gdb-7.0/gdb/testsuite/gdb.base/vla.exp-orig 2009-12-20 00:38:13.000000000 +0100 ++++ gdb-7.0/gdb/testsuite/gdb.base/vla.exp 2009-12-20 00:54:19.000000000 +0100 +@@ -16,7 +16,25 @@ + set testfile vla + set srcfile ${testfile}.c + set binfile ${objdir}/${subdir}/${testfile} +-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { ++# Temporarily provide compiler=gcc44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists compiler] { ++ set old_compiler [board_info $board compiler] ++ unset_board_info compiler ++} elseif [info exists old_compiler] { ++ unset old_compiler ++} ++set_board_info compiler gcc44 ++ ++set err [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug quiet}] ++ ++unset_board_info compiler ++if [info exists old_compiler] { ++ set_board_info compiler $old_compiler ++} ++ ++if { $err != "" } { + untested "Couldn't compile test program" + return -1 + } +--- gdb-7.0/gdb/testsuite/gdb.base/break-interp.exp-orig 2009-12-20 00:38:13.000000000 +0100 ++++ gdb-7.0/gdb/testsuite/gdb.base/break-interp.exp 2009-12-20 01:11:47.000000000 +0100 +@@ -31,10 +31,30 @@ if [get_compiler_info ${binfile_lib}] { + return -1 + } + ++# Temporarily provide compiler=gcc44 saving the original value around. ++# RHEL-5 workaround of its: ++# gcc: -soname: linker input file unused because linking not done ++ ++set board [target_info name] ++if [board_info $board exists compiler] { ++ set old_compiler [board_info $board compiler] ++ unset_board_info compiler ++} elseif [info exists old_compiler] { ++ unset old_compiler ++} ++set_board_info compiler gcc44 ++ + # Use -soname so that it is listed with " => " by ldd and this testcase makes + # a copy of ${binfile_lib} for each prelink variant. + +-if {[gdb_compile_shlib ${srcdir}/${subdir}/${srcfile_lib} ${binfile_lib} [list debug additional_flags=-Wl,-soname,${test}.so]] != ""} { ++set err [gdb_compile_shlib ${srcdir}/${subdir}/${srcfile_lib} ${binfile_lib} [list debug additional_flags=-Wl,-soname,${test}.so]] ++ ++unset_board_info compiler ++if [info exists old_compiler] { ++ set_board_info compiler $old_compiler ++} ++ ++if { $err != "" } { + return -1 + } + +@@ -483,9 +503,33 @@ foreach ldprelink {NO YES} { + if {$binpie == "YES"} { + lappend opts {additional_flags=-fPIE -pie} + } +- if {[build_executable ${test}.exp [file tail $exec] $srcfile $opts] == -1} { +- continue; ++ ++ ++ # Temporarily provide compiler=gcc44 saving the original value around. ++ # RHEL-5 workaround of its: ++ # gcc: -rpath: linker input file unused because linking not done ++ # gcc: --dynamic-linker: linker input file unused because linking not done ++ ++ set board [target_info name] ++ if [board_info $board exists compiler] { ++ set old_compiler [board_info $board compiler] ++ unset_board_info compiler ++ } elseif [info exists old_compiler] { ++ unset old_compiler ++ } ++ set_board_info compiler gcc44 ++ ++ set err [build_executable ${test}.exp [file tail $exec] $srcfile $opts] ++ ++ unset_board_info compiler ++ if [info exists old_compiler] { ++ set_board_info compiler $old_compiler + } ++ ++ if { $err == -1 } { ++ continue ++ } ++ + if {$binsepdebug == "SEP"} { + gdb_gnu_strip_debug $exec + # Just a sanity check. As gdb_gnu_strip_debug uses the +--- ./gdb/testsuite/gdb.fortran/common-block.exp 2009-12-15 05:13:56.000000000 +0100 ++++ ./gdb/testsuite/gdb.fortran/common-block.exp 2009-12-15 05:21:00.000000000 +0100 +@@ -20,7 +20,25 @@ set testfile "common-block" + set srcfile ${testfile}.f90 + set binfile ${objdir}/${subdir}/${testfile} + +-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] != "" } { ++# Temporarily provide f77compiler=gfortran44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists f77compiler] { ++ set old_f77compiler [board_info $board f77compiler] ++ unset_board_info f77compiler ++} elseif [info exists old_f77compiler] { ++ unset old_f77compiler ++} ++set_board_info f77compiler gfortran44 ++ ++set err [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] ++ ++unset_board_info f77compiler ++if [info exists old_f77compiler] { ++ set_board_info f77compiler $old_f77compiler ++} ++ ++if { $err != "" } { + untested "Couldn't compile ${srcfile}" + return -1 + } +--- ./gdb/testsuite/gdb.fortran/dwarf-stride.exp 2009-12-15 05:13:56.000000000 +0100 ++++ ./gdb/testsuite/gdb.fortran/dwarf-stride.exp 2009-12-15 05:20:07.000000000 +0100 +@@ -27,7 +27,25 @@ + set testfile dwarf-stride + set srcfile ${testfile}.f90 + +-if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug f77}] } { ++# Temporarily provide f77compiler=gfortran44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists f77compiler] { ++ set old_f77compiler [board_info $board f77compiler] ++ unset_board_info f77compiler ++} elseif [info exists old_f77compiler] { ++ unset old_f77compiler ++} ++set_board_info f77compiler gfortran44 ++ ++set err [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug f77}] ++ ++unset_board_info f77compiler ++if [info exists old_f77compiler] { ++ set_board_info f77compiler $old_f77compiler ++} ++ ++if $err { + return -1 + } + +--- ./gdb/testsuite/gdb.fortran/dynamic.exp 2009-12-15 05:13:56.000000000 +0100 ++++ ./gdb/testsuite/gdb.fortran/dynamic.exp 2009-12-15 05:17:21.000000000 +0100 +@@ -25,7 +25,25 @@ set testfile "dynamic" + set srcfile ${testfile}.f90 + set binfile ${objdir}/${subdir}/${testfile} + +-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] != "" } { ++# Temporarily provide f77compiler=gfortran44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists f77compiler] { ++ set old_f77compiler [board_info $board f77compiler] ++ unset_board_info f77compiler ++} elseif [info exists old_f77compiler] { ++ unset old_f77compiler ++} ++set_board_info f77compiler gfortran44 ++ ++set err [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] ++ ++unset_board_info f77compiler ++if [info exists old_f77compiler] { ++ set_board_info f77compiler $old_f77compiler ++} ++ ++if { $err != "" } { + untested "Couldn't compile ${srcfile}" + return -1 + } +--- ./gdb/testsuite/gdb.fortran/library-module.exp 2009-12-15 05:13:56.000000000 +0100 ++++ ./gdb/testsuite/gdb.fortran/library-module.exp 2009-12-15 05:22:37.000000000 +0100 +@@ -25,16 +25,34 @@ if [get_compiler_info not-used] { + return -1 + } + +-if { [gdb_compile_shlib "${srcdir}/${subdir}/${srclibfile}" $objdir/$subdir/$libfile {debug f77}] != "" } { +- untested "Couldn't compile ${srclibfile}" +- return -1 ++# Temporarily provide f77compiler=gfortran44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists f77compiler] { ++ set old_f77compiler [board_info $board f77compiler] ++ unset_board_info f77compiler ++} elseif [info exists old_f77compiler] { ++ unset old_f77compiler + } ++set_board_info f77compiler gfortran44 + + # prepare_for_testing cannot be used as linking with $libfile cannot be passed + # just for the linking phase (and not the source compilation phase). And any + # warnings on ignored $libfile abort the process. + +-if { [gdb_compile [list $srcdir/$subdir/$srcfile $objdir/$subdir/$libfile] $objdir/$subdir/$binfile executable {debug f77}] != "" } { ++set err1 [gdb_compile_shlib "${srcdir}/${subdir}/${srclibfile}" $objdir/$subdir/$libfile {debug f77}] ++set err2 [gdb_compile [list $srcdir/$subdir/$srcfile $objdir/$subdir/$libfile] $objdir/$subdir/$binfile executable {debug f77}] ++ ++unset_board_info f77compiler ++if [info exists old_f77compiler] { ++ set_board_info f77compiler $old_f77compiler ++} ++ ++if { $err1 != "" } { ++ untested "Couldn't compile ${srclibfile}" ++ return -1 ++} ++if { $err2 != "" } { + untested "Couldn't compile ${srcfile}" + return -1 + } +--- ./gdb/testsuite/gdb.fortran/module.exp 2009-12-15 05:13:56.000000000 +0100 ++++ ./gdb/testsuite/gdb.fortran/module.exp 2009-12-15 05:28:49.000000000 +0100 +@@ -16,7 +16,25 @@ + set testfile "module" + set srcfile ${testfile}.f90 + +-if { [prepare_for_testing $testfile.exp $testfile $srcfile {debug f77}] } { ++# Temporarily provide f77compiler=gfortran44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists f77compiler] { ++ set old_f77compiler [board_info $board f77compiler] ++ unset_board_info f77compiler ++} elseif [info exists old_f77compiler] { ++ unset old_f77compiler ++} ++set_board_info f77compiler gfortran44 ++ ++set err [prepare_for_testing $testfile.exp $testfile $srcfile {debug f77}] ++ ++unset_board_info f77compiler ++if [info exists old_f77compiler] { ++ set_board_info f77compiler $old_f77compiler ++} ++ ++if $err { + return -1 + } + +--- ./gdb/testsuite/gdb.fortran/string.exp 2009-12-15 05:13:56.000000000 +0100 ++++ ./gdb/testsuite/gdb.fortran/string.exp 2009-12-15 05:18:13.000000000 +0100 +@@ -23,7 +23,25 @@ set testfile "string" + set srcfile ${testfile}.f90 + set binfile ${objdir}/${subdir}/${testfile} + +-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] != "" } { ++# Temporarily provide f77compiler=gfortran44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists f77compiler] { ++ set old_f77compiler [board_info $board f77compiler] ++ unset_board_info f77compiler ++} elseif [info exists old_f77compiler] { ++ unset old_f77compiler ++} ++set_board_info f77compiler gfortran44 ++ ++set err [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] ++ ++unset_board_info f77compiler ++if [info exists old_f77compiler] { ++ set_board_info f77compiler $old_f77compiler ++} ++ ++if { $err != "" } { + untested "Couldn't compile ${srcfile}" + return -1 + } +--- gdb-7.0/gdb/testsuite/gdb.fortran/omp-step.exp-orig 2009-12-20 09:47:04.000000000 +0100 ++++ gdb-7.0/gdb/testsuite/gdb.fortran/omp-step.exp 2009-12-20 09:50:06.000000000 +0100 +@@ -15,7 +15,26 @@ + + set testfile "omp-step" + set srcfile ${testfile}.f90 +-if { [prepare_for_testing $testfile.exp $testfile $srcfile {debug f77 additional_flags=-fopenmp}] } { ++ ++# Temporarily provide f77compiler=gfortran44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists f77compiler] { ++ set old_f77compiler [board_info $board f77compiler] ++ unset_board_info f77compiler ++} elseif [info exists old_f77compiler] { ++ unset old_f77compiler ++} ++set_board_info f77compiler gfortran44 ++ ++set err [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug f77 additional_flags=-fopenmp}] ++ ++unset_board_info f77compiler ++if [info exists old_f77compiler] { ++ set_board_info f77compiler $old_f77compiler ++} ++ ++if $err { + return -1 + } + +--- ./gdb/testsuite/gdb.fortran/derived-type.exp 2009-01-07 13:39:13.000000000 +0100 ++++ ./gdb/testsuite/gdb.fortran/derived-type.exp 2009-12-20 12:37:12.000000000 +0100 +@@ -26,7 +26,25 @@ set testfile "derived-type" + set srcfile ${testfile}.f90 + set binfile ${objdir}/${subdir}/${testfile} + +-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] != "" } { ++# Temporarily provide f77compiler=gfortran44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists f77compiler] { ++ set old_f77compiler [board_info $board f77compiler] ++ unset_board_info f77compiler ++} elseif [info exists old_f77compiler] { ++ unset old_f77compiler ++} ++set_board_info f77compiler gfortran44 ++ ++set err [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] ++ ++unset_board_info f77compiler ++if [info exists old_f77compiler] { ++ set_board_info f77compiler $old_f77compiler ++} ++ ++if { $err != "" } { + untested "Couldn't compile ${srcfile}" + return -1 + } +--- ./gdb/testsuite/gdb.fortran/subarray.exp 2009-01-07 13:39:13.000000000 +0100 ++++ ./gdb/testsuite/gdb.fortran/subarray.exp 2009-12-20 12:38:00.000000000 +0100 +@@ -26,7 +26,25 @@ set testfile "subarray" + set srcfile ${testfile}.f + set binfile ${objdir}/${subdir}/${testfile} + +-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] != "" } { ++# Temporarily provide f77compiler=gfortran44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists f77compiler] { ++ set old_f77compiler [board_info $board f77compiler] ++ unset_board_info f77compiler ++} elseif [info exists old_f77compiler] { ++ unset old_f77compiler ++} ++set_board_info f77compiler gfortran44 ++ ++set err [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug f77 quiet}] ++ ++unset_board_info f77compiler ++if [info exists old_f77compiler] { ++ set_board_info f77compiler $old_f77compiler ++} ++ ++if { $err != "" } { + untested "Couldn't compile ${srcfile}" + return -1 + } +--- ./gdb/testsuite/gdb.threads/tls-sepdebug.exp 2009-12-20 12:22:18.000000000 +0100 ++++ ./gdb/testsuite/gdb.threads/tls-sepdebug.exp 2009-12-20 12:39:53.000000000 +0100 +@@ -32,7 +32,25 @@ set binshareddebugfile ${objdir}/${subdi + + # FIXME: gcc dependency (-Wl,-soname). + +-if { [gdb_compile_shlib "${srcdir}/${subdir}/${srcsharedfile}" "${binsharedfile}" [list debug additional_flags=-Wl,-soname=${binsharedbase}]] != "" } { ++# Temporarily provide compiler=gcc44 saving the original value around. ++ ++set board [target_info name] ++if [board_info $board exists compiler] { ++ set old_compiler [board_info $board compiler] ++ unset_board_info compiler ++} elseif [info exists old_compiler] { ++ unset old_compiler ++} ++set_board_info compiler gcc44 ++ ++set err [gdb_compile_shlib "${srcdir}/${subdir}/${srcsharedfile}" "${binsharedfile}" [list debug additional_flags=-Wl,-soname=${binsharedbase}]] ++ ++unset_board_info compiler ++if [info exists old_compiler] { ++ set_board_info compiler $old_compiler ++} ++ ++if { $err != "" } { + untested "Couldn't compile test library" + return -1 + } diff --git a/gdb.spec b/gdb.spec index 1fe6af7..4532b90 100644 --- a/gdb.spec +++ b/gdb.spec @@ -16,8 +16,10 @@ # RHEL-5 ppc* python .so files are shipped only as ppc but gdb is ppc64 there. # Brew builds it fine as its ppc64 buildroot has full ppc64 package set. %if 0%{?el5:1} +%ifarch ppc ppc64 %define _without_python 1 %endif +%endif Summary: A GNU source-level debugger for C, C++, Java and other languages Name: gdb%{?_with_debug:-debug} @@ -29,7 +31,7 @@ Version: 7.0 # The release always contains a leading reserved number, start it at 1. # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing. -Release: 11%{?_with_upstream:.upstream}%{dist} +Release: 12%{?_with_upstream:.upstream}%{dist} License: GPLv3+ Group: Development/Debuggers @@ -401,7 +403,17 @@ Patch391: gdb-x86_64-i386-syscall-restart.patch Patch392: gdb-bz533176-fortran-omp-step.patch # Use gfortran44 when running the testsuite on RHEL-5. -Patch393: gdb-rhel5-fortran44.patch +Patch393: gdb-rhel5-gcc44.patch + +# Disable warning messages new for gdb-6.8+ for RHEL-5 backward compatibility. +# Workaround RHEL-5 kernels for detaching SIGSTOPped processes (BZ 498595). +Patch335: gdb-rhel5-compat.patch + +# Fix backward compatibility with G++ 4.1 namespaces "::". +Patch395: gdb-empty-namespace.patch + +# Fix regression on re-setting the single ppc watchpoint slot. +Patch396: gdb-ppc-hw-watchpoint-twice.patch BuildRequires: ncurses-devel texinfo gettext flex bison expat-devel Requires: readline @@ -412,7 +424,11 @@ BuildRequires: rpm-devel Requires: zlib BuildRequires: zlib-devel %if 0%{!?_without_python:1} +%if 0%{!?el5:1} Requires: python-libs +%else +Requires: python +%endif BuildRequires: python-devel # Temporarily before it gets moved to libstdc++.rpm BuildRequires: libstdc++ @@ -634,10 +650,14 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c %patch392 -p1 # Always verify its applicability. %patch393 -p1 +%patch335 -p1 %if 0%{!?el5:1} %patch393 -p1 -R +%patch335 -p1 -R %endif %patch394 -p1 +%patch395 -p1 +%patch396 -p1 find -name "*.orig" | xargs rm -f ! find -name "*.rej" # Should not happen. @@ -706,6 +726,8 @@ CFLAGS="$CFLAGS -O0 -ggdb2" --disable-rpath \ --with-system-readline \ --with-expat \ +$(: ppc64 host build crashes on /usr/lib/libexpat.so ) \ + --without-libexpat-prefix \ --enable-tui \ %if 0%{!?_without_python:1} --with-python \ @@ -808,7 +830,12 @@ gcc -o ./orphanripper %{SOURCE2} -Wall -lutil -ggdb2 CHECK="$(echo $CHECK|sed 's#check//unix/[^ ]*#& &/-fPIE/-pie#g')" %endif # 0%{!?_with_upstream:1} - ./orphanripper make %{?_smp_mflags} -k $CHECK || : + ./orphanripper make %{?_smp_mflags} -k $CHECK \ +$(: Serialize the output to keep the order for regression checks. ) \ +%if 0%{?el5:1} + RUNTESTFLAGS="--tool gdb" \ +%endif + || : ) for t in sum log do @@ -942,6 +969,19 @@ fi %endif %changelog +* Mon Dec 21 2009 Jan Kratochvil - 7.0-12.fc12 +- Workaround build on native ppc64 host. +- More RHEL-5 compatibility updates. + - Disable warning messages new for gdb-6.8+ for RHEL-5 backward compatibility. + - Workaround RHEL-5 kernels for detaching SIGSTOPped processes (BZ 498595). + - Serialize the testsuite output to keep the order for regression checks. + - Re-enable python for all non-ppc* arches. + - More gcc44 stack exceptions when running the testsuite on RHEL-5. +- Fix backward compatibility with G++ 4.1 namespaces "::". +- Fix regression on re-setting the single ppc watchpoint slot. +- Update snapshot of FSF gdb-7.0.x branch. + - Backport fix of dcache invalidation locking up GDB on ppc64 targets. + * Fri Dec 18 2009 Jan Kratochvil - 7.0-11.fc12 - [pie] Fix general ppc64 regression due to a function descriptors bug. - [pie] Fix also keeping breakpoints disabled in PIE mode.