{"id":"GPL-3.0-only-with-GCC-exception-3.1","title":"GNU General Public License 3 with GCC Runtime Library exception 3.1","reviewed_on":"2026-09-22","reviewer":"Giray Havur","text_source":"https://raw.githubusercontent.com/spdx/license-list-data/main/text/GPL-3.0-only.txt","text_retrieved":true,"verdict":"created","summary":"The record models GPL version 3 with the GCC runtime library exception 3.1, the combination the runtime libraries of the GNU Compiler Collection carry. It keeps every statement of the GPL-3.0-only record and adds one permission for target code that a compiler produces by combining the runtime library with independent modules. The exception only holds where every compilation step was eligible, which the record quotes because the condition has no term.","findings":[{"rubric":1,"severity":"info","field":"spdx:licenseId","description":"File name, record identifier, IRI local name and title agree. spdx:licenseId carries the SPDX expression \"GPL-3.0-only WITH GCC-exception-3.1\": the base identifier, one space, WITH in capitals, one space, the exception identifier. No record in the library carried an expression before, so the SPDX mapping and the spdx route have to accept the space and the keyword.","action":"applied"},{"rubric":1,"severity":"info","field":"cc:legalcode","description":"cc:legalcode points at the text of the base licence, https://www.gnu.org/licenses/gpl-3.0.html, because that is the licence the record models. dct:source points at the SPDX page of the exception, https://spdx.org/licenses/GCC-exception-3.1.html, because that is where the additional permission is published.","action":"applied"},{"rubric":2,"severity":"info","field":"odrl:target","description":"odrl:target is the one the base record carries: an odrl:AssetCollection of dct:type dcmitype:Software. The exception is about program files, so nothing changes.","action":"applied"},{"rubric":3,"severity":"major","field":"odrl:permission","description":"Section 1 of the exception reads: \"You have permission to propagate a work of Target Code formed by combining the Runtime Library with Independent Modules, even if such propagation would otherwise violate the terms of GPLv3, provided that all Target Code was generated by Eligible Compilation Processes. You may then convey such a combination under terms of your choice, consistent with the licensing of the Independent Modules.\" The target code is material the share-alike condition no longer reaches, which is the permission dalicc:exceptedCombination.","action":"applied","change":"odrl:permission [ a odrl:Permission ;\n        odrl:action dalicc:exceptedCombination ] ;\n"},{"rubric":3,"severity":"info","field":"odrl:permission","description":"Every permission of GPL-3.0-only is kept, in the same place and with the same duties. An exception adds an additional permission to a licence; it never takes a granted right away.","action":"applied"},{"rubric":4,"severity":"info","field":"odrl:prohibition","description":"The exception lets the combined result travel under other terms, and the vocabulary cannot say that of a part of a work. Section 1 says of the combination: \"You may then convey such a combination under terms of your choice, consistent with the licensing of the Independent Modules.\" A dalicc:ChangeLicense permission would say the licence of the covered work itself may be replaced, which is false and would contradict the whole-work share-alike duty. The record therefore keeps the prohibition, states the narrowed reach in dalicc:reciprocityScope and quotes the clause. Proposed term: dalicc:combinedWorkRelicensing, a permission for putting a larger work that contains the covered material under other terms.","action":"applied"},{"rubric":5,"severity":"info","field":"odrl:duty","description":"The licence-wide cc:ShareAlike duty stays on the odrl:Set, and section 2 of the exception says why: \"The availability of this Exception does not imply any general presumption that third-party software is unaffected by the copyleft requirements of the license of GCC.\"","action":"applied"},{"rubric":6,"severity":"info","field":"dalicc:additionalClauses","description":"The exception text is quoted verbatim as one literal, taken from https://raw.githubusercontent.com/spdx/license-list-data/main/text/GCC-exception-3.1.txt. Line breaks and the indentation of the source file are collapsed to single spaces, which is how every clause literal in the library is written; the wording is untouched. The warranty disclaimer and the liability limitation are the ones the base record quotes from the base licence.","action":"applied"},{"rubric":7,"severity":"info","field":"cc:jurisdiction","description":"cc:jurisdiction stays dalicc:worldwide and dalicc:validityType stays dalicc:perpetual: the exception names no territory and no term. The termination clause of the base licence still applies, and the record says no more about it than the base record does.","action":"applied"},{"rubric":8,"severity":"gap","field":"dalicc:exceptedCombination","description":"The exception carves the combination out of the condition of the licence, not out of its grant. dalicc:exemptedMaterial says the opposite and is prohibited on OGL-UK-1.0, OGL-UK-2.0 and NLOD-2.0, where it means material the licence never granted. The vocabulary defines dalicc:exceptedCombination for this side of it since 2026-09-23, and the record carries it as a permission.","action":"applied"},{"rubric":8,"severity":"gap","field":"dalicc:additionalClauses","description":"The exception holds only for an eligible compilation: \"A Compilation Process is \"Eligible\" if it is done using GCC, alone or with other GPL-compatible software, or if it is done without using any work based on GCC.\" The permission therefore depends on how the result was produced, and no term expresses a condition on the tool chain. Proposed term: dalicc:exceptionVoidingCondition, or a qualifier naming the process the exception requires.","action":"none"},{"rubric":9,"severity":"info","field":"record","description":"app.services.composer.consistency_check with the default dependency graph reports 0 conflicts for this record. dalicc:exceptedCombination takes part in no dependency relation, so it neither creates nor hides one.","action":"applied"},{"rubric":10,"severity":"info","field":"record","description":"The nearest sibling is GPL-3.0-or-later-with-GCC-exception-3.1, the same exception on the version with the option, which this addition creates in another set of records. GPL-2.0-only-with-GCC-exception-2.0 carries the older, much shorter exception on GPL version 2; the two are not the same text and their dalicc:reciprocityScope literals differ.","action":"applied"},{"rubric":4,"severity":"minor","field":"odrl:prohibition","description":"dalicc:promote was prohibited and no sentence of this text supports it. The statement was the library's reading of a legal default, that a copyright licence which says nothing about endorsement grants no right to it, and it sat in 519 of 581 records as a house convention. That reading is now an adopted dalicc:DefaultRule of the core dependency graph, which supplies it to every licence that is silent about the action, so a compatibility check reaches the same answer and the record states only what the text states. Removed on 2026-09-23; see section 13 of docs/LICENSE_REVIEW.md.","action":"applied","change":"# removed\nodrl:prohibition [ a odrl:Prohibition ;\n        odrl:action dalicc:promote ] ;\n"},{"rubric":6,"severity":"minor","field":"dalicc:WarrantyOrLiabilityAcceptance","description":"dalicc:WarrantyOrLiabilityAcceptance held the whole sentence of Section 4, \"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.\" Its first half is the permission to charge for a copy, which the record states as dalicc:chargeDistributionFee, and not a warranty clause. The literal now quotes only the second half, \"you may offer support or warranty protection for a fee\".","action":"applied"}],"family":"GNU copyleft family (GPL, LGPL, AGPL, FDL)","port_of":null,"variant_kind":"exception","variant_of":"GPL-3.0-only","notes":"The exception calls itself \"an additional permission under section 7 of the GNU General Public License, version 3\", so the base licence itself makes room for it. dalicc:orLaterVersionOption stays false, as in the base record: the exception's definition of GCC mentions later versions of the GPL, but the licence of this record is version 3 only."}