{"id":"GPL-3.0-or-later-with-GCC-exception-3.1","title":"GNU General Public License v3.0 or later 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-or-later.txt","text_retrieved":true,"verdict":"created","summary":"The record models GNU General Public License v3.0 or later with the exception the SPDX list calls GCC-exception-3.1. It copies the model of GPL-3.0-or-later statement for statement and adds what the exception grants. The exception lets compiled output that carries parts of the runtime library travel under other terms when it was produced by an eligible compilation process. The copyleft of the base licence still reaches the runtime library, not target code that combines it with independent modules, and the exception text is quoted in full in dalicc:additionalClauses.","findings":[{"rubric":1,"severity":"info","field":"spdx:licenseId","description":"The file name, the identifier and the local name of the odrl:Set IRI are all GPL-3.0-or-later-with-GCC-exception-3.1. spdx:licenseId carries the SPDX expression \"GPL-3.0-or-later WITH GCC-exception-3.1\", with one space, an upper-case WITH and one more space, which is how the SPDX list writes a licence combined with an exception.","action":"applied"},{"rubric":2,"severity":"info","field":"odrl:target","description":"One odrl:AssetCollection of dct:type dcmitype:Software, copied from GPL-3.0-or-later. The exception speaks of code, modules and executables throughout.","action":"applied"},{"rubric":3,"severity":"major","field":"odrl:permission","description":"Section 4 reads: \"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.\" Section 5 adds the right to convey a modified source version and section 6 the right to convey it in object form. The record therefore keeps every permission of GPL-3.0-or-later: reproduce, distribute, modify, derive, display, present, commercial use, derivative works, modified works and charging a distribution fee. The exception adds one more. It 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.\" That is material the licence carves out of its own condition, so it is modelled as a permission dalicc:exceptedCombination.","action":"applied"},{"rubric":4,"severity":"major","field":"odrl:prohibition","description":"The prohibitions of GPL-3.0-or-later stay as they are. dalicc:ChangeLicense is still prohibited, because the exception narrows the reach of the reciprocity and does not let the covered work itself leave the licence. The exception keeps the reach of the licence over the library itself: \"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":4,"severity":"minor","field":"odrl:prohibition","description":"dalicc:promote is prohibited because GPL-3.0-or-later prohibits it and an exception record keeps every statement of its base. Neither the base text nor the exception has a trademark or endorsement clause, so the prohibition is a library convention here and not text-supported. The review of GPL-2.0-only proposed removing it library-wide.","action":"applied"},{"rubric":5,"severity":"major","field":"odrl:duty","description":"The licence-wide cc:ShareAlike duty of GPL-3.0-or-later stays on the odrl:Set, because the reciprocity of the base licence still covers the whole work. cc:Attribution, cc:Notice and cc:SourceCode stay on distribute, modify and derive, and dalicc:modificationNotice on modify and derive. The carve-out is conditional on the toolchain: it applies only where \"all Target Code was generated by Eligible Compilation Processes\", and a process is eligible only 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\". No duty action can hold a condition about how the code was compiled, so it stays in the quoted clause.","action":"applied"},{"rubric":5,"severity":"minor","field":"dalicc:reciprocityScope","description":"dalicc:reciprocityScope says in words how far the copyleft reaches after the exception: \"the runtime library, not target code that combines it with independent modules\". The base record carries no such annotation, because without the exception the reciprocity reaches the whole work.","action":"applied"},{"rubric":6,"severity":"major","field":"dalicc:additionalClauses","description":"The exception text is quoted verbatim as one literal of dalicc:additionalClauses, from https://spdx.org/licenses/GCC-exception-3.1.html. Line breaks and runs of spaces were collapsed to single spaces, the way every other clause literal in the library is written; no word was changed, added or dropped. The warranty disclaimer and the limitation of liability are the ones of GPL-3.0-or-later, quoted verbatim from the base text, because the exception changes neither.","action":"applied"},{"rubric":7,"severity":"info","field":"cc:jurisdiction","description":"The base text and the exception name no legal system, so cc:jurisdiction stays dalicc:worldwide, dalicc:validityType stays dalicc:perpetual and no dalicc:governingLaw is stated. The termination and cure terms of the base licence are untouched by the exception.","action":"applied"},{"rubric":7,"severity":"major","field":"dalicc:orLaterVersionOption","description":"dalicc:orLaterVersionOption is true. Section 14 of the base text states the option: \"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.\" The exception is written for the same reading: it defines GCC as software \"governed by version 3 (or a specified later version) of the GNU General Public License (GPL) with the option of using any subsequent versions published by the FSF\".","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 carve-out depends on how the code was built: it holds only where \"all Target Code was generated by Eligible Compilation Processes\". The vocabulary has no term for a condition on the process that produced the work. Proposed term: dalicc:productionProcessCondition, an annotation naming the process the carve-out depends on.","action":"none"},{"rubric":9,"severity":"info","field":"record","description":"The consistency check against dg_default returned no conflicts. The exempted permission is a new action for the checker, it is not prohibited anywhere and the dependency graph holds no relation for it, so it neither triggers nor hides a conflict. The share-alike rule is not triggered, because dalicc:ChangeLicense stays prohibited.","action":"none"},{"rubric":10,"severity":"info","field":"dalicc:variantOf","description":"The record is the base licence plus the exception, so it repeats GPL-3.0-or-later statement for statement and adds four things: the dalicc:exceptedCombination permission, the dalicc:reciprocityScope annotation, the exception text in dalicc:additionalClauses and the pair dalicc:variantKind \"exception\" with dalicc:variantOf dalicclib:GPL-3.0-or-later. Nothing the base states was removed.","action":"applied"},{"rubric":10,"severity":"minor","field":"dalicc:variantOf","description":"This is the one record of the set whose base is itself new. Its model was copied from GPL-3.0-or-later, which carries the same legal text as GPL-3.0-only and differs from it only in dalicc:orLaterVersionOption, dalicc:variantKind and dalicc:variantOf. The record therefore sits two steps from GPL-3.0-only: a version option, then an exception. A second reader should check that it still matches GPL-3.0-or-later statement for statement once the whole addition is in place.","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-or-later","notes":"The base licence text is the SPDX text of GPL-3.0-or-later, retrieved on 2026-09-22; the exception text is the SPDX text of GCC-exception-3.1, from https://spdx.org/licenses/GCC-exception-3.1.html. Nothing here is legal advice: the record says what the two texts say and quotes them. An exception record never removes a statement its base carries, so anything that looks wrong in this record and is also in GPL-3.0-or-later belongs to the base record and is written up as a proposal instead."}