| # -*- yaml -*- |
| |
| # Copyright (C) 2021-2026 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 <http://www.gnu.org/licenses/>. |
| |
| # A clang format style for gdb. |
| |
| # ⚠️⚠️⚠️ DO NOT BULK REFORMAT FILES ⚠️⚠️⚠️ |
| |
| # This style is still in flux and still considered "alpha". Use "git |
| # clang-format" or the like to reformat just the parts your patch |
| # touches -- at most. At some point in the future we will bulk |
| # reformat and at that point we'll send out new instructions. |
| |
| # There is currently not a blessed version of clang-format. This was |
| # tried with versions 18-21 with various results. |
| |
| # There's a gdb bug open for discussion of the format. |
| # |
| # https://sourceware.org/bugzilla/show_bug.cgi?id=30098 |
| # |
| # It also has links to relevant upstream clang-format bugs. |
| |
| # Options here are generally in alphabetical order. |
| |
| Language: Cpp |
| # BasedOnStyle: GNU |
| AccessModifierOffset: -2 |
| AlignAfterOpenBracket: Align |
| AlignConsecutiveAssignments: false |
| AlignConsecutiveDeclarations: false |
| AlignConsecutiveMacros: false |
| AlignEscapedNewlines: Left |
| AlignOperands: true |
| AlignTrailingComments: true |
| AllowAllArgumentsOnNextLine: false |
| AllowAllParametersOfDeclarationOnNextLine: false |
| AllowShortBlocksOnASingleLine: false |
| AllowShortCaseLabelsOnASingleLine: false |
| AllowShortEnumsOnASingleLine: false |
| AllowShortFunctionsOnASingleLine: None |
| AllowShortIfStatementsOnASingleLine: Never |
| AllowShortLambdasOnASingleLine: All |
| AllowShortLoopsOnASingleLine: false |
| AlwaysBreakAfterReturnType: TopLevelDefinitions |
| AlwaysBreakBeforeMultilineStrings: false |
| AlwaysBreakTemplateDeclarations: Yes |
| # |
| # Run: |
| # git grep 'define ATTRIBUTE_' -- include gdb* | \ |
| # sed -e's/^.*\(ATTRIBUTE_[A-Z0-9_]*\).*$/\1/' | \ |
| # sort -u | \ |
| # sed -e "s/^\(.*\)$/ '\1',/" |
| AttributeMacros: [ |
| 'ATTRIBUTE_ALIGNED_ALIGNOF', |
| 'ATTRIBUTE_COLD', |
| 'ATTRIBUTE_FORMAT_PRINTF_STANDARD', |
| 'ATTRIBUTE_FPTR_PRINTF', |
| 'ATTRIBUTE_GCC_STRUCT', |
| 'ATTRIBUTE_HOT', |
| 'ATTRIBUTE_MALLOC', |
| 'ATTRIBUTE_NOCLONE', |
| 'ATTRIBUTE_NONNULL', |
| 'ATTRIBUTE_NONSTRING', |
| 'ATTRIBUTE_NORETURN', |
| 'ATTRIBUTE_NO_SANITIZE_UNDEFINED', |
| 'ATTRIBUTE_NULL_PRINTF', |
| 'ATTRIBUTE_PACKED', |
| 'ATTRIBUTE_PRINTF', |
| 'ATTRIBUTE_PURE', |
| 'ATTRIBUTE_RESULT_SIZE_1', |
| 'ATTRIBUTE_RESULT_SIZE_1_2', |
| 'ATTRIBUTE_RESULT_SIZE_2', |
| 'ATTRIBUTE_RETURNS_NONNULL', |
| 'ATTRIBUTE_SENTINEL', |
| 'ATTRIBUTE_UNUSED', |
| 'ATTRIBUTE_UNUSED_LABEL', |
| 'ATTRIBUTE_UNUSED_RESULT', |
| 'ATTRIBUTE_USED', |
| 'ATTRIBUTE_VISIBILITY', |
| 'ATTRIBUTE_WARN_UNUSED_RESULT', |
| ] |
| BinPackArguments: true |
| BinPackParameters: true |
| # Because BreakBeforeBraces = GNU, we don't need BraceWrapping. |
| BreakBeforeBinaryOperators: All |
| BreakBeforeBraces: GNU |
| BreakBeforeTernaryOperators: true |
| BreakConstructorInitializers: BeforeColon |
| BreakInheritanceList: BeforeColon |
| BreakStringLiterals: true |
| ColumnLimit: 79 |
| CommentPragmas: 'ARI:' |
| CompactNamespaces: false |
| ConstructorInitializerIndentWidth: 2 |
| ContinuationIndentWidth: 2 |
| Cpp11BracedListStyle: false |
| DerivePointerAlignment: false |
| DisableFormat: false |
| # The docs say not to use this. |
| # ExperimentalAutoDetectBinPacking: false |
| FixNamespaceComments: true |
| IncludeBlocks: Preserve |
| IndentCaseLabels: false |
| # This next setting is incorrect but it's a clang-format issue. |
| IndentGotoLabels: true |
| IndentPPDirectives: None |
| IndentWidth: 2 |
| IndentWrappedFunctionNames: false |
| KeepEmptyLinesAtTheStartOfBlocks: false |
| LineEnding: LF |
| # MacroBlockBegin: '' |
| # MacroBlockEnd: '' |
| MaxEmptyLinesToKeep: 1 |
| NamespaceIndentation: None |
| # NamespaceMacros |
| PackConstructorInitializers: Never |
| PenaltyBreakAssignment: 50 |
| PenaltyBreakBeforeFirstCallParameter: 100 |
| # clang 20 setting: |
| # PenaltyBreakBeforeMemberAccess: 50 |
| # PenaltyBreakComment |
| # PenaltyBreakFirstLessLess |
| PenaltyBreakOpenParenthesis: 100 |
| # PenaltyBreakString |
| # PenaltyBreakTemplateDeclaration |
| # PenaltyExcessCharacter |
| # PenaltyReturnTypeOnItsOwnLine |
| PointerAlignment: Right |
| # RawStringFormats: [ I don't think we need this ] |
| # Should be IndentOnly but that requires clang 20. |
| ReflowComments: false |
| # FIXME - enable |
| SortIncludes: Never |
| SortUsingDeclarations: true |
| SpaceAfterCStyleCast: true |
| SpaceAfterLogicalNot: false |
| SpaceAfterTemplateKeyword: false |
| SpaceBeforeAssignmentOperators: true |
| SpaceBeforeCpp11BracedList: true |
| SpaceBeforeCtorInitializerColon: true |
| SpaceBeforeInheritanceColon: true |
| SpaceBeforeParens: Always |
| SpaceBeforeRangeBasedForLoopColon: true |
| SpaceBeforeSquareBrackets: false |
| SpaceInEmptyBlock: false |
| SpacesBeforeTrailingComments: 1 |
| SpacesInAngles: false |
| SpacesInContainerLiterals: true |
| SpacesInParens: Never |
| SpacesInSquareBrackets: false |
| Standard: c++17 |
| TabWidth: 8 |
| TypenameMacros: [ 'ENUM_BITFIELD' ] |
| UseTab: ForContinuationAndIndentation |